Liebes Forum,
Wahrscheinlich nur eine Kleinigkeit - aber ich komm nicht weiter.
Relais sollen von einer Fernbedienung über eine I²C Schnittstelle geschaltet werden. Ein/Aus soll über die selbe Taste geschaltet werden. Einzeln geht das:
RC_KLEIN:cSceneSet:.5 set relais PortA1 on
ausschalten:
RC_KLEIN:cSceneSet:.5 set relais PortA1 off
In Abhängigkeit vom aktuellen Zustand jeweils:
RC_KLEIN:cSceneSet:.5 {if ("relais PortA1" == "off") {fhem("set relais PortA1 on")} }
RC_KLEIN:cSceneSet:.5 {if ("relais PortA1" == "on") {fhem("set relais PortA1 off")} }
Jetzt zum Problem - Soll beides miteinander verknüpft werden, funktioniert nur die Anweisung _vor_ dem else:
RC_KLEIN:cSceneSet:.5 {if ("relais PortA1" == "off") {fhem("set relais PortA1 on")} else {fhem("set relais PortA1 off")}}
Hab ich da einen Denk- oder Schreibfehler?
Vielen Dank vorab,
Thomas
Besser:
{if ("relais PortA1" eq "off")...
Hoffentlich reicht das.
Gruß
Hans
Servus Hans,
Danke für Deine Hilfe.
Damit hatte ich es schon versucht - und es läuft nicht ...
also
RC_KLEIN:cSceneSet:.5 {if ("relais PortA1" =="off") {fhem("set relais PortA1 on")}}
funktioniert, wohingegen
RC_KLEIN:cSceneSet:.5 {if ("relais PortA1" eq "off") {fhem("set relais PortA1 on")}}
ohne Wirkung bleibt.
Natürlich kann das nicht funktionieren. Mit diesem Code
"relais PortA1" eq "off"
werden zwei Strings verglichen - und der erste String ist nun einmal nicht gleich dem Zweiten.
Entweder Perl - dann schlage ich vor, die Konzepte Strings, Variable, Kontrollstrukturen etc. in Perl anzuschauen. Siehe Ausgabe von "man perl".
Oder FHEM - dann schlage ich vor, sich die Comandref zu DOIF anzusehen.
LG
pah
Zapperlot, zu blind.
pah hat natürlich ;) recht.
Wahrscheinlich geht's so:
{if (ReadingsVal("relais","PortA1","") eq "off")...
Gruß
Hans
OK
RC_KLEIN:cSceneSet:.5 {if (ReadingsVal("relais","PortA1","") eq "off") set relais PortA1 on}
geht schon mal nicht ...
Zitat von: tm am 20 November 2016, 16:53:01
OK
RC_KLEIN:cSceneSet:.5 {if (ReadingsVal("relais","PortA1","") eq "off") set relais PortA1 on}
geht schon mal nicht ...
Kann ja auch nicht. Schaue dir bitte noch mal Hans sein Beispiel an. Der Bedingungsteil war fehlerhafte aber nicht der Ausführungsteil.
@tm: Das erscheint mir etwas experimentell - so lange tippen, bis etwas funktioniert. Bitte erst einmal die Anfängerdoku lesen.
Eine gute Einführung in Perl findet man hier: https://wiki.selfhtml.org/wiki/Perl
LG
pah
Lieber Herr Kollege,
Vielen Dank für diesen wertvollen Hinweis.
LG,
TM