Home Assistant Einbindung vom Deye 12k und baugleiche (Sunsyk, solarman...)

@elcapo

habe heir folgendes gefunden

@alex_s
Ich meine schon die SolarAssistant Software mit einem Raspberry PI 3B, verbunden mit einem RS485 Adapter.
Auf der Homepage steht, dass ein Deye 12K nur ausgelesen werden kann. Nur auslesen funktioniert ja auch mit Solarman.

1 „Gefällt mir“

Wenn ihr was zu SolarAssist diskutieren wollt, macht doch bitte einen extra Thread dazu auf, sonst kommt hier alles durcheinander, hier soll es um Home Assistant Anbindung gehen. Danke für euer Verständnis.

2 „Gefällt mir“

und im MQTT advanced settings menü

kann man einstellen ob eine modifiation von Einstellungen erlaubt ist...

@linuxdep

ich dachte die idee ist es den Deye über den Home assistent zu steuern indem der Solar assitent als mqtt "Übersetzer" dazwischen agiert?

Da über die direkt anbindung vom Deye an den Home assitent sich keien Deye Einstellunden ändern lassen?

oder habe ich das falsch verstanden?

Nee, der Home Assistant wird doch per ESPhome angebunden (ESPhome-for-deye) damit geht der ESP an den RS485 und kann auslesen und steuern, da braucht es nicht noch was dazwischen...

Sogar das Seplos kann man dank klatremis mit esphome-seplos-bms anbinden.

SolarAssist ist ja eine andere Lösung für Monitoring und Co. hat mit HA nix zu tun und wird auch nicht benötigt.

1 „Gefällt mir“

Kannst Du bitte mir erklären, wie man den Home Assistant / welche Software auf das ESP-32S ESP32 Development Board einspielt/einrichtet?

Wie muss ich vorgehen?

Herzlichen Dank für Deine Hilfe

Tenker

Das ist meine Config für einen DEYE 12K und zwei Seplos an einem ESP:

substitutions:
name: esp-deye-seplos
name2: seplos
device_description: "Esphome component for Deye SUN-12k-SG04LP3 & Seplos 280"
modbus_controller_id: SG04LP3
battery_bank0: "${name2} bank I"
battery_bank1: "${name2} bank II"
external_components_source: github://syssi/esphome-seplos-bms@main
skip_updates: "10"
esphome:
name: ${name}
esp32:
board: esp32dev
framework:
type: arduino
external_components:
- source: ${external_components_source}
refresh: 0s
# Enable logging
logger:
level: NONE
baud_rate: 0
# Enable Home Assistant API
api:
ota:
password: "***"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Deye12K Fallback Hotspot"
password: "36BiodTgKCJI"
captive_portal:
uart:
### Seplos
- id: uart0
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 9600
rx_buffer_size: 384
### Deye
- id: uart1
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 9600
stop_bits: 1
### Seplos
seplos_modbus:
id: modbus0
uart_id: uart0
rx_timeout: 150ms
## Deye
modbus:
id: modbus1
uart_id: uart1
### Seplos
seplos_bms:
- id: battery_bank0
# Dip switch configuration of the first pack / address 0x01
#  8    7    6    5    4    3    2   1
# off, off, off, off, off, off, off, on
address: 0x00
seplos_modbus_id: modbus0
update_interval: 15sec
- id: battery_bank1
# Dip switch configuration of the second pack / address 0x02
#  8    7    6    5    4    3   2    1
# off, off, off, off, off, off, on, off
address: 0x01
seplos_modbus_id: modbus0
update_interval: 15sec
# Deye
modbus_controller:
- id: ${modbus_controller_id}
address: 0x03
modbus_id: modbus1
setup_priority: -10
update_interval: 15sec
###########################################################
#####################  SG04LP3 ############################
###########################################################
button:
- platform: restart
name: "Deye-Seplos ESP restart"
id: esp_deye_seplos_restart_bt
on_press:
- logger.log: "Button pressed"
select:
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_1
name: "sun12k-Time point 1 start"
address: 148
value_type: U_WORD
#    skip_updates: ${skip_updates}
optionsmap:
"00:00": 0
"01:00": 100
"02:00": 200
"03:00": 300
"04:00": 400
"05:00": 500
"06:00": 600
"07:00": 700
"08:00": 800
"09:00": 900
"10:00": 1000
"11:00": 1100
"12:00": 1200
"13:00": 1300
"14:00": 1400
"15:00": 1500
"16:00": 1600
"17:00": 1700
"18:00": 1800
"19:00": 1900
"20:00": 2000
"21:00": 2100
"22:00": 2200
"23:00": 2300
"24:00": 2400
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_2
name: "sun12k-Time point 2 start"
address: 149
value_type: U_WORD
#    skip_updates: ${skip_updates}
optionsmap:
"00:00": 0
"01:00": 100
"02:00": 200
"03:00": 300
"04:00": 400
"05:00": 500
"06:00": 600
"07:00": 700
"08:00": 800
"09:00": 900
"10:00": 1000
"11:00": 1100
"12:00": 1200
"13:00": 1300
"14:00": 1400
"15:00": 1500
"16:00": 1600
"17:00": 1700
"18:00": 1800
"19:00": 1900
"20:00": 2000
"21:00": 2100
"22:00": 2200
"23:00": 2300
"24:00": 2400
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_3
name: "sun12k-Time point 3 start"
address: 150
value_type: U_WORD
#    skip_updates: ${skip_updates}
optionsmap:
"00:00": 0
"01:00": 100
"02:00": 200
"03:00": 300
"04:00": 400
"05:00": 500
"06:00": 600
"07:00": 700
"08:00": 800
"09:00": 900
"10:00": 1000
"11:00": 1100
"12:00": 1200
"13:00": 1300
"14:00": 1400
"15:00": 1500
"16:00": 1600
"17:00": 1700
"18:00": 1800
"19:00": 1900
"20:00": 2000
"21:00": 2100
"22:00": 2200
"23:00": 2300
"24:00": 2400
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_4
name: "sun12k-Time point 4 start"
address: 151
value_type: U_WORD
#    skip_updates: ${skip_updates}
optionsmap:
"00:00": 0
"01:00": 100
"02:00": 200
"03:00": 300
"04:00": 400
"05:00": 500
"06:00": 600
"07:00": 700
"08:00": 800
"09:00": 900
"10:00": 1000
"11:00": 1100
"12:00": 1200
"13:00": 1300
"14:00": 1400
"15:00": 1500
"16:00": 1600
"17:00": 1700
"18:00": 1800
"19:00": 1900
"20:00": 2000
"21:00": 2100
"22:00": 2200
"23:00": 2300
"24:00": 2400
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_5
name: "sun12k-Time point 5 start"
address: 152
value_type: U_WORD
optionsmap:
"00:00": 0
"01:00": 100
"02:00": 200
"03:00": 300
"04:00": 400
"05:00": 500
"06:00": 600
"07:00": 700
"08:00": 800
"09:00": 900
"10:00": 1000
"11:00": 1100
"12:00": 1200
"13:00": 1300
"14:00": 1400
"15:00": 1500
"16:00": 1600
"17:00": 1700
"18:00": 1800
"19:00": 1900
"20:00": 2000
"21:00": 2100
"22:00": 2200
"23:00": 2300
"24:00": 2400
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_6
name: "sun12k-Time point 6 start"
address: 153
value_type: U_WORD
optionsmap:
"00:00": 0
"01:00": 100
"02:00": 200
"03:00": 300
"04:00": 400
"05:00": 500
"06:00": 600
"07:00": 700
"08:00": 800
"09:00": 900
"10:00": 1000
"11:00": 1100
"12:00": 1200
"13:00": 1300
"14:00": 1400
"15:00": 1500
"16:00": 1600
"17:00": 1700
"18:00": 1800
"19:00": 1900
"20:00": 2000
"21:00": 2100
"22:00": 2200
"23:00": 2300
"24:00": 2400
switch:
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k_Solar_sell
register_type: holding
address: 145
bitmask: 1
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Grid_Charge
register_type: holding
address: 130
bitmask: 1
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Advanced peak shaving and valley filling function enabled
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time of Use
id: sun12k_Time_of_Use
register_type: holding
address: 146
bitmask: 1
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Time point 1 charge enable - grid charging enable
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time point 1 charge enable
register_type: holding
address: 172
bitmask: 1   # 2 hvis man ønsker Gen charging enabel i sted for.
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Time point 2 charge enable - grid charging enable
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time point 2 charge enable
register_type: holding
address: 173
bitmask: 1    # 2 hvis man ønsker Gen charging enabel i sted for.
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Time point 3 charge enable - grid charging enable
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time point 3 charge enable
register_type: holding
address: 174
bitmask: 1    # 2 hvis man ønsker Gen charging enabel i sted for.
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Time point 4 charge enable - grid charging enable
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time point 4 charge enable
register_type: holding
address: 175
bitmask: 1    # 2 hvis man ønsker Gen charging enabel i sted for.
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Time point 5 charge enable - grid charging enable
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time point 5 charge enable
register_type: holding
address: 176
bitmask: 1    # 2 hvis man ønsker Gen charging enabel i sted for.
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
- platform: modbus_controller  # Time point 6 charge enable - grid charging enable
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Time point 6 charge enable
register_type: holding
address: 177
bitmask: 1    # 2 hvis man ønsker Gen charging enabel i sted for.
entity_category: config
icon: "mdi:toggle-switch"
skip_updates: ${skip_updates}
binary_sensor:
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: sun12k-AC INV relay # bit 0
id: sun12k_AC_INV_relay
register_type: holding
address: 552
bitmask: 0x1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: sun12k-AC Load relay Reserved # bit 1
id: sun12k_AC_Load_relay_Reserved
register_type: holding
address: 552
bitmask: 0x2
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: sun12k-AC grid relay # bit 2
id: sun12k_AC_grid_relay
register_type: holding
address: 552
bitmask: 0x4
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: sun12k-AC Generator relay # bit 3
id: sun12k_AC_Generator_relay
register_type: holding
address: 552
bitmask: 0x8
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: sun12k-Turn off/on status   #The lower 4 bits represent the switch signal
id: sun12k_Turn_off_on_status
register_type: holding
address: 551
bitmask: 0x1
text_sensor:
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Running_Status
bitmask: 0
register_type: holding
address: 500
raw_encode: HEXBYTES
name: sun12k-Running Status
lambda: |-
uint16_t value = modbus_controller::word_from_hex_str(x, 0);
switch (value) {
case 0: return std::string("standby");
case 1: return std::string("selfcheck");
case 2: return std::string("normal");
case 3: return std::string("alarm");
case 4: return std::string("fault");
default: return std::string("----");
}
return x;
number:
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Maximum_battery_charge_current
name: "sun12k-Maximum battery charge current"
address: 108
unit_of_measurement: A
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Maximum_battery_discharge_current
name: "sun12k-Maximum battery discharge current"
address: 109
unit_of_measurement: A
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Maximum_battery_grid_charge_current
name: "sun12k-Maximum battery_grid charge current"
address: 128
unit_of_measurement: A
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_1_power
name: "sun12k-Time point 1 power"
unit_of_measurement: W
address: 154
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_2_power
name: "sun12k-Time point 2 power"
unit_of_measurement: W
address: 155
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_3_power
name: "sun12k-Time point 3 power"
unit_of_measurement: W
address: 156
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_4_power
name: "sun12k-Time point 4 power"
unit_of_measurement: W
address: 157
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_5_power
name: "sun12k-Time point 5 power"
unit_of_measurement: W
address: 158
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_6_power
name: "sun12k-Time point 6 power"
unit_of_measurement: W
address: 159
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_1_capacity
name: "sun12k-Time point 1 capacity"
unit_of_measurement: "%"
address: 166
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_2_capacity
name: "sun12k-Time point 2 capacity"
unit_of_measurement: "%"
address: 167
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_3_capacity
name: "sun12k-Time point 3 capacity"
unit_of_measurement: "%"
address: 168
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_4_capacity
name: "sun12k-Time point 4 capacity"
unit_of_measurement: "%"
address: 169
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_5_capacity
name: "sun12k-Time point 5 capacity"
unit_of_measurement: "%"
address: 170
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_Time_point_6_capacity
name: "sun12k-Time point 6 capacity"
unit_of_measurement: "%"
address: 171
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_battery_cap_shutdown
name: "sun12k-Battery Capacity Shutdown"
unit_of_measurement: "%"
address: 115
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_battery_cap_restart
name: "sun12k-Battery Capacity Restart"
unit_of_measurement: "%"
address: 116
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_battery_cap_lowbatt
name: "sun12k-Battery Capacity LowBatt"
unit_of_measurement: "%"
address: 117
min_value: 0
max_value: 100
step: 5
value_type: U_WORD
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_battery_volt_shutdown
name: "sun12k-Battery Voltage Shutdown"
unit_of_measurement: "V"
address: 118
min_value: 3800
max_value: 6100
value_type: U_WORD
multiply: 0.01
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_battery_volt_restart
name: "sun12k-Battery Voltage Restart"
unit_of_measurement: "V"
address: 119
min_value: 3800
max_value: 6100
value_type: U_WORD
multiply: 0.01
skip_updates: ${skip_updates}
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: sun12k_battery_volt_lowbatt
name: "sun12k-Battery Voltage LowBatt"
unit_of_measurement: "V"
address: 120
min_value: 3800
max_value: 6100
value_type: U_WORD
multiply: 0.01
skip_updates: ${skip_updates}
sensor:
- platform: modbus_controller #sun12k-køleplade temeratur
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Heat sink temperature"
id: sun12k_koleplade_temeratur
register_type: holding
address: 541
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 2
filters:
- offset: -1000
- multiply:  0.1
- platform: modbus_controller #sun12k-load frequency
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-load frequency"
id: sun12k_load_frequency
register_type: holding
address: 655
unit_of_measurement: "Hz"
state_class: "measurement"
accuracy_decimals: 2
filters:
- multiply: 0.01
value_type: U_WORD
- platform: modbus_controller #sun12k-inverter-frequency
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-inverter-frequency"
id: sun12k_inverter_frequency
register_type: holding
address: 638
unit_of_measurement: "Hz"
state_class: "measurement"
accuracy_decimals: 2
filters:
- multiply: 0.01
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-PV1 Power"
id: sun12k_PV1_Power
register_type: holding
address: 672
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-PV2 Power"
id: sun12k_PV2_Power
register_type: holding
address: 673
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-PV1 Voltage"
id: sun12k_PV1_Voltage
register_type: holding
address: 676
unit_of_measurement: "V"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-PV2 Voltage"
id: sun12k_PV2_Voltage
register_type: holding
address: 678
unit_of_measurement: "V"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-PV1 Current"
id: sun12k_PV1_Current
register_type: holding
address: 677
unit_of_measurement: "A"
state_class: "measurement"
accuracy_decimals: 1
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-PV2 Current"
id: sun12k_PV2_Current
register_type: holding
address: 679
unit_of_measurement: "A"
state_class: "measurement"
accuracy_decimals: 1
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Daily Production"
id: sun12k_Daily_Production
register_type: holding
address: 529
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total PV Production"  #Cumulative Production
id: sun12k_Total_PV_Production
register_type: holding
address: 534
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_DWORD_R
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total Grid Power"   # Grid side total power
id: sun12k_Total_Grid_Power
register_type: holding
address: 625
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Daily Energy Bought"
id: sun12k_Daily_Energy_Bought
register_type: holding
address: 520
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_WORD
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Daily Energy Sold"
id: sun12k_Daily_Energy_Sold
register_type: holding
address: 521
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_WORD
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total Energy Bought"
id: sun12k_Total_Energy_Bought
register_type: holding
address: 522
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_WORD
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total Energy Sold"
id: sun12k_Total_Energy_Sold
register_type: holding
address: 524
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_WORD
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller #Total Consumption
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total Consumption"
id: sun12k_Total_Consumption
register_type: holding
address: 527
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 2
value_type: U_DWORD_R
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-active power generation of today"
id: sun12k_active_power_generation_of_today
register_type: holding
address: 502
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: S_WORD
skip_updates: ${skip_updates}
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Grid Current L1"
id: sun12k_Grid_Current_L1
register_type: holding
address: 630
unit_of_measurement: "A"
state_class: "measurement"
accuracy_decimals: 1
filters:
- multiply: 0.01
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Grid Current L2"
id: sun12k_Grid_Current_L2
register_type: holding
address: 631
unit_of_measurement: "A"
state_class: "measurement"
accuracy_decimals: 1
filters:
- multiply: 0.01
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Grid Current L3"
id: sun12k_Grid_Current_L3
register_type: holding
address: 632
unit_of_measurement: "A"
state_class: "measurement"
accuracy_decimals: 1
filters:
- multiply: 0.01
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Grid Voltage L1"
id: sun12k_Grid_Voltage_L1
register_type: holding
address: 598
unit_of_measurement: "V"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Grid Voltage L2"
id: sun12k_Grid_Voltage_L2
register_type: holding
address: 599
unit_of_measurement: "V"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Grid Voltage L3"
id: sun12k_Grid_Voltage_L3
register_type: holding
address: 600
unit_of_measurement: "V"
state_class: "measurement"
accuracy_decimals: 0
filters:
- multiply: 0.1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Internal CT L1 Power"
id: sun12k_Internal_CT_L1_Power
register_type: holding
address: 604
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Internal CT L2 Power"
id: sun12k_Internal_CT_L2_Power
register_type: holding
address: 605
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Internal CT L3 Power"
id: sun12k_Internal_CT_L3_Power
register_type: holding
address: 606
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller  # Grid internal - total active power
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Internal total Power"
id: sun12k_Internal_total_Power
register_type: holding
address: 607
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-External CT L1 Power"
id: sun12k_External_CT_L1_Power
register_type: holding
address: 616
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-External CT L2 Power"
id: sun12k_External_CT_L2_Power
register_type: holding
address: 617
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-External CT L3 Power"
id: sun12k_External_CT_L3_Power
register_type: holding
address: 618
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Out-of-grid–total power"
id: sun12k_out_of_grid_total_power
register_type: holding
address: 619
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller # Load totalpower
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Load totalpower"
id: sun12k_Load_totalpower
register_type: holding
address: 653
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Warning1"
id:  sun12k_Warning1
register_type: holding
address: 553
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Warning2"
id:  sun12k_Warning2
register_type: holding
address: 554
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Warning3"
id:  sun12k_Warning3
register_type: holding
address: 555
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Error1"
id:  sun12k_Error1
register_type: holding
address: 556
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Error2"
id:  sun12k_Error2
register_type: holding
address: 557
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Error3"
id:  sun12k_Error3
register_type: holding
address: 558
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Failure status of communication board"
id:  sun12k_Failure_status_of_communication_board
register_type: holding
address: 548
accuracy_decimals: 0
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Minimum insulation impedance"
id:  sun12k_Minimum_insulation_impedance
register_type: holding
unit_of_measurement: "kΩ"
state_class: "measurement"
address: 65
accuracy_decimals: 0
value_type: U_WORD
filters:
- multiply: 0.1
- platform: template
name: "sun12k_PV_Power"
unit_of_measurement: "W"
state_class: "measurement"
lambda: |-
return (id(sun12k_PV1_Power).state + id(sun12k_PV2_Power).state);
accuracy_decimals: 0
update_interval: 1s
# Batterie
# - platform: modbus_controller
#   modbus_controller_id: ${modbus_controller_id}
#   name: "sun12k-Today charge of the battery"
#   id:  sun12k_Today_charge_of_the_battery
#   register_type: holding
#   address: 514
#   unit_of_measurement: "kWh"
#   state_class: "total_increasing"
#   device_class: energy
#   accuracy_decimals: 1
#   value_type: U_WORD
#   filters:
#     - multiply: 0.1
# - platform: modbus_controller
#   modbus_controller_id: ${modbus_controller_id}
#   name: "sun12k-Today discharge of the battery"
#   id:  sun12k_Today_discharge_of_the_battery
#   register_type: holding
#   address: 515
#   unit_of_measurement: "kWh"
#   state_class: "total_increasing"
#   device_class: energy
#   accuracy_decimals: 1
#   value_type: U_WORD
#   filters:
#     - multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total charge of the battery"
id:  sun12k_battery_total_charge
register_type: holding
address: 516
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_DWORD_R
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Total discharge of the battery"
id:  sun12k_battery_total_discharge
register_type: holding
address: 518
unit_of_measurement: "kWh"
state_class: "total_increasing"
device_class: energy
accuracy_decimals: 1
value_type: U_DWORD_R
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-battery temperature"
id:  sun12k_battery_temperature
register_type: holding
address: 586
unit_of_measurement: "°C"
accuracy_decimals: 1
value_type: U_WORD
filters:
- offset: -1000
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-battery voltage"
id: sun12k_battery_voltage
register_type: holding
address: 587
unit_of_measurement: "V"
state_class: "measurement"
accuracy_decimals: 2
filters:
- multiply: 0.01
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-battery capacity"
id: sun12k_battery_capacity
register_type: holding
address: 588
unit_of_measurement: "%"
state_class: "measurement"
accuracy_decimals: 1
value_type: U_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-Battery output power"
id: sun12k_Battery_output_power
register_type: holding
address: 590
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
value_type: S_WORD
- platform: template
name: "sun12k-Battery charge power"
id: sun12k_Battery_charge_power
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
lambda: |-
if (id(sun12k_Battery_output_power).state < 0) {
return id(sun12k_Battery_output_power).state * -1;
} else {
return 0;
}
update_interval: 5s
- platform: template
name: "sun12k-Battery discharge power"
id: sun12k_Battery_discharge_power
unit_of_measurement: "W"
state_class: "measurement"
accuracy_decimals: 0
lambda: |-
if (id(sun12k_Battery_output_power).state > 0) {
return id(sun12k_Battery_output_power).state;
} else {
return 0;
}
update_interval: 5s
# - platform: modbus_controller
#   modbus_controller_id: ${modbus_controller_id}
#   name: "sun12k-Battery output current"
#   id: sun12k_Battery_output_current
#   register_type: holding
#   address: 591
#   unit_of_measurement: "A"
#   state_class: "measurement"
#   accuracy_decimals: 2
#   filters:
#     - multiply: 0.01
#   value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: ${modbus_controller_id}
name: "sun12k-The corrected capacity of the battery"
id: sun12k_The_corrected_capacity_of_the_battery
register_type: holding
address: 592
unit_of_measurement: "Ah"
state_class: "measurement"
accuracy_decimals: 0
value_type: U_WORD
###########################################################
#####################  Seplos ############################
###########################################################
- platform: seplos_bms
seplos_bms_id: battery_bank0
min_cell_voltage:
name: "${battery_bank0} min cell voltage"
max_cell_voltage:
name: "${battery_bank0} max cell voltage"
min_voltage_cell:
name: "${battery_bank0} min voltage cell"
max_voltage_cell:
name: "${battery_bank0} max voltage cell"
delta_cell_voltage:
name: "${battery_bank0} delta cell voltage"
average_cell_voltage:
name: "${battery_bank0} average cell voltage"
cell_voltage_1:
name: "${battery_bank0} cell voltage 1"
cell_voltage_2:
name: "${battery_bank0} cell voltage 2"
cell_voltage_3:
name: "${battery_bank0} cell voltage 3"
cell_voltage_4:
name: "${battery_bank0} cell voltage 4"
cell_voltage_5:
name: "${battery_bank0} cell voltage 5"
cell_voltage_6:
name: "${battery_bank0} cell voltage 6"
cell_voltage_7:
name: "${battery_bank0} cell voltage 7"
cell_voltage_8:
name: "${battery_bank0} cell voltage 8"
cell_voltage_9:
name: "${battery_bank0} cell voltage 9"
cell_voltage_10:
name: "${battery_bank0} cell voltage 10"
cell_voltage_11:
name: "${battery_bank0} cell voltage 11"
cell_voltage_12:
name: "${battery_bank0} cell voltage 12"
cell_voltage_13:
name: "${battery_bank0} cell voltage 13"
cell_voltage_14:
name: "${battery_bank0} cell voltage 14"
cell_voltage_15:
name: "${battery_bank0} cell voltage 15"
cell_voltage_16:
name: "${battery_bank0} cell voltage 16"
temperature_1:
name: "${battery_bank0} temperature 1"
temperature_2:
name: "${battery_bank0} temperature 2"
temperature_3:
name: "${battery_bank0} temperature 3"
temperature_4:
name: "${battery_bank0} temperature 4"
temperature_5:
name: "${battery_bank0} environment temperature"
temperature_6:
name: "${battery_bank0} mosfet temperature"
total_voltage:
name: "${battery_bank0} total voltage"
current:
name: "${battery_bank0} current"
power:
name: "${battery_bank0} power"
charging_power:
name: "${battery_bank0} charging power"
discharging_power:
name: "${battery_bank0} discharging power"
residual_capacity:
name: "${battery_bank0} residual capacity"
battery_capacity:
name: "${battery_bank0} battery capacity"
rated_capacity:
name: "${battery_bank0} rated capacity"
state_of_charge:
name: "${battery_bank0} state of charge"
charging_cycles:
name: "${battery_bank0} charging cycles"
state_of_health:
name: "${battery_bank0} state of health"
port_voltage:
name: "${battery_bank0} port voltage"
- platform: seplos_bms
seplos_bms_id: battery_bank1
min_cell_voltage:
name: "${battery_bank1} min cell voltage"
max_cell_voltage:
name: "${battery_bank1} max cell voltage"
min_voltage_cell:
name: "${battery_bank1} min voltage cell"
max_voltage_cell:
name: "${battery_bank1} max voltage cell"
delta_cell_voltage:
name: "${battery_bank1} delta cell voltage"
average_cell_voltage:
name: "${battery_bank1} average cell voltage"
cell_voltage_1:
name: "${battery_bank1} cell voltage 1"
cell_voltage_2:
name: "${battery_bank1} cell voltage 2"
cell_voltage_3:
name: "${battery_bank1} cell voltage 3"
cell_voltage_4:
name: "${battery_bank1} cell voltage 4"
cell_voltage_5:
name: "${battery_bank1} cell voltage 5"
cell_voltage_6:
name: "${battery_bank1} cell voltage 6"
cell_voltage_7:
name: "${battery_bank1} cell voltage 7"
cell_voltage_8:
name: "${battery_bank1} cell voltage 8"
cell_voltage_9:
name: "${battery_bank1} cell voltage 9"
cell_voltage_10:
name: "${battery_bank1} cell voltage 10"
cell_voltage_11:
name: "${battery_bank1} cell voltage 11"
cell_voltage_12:
name: "${battery_bank1} cell voltage 12"
cell_voltage_13:
name: "${battery_bank1} cell voltage 13"
cell_voltage_14:
name: "${battery_bank1} cell voltage 14"
cell_voltage_15:
name: "${battery_bank1} cell voltage 15"
cell_voltage_16:
name: "${battery_bank1} cell voltage 16"
temperature_1:
name: "${battery_bank1} temperature 1"
temperature_2:
name: "${battery_bank1} temperature 2"
temperature_3:
name: "${battery_bank1} temperature 3"
temperature_4:
name: "${battery_bank1} temperature 4"
temperature_5:
name: "${battery_bank1} environment temperature"
temperature_6:
name: "${battery_bank1} mosfet temperature"
total_voltage:
name: "${battery_bank1} total voltage"
current:
name: "${battery_bank1} current"
power:
name: "${battery_bank1} power"
charging_power:
name: "${battery_bank1} charging power"
discharging_power:
name: "${battery_bank1} discharging power"
residual_capacity:
name: "${battery_bank1} residual capacity"
battery_capacity:
name: "${battery_bank1} battery capacity"
rated_capacity:
name: "${battery_bank1} rated capacity"
state_of_charge:
name: "${battery_bank1} state of charge"
charging_cycles:
name: "${battery_bank1} charging cycles"
state_of_health:
name: "${battery_bank1} state of health"
port_voltage:
name: "${battery_bank1} port voltage"
2 „Gefällt mir“

@plusninp

Ich habe nur eine kleine Erfahrung, als ich vor Wochen schon AhoyDTU installiert habe.

Hier weiß ich nicht wie ich vorgehen soll ? .

Aber, welche FILES soll ich und wie auf das ESP-32S ESP32 Development Board einspielen?

@plusninp

Respekt! Tolle Arbeit.

Habe selbe Kombi aus Deye12k und Seplos BMS. Wie hast du die Kommunikation zwischen Deye und Seplos realisiert, per CAN oder RS485? Wäre toll wenn du mal deine Einstellungen teilen könntest, sprich im WR und BMS (welches Protokoll, PYLON?)

Der Respekt gebührt nicht mir :-), im Prinzip habe ich ich nur die beiden Projekte auf einen ESP geflasht:

GitHub - klatremis/esphome-for-deye: Esphome component for Deye sun-12k-sg04lp3 to implement into home assistant

GitHub - syssi/esphome-seplos-bms: ESPHome component to monitor a Seplos Battery Management System (Seplos-BMS) via UART or RS485

Mit HomeAssistant und dem ESPHome Add-On muss man Softwareseitig nur den YAML Code auf den ESP flashen.

Ohne Home Assitant ist das vielleicht eine alternative:

https://github.com/KlausLi/Esp-Seplos-Controller

Pack1 und Pack2 sind nach Handbuch über die RS485 Ports verbunden.

vom Pack 1 (Master) besteht eine Verbindung zum Deye CAN-Port -> BMS-Port, aber nur die Adern 4 u.5 , das ist die CAN Kommunikation. Setting an Deye Lithium und Protokoll "00"

  • bis hierhin alle Dip-Switche auf "0" , automatische Adressierung "on"

Dann habe ich vom BMS-Port an Deye Pin 1 u 2 auf den ersten TTL-Konverter am ESP verbunden. DEYE im HomeAssitant sichtbar und steuerbar.

Pin 1 u 2 an den CAN-Ports der Seplos parallel schalten und mit dem zweitem TTL-Konverter verbinden.

-Dip-Switche nach den RS485 vorgaben im Seploshandbuch gesetzt, automatische Adressierung "on"

das wars eigentlich auch schon.

Habe die RJ45 Stecker am BMS - Port (DEYE) und CAN-Ports (Seplos) abgeschnitten und nur die nötigen Adernpaare verbunden damit keine überkreuzte Kommunikation statt findet. Stellt man nämlich am DEYE das Protokoll "12" ein, empfängt er die RS485 Daten vom Seplos und kann damit auch arbeiten, wird aber zeitgleich zum Modbus-Master und sendet nichts mehr an den ESP.

1 „Gefällt mir“

@tenker nutzt du HomeAssitant?

@plusninp

Noch nicht, bin gerade bei Aufbau.

Deshalb meine Fragen, Fragen .... ?

Mit Homeassititant und ESPHome ist es relativ einfach das flashen geht aus dem Add-On heraus, die Firmware für den ESP wird automatisch aus der YAML Datei kompiliert.

Ist das die Seite für Homeassititant?

und Anleitungen

Ich habe gerade mal ein Update meiner Platine veröffentlicht. Ich dachte ich greife einfach das CANBUS ab, aber vielleicht mach ich doch besser n zweiten RS485 auf die Platine.

1 „Gefällt mir“

Kannst Du den Link posten?

@tenker GitHub - bagges/deye-esp32-bridge die aktuellste Version hab ich selbst noch nicht in Betrieb. Bei mir läuft noch die v0.1

@bagges

Das wäre natürlich Klasse wenn du Zeit hättest das PCB Layout anzupassen, wie die Lösung @plusninp (https://www.akkudoktor.net/forum/postid/112421/)mit zwei RS485 und CAN durchgeschliffen. Das ist schon die ideale Lösung für die die Home Assistant nutzen.

@plusninp super beschrieben, danke. Wäre es nicht auch denkbar die RS485 vom CAN Port als Verbindung zu den Akkupacks zu nutzen und die schnelleren RS485 für den ESP?

Hintergrund, die 9600baud sind echt langsam bei den vielen Werten die da abgefragt werden, du hast ja 15s drin, bringt der ESP da Fehler auf den Console? Zellspannungen hätte ich schon gerne mit min. 5s abgefragt...

Was macht eigentlich die "automatische Adressierung" im Seplos? Wenn es doch das Mäuseklavier gibt?

Interessante Lösung mit den Zeiten, hatte mich schon gefragt, ob man da irgend wie Zeitformat auswählen muss... muss ich mal bei mir einbauen... hast dazu auch ein schönes dash gebaut? Da hänge ich immer noch hinter her... schön ist bei mir nix, nur zum schauen. Grafana habe ich auch noch nix gemacht, die interne Graphik ist ja so la la..

@bagges

ich hätte wohl 3x RS485 vorgesehen, kann ja nicht schaden einen extra zu haben, muss man ja nicht bestücken. Bei der Verkabelung der RJ45 wäre ja super, wenn das von plusninp umzusetzen ginge.

1 „Gefällt mir“