Ich habe mehrere alle gleich aufgebaute MQTT-Sensoren wie z.B.
- name: "sleeping.room.sensor.module"
state_topic: "HAS/Neubarnim/sleepingroom/sensormodule/tele/SENSOR"
value_template: "{{ value }}"
json_attributes_topic: "HAS/Neubarnim/sleepingroom/sensormodule/tele/SENSOR"
json_attributes_template: >
{
"temperature": {{ value_json.BME280.Temperature }},
"humidity": {{ value_json.BME280.Humidity }},
"pressure": {{ value_json.BME280.Pressure }},
"dewpoint": {{ value_json.BME280.DewPoint }},
"timestamp": {{ (value_json.Time|as_timestamp) | int }},
"timestampFormatted": "{{ (value_json.Time|as_timestamp) | int | timestamp_custom('%d.%m, %H:%M') }}",
"battery": {{ value_json.ANALOG.Range | int }}
}
Der Zustand wird mir mir einem JSON-String angezeigt.
Bei allen Räumen funktioniert das, nur im Heizungsraum nicht. Dort wird der Zustand als “Unbekannt” angezeigt, die Attribute selbst sind aber alle richtig. Sie kommen auch alle aus dem gleichen Topic.
Wenn ich für den Heizungsraum bei “value_template”: “xxxx” eintrage geht es… Der Payload bei diesem Raum ist:
{"Time":"2025-04-25T21:02:57","DS18B20-1":{"Id":"000000BE4647","Temperature":23.0},"DS18B20-2":{"Id":"000000BE5CD7","Temperature":22.9},"BME280":{"Temperature":28.7,"Humidity":22.4,"DewPoint":5.1,"Pressure":1022.3},"BH1750":{"Illuminance":0},"85PCF74-1":{"D0":1,"D1":1,"D2":1,"D3":0,"D4":1,"D5":1,"D6":1,"D7":0},"PressureUnit":"hPa","TempUnit":"C"}
Liegt es an der Länge des Payloads?
Oder ist hier etwas anderes falsch?
Wenn ich das Attribute für D0 mit
"D0": "{{ value_json['PCF8574-1'].D0 }}",
erfrage, bekomme ich auch D0.
Bei
"D0": "{{ value_json.PCF8574-1.D0 }}",
wird mir angezeigt, dass D0 unbekannt ist. Das verstehe ich noch, da letzteres eventuell nicht unbedingt korrekte JSON-Schreibweise ist.
Aber warum klappt value_template: “{{ value }}” nicht? Hier sollte der Payload doch nur als String genommen werden.
Und warum muss bei value_template der Wert in Hochkomma geschrieben werden, wärend es bei den “json_attributes_templates” nicht sein muss?