NEWS
Balkonkraftwerk DPM8624 Tasmota Sonoff-Adapter
-
@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?
-
@jonas-haber genau in den Pfaden die ich da oben gezeigt habe. Die werden auf der Weboberfläche meines SoYo-Controllers auch so angezeigt (und die andere auf der des Huawei-Lade-Controller)
-
@bananajoe genau das habe ich jetzt auch verstanden. Ich meinte nur ob oder wie ich den Script beim DPM so schreibe, dass er eben jenen Pfad benutzt. Wie sieht das aus im Script?
-
@jonas-haber da bin ich jetzt raus da müsste sich einer der anderen zu äußern die das schon im Einsatz haben
-
@bananajoe trotzdem riesen dank an dich.
Hier ist mir was aufgefallen
aus meinem Script für den DPM
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
und aus deinem Script vom IR-Sender
=>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
hier kommt bei beiden sml vor. Weißt du was das heißt und könnte das der Pfad sein?
-
@jonas-haber nein. Das ist der Name des Blocks im Script wo die Werte abgefragt werden. Bei mir steht da das sml, bei dir LK12BE
Der Begriff "Block" ist vielleicht nicht der richtige, aber besser weis ich es gerade nicht.
Beim Publish bekommt er die Anweisung - bei dir - sich aus dem Block LK12BE den 2. Wert zu holen:%LK12BE[2]%
-
@bananajoe Danke. Könntest du mir zeigen, wie dein Script von deinem DCDC Wandler aussieht der die Werte von deinem IR-Lesekopf abfragt? Dort müsste ja dann irgendwas stehen bezüglich jenes Verzeichnisses...
=>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
Edit:
bin schon fündig geworden und zwar in diesem thread.
>D Vmax=60 Cmax=24 v=0 V=0 c=0 C=0 sw=0 SW=0 rV="01060000" vV="" rC="01060001" vC="" rSW="01060002000" vSW="" >BS +>subscribe V, cmnd/%topic%/tvolt +>subscribe C, cmnd/%topic%/tampere +>subscribe SW, cmnd/%topic%/tpow
Hier kommt ein ähnlicher Befehl vor. Das müsste es sein. Subscribe müsste ja das Gegenteil sein.
-
@jonas-haber jupp, könnte sein. Sieht so aus als würde er das dann in die jeweilige Variable packen
also müsstest du das an das Topic
cmnd/%topic%/tpow
pushen -
%topic%
musst du halt durch deinen Gerätname ersetzen