Umwandlung von Modbus-Daten. Hier: uint32sw in?

Hallo Community,
dies ist mein erster Eintrag; also bitte habt Nachsicht mit mir, falls ich das Forum/die Regeln noch nicht richtig benutze. Leider habe ich keinen geeigneten Beitrag, geschweige denn Hilfen hier im Forum, oder auch “im Internet” gefunden; daher diese neue Themenerstellung.

Es geht um eine Lüftungsanlage, die per Netzwerk mit Home Assistant verbunden ist. Einige Sensor-Daten (data_type: float32) kommen per Modbus und werden auch schon korrekt angezeigt. Allerdings hapert es jetzt mit “uint32sw” Werten. Im Konkurrenz Produkt “IO-Broker” werden die Werte des data_type “uint32sw” korrekt angezeigt.

Laut einer künstlichen Intelligenz handelt es sich bei “uint32sw” um folgende Daten: “Uint32” steht für “Unsigned Integer 32-bit”, was bedeutet, dass es sich um eine ganze Zahl handelt, die 32 Bit groß ist und nur positive Werte oder Null annehmen kann. Das “sw” könnte in diesem Kontext für “swap” stehen, was darauf hinweist, dass die Daten möglicherweise in einer anderen Byte-Reihenfolge (Endianness) gespeichert oder verarbeitet werden.

Hat jemand hier im Forum solche Werte schon einmal verarbeitet?

In einer separaten modbus.yaml baue ich die Daten wie folgt auf:

name: Luefungsanlage
type: tcp
host: 192.168.178.22
port: 502

sensors:
- name: "Aussentemperatur <-- out"
  scan_interval: 3
  unit_of_measurement: °C
  slave: 1
  address: 133
  data_type: float32

- name: "Status Lüfter"
  unit_of_measurement: ""
  slave_count: 1
  address: 325
  data_type: uint32sw

Besten Dank schon einmal im Voraus für eure Unterstützung!!

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Hallo Community,
nach vielen weiteren Stunden des testens, also immer wieder abändern der Parameter in der modbus.yaml habe ich für meine Lüftungsanlage “Bosch Vent 5000C” eine Lösung für das genannte Problem gefunden. Die einzugebende Adresse ist eine Zahl darunter. Warum, kann ich mir nicht wirklich erklären. Eine int32 benötigt anscheinend zwei Werte, die dann auch noch mit “SWAP” zusammen berechnet werden. Vielleicht fängt HA dann mit der darunterliegenden Zahl an und und addiert (berechnet) sie mit der folgenden.
Für meinen Eintrag für “Status Lüfter” sieht die Konfiguration dann folgendermaßen aus:

- name: "Status Lüfter"
  unit_of_measurement: ""
  address: 324
  slave: 1
  data_type: uint32
  swap: word
  input_type: holding

Derzeit funktioniert der Statuswert auch ohne den Eintrag “input_type: holding”.

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)