600W PV Mikrowechselrichter von Deye

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Johannes911
Beiträge: 68
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: 600W PV Mikrowechselrichter von Deye

Beitrag von Johannes911 »

Hallo zusammen,
ich habe mal versucht die Daten aus einem Wechselrichter auszulesen.
Bis in den Mosquitto kommen die Daten, nur weiter in OpenHAB bekomme ich sie nicht wohl weil die Daten anders hereinkommen als zum Beispiel bei einem Tasmota.
Beim Tasmota sieht die anzeige im MQTT-Explorer so aus:

Code: Alles auswählen

Stromzaehler
tasmota_38
tele
LWT = Online
STATE = {"Time":"2024-06-01T17:52:51","Uptime":"1T19:48:50","UptimeSec":157730,"Heap":167,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":17,"Berry":{"HeapUsed":4,"Objects":46},"Wifi":{"AP":1,"SSId":"Box-7490","Mode":"11n","RSSI":42,"Signal":-79,"LinkCount":2,"Downtime":"0T00:05:00"}}
SENSOR = {"Time":"2024-06-01T17:52:51","Main":{"counter_pos":2232.211,"counter_neg":0.000,"power":2215,"wirkleistungl1":270,"wirkleistungl2":70,"wirkleistungl3":1874}}
für den Deye sieht es so aus:

Code: Alles auswählen

Solar_BKW
tele
LWT = Online
current_power = 37
total_today = 0.20
total_lifetime = 707.1
die dazu gehörigen Zeilen aus "THINGS" in OpenHAB für den Stromzähler, der ja auch funktioniert:

Code: Alles auswählen

Type number : Bezug     "kWh gesamt"  [ stateTopic="iot/Stromzaehler/tasmota_38/tele/SENSOR",  transformationPattern="JSONPATH:$.Main.counter_pos", unit="kWh" ]
und mein Versuch für Deye:

Code: Alles auswählen

Type number : Solarleistung    "Leistung"  [ stateTopic="iot/Solar_BKW/tele",  transformationPattern="JSONPATH:$.current_power", unit="W" ]  
Wie muss ich meine letzte Zeile ändern?
Gruß
Johannes
Zuletzt geändert von Johannes911 am 1. Jun 2024 18:11, insgesamt 1-mal geändert.

Johannes911
Beiträge: 68
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: 600W PV Mikrowechselrichter von Deye

Beitrag von Johannes911 »

Nochmals Hallo,
andere, für mich schönere Lösung wäre das Script so anpassen dass die Daten analog zu den Tasmotas ausgegeben werden.

Code: Alles auswählen

Steckdosen
tasmota_32
tele
LWT = Online
STATE = {"Time":"2024-06-01T18:08:09","Uptime":"1T20:19:26","UptimeSec":159566,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":11,"POWER":"ON","Wifi":{"AP":1,"SSId":"-Box-7490","Channel":13,"Mode":"11n","RSSI":44,"Signal":-78,"LinkCount":1,"Downtime":"0T00:00:03"}}
SENSOR = {"Time":"2024-06-01T18:08:09","ENERGY":{"TotalStartTime":"2023-06-02T11:42:25","Total":57.393,"Yesterday":0.161,"Today":0.106,"Period": 0,"Power": 5,"ApparentPower":10,"ReactivePower": 9,"Factor":0.53,"Voltage":229,"Current":0.044}}
Gruß

Benutzeravatar
udo1toni
Beiträge: 14144
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: 600W PV Mikrowechselrichter von Deye

Beitrag von udo1toni »

Die Frage ist, wie kommen die Daten vom Deye nach Mosquitto?
Deine Darstellung der Daten ist unklar

Code: Alles auswählen

Solar_BKW
tele
LWT = Online
current_power = 37
total_today = 0.20
total_lifetime = 707.1
Wenn Du z.B. per MQTT Explorer die Daten anschaust, wie kommen die Daten in Mosquitto exakt an? Sieht es z.B. so aus?

Code: Alles auswählen

Topic (voll)                      | Wert
iot/Solar_BKW/tele/LWT            | Online
iot/Solar_BKW/tele/current_power  |  37
iot/Solar_BKW/tele/total_today    |   0.20
iot/Solar_BKW/tele/total_lifetime | 707.1
Dann wäre die korrekte Konfiguration folgende:

Code: Alles auswählen

Thing topic deye "Deye Wechselrichter" [
    availabilityTopic="iot/Solar_BKW/tele/LWT",
    payloadAvailable="Online",
    payloadNotAvailable="Offline"
 ] {
    Type number : Leistung "Leistung aktuell" [ stateTopic="iot/Solar_BKW/tele/current_power", unit="W" ]
    Type number : EnergyToday "Energie heute" [ stateTopic="iot/Solar_BKW/tele/total_today", unit="kWh" ]
    Type number : EnergyTotal "Energie total" [ stateTopic="iot/Solar_BKW/tele/total_lifetime", unit="kWh" ]
}
Das Thing ist in diesem Fall Kind der Bridge. Ansonsten müsste die erste Zeile anders aussehen:

Code: Alles auswählen

Thing mqtt:topic:mosquitto:deye "Deye Wechselrichter" (mqtt:broker:mosquitto) [
immer vorausgesetzt, dass die Bridge mit der UID mqtt:broker:mosquitto angelegt wurde.

Passende Items hierzu:

Code: Alles auswählen

Number:Power  DeyePower       "Leistung aktuell" {channel="mqtt:topic:mosquitto:deye:Leistung", unit="W", stateDescription=""[pattern="%.0f W"]}
Number:Energy DeyeEnergyToday "Energie heute"    {channel="mqtt:topic:mosquitto:deye:EnergyToday", unit="kWh", stateDescription=""[pattern="%.2f kWh"]}
Number:Energy DeyeEnergyTotal "Energie gesamt"   {channel="mqtt:topic:mosquitto:deye:EnergyTotal", unit="kWh", stateDescription=""[pattern="%.1f kWh"]}
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Johannes911
Beiträge: 68
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: 600W PV Mikrowechselrichter von Deye

Beitrag von Johannes911 »

Hallo Udo,
erst mal Danke für die schnelle Antwort!

Die Daten werden per bash-script eingelesen:
#!/bin/bash

source /etc/deye2mqtt.conf

TMP="/tmp/.deye2mqtt"

# Funktion zum Senden der LWT-Nachricht
# Übergabeparameter Online oder Offline
send_lwt() {
local status="$1"
mosquitto_pub -h $broker_address -p $broker_port -t $mqtt_topic/LWT -m $status -q 1 -r
}

# Funktion zum Senden der Nachricht
send_msg() {
local topic="$1"
local message="$2"
mosquitto_pub -h $broker_address -p $broker_port -t "$mqtt_topic/$topic" -m "$message" -q 1
}

trap 'send_lwt "Offline"' EXIT INT

while [ 1 ]
do
curl --silent --user $deye_user:$deye_pass http://$deye_ip/status.html > $TMP
if [ $? = 0 ]; then
send_lwt Online
current_power=`grep "var webdata_now_p" $TMP | cut -d\" -f2`
total_today=`grep "var webdata_today_e" $TMP | cut -d\" -f2`
total_lifetime=`grep "var webdata_total_e" $TMP | cut -d\" -f2`
send_msg current_power $current_power
send_msg total_today $total_today
send_msg total_lifetime $total_lifetime
else
send_lwt Offline
send_msg current_power 0
fi
sleep $interval
d
Meine Daten sind das was der MQTT-Explorer auf dem Bildschirm ausgibt. Bei den Tasmotas sind die interessanten Werde immer in einer eigenen Zeile beginnend mitSENSOR und dann folgen die Werte innerhalb einer geschweiften Klammer, Text in Anführungszeichen-Doppelpunkt-Wert mit abschließendem Komma. Das Deye Script gibt jeden Wert auf einer neuen Zeile aus.

Code: Alles auswählen

SENSOR = {"Time":"2024-06-01T19:23:40","ENERGY":{"TotalStartTime":"2023-06-19T19:55:19","Total":399.774,"Yesterday":1.846,"Today":1.320,"Period": 1,"Power":185,"ApparentPower":185,"ReactivePower": 0,"Factor":1.00,"Voltage":234,"Current":0.793}}
MQQT-Tasmota.jpeg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Johannes911
Beiträge: 68
Registriert: 17. Aug 2020 08:02
Answers: 0

Re: 600W PV Mikrowechselrichter von Deye

Beitrag von Johannes911 »

Danke!
deine Vorlagen für THINGS und ITEMS waren genau passend.
Gruß
Johannes

Antworten