Nachdem mir hier so viele Leute mir geholfen haben mit Antworten und dem gesamten Wissen aus den Diskussionen,wollte ich auch mal was zurückgeben.
Es gibt bereits ein Thread der sich mit der Effizienz des Deye WRs beschäftig, wobei @laasa den WR ausschaltet und dafür ein Skript geschrieben hat. Er macht es jedoch nicht mithilfe von HomeAssistant, wobei ich das nun realisiert habe und euch zur Verfügung stellen wollte( Danke @laasa für deine Code in C der mir geholfen hat das Biepen zu deaktivieren)
Ich lese über einen ESP32 den Deye aus und das wird dann in HA übergeben. Den Code und die Anleitung findet ihr bei GitHub, wie viele das bereits nutzen. Damit ihr den Deye auschalten könnt, musst ihr noch das Register 80 bei switch: hinzufügen. Da die Software vom Deye (meines Erachtens teilweise recht schlecht programmiert wurde) beim Ausschalten des WR einen Fehler meldet, muss der Alarmton abgeschaltet werden. Dafür muss noch das Register 228 ausgelesen werden unter number:
Für die ESPHome Konfiguration einmal einen Ausschnitt für die benötigten Register:
#Hier der Code für den Schalter
switch:
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
name: ${device_type}_Power_On
register_type: holding
address: 80
bitmask: 1
entity_category: config
icon: "mdi:toggle-switch"
#Zum Einschalten und Ausschalten des Alarmtones müssen bestimmte werde gesendet werden
number:
- platform: modbus_controller
use_write_multiple: true
modbus_controller_id: ${modbus_controller_id}
id: ${device_type}_Beep1
name: "${device_type}-Beep1"
address: 228
bitmask: 2
value_type: U_WORD
Um den Alarmton ein-/auschalten zu können müssen dem Deye bestimmte Nummer geschickt werden. Zum auschalten eine "8" und zum einschalten eine "13" (HEX=0xD).
Das Ein- und Ausschalten erfolgt über eine Automatisierung. Dabei sind die Auslöser zum Ausschalten:
- wenn die Batterie eine Spannung von unter 51,3V erreicht (mein LOW BAT)
- Monate Oktober bis März
- Batterieouput kleiner als 200W ist (für mich ist die Effizienz da schon zu gering)
- Zwischen 18 und 7 Uhr. Die Zeitbedingung ist einfach für die Dunkelheit, wobei ich auch darüber nachdenke dies über die PV Spannung zu steuern (bspw wenn sie unter 50V ist).
Automatisierung:
alias: Deye Ein-/Ausschalten Low Batt
description: ""
trigger:
- platform: numeric_state
entity_id:
- sensor.deye_battery_voltage
below: 51.3
id: Voltage_Low
- platform: time
at: "07:30:00"
id: DeyePower_Off
condition: []
action:
#Power Off und zuvor den Alarmton ausschalten
- if:
- condition: and
conditions:
- condition: trigger
id: Voltage_Low
- condition: time
after: "18:00:00"
before: "7:00:00"
- condition: template
value_template: |
{{states("sensor.deye_battery_output_power") | float(0) < 200 }}
- condition: template
value_template: |
{{ now().month in [1,2,3,10,11,12] }}
then:
- service: number.set_value
data:
value: "8"
target:
entity_id: number.deye_beep1
- service: switch.turn_off
data: {}
target:
entity_id: switch.deye_power_on
else: []
#Deye morgens anschalten und danach den Alarmton reaktivieren
- if:
- condition: and
conditions:
- condition: trigger
id: DeyePower_Off
- condition: template
value_template: |
{{is_state("switch.deye_power_on", "off") }}
- condition: template
value_template: |
{{ now().month in [1,2,3,10,11,12] }}
then:
- service: switch.turn_on
data: {}
target:
entity_id: switch.deye_power_on
- delay: "00:02"
- service: input_boolean.turn_on
data: {}
target:
entity_id: input_boolean.beep
- service: number.set_value
data:
value: "13"
target:
entity_id: number.deye_beep1
else: []
mode: single
Ich hoffe, dass das euch helfen kann.
Achja das Problem ist nur: Ist der WR aus, sendet er keine Verbrauchsdaten mehr. Mein WR ist parallel und LOAD wird nur im Stromausfall genutzt sonst nie. Finde ich ein bisschen komisch, weil die Daten vom eastron sdm630 kommen eigentlich weiter an. Falls da jemand eine Lösung hat, gerne her damit.

