kann man in einem AT ein IF benutzen?

Begonnen von Invers, 07 April 2014, 12:56:04

Vorheriges Thema - Nächstes Thema

Invers


Ich will mein Türschloss steuern und hab mir zum Test erst einmal eine Lampe geschnappt.
Problem:
Wenn der Türkontakt zu geht und keiner abschliesst, soll nach 10 Sekunden die Tür automatisch verschlossen werden.
Das funktionierte auch bereits. Dann habe ich bedacht, dass ja innerhalb der 10 Sekunden jemand die Tür wieder öffnen könnte und somit abgeschlossen werden würde, obwohl die Tür noch auf ist.
Um das zu verhindern wollte ich den AT noch einmal nach Ablauf der 10 Sekunden prüfen lassen, ob die Tür wirklich noch zu ist.
Das habe ich mit  folgendem Code probiert:
Tuerkontakt.* IF (([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked") or ([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked (uncertain)"))(define atSchlossZu at +00:00:10 if ([Tuerkontakt] eq "closed")(set Stehlampe on-for-timer 5))
Das funktioniert aber nicht.

Frage 1:
Geht das so gar nicht, dass man in einem AT ein IF verarbeitet, oder ist nur mein Code falsch?
Frage 2:
Falls es nicht so funktioniert, wie wäre dann eine funktionierende Lösung machbar?

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Zitat von: Invers am 07 April 2014, 12:56:04
Das habe ich mit  folgendem Code probiert:
Tuerkontakt.* IF (([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked") or ([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked (uncertain)"))(define atSchlossZu at +00:00:10 if ([Tuerkontakt] eq "closed")(set Stehlampe on-for-timer 5))
Geht das so gar nicht, dass man in einem AT ein IF verarbeitet, oder ist nur mein Code falsch?

Warum sollte es nicht gehen, FHEM-IF wird groß geschrieben und nicht klein (siehe dein zweiter IF-Befehl).

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

#2
IF-Schreibweise habe ich korrigiert. Ist beim 100sten Versuch schiefgegangen. :-)

Geht aber trotzdem nicht. Die Lampe geht gar nicht erst an.

Dieser Code ohne AT mit IF funktioniert hingegen:
Tuerkontakt.* IF (([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked") or ([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked (uncertain)"))(define atSchlossZu at +00:00:10 set Stehlampe on-for-timer 5)
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Zitat von: Invers am 07 April 2014, 13:33:38
IF-Schreibweise habe ich korrigiert. Ist beim 100sten Versuch schiefgegangen. :-)

Geht aber trotzdem nicht. Die Lampe geht gar nicht erst an.

Dieser Code ohne AT mit IF funktioniert hingegen:
Tuerkontakt.* IF (([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked") or ([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked (uncertain)"))(define atSchlossZu at +00:00:10 set Stehlampe on-for-timer 5)
Wenn die Lampe nicht angeht und keine Fehlermeldung im Log zu sehen ist, dann ist Bedingung im zweiten IF nicht erfüllt.

Dann probieren mal nur den zweiten IF in der Kommandozeile aus.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Eingegeben:
IF ([Tuerkontakt] eq "closed")(set Stehlampe on-for-timer 5)
funktioniert alleine. Aber komplett nicht.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Zitat von: Invers am 07 April 2014, 15:51:22
Eingegeben:
IF ([Tuerkontakt] eq "closed")(set Stehlampe on-for-timer 5)
funktioniert alleine. Aber komplett nicht.
Das würde bedeuten, dass at in Kombination mit einem FHEM -Befehl nicht funktioniert - das glaube ich nicht.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Kann das sein, dass mit den Klammer im ersten teil beim or etwas nicht stimmt?
Ich habe schon den ganzen Tag rumprobiert. Sitze immernoch dran.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

#7
Zitat von: Invers am 07 April 2014, 16:33:30
Kann das sein, dass mit den Klammer im ersten teil beim or etwas nicht stimmt?
Ich habe schon den ganzen Tag rumprobiert. Sitze immernoch dran.

Wenn z. B.

Tuerkontakt.* IF (([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked") or ([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked (uncertain)"))(define atSchlossZu at +00:00:10 IF (1) (set Stehlampe on-for-timer 5))

funktioniert, dann weißt du, dass du syntaktisch alles richtig gemacht hast. Wenn du dann IF (1) gegen IF ([Tuerkontakt] eq "closed") austauschst und es nicht funktioniert, dann ist Tuerkontakt zum Zeitpunkt der Abfrage nicht closed. Es ist aber auch klar, dass wenn atSchlossZU noch vom letzten Mal definiert ist - define scheitert.

Du kannst auch die Verzögerung z. B. auf eine Minute erhöhen und in FHEM schauen, ob atSchlossZU korrekt definiert wird, bevor es zuschlägt. Und immer wieder nach Meldungen im Log schauen.

Ich habe bei mir diverse IF´s in Kombination mit at, die allesamt funktionieren.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Ich bin deinem Beispiel gefolgt. Es scheint tatsächlich so zu sein, dass das AT nie zuschlagen kann.
Ich werde nun einen Umweg gehen und einefach eine Dummy auslösen und in diesem das AT unterbringen.
Mal sehen, ob da klappt.

Hab vielen Dank für deine Hilfe.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2