Syntaxproblem oder Denkfehler bei einer IF-Abfrage und 2 Bedingungen

Begonnen von uron, 17 August 2018, 09:51:47

Vorheriges Thema - Nächstes Thema

uron

Sicher ein banales Problem, was ich hier schildere, aber offenbar reichen meine Syntaxkenntnisse nicht aus, um eine solch einfache Aktion mit einem IF-Befehl sowie 2 Bedingungen zu lösen. Mache ich einen logischen Denkfehler oder stimmt die Syntax nicht?

Folgende Dummies habe ich definiert. Im Moment habe ich sie tatsächlich so wie beschrieben eingestellt, um andere Definitionsprobleme auszuschließen.
In Realität wird später z.B. der HofLichtStatus per notify definiert – aber das tut im Moment nichts zur Sache. Macht euch deshalb über die Sinnhaftigkeit der Stati der Dummies keine Gedanken, wichtig ist mir das Schaltergebnis.

define isNACHT dummy
attr isNACHT webCmd on:off
define IST_NACHT at *{sunset("HORIZON=-3")} set isNACHT on

define HofLichtStatus dummy
attr HofLichtStatus webCmd on:off
set HofLichtStatus off


Der jeweilige Status (state) dieser beiden Dummies wird zum Zeitpunkt dieses Posts mit ,,off" angezeigt

Die folgende Befehlszeile führt dazu, dass das Hoflicht (ug_Licht_Hof ) für 20 Sekunden eingeschaltet wird - also bis hier hin ist alles ok:
define Hoflicht_BW notify PIRA_21 IF ([HofLichtStatus] eq "off") (set ug_Licht_Hof on-for-timer 20)

Füge ist dieser Befehlszeile eine weitere Bedingung (isNacht) zu, bleibt die Hofleuchte aus.
define Hoflicht_BW notify PIRA_21 IF ([HofLichtStatus] eq "off" && [isNacht] eq "off") (set ug_Licht_Hof on-for-timer 20)

Ich weiß natürlich, dass die Syntax in der command.ref  sowie im Forum ausführlich beschrieben ist. Es gibt unzählige Bespiele in den verschiedenen Foren, die mein Problem behandeln und natürlich habe ich verschiedene Varianten getestet, da die Befehlszeile aber nach (ehrlich) vielen Stunden immer noch nicht funktionieren will, schließe ich ein Problem mit der Dummy-Definition nicht mehr aus, aber welches?
Oder geht eine solche Syntax nur mit Perl, womit ich mich nicht wohler fühle.
Aber auch der Weg will nicht zünden:
define Hoflicht_BW notify PIRA_21 {if (Value("HofLichtStatus") eq "off" && Value("isNacht") eq "off") {fhem "set ug_Licht_Hof on-for-timer 20"}}

Mag mir jemand weiterhelfen?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

rudolfkoenig

Zu den IF Problemen kann/will ich nichts sagen.

Bei der Perl-Variante: ich wuerde filgende Zeilen nacheinander in der FHEM-Console eingeben:

{ Value("HofLichtStatus") }
{ Value("HofLichtStatus") eq "off" }
{ Value("isNacht") }
{ Value("isNacht") eq "off" }
{ Value("HofLichtStatus") eq "off" && Value("isNacht") eq "off" }

Otto123

Hi,

ZitatDer jeweilige Status (state) dieser beiden Dummies wird zum Zeitpunkt dieses Posts mit ,,off" angezeigt
Der Reading state ist allerdings egal. Das Konstrukt [HofLichtStatus] fragt das Internal STATE ab.
Will man den state haben muss es [HofLichtStatus:state] heissen.

Siehe auch Doku IF-Zitat
Zitat[<device>] corresponsed to [<device>:&STATE]

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

uron

Die Ergebnisse der von rudolfkoenig vorgeschlagenen Eingaben in der FHEM-Console eingeben:
{ Value("HofLichtStatus") }  => off
{ Value("HofLichtStatus") eq "off" } => 1
{ Value("isNacht") } => kein Ergebnis oder ,, ,,?
{ Value("isNacht") eq "off" } => kein Ergebnis oder ,, ,,?
{ Value("HofLichtStatus") eq "off" && Value("isNacht") eq "off" } => kein Ergebnis oder ,, ,,?

Offenbar liegt das Problem beim Dummy "isNacht", da hier m.E. keine für die IF-Abfrage verwertbaren Aussagen bringt.
Aber woran liegt das? Im "define" des dummy sehe ich keine Unterschiede zum "HofLichtStatus!

Den Vorschlag von Otto123 "state" abzufragen hatte ich bereits getestet:
define Hoflicht_BW notify PIRA_21 IF ([HofLichtStatus:state] eq "off" && [isNacht:state] eq "off") (set ug_Licht_Hof on-for-timer 20)
Leider führt das auch zu keinem Erfolg!
Auch
define Hoflicht_BW notify PIRA_21 {if (Value([HofLichtStatus:state]) eq "off" && Value([isNacht:state]) eq "off") {fhem "set ug_Licht_Hof on-for-timer 20"}}
will nicht funktionieren!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

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

uron

Arrrrg!
Kaum macht man's richtig, schon funktioniert's!

Danke!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker