Hallo Zusammen,
habe folgendes Reading in einem Device
wasserdruck { "press": {"value": 1.169}, "sensor": {"value": "ok"}}
und möchte nur den Wert value von press dargestellt haben.
Versuche es gerade mit folgendem sprintf als stateformat
{sprintf("Wasserdruck: %.1f", ReadingsVal($name,"press_value",0)) }
Bekomme aber nur 0.0 angezeigt.
Komme irgendwie nicht dahinter wo der Fehler liegt :-(
Gruß
Markus
Wenn ich es richtig sehe versuchst du mit Readings als auf ein Json String zuzugreifen, dass kann die Funktion so nicht. Dh du musst entweder den Teil ausschneiden aus deinem Reading, oder du arbeitest mit expandJson.
hallo
expandJson ist installiert. Keine Ahnung warum dasbei dem Device nicht geht :-(
Gruß
Markus
Dann solltest du die Informationen mal nicht vor enthalten und hier die entsprechenden Device mit einem list posten, dass man auch alles sieht.
ups sorry stimmt :-)
Aber glaube das Problem gefunden zu haben. Und zwar habe ich meine expandJson wie folgt konfiguriert.
(Vaillant.*|Ebus.*:.*:.{.*.*{.*.*}})
Aber das device mit dem sprintf stateformat hiess "ebus_druck" also klein geschrieben.
Habs jetzt umbenannt und nun funktioniert es :-)
Hier mal ein list wie es vorher war:
Internals:
CFGFN
IODev MQTTBroker
NAME ebus_druck
NR 390
STATE Wasserdruck: 1.3
TYPE MQTT_DEVICE
Helper:
DBLOG:
transmission-state:
logdb:
TIME 1517033222.95426
VALUE subscription acknowledged
READINGS:
2018-01-27 09:07:55 press_value 1.266
2018-01-27 09:07:55 sensor_value ok
2018-01-27 09:07:50 state get
2018-01-27 09:07:55 transmission-state incoming publish received
2018-01-27 09:07:55 wasserdruck {
"press": {"value": 1.266},
"sensor": {"value": "ok"}}
message_ids:
publishSets:
:
topic vaillant_ebus/bai/WaterPressure/get
values:
get
sets:
get
subscribe:
vaillant_ebus/bai/WaterPressur
vaillant_ebus/bai/WaterPressure
subscribeExpr:
^vaillant_ebus\/bai\/WaterPressur$
^vaillant_ebus\/bai\/WaterPressure$
subscribeReadings:
vaillant_ebus/bai/WaterPressur:
cmd
name wasserdruck
vaillant_ebus/bai/WaterPressure:
cmd
name wasserdruck
Attributes:
DbLogExclude .*
IODev MQTTBroker
devStateStyle style="text-align:left"
icon weather_barometric_pressure
publishSet get vaillant_ebus/bai/WaterPressure/get
room 010_Heizung
stateFormat {sprintf("Wasserdruck: %.1f", ReadingsVal($name,"press_value",0))}
subscribeReading_wasserdruck vaillant_ebus/bai/WaterPressure
und hier wie es jetzt ist und wo es nun funktioniert.
Internals:
CFGFN
IODev MQTTBroker
NAME Ebus_Druck
NR 390
STATE Wasserdruck: 1.3
TYPE MQTT_DEVICE
Helper:
DBLOG:
transmission-state:
logdb:
TIME 1517033222.95426
VALUE subscription acknowledged
READINGS:
2018-01-27 09:07:55 press_value 1.266
2018-01-27 09:07:55 sensor_value ok
2018-01-27 09:07:50 state get
2018-01-27 09:07:55 transmission-state incoming publish received
2018-01-27 09:07:55 wasserdruck {
"press": {"value": 1.266},
"sensor": {"value": "ok"}}
message_ids:
publishSets:
:
topic vaillant_ebus/bai/WaterPressure/get
values:
get
sets:
get
subscribe:
vaillant_ebus/bai/WaterPressur
vaillant_ebus/bai/WaterPressure
subscribeExpr:
^vaillant_ebus\/bai\/WaterPressur$
^vaillant_ebus\/bai\/WaterPressure$
subscribeReadings:
vaillant_ebus/bai/WaterPressur:
cmd
name wasserdruck
vaillant_ebus/bai/WaterPressure:
cmd
name wasserdruck
Attributes:
DbLogExclude .*
IODev MQTTBroker
devStateStyle style="text-align:left"
icon weather_barometric_pressure
publishSet get vaillant_ebus/bai/WaterPressure/get
room 010_Heizung
stateFormat {sprintf("Wasserdruck: %.1f", ReadingsVal($name,"press_value",0))}
subscribeReading_wasserdruck vaillant_ebus/bai/WaterPressure
Und nich ein list vom expandJson device
Internals:
DEF (Vaillant.*|Ebus.*:.*:.{.*.*{.*.*}})
NAME ej3
NR 203
NTFY_ORDER 50-ej3
STATE 2018-01-27 09:12:45
TYPE expandJSON
s_regexp (Vaillant.*|Ebus.*:.*:.{.*.*{.*.*}})
t_regexp .*
version 1.10
READINGS:
2018-01-27 06:10:22 state active
helper:
Attributes:
room 099_System
Muss mich da mal weiter mit beschäftigen.... ;-)
Gruß
Markus
Top, freut mich, dass du den Fehler gefunden hast.