Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]Wie Modbus Holding Register für Zeit verändern?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.4k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst]Wie Modbus Holding Register für Zeit verändern?

Scheduled Pinned Locked Moved JavaScript
3 Posts 1 Posters 253 Views 1 Watching
  • 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.
  • P Offline
    P Offline
    pingo
    wrote on last edited by pingo
    #1

    Ich habe über die Modbus Anbindung meines Growatt Wechselrichters u.a. ein Register, dass eine Startzeit beinhaltet. Diese Startzeit möchte ich gerne mit setState per Javascript verändern. Das klappt nur teilweise:

    Das steht in der Anleitung:
    The format for each byte in RTU mode is:
    Coding System: 8–bit binary, hexadecimal 0–9, A–F
    Two hexadecimal characters contained in each
    8–bit field of the message

    Ausgelesen wird das selbe Holdingregister getrennt nach Stunde und Minute:
    laut Anleitung ist es dieses Register (im Modbusadapter muss man 40001 dazuzählen, damit es gefunden wird)
    Bildschirmfoto 2024-01-28 um 12.27.40.jpg
    Bildschirmfoto 2024-01-28 um 20.36.00.jpg
    ergibt dann diese Objekte:
    Bildschirmfoto 2024-01-28 um 20.37.18.jpg

    setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_hour'/*41101 Bat First Start Time 1 Hour*/,10);
    setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_Minute'/*41101 Bat First Start Time 1 Minute*/,5);
    

    diese Javascriptbefehle ändern die beiden Objekte kurz auf die gewünschte Zeit (Zahl ist dann grün). Sobald allerdings die beiden Register aber vom Modbus Adapter neu ausgelesen werden, wird die Stundenzahl rot und dann auf 0 gesetzt. Die Minutenzahl wird akzeptiert und bleibt.

    irgendwie greife ich wohl nicht sauber auf das gemeinsame Register für Minuten und Stunde zu. Fehlt da eine Bestätigung? Muss ich vielleicht die gesamte Zeit (Stunden und Minuten) mit einem setState übergeben?

    Nur wie müsste der Befehl bitte richtig lauten?

    Danke

    P 1 Reply Last reply
    0
    • P pingo

      Ich habe über die Modbus Anbindung meines Growatt Wechselrichters u.a. ein Register, dass eine Startzeit beinhaltet. Diese Startzeit möchte ich gerne mit setState per Javascript verändern. Das klappt nur teilweise:

      Das steht in der Anleitung:
      The format for each byte in RTU mode is:
      Coding System: 8–bit binary, hexadecimal 0–9, A–F
      Two hexadecimal characters contained in each
      8–bit field of the message

      Ausgelesen wird das selbe Holdingregister getrennt nach Stunde und Minute:
      laut Anleitung ist es dieses Register (im Modbusadapter muss man 40001 dazuzählen, damit es gefunden wird)
      Bildschirmfoto 2024-01-28 um 12.27.40.jpg
      Bildschirmfoto 2024-01-28 um 20.36.00.jpg
      ergibt dann diese Objekte:
      Bildschirmfoto 2024-01-28 um 20.37.18.jpg

      setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_hour'/*41101 Bat First Start Time 1 Hour*/,10);
      setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_Minute'/*41101 Bat First Start Time 1 Minute*/,5);
      

      diese Javascriptbefehle ändern die beiden Objekte kurz auf die gewünschte Zeit (Zahl ist dann grün). Sobald allerdings die beiden Register aber vom Modbus Adapter neu ausgelesen werden, wird die Stundenzahl rot und dann auf 0 gesetzt. Die Minutenzahl wird akzeptiert und bleibt.

      irgendwie greife ich wohl nicht sauber auf das gemeinsame Register für Minuten und Stunde zu. Fehlt da eine Bestätigung? Muss ich vielleicht die gesamte Zeit (Stunden und Minuten) mit einem setState übergeben?

      Nur wie müsste der Befehl bitte richtig lauten?

      Danke

      P Offline
      P Offline
      pingo
      wrote on last edited by
      #2

      So das Problem ist gelöst. Man muss das Acknowledgment mitliefern. Das ist das zusätzliche "false" im Befehl.
      Zusätzlich muss man in 16-bit schreiben und dabei folgende Zahl übergeben:
      Stunde * 256 + Minute. Im Beispiel unten wird 10h 5min übergeben

      setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_16bit'/*41101 Bat First Start Time 1 16bit*/,2565,false);
      
      P 1 Reply Last reply
      0
      • P pingo

        So das Problem ist gelöst. Man muss das Acknowledgment mitliefern. Das ist das zusätzliche "false" im Befehl.
        Zusätzlich muss man in 16-bit schreiben und dabei folgende Zahl übergeben:
        Stunde * 256 + Minute. Im Beispiel unten wird 10h 5min übergeben

        setState('modbus.0.holdingRegisters.41101_Bat_First_Start_Time_1_16bit'/*41101 Bat First Start Time 1 16bit*/,2565,false);
        
        P Offline
        P Offline
        pingo
        wrote on last edited by
        #3

        Nachtrag: und man muss immer zusätzlich das Register "Load_first_bat_first_grid_first" (bei mir 1044) zum Schreiben der Zeit auf 1 setzen!

        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

        631

        Online

        32.7k

        Users

        82.4k

        Topics

        1.3m

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

        • Don't have an account? Register

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