Hallo!
Ich stehe aktuell vor der Aufgabe einen ModbusMaster (einen Janitza 604 Pro) in meine HA Installation zu integrieren.
Problem ist nicht der Master selbst, dessen Register (und damit Messungen) kann ich anhand der Janitza Doku prima auslesen.
Problem sind die am Master hängenden Slaves. Die hängen via ModbusRTU mit verschiedenen SlaveIDs am Master.
Leider dokumentiert Janitza mit keinem Wort, jedenfalls keinem mir bekannten, in welche Register die Slaves schreiben.
Die Salves sind ausnahmslos B23er MID EnergyMeter von Janitza.
Und genau deren Werte brauche ich 
Wie würdet ihr an die Sache herangehen?
Danke euch!
Mittlerweile bin ich schlauer:
Die Register 19000 bis 19120 sind auf allen Janitza Geräten gleich, gut zu wissen!
Die Abfrage via Master respektive Clients sieht dann so aus: <IP_Addr-Master> | <REGISTER_Addr> | <Geräte_ID>. Die ID ist die Modbus ID.
Dokumentiert sind die Register an den Gateways, zB für den 604 Pro - die Clients habe keine Doku, da die Register die gleichen sind, siehe oben.
Und so klappt dann die Abfrage der Slave Register.
Nun versuche ich, den Modbus RTUtoTCP Konverter (Janitza 604 Pro) und die daran angeschlossenen Geräte (Clients, Sensoren) in HA zu integrieren.
Dies mache ich so:
# Janitza 604 Pro Gateway
- name: Janitza_604_Pro
type: tcp
host: !secret janitza_modbus_host_ip
port: !secret janitza_modbus_port
sensors:
# Janitza 604 Pro Gesamtverbrauch Haus
- name: Haus Verbrauch
unique_id: jan_604_pro_haus_wirkleistung_summe
slave: !secret janitza_modbus_slave
address: 19026
input_type: input
unit_of_measurement: W
state_class: measurement
data_type: float32
device_class: energy
# Janitza B23 Verbrauch EG
- name: Erdgeschoss Verbrauch
unique_id: jan_b23_eg_wirkleistung_summe
slave: !secret janitza_modbus_slave_eg
address: 19068
input_type: input
unit_of_measurement: kWh
state_class: total_increasing
data_type: float32
device_class: energy
# Janitza B23 Verbrauch OG
- name: Obergeschoss Verbrauch
unique_id: jan_b23_og_wirkleistung_summe
slave: !secret janitza_modbus_slave_og
address: 19068
input_type: input
unit_of_measurement: kWh
state_class: total_increasing
data_type: float32
device_class: energy
# Janitza B23 Verbrauch DG
- name: Dachgeschoss Verbrauch
unique_id: jan_b23_dg_wirkleistung_summe
slave: !secret janitza_modbus_slave_dg
address: 19068
input_type: input
unit_of_measurement: kWh
state_class: total_increasing
data_type: float32
device_class: energy
# Janitza B23 Verbrauch Wärmepumpe
- name: Wärmepumpe Verbrauch
unique_id: jan_b23_wp_wirkleistung_summe
slave: !secret janitza_modbus_slave_wp
address: 19068
input_type: input
unit_of_measurement: kWh
state_class: total_increasing
data_type: float32
device_class: energy
Ergebnis: Nur der erste Sensor (Janitza 604 Pro Gesamtverbrauch Haus) übermittelt Werte. Die anderen sind “nicht verfügbar”. Ihre Entitäten werden in HA angelegt, aber keine Werte sichtbar.
Es scheint ein Problem mit der Kaskade zu geben. Aber worin könnte des bestehen?
Die Registerabfrage der fraglichen Register funktioniert mit Modbus Testtool auch für die Clients einwandfrei:
Sprich: Bei TCP Abfrage des Hosts liefert er unter der ModbusID des Clients und dem spezifischen Register Werte.
Und genau dieses Schema funktioniert für den ersten Sensor auch in HA, nur für die weiteren nicht.
Hab ich mich syntaktisch vergriffen? Braucht es mehr Parameter?
Habt ihr eine Idee?
Soo, hier die Auflösung:
Die Integration via Modbus TCP und Adressansprache ist soweit korrekt, auch in Richtung Slaves.
Leider hat Janitza in seiner RegisterDoku nicht den Typ der Register aufgeschlüsselt, oder ich habe es einfach übersehen.
Lange Rede, kurzer Sinn: die 19068er Register sind keine Input Register, sondern Holding Register.
Das Ganze umgebaut (input_type: holding) und zack liegen mir die Werte in Wh vor. Super 
Ich rege mal bei Janitza an, die Doku um die Registertyp zu erweitern, es hilft.
Vielleicht hilft es ja irgend jemandem!