Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]Variablen Übergabe aus MODBUS an Homematic

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

[gelöst]Variablen Übergabe aus MODBUS an Homematic

Scheduled Pinned Locked Moved Skripten / Logik
17 Posts 3 Posters 3.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #8

    @mguenther:

    Ich rufe das Skript jetzt alle 15min auf: `
    Weshalb das ? Eine Aktualisierung des Wertes in der SV genügt immer dann, wenn sich der Wert der Quelle ändert. Das macht

    on(idSrc, idDst); // Aktualisierung bei Wertänderung
    

    @mguenther:

    Ist eine Übergabe eigentlich auch in beide Richtungen möglich? so in etwa? `
    Ja.
    @mguenther:

    mein "hm-rega.0.31807" nimmt den Wert nicht an… 😞 `
    Das ist die Quelle (idSrc3).
    @mguenther:

    kann das intervall eigentlich auch in einr Schleife ausgeführt werden? Wahrscheinlich muss ich den Variablenname irgendwie zusammensetzen `
    Nein, den Variablennamen kann man nicht zusammensetzen.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mguenther
      wrote on last edited by
      #9

      @paul53:

      Weshalb das ? Eine Aktualisierung des Wertes in der SV genügt immer dann, wenn sich der Wert der Quelle ändert. Das macht

      on(idSrc, idDst); // Aktualisierung bei Wertänderung
      ```` `  
      

      Modbus prüft alle 5sek(?) den Status und schreibt den WErt quasi neu. Dieser wird dann auch immer an die CCU übertragen. Ich dachte, ich ruf aber nur alle 15min den Wert auf, um die CCU nicht "vollzuballern"…

      Ich übertrage ja auch nicht nur ein Wert, sondern eben mehrere...

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #10

        @mguenther:

        Modbus prüft alle 5sek(?) den Status und schreibt den WErt quasi neu. `
        Es wird sich aber nicht alle 5 s der <u>Wert</u> ändern ? Es wird nur getriggert und an die CCU gesendet, wenn sich der Wert ändert !

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mguenther
          wrote on last edited by
          #11

          doch, genau das geschieht. Hätte ich vorher auch nicht gedacht. z.B. springt ein Wert immer um 22.1°. Mal ist er 22.2°, mal 22.1°, dann wieder 22.0° usw. Ich hatte zuerst gesucht, ob ich z.B. die Temperatur nur in 0.5er Schritten mir auswerten lassen kann, habs aber nicht hinbekommen.

          hier mal ein Screenshot der Variablen in HM:
          6305_prot_hm.png

          teilweise sind es sogar auch 2sec. Die 5 sec waren von mir vorhin geschätzt…

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mguenther
            wrote on last edited by
            #12

            gibt es ne Möglichkeit, den Wert auf 0.5° zu runden? Ich kenne von früher noch die Möglichkeit mit Wert verdoppeln (22.2 –> 44.4), runden (44.4 --> 44.0), halbieren (44.0 -> 22.0) oder 21.7 --> 43,4, 43.4 -->43, 43-->21.5

            nur, wie setz ich das um?

            der Rest klappt übrigens spitze - danke dir....

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mguenther
              wrote on last edited by
              #13

              etwas googlen und Grips anstrengen sollte auch noch bei mir helfen:

              EDIT:

              […]

              const idSrc1 = "modbus.0.holdingRegisters.214_REG_HC_TEMP_IN2";
              const idDst1 = "hm-rega.0.31793";
              const idSrc2 = "modbus.0.holdingRegisters.213_REG_HC_TEMP_IN1";
              const idDst2 = "hm-rega.0.31794";
              const idSrc3 = "hm-rega.0.31807";
              const idDst3 = "modbus.0.holdingRegisters.100_REG_FAN_SPEED_LEVEL";
              
              var idSrc1_1 = Math.round(getState(idSrc1).val*2)/2;
              var idSrc2_1 = Math.round(getState(idSrc2).val*2)/2;
              setState(idDst1, idSrc1_1); // Scriptstart
              setState(idDst2, idSrc2_1); // Scriptstart
              setState(idDst3, getState(idSrc3).val); // Scriptstart
              on(idSrc1_1, idDst1); // Aktualisierung bei Wertänderung
              on(idSrc2_1, idDst2); // Aktualisierung bei Wertänderung
              on(idSrc3, idDst3); // Aktualisierung bei Wertänderung
              

              so müsste es funktioneren

              danke paul

              1 Reply Last reply
              0
              • paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #14

                @mguenther:

                gibt es ne Möglichkeit, den Wert auf 0.5° zu runden? `

                val1 = Math.round(2 * val1) / 2;
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mguenther
                  wrote on last edited by
                  #15

                  @paul53:

                  @mguenther:

                  gibt es ne Möglichkeit, den Wert auf 0.5° zu runden? `

                  val1 = Math.round(2 * val1) / 2;
                  ```` `  
                  

                  habe in dem Post über dir "meine" Lsg abgeändert. Danke an dich!! Spitzenforum hier…

                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #16

                    @mguenther:

                    dachte, so müsste es funktioneren `
                    Leider nicht so richtig.

                    const idSrc1 = "modbus.0.holdingRegisters.214_REG_HC_TEMP_IN2";
                    const idDst1 = "hm-rega.0.31793";
                    const idSrc2 = "modbus.0.holdingRegisters.213_REG_HC_TEMP_IN1";
                    const idDst2 = "hm-rega.0.31794";
                    const idSrc3 = "hm-rega.0.31807";
                    const idDst3 = "modbus.0.holdingRegisters.100_REG_FAN_SPEED_LEVEL";
                    
                    var val1 = Math.round(2 * getState(idSrc1).val) / 2;
                    var val2 = Math.round(2 * getState(idSrc2).val) / 2;
                    
                    setState(idDst1, val1); // Scriptstart
                    setState(idDst2, val2); // Scriptstart
                    setState(idDst3, getState(idSrc3).val); // Scriptstart
                    
                    on(idSrc1, function(dp) {
                       var val = Math.round(2 * dp.state.val) / 2;
                       if(val != val1) {
                          setState(idDst1, val);
                          val1 = val;
                       }   
                    });
                    on(idSrc2, function(dp) {
                       var val = Math.round(2 * dp.state.val) / 2;
                       if(val != val2) {
                          setState(idDst2, val);
                          val2 = val;
                       }   
                    });
                    on(idSrc3, idDst3); // Aktualisierung bei Wertänderung
                    
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mguenther
                      wrote on last edited by
                      #17

                      habs gerade gemerkt - Ich probiere es weiter… 😄

                      EDIT:

                      funzt... danke!

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      695

                      Online

                      32.4k

                      Users

                      81.4k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe