webbid
1. November 2023 um 18:18
1
Hallo zusammen,
ich würde gerne die Temperaturwerte meiner Heizungsregelung mittels Modbus auslesen und anzeigen lassen.
Ich habe dazu in einem Haustechnik Forum einen entsprechenden Code gefunden und wenn ich hier schaue , dann sollte HA dies ha alles von Haus aus können.
Ich muss nur die IP und Port entsprechend anpassen und die Werte welche ich auslesen möchte.
Wie bekomme ich das ganze nun in HA visuell dargestellt? Einfach in die Configuration.yaml einfügen wird’s wohl nicht sein.
Hier mal der Code:
modbus:
- name: systacomfort
type: tcp
host: ----- IP ------
port: ---- PORT -----
sensors:
- name: "Außentemperatur"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 0
data_type: int16
- name: "Vorlauftemp HK1"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 1
data_type: int16
- name: "Rücklauftemp HK1"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 2
data_type: int16
- name: "Warmwassertemp Oben"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 3
data_type: int16
- name: "Vorlauftemp HK2"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 7
data_type: int16
- name: "Rücklauftemp HK2"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 8
data_type: int16
- name: "Vorlauftemp Kessel"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 12
data_type: int16
- name: "Rücklauf Kessel"
scan_interval: 100
slave: 1
input_type: input
scale: 0.1
unit_of_measurement: °C
address: 13
data_type: int16
- name: "Sollwert Vorlauftemp HK1"
scan_interval: 100
slave: 1
input_type: holding
scale: 0.1
unit_of_measurement: °C
address: 2
data_type: int16
- name: "Sollwert Vorlauftemp HK2"
scan_interval: 100
slave: 1
input_type: holding
scale: 0.1
unit_of_measurement: °C
address: 3
data_type: int16
- name: "Sollwert Leistung HK1"
scan_interval: 100
slave: 1
input_type: holding
scale: 1
unit_of_measurement: "%"
address: 5
data_type: uint16
- name: "Sollwert Leistung HK2"
scan_interval: 100
slave: 1
input_type: holding
scale: 1
unit_of_measurement: "%"
address: 6
data_type: uint16
- name: "Sollwert Trinkwassertemp"
scan_interval: 100
slave: 1
input_type: holding
scale: 0.1
unit_of_measurement: °C
address: 8
data_type: int16
- name: "maximale Vorlauftemp HK1"
scan_interval: 100
slave: 1
input_type: holding
scale: 0.1
unit_of_measurement: °C
address: 9
data_type: int16
- name: "maximale Vorlauftemp HK2"
scan_interval: 100
slave: 1
input_type: holding
scale: 0.1
unit_of_measurement: °C
address: 10
data_type: int16
- name: "Betriebsstunden Kessel"
scan_interval: 100
slave: 1
input_type: holding
unit_of_measurement: "h"
scale: 1
address: 27
data_type: uint32
- name: "Anzahl Starts Kessel"
scan_interval: 100
slave: 1
input_type: holding
scale: 1
address: 29
data_type: uint32
- name: "Status HK1"
scan_interval: 100
slave: 1
input_type: holding
scale: 1
address: 36
data_type: uint16
- name: "Status HK2"
scan_interval: 100
slave: 1
input_type: holding
scale: 1
address: 37
data_type: uint16
- name: "Status Kessel"
scan_interval: 100
slave: 1
input_type: holding
scale: 1
address: 41
data_type: uint16
- name: "Kessel Solltemperatur"
scan_interval: 100
slave: 1
input_type: holding
unit_of_measurement: °C
scale: 0.1
address: 45
data_type: int16
webbid
10. November 2023 um 13:51
2
Ich schieb es noch mal an, da ich immer noch nicht weiter gekommen bin
DerEde
10. November 2023 um 15:31
3
Hier gibt es einen Thread wo um den Modbus geht Smart Meter per Modbus in HA
Im Prinzip kannst du das als Grundlage verwenden. Am Modbus hat sich in HA in den letzten Updates bisschen was geändert. Daher schaut meine modbus.yaml so aus:
- name: "SDM72D"
type: tcp
host: 192.168.178.209
port: 8887
#close_comm_on_error: true
timeout: 9
#retry_on_empty: true
sensors:
- name: EG_Total_power
unique_id: eg_total_power
scan_interval: 5
#slave_count: 2
data_type: float32
precision: 2
address: 52
input_type: input
slave: 1
unit_of_measurement: W
state_class: measurement
device_class: power
- name: EG_Verbrauch
address: 72
input_type: input
#slave_count: 2
slave: 1
precision: 2
data_type: float32
unit_of_measurement: kWh
device_class: energy
Beachten, wenn du das so wie ich in die modbus.yaml auslagerst, dies auch der configuration.yaml mit zu teilen:
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
modbus: !include modbus.yaml
group: !include groups.yaml
1 „Gefällt mir“
webbid
10. November 2023 um 16:12
4
Super, danke dir, schaue mal in den Thread.
Bedeutet das, ich muss eine modbus.yaml anlegen? Ich bin leider garnicht fit in Sachen manueller Konfiguration
Hallo,
ich bin zwar nicht der YAML Profi, aber Du musst es auf jeden Fall noch richtig einrücken.
Normalerweise brauchts Du auch noch die Modbus Adressen der Einzelenen Coils.
webbid
10. November 2023 um 16:29
6
Ja, aber ich habe auch schon einiges ausprobiert (vielleicht auch einiges falsch) , aber ich komme leider nicht weiter.
Die Modus Adressen der Coils, sollten die sein, wie auch oben im Code, da es genau die Regelung ist, die ich auch benutze.
Was ich noch nicht ganz verstehe, host und die dazugehörige IP ist klar. aber der Port?!
versuch mal port 502, der passte bis jetzt immer
hier in der Anleitung sind auch die Register die ich meinte.
https://bg-etech.de/download/manual/SDM72D-M-DE.pdf
Nachtrag:
modbus:
name: SDM72D
type: tcp
host: 192.168.178.209
port: 502
sensors:
- name: Total_System_power
unique_id: Total_system_power
unit_of_measurement: W
slave: 1
precision: 3
adress: 30053
device_class: power
count: 2
data_type: float32
by HarryP: Zusammenführung Doppelpost
webbid
21. November 2023 um 16:34
9
Besser spät als nie
Mittlerweile habe ich es dann doch hinbekommen den Modbus auszulesen und mir die entsprechenden Temperaturen anzeigen zu lassen.
Vielen Dank noch mal für die hilfreichen Hinweise, hat mir sehr gut geholfen
Anbindung eines Stromzählers Eastron SDM72D-M über einen
Waveshare RS485 TO ETH Wandler.
Hallo,
nachdem ich mehrere Wochen (mit Unterbrechungen) nach einer Lösung gesucht
habe hat es jetzt geklappt.
Der Wert address: XX in modbus.yaml ist eine Dezimalzahl. Diese berechnet sich aus dem
Stromzählermanual: Der Hex-Wert in der Spalte HIByte und der Hex-Wert
in der Spalte LowByte werden einzel in DEZ umgerechnet und dann addiert.
Beispiel : Spalte 1: Registeradresse:3043 wird wie folgt für den
address: Wert im HA umgerechnet:
HIByte 1(hex) = 256 (dez),
LowByte 56(hex) = 86 (dez)
Summe: 342 (dez)---- also address: 342
Die Verkabelung habe ich mit IYSTY Kabel mit 200Ohm
Endwiderständen versehen.
HA ist auf dem neuesten Stand (14.11.2024)
Fazit: im Internet schwirren verschiedene (falsche) Lösungsvorschläge herum,
auch Chatgpt liefert teilweise Blödsinn.
VG
pkrischer
Example yaml: TCPconnection 2024-11-13–16:30 funktioniert
liefert richtige Werte
name: Wavesxhar
type: rtuovertcp
#type: tcp
host: 192.168.1.190
timeout: 5
port: 502
Sensoren für spezifische Register
sensors:
- name: Zaehler01 Spg L1
unique_id: Spg L1
unit_of_measurement: “V”
slave: 1
address: 0 # Register für Spannung auf L1
input_type: input
scan_interval: 10 # Abfrageintervall in Sekunden
#count: 4 X
#data_type: int16
data_type: float32
- name: Zaehler01 Lstg L1
unique_id: Lstg L1
unit_of_measurement: "W"
slave: 1
address: 12 # Register für Powerauf L1
input_type: input
scan_interval: 10 # Abfrageintervall in Sekunden
#count: 4 X
#data_type: int16
data_type: float32
- name: Zaehler01 Lstg gesamt
unique_id: Lstg gesamt
unit_of_measurement: "W"
slave: 1
address: 52
input_type: input
scan_interval: 10 # Abfrageintervall in Sekunden
#count: 2
data_type: float32
- name: Zaehler01 Frequenz
unique_id: Frequenz
unit_of_measurement: "Hz"
slave: 1
address: 70
input_type: input
scan_interval: 10 # Abfrageintervall in Sekunden
#count: 2
data_type: float32
#data_type: int16
- name: Zaehler01 Gesamtenergie
unique_id: Gesamtenergie
unit_of_measurement: "kWh"
slave: 1
address: 342
#count: 2
input_type: input
scan_interval: 10 # Abfrageintervall in Sekunden#count: 2
data_type: float32
Funktioniert-modbus-yaml-richtige -Werte.txt (1,7 KB)