Modbus Sensor mit wechselndem Vorzeichen

Oehlmann

New member
Hallo,

ich bin Umsteiger von FHEM auf Homeassistant. AKtuelles Thema ist die Ankopplung eines Deye Umrichters über Modbus TCP/IP.
Soweit funktioniert alles , bis auf Werte mit wechselndem Vorzeichen. In meinem Fall die Batterie Power. Diese kann ja sowohl Positiv
(Entladen) als auch negativ (Laden) sein. Positiv kommt der Wert einwandfrei rüber , negativ hat er immer Werte um die 65000. Er
interpretiert wohl das erste Bit als Vorzeichen nicht." Int16" bedeutet aber 16bit signed und somit müsste es passen. Nach unzähligen
Versuchen mit "structure" und anderen Ideen bin ich am verzweifeln. Verdächtig ist , dass ich niemand mit dem gleichen Problem finde.
Vielleicht kann mir einer von Euch helfen. Das würde mich sehr freuen.
Hier mein Sensor:

# Adresse 190
- name: "Batterie Output Power"
class: "Battery"
state_class: "measurement"
uom: "W"
data_type: int16
scale: 1.0
registers: [0x00BE]
icon: 'mdi:transmission-tower'
 
Er
interpretiert wohl das erste Bit als Vorzeichen nicht." Int16" bedeutet aber 16bit signed und somit müsste es passen.
Um welchen Deye Wechselrichter handelt es sich? Einphasigen-Hybriden? Hier ein Auszug aus der Modbus.yaml für 3-Ph. WR

YAML:
      - name: "Deye Battery power"
        slave: 1
        address: 590
        input_type: holding
        data_type: int16
        unit_of_measurement: "W"
        precision: 0
        scan_interval: 2
        state_class: "measurement"
 
Zuletzt bearbeitet:
Es ist ein Deye Sun 5 , 1 phasig. Ich benutze die Solarman Integration und habe die deye_string.yaml nach meinen bekannten Adressen angepasst. Wie gesagt läuft es , aber negative Werte stellt er mit Zahlen oberhalb 65000 dar. Ich denke die Kopplung übersieht das Vorzeichen und interpretiert es als höchstes bit. Meine Adresse 190 funktioniert im positiven
Bereich , daher weiß ich sicher , das sie passt. In meinem FHEM hatte ich das gleiche Problem , dort hieß die Funktion , die zum Ziel führte
unpack: s> und der Spuk war weg. Hast Du eine ähnliche Kopplung , wenn ja , wie sieht Dein Wert aus? Müsste ja auch negativ werden, falls es nicht noch einen zweiten Wert gibt.
 

Anhänge

  • deye_string.txt
    5,6 KB · Aufrufe: 2
Welche Integration nutzt du von Stephan Joubert oder von David? Ich finde die Integration von David besser, bei der Integration werden die Werte alle 5 Sekunden aktualisiert und die Integration läuft stabiler.
Ich bin mir nicht sicher, ob deye_string.yaml die richtige Datei für dein WR ist, ich würde es mit deye_hybrid.yaml versuchen.

YAML:
      - name: "Battery Power"
        class: "power"
        state_class: "measurement"
        uom: "W"
        rule: 2
        registers: [0x00BE]
        attributes: [inverse]
 
Grundsätzlich hast du recht , die hybrid.yaml passt besser , ich muss sie nur auf den einphasigen Wechselrichter anpassen. Und vielen vielen Dank , der Zauber liegt im Parameter "Rule". Den hatte ich in meiner yaml nicht. Leider habe ich auf der HA Modbus nichts zu rule gefunden. Ist aber auch nicht wichtig , es funktioniert. Von wem die Integration jetzt ist , weiß ich nicht. Die Zeitbasis stört mich aktuell noch nicht. Sollte es nicht stabil laufen werde ich mal Deinem Tipp nachgehen.
Die Doku zu HA Modbus finde ich mies , ich bin Programmierer für Automation aber kein Entwickler. Wenn man dann zwei Tage an sowas rumprobiert kommt man schon ins rätseln , ob sich der Umstieg von FHEM auf HA lohnt. Mein letztes Rätsel vor dem Abschalten von FHEM sind freie Garphiken zur Visualisierung von Heizung und Wärmepumpe (Übersicht) bei denen man Werte in der Graphik frei z.B zu einer Pumpe stellen kann. Ich google mal noch ein wenig. Wenn nicht frage ich das auch mal ins Forum unter eigenem Thema.
Aus meiner Sicht ist das Thema gelöst. Ich müsste nur noch was zum Attribut "rule" finden.
vielen Dank! So sieht es dann auch mit negativen Werten aus :)

1732614914610.png
 
SPS nur rudimentär , hauptsächlich ABB Leitsysteme. Da aber viele SPS als Datenlieferant dranhängen , muss ich da auch manchmal rein. Ist aber nicht meine Kernkompetenz.
 
Zurück
Oben