NEWS
Balkonkraftwerk DPM8624 Tasmota Sonoff-Adapter
-
@wal said in Balkonkraftwerk DPM8624 Tasmota Sonoff-Adapter:
Du kannst den VCC vom DPM mit den 5V vom Wemos verbinden, dann läuft der ohne USB/Netzteil.
SO hatte ich die Ursprungskonfig. Da dachte ich, das der DPM mit seinen 5v meinen D1 zerschiesst. Das USB Kabel benutze ich erst seit den letzten 2.
Die Weboberfläche kann ich erreichen und alles umstellen. Der D1 reagiert.
-
@fimoknete ,
den DPM hast du auf Modbus umgestellt ? -
@wal
Ja, Modbus, 9,6k, Adresse 1 usw.
Am Anfang liest der ja auch Daten und ich kann über die Oberfläche den DPM Steuern. Die Probleme fangen erst nach einer Weile an. Ich habe aber nie beobachet, ob nicht MQTT irgendwie schuld daran ist. Jedenfalls, wenn ich 0 hab und ich MQTT ausstelle, kommen die Daten auch nicht wieder. Bleibt alles bei 0. -
@fimoknete ,
hatte ich jetzt noch nicht, wüsste auch nicht was das sein kann. -
@wal
Ich flashe den 400sten D1 nachher mal und häng den dran ohne MQTT zu aktivieren. Mal schauen ob der das länger überlebt. Könntest du noch mal die genauen Einstellungen, die du hast Posten? Das wäre super lieb.
Firmware, Skript, Einstellungen am D1.
Vielleicht mache ober habe ich irgendwas falsches. -
@fimoknete ,
ok heute Abend. -
-
@wal
SO läuft jetzt wie immer am Anfang. Allerdings habe ich nie das 4m Skript genutzt.Ich kann es von der GUI steuern.
ESP hängt am USB-C, (RX, TX; DPM)
-
@fimoknete ,
GND muss auch mit dem DPM verbunden sein. -
@wal
OK, Danke. RX, TX und GND hängen am ESP -
@fimoknete Ich lass das mal so bis nach dem Essen hängen.
Muss ich noch irgendwas beim MQTT beachten? Bisher hab ich das nur Adressenmäßig an meinen Server angepasst. -
@fimoknete ,
das Script ist für den Sonoff-Adapter optimiert, was im MQTT-Adapter ankommt weis ich nicht. -
@wal
Ich hab SONOFF eingebunden.
Er hat das hier erstellt:
IOBROKER sieht es, wenn ich die Werte in der GUI verändere. Aber wenn ich die Werte im IOBroker verändere, kommt das nicht am DPM an.
-
-
@wal
Jetzt gehts erst mal. Vielen Dank. -
Hi ich habe eine allgemeine frage. Muss der script des ir-Lesekopf am zähler sagen, dass die Daten an den broker gesendet werden?
Bisher habe ich nur diesen script am ir-lesekopf. Dieser ist aber schon mit dem broker (raspi-mosquitto) verbunden. Den script am dpm (bei mir ist es der 8650) habe ich schon drauf - allerdings ist er nicht von mir und ich verstehe nicht ob der script sagt, dass er sich die daten direkt beim ir-lesekopf holt und damit dann sofort den dpm steuert.>D Vmax=60 ;max value from specifications https://joy-it.net/en/products/JT-DPM8650 Cmax=50 ;max value from specifications https://joy-it.net/en/products/JT-DPM8650 v=0 ;store device voltage state (targeted) V=0 ;store WebUI voltage state (targeted) c=0 ;store device current state (targeted) C=0 ;store WebUI current state (targeted) sw=0 ;store device switch state SW=0 ;store WebUI switch state rV="01060000" ;ModBus register (voltage) vV="" ;store hex value of V to append to rV rC="01060001" ;ModBus register (current) vC="" ;store hex value of C to append to rC rSW="01060002000" ;ModBus register (switch) vSW="" ;store hex value of SW to append to rSW >B smlj=0 ;disable publishing at MQTT teleperiod, on boot ->sensor53 r >R smlj=0 ;disable publishing at MQTT teleperiod, on reboot >S if upsecs>30 then smlj=1 ;re-enable publishing at MQTT teleperiod, after boot endif >W bu(SW "DPM ON" "DPM OFF") ;toggle switch via WebUI nm(0.0 60.0 0.01 V "DPM out (V)" 200 2) ;set voltage output via WebUI nm(0.0 24.0 0.01 C "DPM out (A)" 200 2) ;set current output via WebUI >T sw=DC#sSwitch ;load switch state from ModBus variable >M v=DC#sVolt ;load voltage state from ModBus variable >M c=DC#sCur ;load voltage state from ModBus variable >M if ((chg[sw]>0) and (SW!=sw)) ;update WebUI based on physical input (switch) then SW=sw endif if ((chg[v]>0) and (V!=v)) ;update WebUI based on physical input (voltage) then V=v endif if ((chg[c]>0) and (C!=c)) ;update WebUI based on physical input (current) then C=c endif if chg[V]>0 ;update ModBus register based on WebUI input (voltage) then if V>Vmax ;prevent out of bound value (voltage max) then V=Vmax endif if V<0 ;prevent out of bound value (voltage min) then V=0 endif vV=rV+sb(hx((V*100)) 4 4) sml(1 3 vV) endif if chg[C]>0 ;update ModBus register based on WebUI input (current) then if C>Cmax ;prevent out of bound value (current max) then C=Cmax ;prevent out of bound value (current min) endif if C<0 then C=0 endif vC=rC+sb(hx((C*1000)) 4 4) sml(1 3 vC) endif if ((chg[SW]>0) and (sw!=SW) ;update ModBus register based on WebUI input (switch) then vSW=rSW+s(SW) sml(1 3 vSW) endif >M 1 +1,4,m,16,9600,DC,5,2,010300000001,010300010001,010300020001,010310010001,010310020001 ;ModBus register taken from JT-DPM86XX_Communication_protocol_2022-07-06.pdf provided by Joy-IT 1,010302SSssxxxx@i1:100,Voltage (set),V,sVolt,2 1,010302SSssxxxx@i2:1000,Current (set),A,sCur,2 1,010302SSssxxxx@i3:1,Switch (set),,sSwitch,0 1,010302SSssxxxx@i4:100,Voltage (disp),V,dVolt,2 1,010302SSssxxxx@i5:1000,Current (disp),A,vCur,2 #
-
@jonas-haber wenn du im Tasmota den MQTT-Broker konfiguriert hast, sendet er diesem alle gemäß dem Wert
Teleperiod
alle X Sekunden den Wert. Taucht untertele/Name/SENSOR
auf.
Wenn du ganz unten an dein Skript folgendes anhängst:
=>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %LK12BE[2]%
Sollte er das an dieses Topic senden - und zwar bei jeder Änderung.
Soyosource/SOYO_1ce2fb/L1L2L3
Das Topic kannst du anpassen wie du es brauchst (Bitte keine Leerzeichen und Sonderzeichen außer
_
),
also am besten das Topic was dein anderes Gerät abonniert hat. Mein Pfad oben geht z.B. auf meinen SoYoSource-Controller um die Einspeisung zu steuern. -
@bananajoe danke für die schnelle Antwort.
=>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %LK12BE[2]%
ist hierbei Soyosource das topic ? oder SOYO_1ce2fb ?
Meine topic heißt ganz einfach tasmota ...
ungefähr so ?
-
@jonas-haber das Publish im Skript hat NICHTS mit den MQTT Einstellungen zu tun. Du kannst im Skript an ein beliebiges Topic separat davon senden, in Echtzeit, immer wenn sich ein Wert geändert hat.
Zudem gehört es ganz nach unten, hinter das letzte #
Kann sein das noch ein>S
dahin gehört, bei mir sieht das so aus:>D >B =>sensor53 r >M 1 +1,3,s,0,9600,SML 1,77070100010801ff@1000,Verbrauch_Tarif_1,kWh,Verbrauch_T1,7 1,77070100010802ff@1000,Verbrauch_Tarif_2,kWh,Verbrauch_T2,7 1,77070100010800ff@1000,Verbrauch_Summe,kWh,Verbrauch_Summe,7 1,77070100020800ff@1000,Einspeisung_Summe,kWh,Einspeisung_Summe,7 1,=h-- 1,77070100240700ff@1,Leistung_L1,W,Watt_L1,2 1,77070100380700ff@1,Leistung_L2,W,Watt_L2,2 1,770701004c0700ff@1,Leistung_L3,W,Watt_L3,2 1,77070100100700ff@1,Leistung_Summe,W,Watt_Summe,2 1,=h-- 1,77070100200700ff@1,Spannung_L1,V,Volt_L1,1 1,77070100340700ff@1,Spannung_L2,V,Volt_L2,1 1,77070100480700ff@1,Spannung_L3,V,Volt_L3,1 # >S =>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]% =>Publish Huawei/Huawei_1cea67/L1L2L3 %sml[8]%
Die Topics: Du sollst als Topic / Pfad das einsetzen wohin du es haben willst.
Meine beiden Zeilen oben senden das an meine Batterieladegerät (Huawei) damit das weis wieviel Überschuss da ist und mit wieviel Watt es laden darf, und meine Inverter (SoYouSource) damit die Wissen wieviel die Einspeisen müssen.Du sollst da den Pfad nehmen den du haben willst oder brauchst. Im MQTT-Adapter wird aus
Soyosource/SOYO_1ce2fb/L1L2L3
ein
mqtt.0.Soyosource.SOYO_1ce2fb.L1L2L3
Datenpunkt.
Du kannst das auchmein/toller/zaehlerstand/und/so/weiter/nennen
Du willst den "DPM" steuern, hat der denn einen MQTT Datenpunkt den dieser abfragt? Den Pfad müsstest du nehmen
-
@bananajoe super danke !
jetzt legt er richtig los ...
Jetzt verstehe ich, dass das mit der eigentlichen topic garnichts zutun hat. Man erstellt also einen Pfad wo die Daten bei jeder Änderung hingesendet werden.
Ich versuche jetzt, dass der DPM diesen Pfad abfragt. Wo fragt dein Soyo denn die Daten ab?