MQTT-Sensor in configuration.yaml

Ich habe zum Einstieg gleich mal eine ziemlich umfangreiche Fragestellung:

Ich bekomme in HA über ein ESP32 (LilyGo) und darauf installiertem openMQTTgateway mehrere Sensoren für eine Bresser-Wetterstation geliefert.
Anscheinend wird jedoch die ID des ESP32 nicht korrekt interpretiert.

Über den MQTT-Explorer sehe ich, dass folgendes Topic geliefert wird:
home/LilyGo/RTL_433toMQTT/Bresser-6in1/0/-1760026362
mit den Daten:

{
“model”: “Bresser-6in1”,
“id”: -1760026362,
“channel”: 0,
“battery_ok”: 1,
“temperature_C”: -3.6,
“humidity”: 97,
“sensor_type”: 1,
“wind_max_m_s”: 1,
“wind_avg_m_s”: 1,
“wind_dir_deg”: 292,
“uv”: 44.4,
“startup”: 1,
“flags”: 0,
“mic”: “CRC”,

Es werden dann auch eine Reihe entsprechender Sensoren unter dem Topic
homeassistant/sensor angelegt:
Z.B. homeassistant/sensor/Bresser-6in1-0–1760026362-rain_mm/config
Allerdings scheint dort der Eintrag state_topic falsch zu sein:

{
“stat_t”: “+/+/RTL_433toMQTT/Bresser-6in1/0//1760026362”,
“dev_cla”: “precipitation”,
“unit_of_meas”: “mm”,
“name”: “Rain”,
“uniq_id”: “Bresser-6in1-0–1760026362-rain_mm”,
“val_tpl”: “{{ value_json.rain_mm | is_defined }}”,
“stat_cla”: “measurement”,
“device”: {
“ids”: \[
“Bresser-6in1-0–1760026362”
\],
“cns”: \[
\[
“mac”,
“Bresser-6in1-0–1760026362”
\]
\],
“mdl”: “Bresser-6in1”,
“name”: “Bresser-6in1-0–1760026362”,
“via_device”: “LilyGo”
}
}

Statt dem “-” (Minus) wird ein “/” eingetragen.
Ich vermute, dass darum bei Verwendung dieses Sensors keine Werte angezeigt werden.

Meine Frage 1: wie und wo kann ich die korrekte ID bei dem Sensor ändern?

Ich habe dann den Sensor in der configration.yaml mehr oder wenig mit Folgendem überschrieben:

mqtt:

- sensor:
  state_topic: “+/+/RTL_433toMQTT/Bresser-6in1/0/-1760026362”
  value_template: “{{ (value_json.rain_mm | is_defined) - 0.4 }}”
  unique_id: Bresser_5_in_1_Regen
  name: “Niederschlag”
  state_class: measurement
  unit_of_measurement: mm

Das funktioniert, ich bekomme den Wert geliefert. (Die Bresser liefert immer 0,4 mm als Standardwert, daher die Korrektur).

Ich müsste mit den Daten noch mehr machen, komme jetzt aber nicht mehr weiter, denn Folgendes funktioniert nicht:

mqtt

- sensor:
  state_topic: “+/+/RTL_433toMQTT/Bresser-6in1/0/-1760026362”
  value_template: >
    “{{ (value_json.rain_mm | is_defined) - 0.4 }}”
  unique_id: Bresser_5_in_1_Regen
  name: “Niederschlag”
  state_class: measurement
  unit_of_measurement: mm

Geschweige denn:

mqtt:

- sensor:
  state_topic: “+/+/RTL_433toMQTT/Bresser-6in1/0/-1760026362”
  value_template: >
    “{
    { (value_json.rain_mm | is_defined) - 0.4 }
    }”
  unique_id: Bresser_5_in_1_Regen
  name: “Niederschlag”
  state_class: measurement
  unit_of_measurement: mm

Wobei die Syntax akzeptiert wird, nur kommen keine Werte mehr.

Frage 2: Warum? Wo liegt mein Denkfehler?

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Ist das auch richtig eingerückt?

Ich hoffe ja.
Ich arbeite mit dem Studio Code-Server. Der rückt beim Zeilenvorschub selbst ein.
Die führenden Leerzeichen gehen wohl beim Kopieren verloren oder erscheinen durch variable Schriftbreite kaum sichtbar.

Gerade ausprobiert:

  - sensor:
      state_topic: "+/+/RTL_433toMQTT/Bresser-6in1/0/-1760026362"
      value_template: >-
        "{{ (value_json.rain_mm | is_defined) - 0.4 }}"
      unique_id: Bresser_5_in_1_Regen
      name: "Niederschlag"
      state_class: measurement
      unit_of_measurement: mm

Ergebnis: Niederschlag : unknown

:crayon:by HarryP: Post formatiert

Dein ursprünglich angelegter Sensor hat doch funktioniert. Geht der jetzt nicht mehr?

Was willst du denn überhaupt noch anpassen?

Wenn du beim Template mit >- o. ä. arbeitest kommen in den Zeilen danach keine umklammernden ““ mehr.

1 „Gefällt mir“

Der Sensor funktioniert.
Aber ab und zu liefert die Wetterstation für den Niederschlag Phantasiewerte über 10.000. Das möchte ich noch ausgleichen, indem ich in diesem Fall durch eine if-Abfrage den Wert auf 0 setze.
Außerdem kommen noch andere Sensordaten herein. Z.B. einer für die Windrichtung. Da würde ich ebenfalls gerne die gelieferten Winkelwerte auf die Windrichtung, z.B. den Bereich von 80°-100° in “Ost” umrechnen.
Aber das kann ich erst angehen, wenn ich weiß, wie ich grundsätzlich mehrzeilige Eingaben korrekt hinbekomme.
Das kann ich jetzt angehen, denn dein Hinweis mit den ““ war der causus knacktus.
Vielen Dank!

1 „Gefällt mir“