Ich habe folgendes Gerät
Internals:
IODev Mosquitto
NAME Eltako
NR 175
STATE OFF
TYPE MQTT_DEVICE
OLDREADINGS:
READINGS:
2018-12-29 05:08:02 LWT online
2018-12-29 05:09:06 STATE {"Time":"2018-12-29T05:09:06","Uptime":"0T10:15:17","Vcc":3.196,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":1,"SSId":"WLAN-120955","BSSId":"00:87:33:51:00:35","Channel":6,"RSSI":52}}
2018-12-29 05:07:14 switch1 OFF
2018-12-29 05:07:15 switch2 OFF
2018-12-29 05:09:06 transmission-state incoming publish received
message_ids:
publishSets:
switch1:
topic /cmnd/eltako/POWER1
values:
on
off
switch2:
topic /cmnd/eltako/POWER2
values:
on
off
sets:
switch1 on,off
switch2 on,off
subscribe:
eltako/switch_1
eltako/switch_2
stat/eltako/POWER1
stat/eltako/POWER2
tele/eltako/STATE
tele/eltako/LWT
subscribeExpr:
^eltako\/switch_1$
^eltako\/switch_2$
^stat\/eltako\/POWER1$
^stat\/eltako\/POWER2$
^tele\/eltako\/STATE$
^tele\/eltako\/LWT$
subscribeQos:
eltako/switch_1 0
eltako/switch_2 0
stat/eltako/POWER1 0
stat/eltako/POWER2 0
tele/eltako/LWT 0
tele/eltako/STATE 0
subscribeReadings:
eltako/switch_1:
cmd
name switch1
eltako/switch_2:
cmd
name switch2
stat/eltako/POWER1:
cmd
name switch1
stat/eltako/POWER2:
cmd
name switch2
tele/eltako/LWT:
cmd
name LWT
tele/eltako/STATE:
cmd
name STATE
Attributes:
IODev Mosquitto
group Schalter
publishSet_switch1 on off /cmnd/eltako/POWER1
publishSet_switch2 on off /cmnd/eltako/POWER2
stateFormat {ReadingsVal($name, "switch1","offline");;}
subscribeReading_LWT tele/eltako/LWT
subscribeReading_STATE tele/eltako/STATE
subscribeReading_switch1 stat/eltako/POWER1
subscribeReading_switch2
und möchte mir gern im stateformat den Schaltzustand anzeigen lassen. Weiß jemand, warum
stateFormat {ReadingsVal($name, "switch1","offline");;}
geht, nicht aber
stateFormat {lc ReadingsVal($name, "switch1","offline");;}
Laut commandref gilt:
ZitatFalls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet.
Daher
lc xyz besser als
(lc xyz) schreiben ...
das geht leider auch nicht
{(lc ReadingsVal($name, "switch1","offline"))}
Gesendet von iPad mit Tapatalk Pro
Hm, lc() ist eine Funktion. Also lautet der Aufruf {lc(ReadingsVal($name, "switch1", "offline"))}
Gesendet von iPhone mit Tapatalk
Grüße Jörg
Irgendwas ist hier komisch. Ich habe auch
{return lc (ReadingsVal($name, "switch1","offline"))}
probiert (mit und ohne return), aber es klappt nicht. Das ist doch komisch?!
Keine Einträge im Logfile, übrigens.
Das hat mit lc nichts zu tun. Auch das geht nicht
{my $st1=ReadingsVal($name, "switch1","offline");
my $st2=ReadingsVal($name, "switch2", "");
if ($st1=="OFF"){$st1="off / "} elsif ($st1=="ON"){$st1="on / "};
if ($st2=="OFF"){$st2="off"} elsif ($st2=="ON"){$st1="on"};
return $st1.$st2}
Das muss ein völlig blöder Fehler sein...
Es war ein blöder Fehler. Es fehlte
attr <devicename> devStateIcon none
Sorry für die Aufregung.