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. 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
    2.1k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 1 Kommentatoren 248 Aufrufe 1 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.
  • P Offline
    P Offline
    pingo
    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 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

        733

        Online

        32.6k

        Benutzer

        82.2k

        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