Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. Balkonkraftwerk DPM8624 Tasmota Sonoff-Adapter

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Balkonkraftwerk DPM8624 Tasmota Sonoff-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • Wal
      Wal Developer @fimoknete last edited by

      @fimoknete ,
      das Script ist für den Sonoff-Adapter optimiert, was im MQTT-Adapter ankommt weis ich nicht.

      F 1 Reply Last reply Reply Quote 0
      • F
        fimoknete @Wal last edited by

        @wal
        Ich hab SONOFF eingebunden.
        Er hat das hier erstellt:
        f5e48194-3d48-4643-bfac-0b56eefbc12c-image.png

        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 1 Reply Last reply Reply Quote 0
        • Wal
          Wal Developer @fimoknete last edited by

          @fimoknete ,
          dpm3.jpg

          F 1 Reply Last reply Reply Quote 0
          • F
            fimoknete @Wal last edited by

            @wal
            Jetzt gehts erst mal. Vielen Dank.

            Jonas Haber 1 Reply Last reply Reply Quote 0
            • Jonas Haber
              Jonas Haber @fimoknete last edited by

              Hi ich habe eine allgemeine frage. Muss der script des ir-Lesekopf am zähler sagen, dass die Daten an den broker gesendet werden? Screenshot 2024-04-09 164501.png 0a42f4a9-6ebb-4c6e-8549-a70d2ec11676-image.png
              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
              #
              
              BananaJoe 1 Reply Last reply Reply Quote 0
              • BananaJoe
                BananaJoe Most Active @Jonas Haber last edited by BananaJoe

                @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 unter

                tele/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.

                Jonas Haber 1 Reply Last reply Reply Quote 0
                • Jonas Haber
                  Jonas Haber @BananaJoe last edited by

                  @bananajoe danke für die schnelle Antwort.

                  =>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %LK12BE[2]%
                  

                  ist hierbei Soyosource das topic ? oder SOYO_1ce2fb ?

                  4a9b4afe-e99c-4735-af81-b0b04e47deb0-image.png

                  Meine topic heißt ganz einfach tasmota ...

                  891f1ddf-8fa2-482e-88eb-ebdaa1eafaee-image.png

                  ungefähr so ?

                  BananaJoe 1 Reply Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active @Jonas Haber last edited by

                    @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 auch

                    mein/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

                    Jonas Haber 1 Reply Last reply Reply Quote 0
                    • Jonas Haber
                      Jonas Haber @BananaJoe last edited by

                      @bananajoe super danke !

                      486a7411-0133-4399-b132-ad1ef3323444-image.png

                      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?

                      BananaJoe 1 Reply Last reply Reply Quote 0
                      • BananaJoe
                        BananaJoe Most Active @Jonas Haber last edited by BananaJoe

                        @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)

                        Jonas Haber 1 Reply Last reply Reply Quote 0
                        • Jonas Haber
                          Jonas Haber @BananaJoe last edited by Jonas Haber

                          @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?

                          1 Reply Last reply Reply Quote 0
                          • BananaJoe
                            BananaJoe Most Active last edited by

                            @jonas-haber da bin ich jetzt raus da müsste sich einer der anderen zu äußern die das schon im Einsatz haben

                            Jonas Haber 1 Reply Last reply Reply Quote 0
                            • Jonas Haber
                              Jonas Haber @BananaJoe last edited by

                              @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?

                              BananaJoe 1 Reply Last reply Reply Quote 0
                              • BananaJoe
                                BananaJoe Most Active @Jonas Haber last edited by BananaJoe

                                @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]%

                                Jonas Haber 1 Reply Last reply Reply Quote 0
                                • Jonas Haber
                                  Jonas Haber @BananaJoe last edited by Jonas Haber

                                  @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.

                                  BananaJoe 1 Reply Last reply Reply Quote 0
                                  • BananaJoe
                                    BananaJoe Most Active @Jonas Haber last edited by

                                    @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

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    596
                                    Online

                                    31.7k
                                    Users

                                    79.8k
                                    Topics

                                    1.3m
                                    Posts

                                    6
                                    50
                                    3634
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo