Hauptmenü

Syntax bei if...else

Begonnen von theotherhalf, 30 Dezember 2018, 18:21:20

Vorheriges Thema - Nächstes Thema

Otto123

Hast Du das aus meiner Antwort #12 mal getestet?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

theotherhalf

Zitat von: Otto123 am 30 Dezember 2018, 19:25:51
Hast Du das aus meiner Antwort #12 mal getestet?

Ja, hab ich getestet:
{ if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","") eq "off" ){"wahr"}else{"falsch"}}

ergibt "falsch" wenn die Pumpe aus ist und auch "falsch" wenn sie an ist.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Otto123

#17
Sehr merkwürdig. Wir haben jetzt alles getestet ...  :-\
{ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","")} ergab on bzw off
NEIN :o
Jetzt sehe ich es!!!
ZitatREADINGS:
     2018-12-30 18:30:14   Umwaelzpumpe_Therme off


     2018-12-30 18:30:14   state           Umwaelzpumpe_Therme off
Normal sollte das so aussehen:
ZitatREADINGS:
     2018-12-30 18:30:14   Umwaelzpumpe_Therme off
     2018-12-30 18:30:14   state           Umwaelzpumpe_Therme off

Hinter dem off sind weitere Zeichen - unsichtbar!!! Es gibt Zeilenumbrüche

Ändere mal die Abfrage: 
if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","") =~ m/off/i )

Zur Erklärung: der Ausdruck "=~ m/off/i" testet nicht ob "off gleich off" ist, sondern ob im linken String der Ausdruck off enthalten ist. Groß und Kleinschreibung spielt keine Rolle.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

theotherhalf

if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","") =~ m/on/i ) {"wahr"}else{"falsch"}}

Unknown command if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme",""), try help.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

theotherhalf

Zitat von: Otto123 am 30 Dezember 2018, 20:05:17
Sehr merkwürdig. Wir haben jetzt alles getestet ...  :-\
{ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","")} ergab on bzw off
NEIN :o
Jetzt sehe ich es!!!Hinter dem off sind weitere Zeichen - unsichtbar!!! Es gibt Zeilenumbrüche

Ändere mal die Abfrage: 
if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","") =~ m/off/i )

Ich habe für den Wert bereits ein Readings Proxy in Verwendung um es in einem Floorplan darzustellen.
Der sollte bereinigt sein um die Leerzeichen. Ich probiere den mal.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Otto123

#20
Zitat von: theotherhalf am 30 Dezember 2018, 20:12:07
if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","") =~ m/on/i ) {"wahr"}else{"falsch"}}

Unknown command if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme",""), try help.
Da fehlt die Klammer { am Anfang!

Es sind nicht nur Leerzeichen!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

theotherhalf

Funktioniert! Das war es!
{ if(ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","") =~ m/on/i ) { fhem("set CCU var Status_Umwaelzpumpe_Therme 1") } else { fhem("set CCU var Status_Umwaelzpumpe_Therme 0") }}

So steht es nun in der cfg.
Kannst du mir den Ausdruck =~ m/on/i etwas erklären?

Danke dir für deine super Hilfe!!!!!!!!!
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

JoWiemann

#23
Zitat von: theotherhalf am 30 Dezember 2018, 20:27:34
Kannst du mir den Ausdruck =~ m/on/i etwas erklären?


=~ leitet einen regulären Ausdruck ein
m bedeutet m(atch) Operator
/on/ teste (match), ob die Zeichenfolge on im übergebenen String vorkommt
i und prüfe das case i(nsensitive)

Da reguläre Ausdrücke sehr oft in Fhem Verwendung finden ist es immer hilfreich sich damit zu beschäftigen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Otto123

Hallo Jörg,

ist /i nicht case insensitiv?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

JoWiemann

Zitat von: Otto123 am 30 Dezember 2018, 20:56:31
Hallo Jörg,

ist /i nicht case insensitiv?

Gruß Otto

Hallo Otto,

autsch. Stimmt. Kommt ja auch von i(nsensitive)

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz