AT mit IF + UND- und ODER-Verknüpfung funktioniert nicht

Begonnen von awe, 19 September 2015, 09:17:36

Vorheriges Thema - Nächstes Thema

awe

Hallo zusammen,
für meine Rollo-Steuerung habe ich einige Bedingungen programmiert (mit UND- und ODER-Verknüpfung), doch leider funktioniert es nicht.

Nur am WE soll das Rollo automatisch hochfahren, wenn ein paar Bedingungen erfüllt sind (alles HomeMatic).
  • WZ_Olive_Terrasse = Türgriffsensor mit Status open/closed/tilted
  • Anwesenheit = Dummy Urlaub(zu_Hause)/Alltag/Urlaub(weg)
Grob beschrieben: Rollo hoch nur wenn:
$WE UND (Olive=closed ODER Oliver=tilted) UND (Anwesenheit=Urlaub(zu_Hause) ODER Anwesenheit=Alltag)
Ich habe folgendes programmiert:
AT WZ_Rollo_Tuer_hoch_WE mit
DEF
*{sunrise("REAL",10,"07:07","09:00")} {if ($we && (WZ_Olive_Terrasse eq "closed" || WZ_Olive_Terrasse eq "tilted") && (Anwesenheit eq "Urlaub(zu_Hause)" || Anwesenheit eq "Alltag")) { fhem("set WZ_Rollo_Tuer hoch");; } }

Leider passiert gar nichts :(

Was hingegen einwandfrei funktioniert, ist meine Rollo-Runter-Steuerung:
AT WZ_Rollo_Tuer_runter mit
DEF
*{sunset("REAL",+1602,"17:00","22:22")} IF ([WZ_Olive_Terrasse:state] eq "open") (set WZ_Rollo_Tuer_CloseLater on,set pushmsg msg 'fhem' 'Warnung: Rollo WZ Tür nicht geschlossen!' '' 0 '') ELSE (set WZ_Rollo_Tuer runter,set WZ_Rollo_Tuer_CloseLater off)


Hat einer `ne Idee?

Gruß,
Axel

Thorsten Pferdekaemper

Hi,
Im Perl-Code (d.h. in Deinem ersten Beispiel) werden Namen von Devices oder Channels nicht zu deren "state" oder so umgewandelt. Wahrscheinlich hast Du sogar irgendwelche Fehlermeldungen im Log.
Du musst mit der Perl-Funktion ReadingsVal arbeiten. Ein bisschen ist das in der Commandref unter "Perl Specials" erklärt.
Gruß,
   Thorsten

P.S.: Das gehört eigentlich nicht wirklich unter "Homematic". Eher nach "Automatisierung" oder so.
FUIP

zap

2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)