ESPHome-Sensoren an HydroNode senden

ESPHome-YAML behalten, eine externe Komponente ergänzen und jeden Sensor einem HydroNode-Typ zuordnen. Secrets, Befehle und Details, die dir einen Abend Fehlersuche sparen.

HydroNode Aktualisiert 6 Min. Lesezeit
Eine HydroNode-Sensorseite, die Temperatur und Luftfeuchte von einem ESPHome-Gerät empfängtEine HydroNode-Sensorseite, die Temperatur und Luftfeuchte von einem ESPHome-Gerät empfängt

Dein Gerät läuft schon mit ESPHome und soll das auch weiter tun. Dann brauchst du keine neue Firmware, sondern eine Komponente mehr in deiner YAML. Sie schickt die Werte deiner vorhandenen Sensoren signiert an HydroNode und nimmt Befehle aus der App entgegen.

Voraussetzungen

ESPHome 2026.7.1 oder neuerMit ESP-IDF oder Arduino als Framework.
Ein ESP32-BoardAlle Varianten der ESP32-Familie. Der ESP8266 wird von der Komponente nicht unterstützt.
Ein HydroNode-SensorSensor ID und Secret findest du unter SettingsConnection.
Bis zu 25 MessgrößenPro HydroNode-Sensor, jede mit eigenem Typ.

Zugangsdaten in secrets.yaml

Lege die Daten neben deine Geräte-YAML in secrets.yaml. Diese Datei gehört nicht in Git.

secrets.yamlYAML
wifi_ssid: "YOUR_WIFI_SSID"
wifi_password: "YOUR_WIFI_PASSWORD"

hydronode_sensor_id: "your-sensor-id"
hydronode_device_secret: "your-secret-key"

Die Konfiguration

Drei Dinge kommen dazu: die externe Komponente, http_request und eine Zeitquelle, denn jede Signatur trägt einen Zeitstempel. Unter measurements ordnest du jedem ESPHome-Sensor über seine id einen HydroNode-Typ zu.

greenhouse-climate.yamlYAML
esphome:
  name: greenhouse-climate

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

logger:

external_components:
  - source:
      type: git
      url: https://github.com/TexhFexLabs/hydronode-esphome
      ref: v0.4.0
    components: [hydronode]

# Signatures carry a timestamp, so HTTP and time are both required
http_request:
  id: hydronode_http
  timeout: 10s
  verify_ssl: true

time:
  - platform: sntp
    id: hydronode_time
    timezone: UTC

i2c:
  sda: GPIO6
  scl: GPIO7

sensor:
  - platform: bme280_i2c
    address: 0x76
    temperature:
      id: air_temperature
      name: Air Temperature
    humidity:
      id: air_humidity
      name: Air Humidity
    pressure:
      id: air_pressure
      name: Air Pressure
    update_interval: 30s

hydronode:
  id: hydronode_cloud
  sensor_id: !secret hydronode_sensor_id
  device_secret: !secret hydronode_device_secret
  update_interval: 60s
  measurements:
    - source: air_temperature
      type: TEMPERATURE
    - source: air_humidity
      type: HUMIDITY
    - source: air_pressure
      type: PRESSURE
  1. Version festnagelnref: v0.4.0 sorgt dafür, dass sich dein Build nicht unter dir ändert. ref: main nur zum Testen.
  2. Typen wählenTypnamen sind Großbuchstaben, Ziffern und Unterstriche. Gängige: TEMPERATURE, HUMIDITY, PRESSURE, CO2, PM25, SOIL_MOISTURE. Alle stehen in der Typenreferenz.
  3. Intervallupdate_interval ist mindestens 10 Sekunden. HydroNode nimmt pro Typ höchstens einen Wert alle 10 Sekunden.
  4. FlashenWie gewohnt mit esphome run greenhouse-climate.yaml oder aus dem ESPHome-Dashboard.

Prüfen, ob es ankommt

Im ESPHome-Log siehst du nach jedem Upload eine Zeile mit HTTP 202. In HydroNode öffnest du die Sensorseite und drückst `. Die Console zeigt jede Anfrage mit Signaturprüfung und Uhrabweichung. Kommt nichts an, nennt der Filter Rejected den Grund.

Console mit abgelehnten Anfragen und deren GründenConsole mit abgelehnten Anfragen und deren Gründen
Abgelehnte Anfragen mit Grund: falsche Signatur, Zeit daneben oder zu schnell gesendet.
Tipp Ein Typ, den HydroNode noch nicht kennt, wird beim ersten Wert automatisch zum Sensor hinzugefügt. Ein Tippfehler wie TEMPERATUR erzeugt also eine neue Messgröße statt einer Fehlermeldung. Schau nach dem ersten Upload kurz in die Kanalliste der Sensorseite.

Befehle aus der App

Mit einem commands-Block erklärst du, welche Befehle das Gerät versteht. Passt Name und Typ, wird der Befehl bestätigt und an on_command weitergegeben. Sonst lehnt die Komponente ihn ab, und die App zeigt den Grund: NO_HANDLER, TYPE_MISMATCH oder INVALID_VALUE.

greenhouse-climate.yamlYAML
switch:
  - platform: gpio
    id: fan_relay
    name: Fan
    pin: GPIO5

hydronode:
  # credentials and measurements as above
  commands:
    - name: fan
      type: BOOL
  on_command:
    - if:
        condition:
          lambda: 'return command == "fan" && value_json == "true";'
        then:
          - switch.turn_on: fan_relay
        else:
          - switch.turn_off: fan_relay

In on_command stehen dir command, value_json und type zur Verfügung. Senden kannst du den Befehl auf der Sensorseite über Send command oder in der Console mit fan:bool true.

Was Fleet über ESPHome-Geräte weiß

Ab Version 0.4.0 meldet die Komponente bei jeder Anfrage Chip, Neustarts, Grund des letzten Resets und WLAN-Signal. Fleet listet das Gerät deshalb als ESPHome mit Zustand und Fehlerrate. Updates über die Luft macht ESPHome selbst, HydroNode schickt diesen Geräten keine Firmware.

Weiter geht's