Home Assistant Modbus Einrichtung

Ja das Display hat die beschriebenen Klemmen sogar 2 also A u B als input und auch noch mal A u B als Output, so das ich das Prima in meinen bestehenden Bus einbinden kann. Hab auch in den Parametern geguckt, Adresse Baudrate usw. alles einstellbar. Mir fehlt nur die Parameterliste. Ich gehe davon aus, das HDG sich nicht extrem viele verschiedene Listen ausdenkt. Ich würde gern mal gucken, was da so kommt und als start hab ich gedacht hänge ich mich an eine Liste die funktioniert mal ran :)
 
@ktmexc, hättest du auch für mich die ModBus Tabelle? Ich habe eine Verbindung und lese das Holding Register aus. Ich bekomm Werte, aber keine Idee was was ist.
Beim InputRegister bekomm ich einen Fehler -> HDG weißt die anfrage ab
 

Anhänge

  • Screenshot 2025-06-13 100547.png
    Screenshot 2025-06-13 100547.png
    32,2 KB · Aufrufe: 17
Moin, Ich habe eine Frage: Wie kann ich in modbus.yaml mein Register editierbar machen? Bisher habe ich in einer Automatisierung die Aktion „modbus.write_register” benutzt. Wenn das Register jedoch als „number” definiert ist, brauche ich keine Automatisierung, sondern kann dem Register einen Wert im Template.yaml zuweisen.
Ich habe es so versucht

YAML:
#[261] Maximal Current Command
#This Register can be used to read and write the maximal current
    number:
      - platform: modbus_controller
        modbus_controller_id: my_modbus_hub
      - name: "max Strom"
        unique_id: whec_max_strom
        slave: 1
        address: 261
        scan_interval: 5
        input_type: holding
        device_class: current
        unit_of_measurement: A
        state_class: measurement
        scale: 0.1
        offset: 0
        precision: 1
        data_type: uint16

Ich bekomme aber eine Fehlermeldung beim Kompilieren.

FehlerNumber.png
 
Ich klink mich hier auch mal ein.
Hab nen HDG Euro 30 Kessel und möchte diesen auch via ESP32 in Home Assistent integrieren.

ESP32 ist nach Vorlage von User V01der aufgebaut, mit dem Unterschied das ich einen ESP32 mit Ethernet, Switch + Stromversorgung hinters HDG Display zwänge.
Das ganze bis auf den Switch kommt dann noch in ein schickes 3D Druck Gehäuse.
Bilder vom Aufbau stell ich dann hier ein.

Mein Problem ist aktuell das mir mein Versuchsaufbau keine Werte liefert.
Edit: Der Fehler sitzt an der Tastatur, Pinout von meinem WT32-ETH01 zu dem von V01der unterscheidet sich ja doch ein wenig.

Muss man die Externe Modbus Schnittstelle erst aktivieren? und wenn ja wie?
 
Zuletzt bearbeitet:
Hallo @wischi83 ,

nein aktivieren musst du sie nicht, aber die richtige Baudrate und Adresse musst du einstellen.
Falls du den "Techniker PIN" für den Kessel benötigst, gerne per PN
Baudrate und adresse geht aber auch über "Benutzer 2"

Lg
Anderl
 
Hallo @wischi83 ,

nein aktivieren musst du sie nicht, aber die richtige Baudrate und Adresse musst du einstellen.
Falls du den "Techniker PIN" für den Kessel benötigst, gerne per PN
Baudrate und adresse geht aber auch über "Benutzer 2"

Lg
Anderl
Hallo Anderl,

Das Angebot mit dem Techniker Pin nehm ich gerne an.
Leider kann ich dir aus Gründen der Forumsbeschrenkung für Neulinge keine PN senden.

Danke für seine Hilfe
 
Zuletzt bearbeitet:
Wie angekündigt, Infos von meinem Lösungsansatz.

Gehäuse ist minimalistisch ausgelegt, so das hauptsächlich die Bauteile an Ort und Stelle bleiben.
Dazu gibts noch einen Deckel der den ganzen Kabelsalat bändigt.

Werte kommen sauber rein, ESP Chip Temperatur wird zusätzlich mit überwacht um eventuell dadurch auftretende Probleme früh zu erkennen.

Für alle die es nachbauen möchten:

Verbaute Komponenten:
  1. ESP32 ETH01
  2. Waveshare TTL to RS485
  3. DC/DC Wandler 5-30V zu 5V/3A (Versorgung ESP32 und 100Mbit Switch)
Danke geht an User ktmexc für seinen Input!🍻
YAML:
esphome:
  name: "hdgeuro30"
# Example configuration entry
esp32:
  board: esp32dev
  framework:
    type: arduino

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16

  # Optional manual IP
  manual_ip:
    static_ip: 192.168.178.49
    gateway: 192.168.178.1
    subnet: 255.255.255.0

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxx"

#Konfiguration für Modbus-UART
uart:
  tx_pin: GPIO17
  rx_pin: GPIO5
  baud_rate: 19200

modbus:
  id: modbus1
  send_wait_time: 100ms

modbus_controller:
  - id: modbus_device
    address: 0x1
    modbus_id: modbus1
    update_interval: 60s
    command_throttle: 50ms
    setup_priority: -10

sensor:
  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Puffer 1 oben"
    register_type: holding
    address: 210
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Puffer 1 mitte"
    register_type: holding
    address: 212
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Puffer 1 unten"
    register_type: holding
    address: 214
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Pufferladegrad 1"
    register_type: holding
    address: 215
    unit_of_measurement: "%"
    value_type: S_WORD

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Kesselvorlauf"
    register_type: holding
    address: 103
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Kesselrucklauf"
    register_type: holding
    address: 105
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Abgastemperatur"
    register_type: holding
    address: 97
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Restsauerstoff"
    icon: 'mdi:percent'
    register_type: holding
    address: 91
    unit_of_measurement: "%"
    value_type: S_WORD
    accuracy_decimals: 1
    filters:
      multiply: 0.1
    lambda: !lambda |-
      if((x > 200.0)||(x < -200)){
        return 200.0;
      }
      else{
        return x;
      }

  - platform: internal_temperature
    name: "ESP32 Temperatur HDG"

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Betriebsphase"
    register_type: holding
    address: 71
    unit_of_measurement: ""
    value_type: S_WORD

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Wartungsmeldung"
    register_type: holding
    address: 20
    unit_of_measurement: ""
    value_type: S_WORD

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Restlaufzeit bis Wartung"
    register_type: holding
    address: 21
    unit_of_measurement: "h"
    value_type: S_WORD

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Freilufttemperatur"
    register_type: holding
    address: 40
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature
    state_class: measurement

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Heizkreis 1 Vorlauf"
    register_type: holding
    address: 286
    unit_of_measurement: "°C"
    value_type: S_WORD
    device_class: temperature

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Brauchwasser oben"
    register_type: holding
    address: 485
    unit_of_measurement: "°C"
    value_type: S_WORD 
    device_class: temperature

binary_sensor:
  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Heizkreispumpe 1"
    register_type: holding
    address: 284
    bitmask: 0x2000

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Netzpumpe"
    register_type: holding
    address: 434
    bitmask: 0x2000

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Brauchwasserpumpe"
    register_type: holding
    address: 484
    bitmask: 0x2000

  - platform: modbus_controller
    modbus_controller_id: modbus_device
    name: "Kesselpumpe"
    register_type: holding
    address: 79
    bitmask: 0x2000

20250919_094128.jpg20250919_094114.jpg20250918_200354.jpg
 
Zuletzt bearbeitet:
Hallo zusammen,
weiß jemand ob es über den Modbus möglich ist die Daten der Zuführung zu lesen? Lagerinhalt, Verbrauch usw.
Ich ziehe mir seit etwa 2 Jahren die Daten von der Steuerung über die API des Webservers, dort kann ich mir die Infos der Zuführung auslesen, leider fehlen in der API dafür andere Infos wie z.B. die Aussentemperatur oder Störungsnummer/Warnungsnummer usw.

In meiner Liste der Modbusregister vom Support von 2018 gibts leider nichts über die Zuführung.
Vorab vielen Dank
Lg
 
Hallo, Ganner! Nein, die ModBus Register beziehen sich nur auf den Heizkessel, ich hole mir die restlichen Daten (Lagerinhalt, Verbrauch seit letzter Füllung, Stand der Saugweiche) via Scrape in den HomeAssistant - mit einem Aktualisierungsintervall von >60 sek läuft das auch stabil.

Gruß, Andi
 
Hallo Andi,

ich hab schon vermutet das die Zuführung ein gekapseltes System ist, schade.
Werd mir dann mal überlegen ob ich alles auf Modbus umstelle und mir nur die Daten der Zuführung via request gegen die API des Webserver hole oder den Modbus nur ergänzend verwende. Technisch gesehen wäre vermutlich umstellung auf Modbus besser, ich denke die Interne SPS der Steuerung ist für die Kommunikationslast eher ausgelegt als der Werbserver.
Danke dir für deine Rückmeldung.
 
Auf jeden Fall würde ich das was geht über Modbus auslesen, läuft stabil und gibt auch kein Problem bei kürzeren Abfrageintervallen (Modbus hat standardmäßig 15sek), bei mir hatte sich das HDG-Touch als ich alles über das Webinterface abgesaugt hatte, regelmäßig verabschiedet - ist halt nicht für permanente Kommunikation ausgelegt.
lG
 
Ja das macht schon Sinn die Daten via Modbus zu ziehen. Muss mir das mal im Detail Gedanken machen was ich wie mache. Bei mir läuft im Background der ioBroker welcher die Infos in eine Influx packt. Eventuell bau ich mir nur ein kleines Script das mir 1-2 mal am Tag die Daten der Zuführung zieht und ansonsten alles via Modbus kommt. Ich hatte in den knapp 2 Jahren in welchen ich die Daten vom Webserver ziehe glaub 2 oder 3 mal das sich die Steuerung verabschiedet hat. Sie lief dann noch ganz normal, war aber vie Ethernet nicht mehr erreichbar und hat ihre IP Konfig "vergessen". Konnte mit einem Reboot dann behoben werden. Der Modbus ist sehr interessant weil er auch direkte Hinweise liefert welche Warnung oder Störung gerade ansteht, statt nur das etwas ansteht.
 

Letzte Anleitungen

Statistik des Forums

Themen
7.519
Beiträge
73.457
Mitglieder
8.049
Neuestes Mitglied
Grimmsberg
Zurück
Oben