Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Probleme beim MODBus Holding Register schreiben per Skript

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    630

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    628

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Probleme beim MODBus Holding Register schreiben per Skript

Geplant Angeheftet Gesperrt Verschoben Hardware
schreiben settings einstellungholding registerwriteschreibenmodbus
16 Beiträge 3 Kommentatoren 3.5k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Atlantis

    @UncleSam Danke für Dein Angebot uns zu unterstützen.

    Ich versuche aktuell die Objekte mit Blocky zu schreiben.

    Das sind aktuell meine 2 Versuche:
    aa07ec9a-a9ba-4fd4-933d-c45045c4fd41-grafik.png
    Übersetzt sieht dass dann im unteren Fall so aus:

    on({id: getState("modbus.1.holdingRegisters.13049_EMS_mode selection").val, change: "ne"}, async function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      if (getState("modbus.1.holdingRegisters.13049_EMS_mode selection").val == 0) {
        setState("modbus.1.holdingRegisters.13049_EMS_mode selection", 3, true);
      }
    
    

    Gruss

    Atlantis

    DolomitiD Offline
    DolomitiD Offline
    Dolomiti
    schrieb am zuletzt editiert von Dolomiti
    #4

    @Atlantis
    Ich meine irgendwo im Forum was gelesen zu haben, das du "steuere" und nicht "aktualisiere" verwenden musst.

    Edit. Gerade war da noch ein Blockly bei dir zu sehen. Jetzt ist es weg.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

    A 3 Antworten Letzte Antwort
    1
    • DolomitiD Dolomiti

      @Atlantis
      Ich meine irgendwo im Forum was gelesen zu haben, das du "steuere" und nicht "aktualisiere" verwenden musst.

      Edit. Gerade war da noch ein Blockly bei dir zu sehen. Jetzt ist es weg.

      A Offline
      A Offline
      Atlantis
      schrieb am zuletzt editiert von Atlantis
      #5

      @Dolomiti Wie mache ich das aus Blocky heraus. Ich bin mit JS noch nicht warm, komme eher aus der C Ecke, wobei das hier wenn es um Regsiter schreiben geht schon sehr ähnlich aussieht.

      Werde mal mit steuere und aktualisiere im FOrum suchen...

      DolomitiD 1 Antwort Letzte Antwort
      0
      • DolomitiD Dolomiti

        @Atlantis
        Ich meine irgendwo im Forum was gelesen zu haben, das du "steuere" und nicht "aktualisiere" verwenden musst.

        Edit. Gerade war da noch ein Blockly bei dir zu sehen. Jetzt ist es weg.

        A Offline
        A Offline
        Atlantis
        schrieb am zuletzt editiert von
        #6

        @Dolomiti Ja, moment stelle ich gleichnnoch einmal rein

        1 Antwort Letzte Antwort
        0
        • DolomitiD Dolomiti

          @Atlantis
          Ich meine irgendwo im Forum was gelesen zu haben, das du "steuere" und nicht "aktualisiere" verwenden musst.

          Edit. Gerade war da noch ein Blockly bei dir zu sehen. Jetzt ist es weg.

          A Offline
          A Offline
          Atlantis
          schrieb am zuletzt editiert von
          #7

          @Dolomiti O.K. jetzt habe ich es verstanden, was Du meinst... Ich probiere das mal und gebe gleich Rückinfo

          1 Antwort Letzte Antwort
          0
          • A Atlantis

            @Dolomiti Wie mache ich das aus Blocky heraus. Ich bin mit JS noch nicht warm, komme eher aus der C Ecke, wobei das hier wenn es um Regsiter schreiben geht schon sehr ähnlich aussieht.

            Werde mal mit steuere und aktualisiere im FOrum suchen...

            DolomitiD Offline
            DolomitiD Offline
            Dolomiti
            schrieb am zuletzt editiert von
            #8

            @Atlantis
            Bei mir ist es umgekehrt, ich komm nicht so richtig mit Blockly klar.:flushed:

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

            A 1 Antwort Letzte Antwort
            0
            • DolomitiD Dolomiti

              @Atlantis
              Bei mir ist es umgekehrt, ich komm nicht so richtig mit Blockly klar.:flushed:

              A Offline
              A Offline
              Atlantis
              schrieb am zuletzt editiert von
              #9

              @Dolomiti Du meintest so, oder?
              c34764b8-4ea7-40d7-81b7-a4e9c077c574-grafik.png

              DolomitiD 1 Antwort Letzte Antwort
              0
              • A Atlantis

                @Dolomiti Du meintest so, oder?
                c34764b8-4ea7-40d7-81b7-a4e9c077c574-grafik.png

                DolomitiD Offline
                DolomitiD Offline
                Dolomiti
                schrieb am zuletzt editiert von Dolomiti
                #10

                @Atlantis Ja, so könnte es gehen.

                D.h. wenn sich das Register ändert überprüfst du, ob der Wert null ist um ihn dann auf drei zu setzen.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                A 2 Antworten Letzte Antwort
                0
                • DolomitiD Dolomiti

                  @Atlantis Ja, so könnte es gehen.

                  D.h. wenn sich das Register ändert überprüfst du, ob der Wert null ist um ihn dann auf drei zu setzen.

                  A Offline
                  A Offline
                  Atlantis
                  schrieb am zuletzt editiert von Atlantis
                  #11

                  @Dolomiti Erster Versuch mit dem Blocky von eben hat nach dem Erreichen des Nullwertes den Regsiterwert nicht zurück auf 3 gesetzt. Dann neuer Versuch, alle 10 Sekunden den Wert auf 3 setzen.
                  76d0669d-9d48-4296-b7e4-795bbc7319a8-grafik.png

                  für Dich noch als JS:

                  schedule("*/10 * * * * *", async function () {
                    setState("modbus.0.holdingRegisters.13049_EMS_mode selection", 3);
                  });
                  

                  Geht leider auch nicht.

                  Logeinträge im Status Debug gibt es keine, die MOD Bus Adapter laufen momentan aber in Zeitlupe, auch Handeinträge kommen oft nicht am WR an. Der Zeitstempel hinter den Holding Register EInträgen ist tlw. 4-6 Minuten alt.

                  Anbei mal noch meine Settings:
                  73121dd2-8ddf-4585-8905-95a6883ffd84-grafik.png

                  b276dd4f-8163-4470-ba75-f172fbcba424-grafik.png
                  Weitere Ideen?

                  Gruss ATlantis

                  DolomitiD 1 Antwort Letzte Antwort
                  0
                  • DolomitiD Dolomiti

                    @Atlantis Ja, so könnte es gehen.

                    D.h. wenn sich das Register ändert überprüfst du, ob der Wert null ist um ihn dann auf drei zu setzen.

                    A Offline
                    A Offline
                    Atlantis
                    schrieb am zuletzt editiert von
                    #12

                    @Dolomiti Nachdem auch meine VIS über 10 Minuten hinterher hing, habe ich mich jetzt für
                    sudo shutdown -r now

                    entscheiden. Mal sehen ob es was hilft...

                    1 Antwort Letzte Antwort
                    0
                    • A Atlantis

                      @Dolomiti Erster Versuch mit dem Blocky von eben hat nach dem Erreichen des Nullwertes den Regsiterwert nicht zurück auf 3 gesetzt. Dann neuer Versuch, alle 10 Sekunden den Wert auf 3 setzen.
                      76d0669d-9d48-4296-b7e4-795bbc7319a8-grafik.png

                      für Dich noch als JS:

                      schedule("*/10 * * * * *", async function () {
                        setState("modbus.0.holdingRegisters.13049_EMS_mode selection", 3);
                      });
                      

                      Geht leider auch nicht.

                      Logeinträge im Status Debug gibt es keine, die MOD Bus Adapter laufen momentan aber in Zeitlupe, auch Handeinträge kommen oft nicht am WR an. Der Zeitstempel hinter den Holding Register EInträgen ist tlw. 4-6 Minuten alt.

                      Anbei mal noch meine Settings:
                      73121dd2-8ddf-4585-8905-95a6883ffd84-grafik.png

                      b276dd4f-8163-4470-ba75-f172fbcba424-grafik.png
                      Weitere Ideen?

                      Gruss ATlantis

                      DolomitiD Offline
                      DolomitiD Offline
                      Dolomiti
                      schrieb am zuletzt editiert von Dolomiti
                      #13

                      @Atlantis Die Settings sehen bei mir auch so aus.
                      Hab das Blockly mal nachgebaut und mit meiner Heizungssteuerung probiert, die über eine Wago-SPS 750-880 läuft probiert. Wenn der Wert 22 erreicht wird er wieder auf 20 zurück gesetzt.

                      2021-01-09 18_25_11-javascript - ioBroker - Vivaldi.png

                      Und noch als Blockly-Export

                      on({id: 'modbus.0.holdingRegisters.40771_T_WZ_W', change: "ne"}, async function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        if (getState("modbus.0.holdingRegisters.40771_T_WZ_W").val == 22) {
                          setState("modbus.0.holdingRegisters.40771_T_WZ_W"/*Sollwert Wohnzimmer*/, 20);
                        }
                      });
                      
                      

                      bzw. hier der Export. Oben die Umwandlung nach JS

                      <xml xmlns="https://developers.google.com/blockly/xml">
                       <block type="on_ext" id="9:cE=oem[o9w2e{1.kVD" x="88" y="63">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                         <field name="CONDITION">ne</field>
                         <field name="ACK_CONDITION"></field>
                         <value name="OID0">
                           <shadow type="field_oid" id=":~)ktxq4IBIR9BqE9#3*">
                             <field name="oid">modbus.0.holdingRegisters.40771_T_WZ_W</field>
                           </shadow>
                         </value>
                         <statement name="STATEMENT">
                           <block type="controls_if" id="$aO_3#Dcm-O%q3Y+x9QM">
                             <value name="IF0">
                               <block type="logic_compare" id="FGaO+K#}fG$oY9cguS2a">
                                 <field name="OP">EQ</field>
                                 <value name="A">
                                   <block type="get_value" id="v8eh)if,K^S5H_rDN1I}">
                                     <field name="ATTR">val</field>
                                     <field name="OID">modbus.0.holdingRegisters.40771_T_WZ_W</field>
                                   </block>
                                 </value>
                                 <value name="B">
                                   <block type="math_number" id="s/=huaZkeI2T{MjL{T6f">
                                     <field name="NUM">22</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <statement name="DO0">
                               <block type="control" id="3a:r:e-%a{G/*+_C@,6,">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">modbus.0.holdingRegisters.40771_T_WZ_W</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="math_number" id=";_h_S~yjv5T8qvP%*GxG">
                                     <field name="NUM">20</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                           </block>
                         </statement>
                       </block>
                      </xml>
                      

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                      Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                      A 1 Antwort Letzte Antwort
                      0
                      • DolomitiD Dolomiti

                        @Atlantis Die Settings sehen bei mir auch so aus.
                        Hab das Blockly mal nachgebaut und mit meiner Heizungssteuerung probiert, die über eine Wago-SPS 750-880 läuft probiert. Wenn der Wert 22 erreicht wird er wieder auf 20 zurück gesetzt.

                        2021-01-09 18_25_11-javascript - ioBroker - Vivaldi.png

                        Und noch als Blockly-Export

                        on({id: 'modbus.0.holdingRegisters.40771_T_WZ_W', change: "ne"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          if (getState("modbus.0.holdingRegisters.40771_T_WZ_W").val == 22) {
                            setState("modbus.0.holdingRegisters.40771_T_WZ_W"/*Sollwert Wohnzimmer*/, 20);
                          }
                        });
                        
                        

                        bzw. hier der Export. Oben die Umwandlung nach JS

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <block type="on_ext" id="9:cE=oem[o9w2e{1.kVD" x="88" y="63">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                           <field name="CONDITION">ne</field>
                           <field name="ACK_CONDITION"></field>
                           <value name="OID0">
                             <shadow type="field_oid" id=":~)ktxq4IBIR9BqE9#3*">
                               <field name="oid">modbus.0.holdingRegisters.40771_T_WZ_W</field>
                             </shadow>
                           </value>
                           <statement name="STATEMENT">
                             <block type="controls_if" id="$aO_3#Dcm-O%q3Y+x9QM">
                               <value name="IF0">
                                 <block type="logic_compare" id="FGaO+K#}fG$oY9cguS2a">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="get_value" id="v8eh)if,K^S5H_rDN1I}">
                                       <field name="ATTR">val</field>
                                       <field name="OID">modbus.0.holdingRegisters.40771_T_WZ_W</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="math_number" id="s/=huaZkeI2T{MjL{T6f">
                                       <field name="NUM">22</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="control" id="3a:r:e-%a{G/*+_C@,6,">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                   <field name="OID">modbus.0.holdingRegisters.40771_T_WZ_W</field>
                                   <field name="WITH_DELAY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="math_number" id=";_h_S~yjv5T8qvP%*GxG">
                                       <field name="NUM">20</field>
                                     </block>
                                   </value>
                                 </block>
                               </statement>
                             </block>
                           </statement>
                         </block>
                        </xml>
                        

                        A Offline
                        A Offline
                        Atlantis
                        schrieb am zuletzt editiert von Atlantis
                        #14

                        @Dolomiti Nachdem Reboot kann ich jetzt wieder die Holding Register in den Objekten zügig setzen und die gesetzten werden auch so im WR übernommen.

                        Per Skipt nach wie vor Fehlanzeige.

                        Jetzt habe ich aber eine neues, völlig unbekanntes Problem.
                        Die Vis hängt trotz Reboot auf dem alten Wert von 18:01 Uhr (als vor 30 Minuten) fest.

                        O.K. dachte Browser Cache. Neues privates Fenster geöfnet. VIS zeigt das gleiche, obwohl ich um 18:23 gerebootet habe.
                        Manchmal ist es echt zum Verzweifeln, vor allem als IO Broker Neuling...

                        Ich glaube nicht, das an der Logik des Blocky hängt. Im Forum hatt jemand schon einmal genau das gleiche Problem geschildert. Nach Adapter Neustart war bei ihm dann aber alles i.O.
                        Gruss
                        Atlantis

                        A DolomitiD 2 Antworten Letzte Antwort
                        0
                        • A Atlantis

                          @Dolomiti Nachdem Reboot kann ich jetzt wieder die Holding Register in den Objekten zügig setzen und die gesetzten werden auch so im WR übernommen.

                          Per Skipt nach wie vor Fehlanzeige.

                          Jetzt habe ich aber eine neues, völlig unbekanntes Problem.
                          Die Vis hängt trotz Reboot auf dem alten Wert von 18:01 Uhr (als vor 30 Minuten) fest.

                          O.K. dachte Browser Cache. Neues privates Fenster geöfnet. VIS zeigt das gleiche, obwohl ich um 18:23 gerebootet habe.
                          Manchmal ist es echt zum Verzweifeln, vor allem als IO Broker Neuling...

                          Ich glaube nicht, das an der Logik des Blocky hängt. Im Forum hatt jemand schon einmal genau das gleiche Problem geschildert. Nach Adapter Neustart war bei ihm dann aber alles i.O.
                          Gruss
                          Atlantis

                          A Offline
                          A Offline
                          Atlantis
                          schrieb am zuletzt editiert von Atlantis
                          #15

                          @Atlantis @Dolomiti @UncleSam
                          Habe den Fehler jetzt gefunden.
                          VIS hing, da das Blocky Skript, welches ich zum Testen um den Eintrag mit den Holding Registern ergänzt habe,
                          ohne jegliche Fehlermeldung eingefroren war.

                          Habe dann kurz alle Testeinträge zu den Holdiung Registern von vorher gelöscht, bis auf den mit den 10/20 Sekunden weisen setzen des Holding Registers und wollte das Skript abspeichern.
                          Dabei habe ich die JS Warnung in Rot erhalten mit einem Compiler Fehler. Also das 10 Sek. Blocky gelöscht und gespeichert.

                          --> Siehe da! Die VIS lief wieder wie vorher.

                          Dann im gleichen Blocke erneut das gleiche Skript mit 20 Sekunden Register Setzen eingebaut, gespeichert. --> Keinen Compiler Fehler und....

                          Das Holding Regsiter wird brav alle 20 Sekunden gesetzt.

                          Für die, die das hier je mal nachlesen. Funktionierende Lösung sieht so aus:
                          Blocky:
                          10511735-4a76-4cf7-b975-59a87f9adbcf-grafik.png

                          oder als JS:

                          schedule("*/20 * * * * *", async function () {
                            setState("modbus.0.holdingRegisters.13049_EMS_mode selection", 3);
                          });
                          
                          
                          

                          Gruss und ganz lieben Dank allen !!!!!
                          Atlantis

                          1 Antwort Letzte Antwort
                          0
                          • A Atlantis

                            @Dolomiti Nachdem Reboot kann ich jetzt wieder die Holding Register in den Objekten zügig setzen und die gesetzten werden auch so im WR übernommen.

                            Per Skipt nach wie vor Fehlanzeige.

                            Jetzt habe ich aber eine neues, völlig unbekanntes Problem.
                            Die Vis hängt trotz Reboot auf dem alten Wert von 18:01 Uhr (als vor 30 Minuten) fest.

                            O.K. dachte Browser Cache. Neues privates Fenster geöfnet. VIS zeigt das gleiche, obwohl ich um 18:23 gerebootet habe.
                            Manchmal ist es echt zum Verzweifeln, vor allem als IO Broker Neuling...

                            Ich glaube nicht, das an der Logik des Blocky hängt. Im Forum hatt jemand schon einmal genau das gleiche Problem geschildert. Nach Adapter Neustart war bei ihm dann aber alles i.O.
                            Gruss
                            Atlantis

                            DolomitiD Offline
                            DolomitiD Offline
                            Dolomiti
                            schrieb am zuletzt editiert von
                            #16

                            @Atlantis Schön das es jetzt funktioniert.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            437

                            Online

                            32.6k

                            Benutzer

                            81.9k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe