Wago SmartMeter mit Modbus auslesen. Merkwürdige Werte in Homeassistant

Hy,
Ich habe Homeassistant bereits in der aktuellen Version laufen und bin dabei mir einen Smarten Stromzähler einzurichten. Ich habe mich für einen WAGO 879-3020 4ps entschieden. Diesen habe ich nun mit einem “Waveshare rs485 to wifi” mit dem WAGO verbunden, so das diese nun über Modbus Kommunizieren. Modbus habe ich auch in Homeassistant eingebunden. Wenn ich die Spannung von L1 in Homeassistant auslese, bekomme ich die 224 Volt angezeigt, welche aktuell anliegen. Das Ganze habe ich folgendermaßen in Homeassistant eingebunden.

modbus:
name: wago
type: tcp
host: 192.168.178.177
port: 8899
sensors:
- name: L1_Spannung
unique_id: L1_Spannung
unit_of_measurement: V
slave: 1
address: 20482
count: 2
data_type: float32


Laut WAGO : Reg.Addresse = 5002
Inhalt = L1 Spannung
Funktionscode = 03
Länge = 2
Einheit = V
Datentyp = Float ABCD

Mein Problem ist folgendes
Wenn ich nun die Addresse für Totale Wirkleistung (5012) eingebe bekomme ich in Homeassistant als Wert 0,000 zurück. Frage ich diese Addresse mit einem anderen Programm wie zB. QModMaster ab, bekomme ich den korrekten Wert (0,197) angezeigt.

Ich habe keine Idee wo das Problem liegen kann.
Würde mich über jeden Tip freuen.

Hallo zusammen,

Hab das Problem selber lösen können.
precision = 3
hat das Problem gelöst.

Hi,
ich habe auch versucht, einen WAGO Zähler (soooo ein schönes Teilchen ;-)) per Modbus auszulesen aber hatte Probleme damit.
Mit 'nem Waveshare rs485 to Ethernet Adapter sehe ich zwar, dass auf dem Zähler das Modbus Icon kurz blinkt, aber ich kann über die pymodbus-TCP library keine Daten auslesen. Ich benutze die Lib aber nicht ganz falsch, einen solaredge-Inverter kann ich über modbus-TCP auslesen.

Ich hab dann einen Waveshare Modbus-USB Adapter angeschlossen und da kann ich dann über pymodbus-Serial alles wunderbar lesen.
Ich hätte aber lieber den rs485 to Ethernet Adapter am laufen… Könntest Du eventuell kurz beschreiben, wie Du auf den rs485 to Ethernet Adapter zugreifst um Werte auszulesen?
Merci und schöne Grüße,
Joachim

Hallo Joachim,

Ich habe folgendes in die configuration.yaml eingetragen.
So greife ich direkt auf den Modbus vom Wago zu und nutze den Adapter nur zum Umsetzen von Modbus RTU zu Modbus TCP und anders herum.
Die IP Adresse 192.168.178.177 is in dem Fall natürlich die vom Adapter.

modbus:
  name: wago
  type: tcp
  host: 192.168.178.177
  port: 8899
  sensors:
    - name: Totale_Wirkleistung
      unique_id: Totale_Wirkleistung
      unit_of_measurement: kWh
      slave: 1
      precision: 3
      address: 20498
      state_class: measurement
      device_class: energy
      count: 2
      data_type: float32

So funktioniert es bei mir wunderbar.

Meine Einstellung im Adapter
Aufnahme7

Falls du noch etwas wissen möchtest gib einfach Bescheid.

Vielen Dank !!
Mhm, da muss ich mal gucken, diese Einstellung hab ich noch nicht gesehen. Eventuell hab ich die Konvertierung von RS485 zu Modbus falsch eingestellt, dass er auf dem seriellen Interface als Protokoll schon Modbus sieht und dann versucht, es ein zweites Mal in Modbus zu konvertieren…
Ich komm’ in den nächsten Tagen leider nicht dazu aber melde mich hier noch Mal, wenn es etwas Sachdienliches zu berichten gibt…
Danke noch Mal und viele Grüße !

Hallo DSR

Dein Beitrag hat mir sehr geholfen. Ich habe noch eine Frage:
Eigentlich möchtest du ja die Totale_Wirkleistung auslesen. Dies ist laut WAGO die Adresse 5012.

Kannst du mir erklären, warum du bei deinem Code die Adresse: 20498 verwendest?
Welche Adresse würdest du dann für die Spannung (Adresse nach WAGO 5002) eingeben?

Danke für die Hilfe und Gruss

Jonsen

Habs herausgefunden. Die Adresse 20498 ist im DEZ - Format geschrieben. In der Anleitung sind die Zahlen im HEX - Format

Hatte lange keine Zeit rein zu schauen aber sehr schön, dass du es rausgefunden hast !

Beste Grüße
DSR

Wenn man sich die Umrechnung HEX <=> Dezimal sparen will, dann einfach die Hex Werte im Format “0x5002” eingeben.