FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andies am 29 Dezember 2018, 05:17:01

Titel: [gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: andies am 29 Dezember 2018, 05:17:01
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");;}
Titel: Antw:[gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: OdfFhem am 29 Dezember 2018, 07:05:56
Laut commandref gilt:
ZitatFalls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet.

Daher lc xyz besser als (lc xyz) schreiben ...
Titel: Antw:[gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: andies am 29 Dezember 2018, 09:19:33
das geht leider auch nicht

{(lc ReadingsVal($name, "switch1","offline"))}



Gesendet von iPad mit Tapatalk Pro
Titel: Antw:[gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: JoWiemann am 29 Dezember 2018, 09:45:06
Hm, lc() ist eine Funktion. Also lautet der Aufruf {lc(ReadingsVal($name, "switch1", "offline"))}



Gesendet von iPhone mit Tapatalk

Grüße Jörg
Titel: Antw:[gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: andies am 29 Dezember 2018, 12:06:10
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.
Titel: Antw:[gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: andies am 29 Dezember 2018, 12:24:00
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...
Titel: Antw:[gelöst] stateformat sowie lc (lowercase) geht nicht?
Beitrag von: andies am 29 Dezember 2018, 12:29:11
Es war ein blöder Fehler. Es fehlte
attr <devicename> devStateIcon none
Sorry für die Aufregung.