Hauptmenü

if else ...

Begonnen von tm, 19 November 2016, 18:13:47

Vorheriges Thema - Nächstes Thema

tm

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

Hans Franz

Besser:
{if ("relais PortA1" eq "off")...
Hoffentlich reicht das.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

tm

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.

Prof. Dr. Peter Henning

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

Hans Franz

Zapperlot, zu blind.
pah hat natürlich ;) recht.
Wahrscheinlich geht's so:
{if (ReadingsVal("relais","PortA1","") eq "off")...

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

tm

OK


RC_KLEIN:cSceneSet:.5 {if (ReadingsVal("relais","PortA1","") eq "off") set relais PortA1 on}


geht schon mal nicht ...

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Prof. Dr. Peter Henning

@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

tm

Lieber Herr Kollege,

Vielen Dank für diesen wertvollen Hinweis.

LG,
TM