FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MaJu am 22 April 2014, 22:59:54

Titel: Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 22 April 2014, 22:59:54
Hallo zusammen, ich stehe auf dem Schlauch und bitte um Hilfe.

Ich habe ein Info-Display im Flur hängen (siehe http://forum.fhem.de/index.php/topic,22336.0.html (http://forum.fhem.de/index.php/topic,22336.0.html)).
Sobald ich die Wohnungstür öffne, soll es eine sofortige Ansage geben, wenn vergessen wurde ein Fenster zu schließen.

Randbedingungen: Alle Fenster (FHEM-Bezeichnungen: Fenster_Wohnzimmer und Fenster_Schlafzimmer und Fenster_Katzenzimmer) und die Wohnungstür (FHEM: Wohnungstuer) haben jeweils einen Türsensor Homematic HM-SEC-SC. Dieser meldet den Status "open" wenn etwas geöffnet wird.

Die Ansage wird gesteuert mit "set ttsSay Flurtablet [Nachricht]"

Ziel:
Wenn bei "Wohnungstuer" der Status "open" ist, soll eine Ansage kommen (und zwar nur dann), wenn einer der 3 Fenster-Sensoren den Status "open" hat. Dabei sollte auch das entsprechende Zimmer mit genannt werden. Beispiel: "Achtung! Fenster Schlafzimmer offen!" Oder bei mehreren dann beispielsweise "Achtung! Fenster Schlafzimmer und Wohnzimmer offen!"

Aber wie komme ich dahin? Ich habe irgendwo den folgenden Codeschnipsel gefunden, der allerdings NICHT hilft:define Ansage_Wohnzimmer notify Wohnungstuer
IF ([Wohnungstuer] eq "open") (

    IF ([Fenster_Wohnzimmer] eq "open")
        (set Flurtablet ttsSay Achtung! Fenster Wohnzimmer ist noch offen!)
    ELSE
        (set Flurtablet toastMessage Fenster Wohnzimmer ist geschlossen.)

) ELSE

    (set Flurtablet toastMessage Fenster Wohnzimmer geöffnet.)

Die "toastMessage" sind kurze Einblendtexte auf dem Display, die ich einfach reingeschrieben habe damit überhaupt was bei ELSE steht, dies brauche ich aber nicht.

FHEM gibt mir folgende Fehlermeldung:Error messages while initializing FHEM:
configfile: Usage: define notify
IF: no right bracket: (
IF: no left bracket:
Unknown command (set, try help.
Unknown command ELSE, try help.
Unknown command (set, try help.
Unknown command ), try help.
Unknown command (set, try help.


Mir fehlt der richtige Anstoß. Wer hilft mir, bitte?
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 23 April 2014, 00:29:04
Der Code-Schnipsel schaut auf den ersten Blick gut aus - wo hast du das denn eingetragen?

Beim anlegen solcher notifys gehe ich so vor:

Zitatdefine blabla notify blubblub IF ()

in die Befehlszeile eingeben!

Dann landest du im Screen des notifys - hier kannst Du auf DEF klicken, dort steht dann bereits
Zitatblubblub IF ()
Wenn Du dann deinen Schnipsel in die () des IFs setzt sollte das ganze funktionieren.
Lediglich Dein letztes ELSE erscheint mir nicht gerade sinnvoll.

Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 06:31:37
Der Schnipsel ist so wie er da steht in der fhem.cfg.
Benötige ich zu einem IF denn zwingen ein ELSE?

Ich werde es heute Abend nach der Arbeit weiter testen.

Danke! :-)
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Bennemannc am 23 April 2014, 06:37:47
Hallo,

zu einem IF wird nicht zwingend ein ELSE benötigt. Das geht auch ohne, dann wird eben nichts gemacht, wenn die Bedingung nicht erfüllt ist.

Gruß Christoph
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Puschel74 am 23 April 2014, 07:14:42
Moin,

http://fhem.de/commandref_DE.html#IF (http://fhem.de/commandref_DE.html#IF)
Hier steht:
ZitatGeschachtelte Angabe von zwei IF-Befehlen (kann in mehreren Zeilen mit Einrückungen zwecks übersichtlicher Darstellung in der DEF-Eingabe eingegeben werden):

Ich sehe aber nichts von Leerzeilen oder das das direkt in die fhem.cfg geschrieben werden kann.
Weiters würde ich, mal wieder, davon abraten die fhem.cfg selbst zu bearbeiten.

Grüße
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 07:25:22
Danke Puschel74, das war ein wichtiger Denkanstoß! Ich habe es tatsächlich nicht als Define geschrieben, sondern in die fhem.cfg. Werde es heute Abend testen.

Ich müsste also mit define Ansage_Wohnzimmer notify Wohnungstuer
das Notify definieren und darin dann IF ([Wohnungstuer] eq "open") (

    IF ([Fenster_Wohnzimmer] eq "open")
        (set Flurtablet ttsSay Achtung! Fenster Wohnzimmer ist noch offen!)
    )

?

Oder habe ich noch einen Denkfehler?
Damit würde ich zwar für jedes Fenster ein eigenes Notify erstellen, daber das wäre nicht tragisch, da wird die Ansage einfach länger.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Puschel74 am 23 April 2014, 07:37:01
Hallo,

hier
http://forum.fhem.de/index.php/topic,17496.msg115065.html#msg115065 (http://forum.fhem.de/index.php/topic,17496.msg115065.html#msg115065)
wird kurz erklärt wie ein at, notify angelegt werden kann ohne die fhem.cfg überhaupt zu beachten.

Zu IF kann ich dir leider nur das sagen was in der commandref steht bzw. was sich im Forum dazu tummelt - mehr aber auch nicht da ich IF nicht verwende.

Du musst auch nicht für jedes Fenster ein eigenes notify machen.

Versuch mal
define Ansage_Wohnzimmer notify (Wohnungstuer|Fenster_.*)
So löst das notify aus wenn Wohnungstuer ODER ein Fenster einen Status sendet.

Grüße
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 07:40:50
Danke. Bisher war FHEM für mich ein reines "Anzeigeprogramm" für das Tablet im Flur. Jetzt gehts ans "basteln", hier fällt mir mein fehlendes Programmierverständnis auf die Füße. Ich versuche es zu verstehen und umzusetzen.

Ich möchte jedoch nicht immer eine Ansage erhalten, wenn sie eine Fenster- oder Türstatus ändert. Es soll lediglich eine Warn-Ansage sein, die man hört, wenn ein Fenster vergessen wurde zu schließen und man die Wohnung verlassen möchte.
Also nur wenn die Tür geöffnet wird, sind die Fenster-Stati relevant und es soll nur etwas ausgelöst werden, wenn neben der Tür auch ein Fenster geöffnet ist.

Oder ist "IF" hier der Holzweg und etwas anderes besser?
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Bennemannc am 23 April 2014, 07:47:29
Hallo,

wenn Du das notify von Puschel74 nimmst und das ganze mit UND verknüpfst, hast Du doch eigentlich das was Du möchtest. Wenn Fenster und Türe auf = Meldung.

Gruß Chrsitoph
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Puschel74 am 23 April 2014, 07:49:31
Hallo,

"Holzwege" gibt es in FHEM nicht  ;D
Nur Umwege  ;)

Ok. Hab grad nochmal "Ziel:" in deinem ersten Beitrag durchgelesen.
Ob und wie das mit IF machbar ist kann ich dir nicht sagen.
Wie geschrieben - ich verwende IF nicht.

Ich hab mit if noch nie Probleme gehabt oder bin irgendwie an "Leistungsgrenzen" gekommen.
Daher besteht für mich keine Notwendigkeit hier umzudenken.

Ich kann dir später mal versuchen ein kleines Stückchen Code zu posten das deine Anforderungen erfüllen sollte.
Kann aber noch etwas dauern also bitte ein kleines bischen Geduld.

Aber vielleicht ist ja jemand anders schneller mit dem Code  ;D

Grüße

Edith: @Christoph
Ich weiß nicht ob im regexp ein & möglich ist. Das habe ich noch nie versucht.
Das ODER habe ich hier eigentlich nur als Trenner verstanden für unterschiedliche Auslösekriterien und nicht als ODER in diesem Sinne.
Ich kann mich hier aber natürlich auch täuschen.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: mi.ke am 23 April 2014, 08:10:20
Ich bin auch noch Anfänger und wahrscheinlich sind Fehler drin...

aber von Ansatz her würd ich das so machen.

Aber mit "normalem" if, weil ich das IF nicht verstanden habe

ungetestet: 8)
define Wohnungstuer_n notify Wohnungstuer:open {
if (Value ("Fenster_Katzenzimmer") eq "open") {fhem ("set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen");}
if (Value ("Fenster_Wohnzimmer") eq "open") {fhem ("set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen");}
if (Value ("Fenster_Schlafzimmer") eq "open") {fhem ("set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen");}
}




ODER



ungetestet: 8)
define FensterTEST_n notify Fenster_.*:offen {
if ((Value ("Wohnungstuer") eq "open") && ("@" eq "Fenster_Katzenzimmer")) {fhem ("set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen");}
if ((Value ("Wohnungstuer") eq "open") && ("@" eq "Fenster_Wohnzimmer")) {fhem ("set Flurtablet ttsSay Achtung! Fenster im Wohnzimmerzimmer ist noch offen");}
if ((Value ("Wohnungstuer") eq "open") && ("@" eq "Fenster_Schlafzimmer")) {fhem ("set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen");}
}



Cheers
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Damian am 23 April 2014, 09:10:25
Zitat von: mi.ke am 23 April 2014, 08:10:20
define Wohnungstuer_n notify Wohnungstuer:open {
if (Value ("Fenster_Katzenzimmer") eq "open") {fhem ("set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen");}
if (Value ("Fenster_Wohnzimmer") eq "open") {fhem ("set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen");}
if (Value ("Fenster_Schlafzimmer") eq "open") {fhem ("set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen");}
}


Und so würde es dann mit IF aussehen:
define Wohnungstuer_n notify Wohnungstuer:open \
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen) ELSE (\
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen) ELSE (\
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen)))


In der DEF-Eingabe kannst du Backslash \ am Ende der Zeile weglassen. Wichtig ist, dass hinter open ein Leerzeichen ist.

Gruß

Damian
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: mi.ke am 23 April 2014, 09:25:40
ahh, okay...

bei IF müsste dann also das ELSE (IF zwingend rein . . .
Ich hatte das in der Vergangenheit ausprobiert, bin aber mit IF am ODER immer gescheitert . . .
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Puschel74 am 23 April 2014, 09:36:59
Hallo,

mal kurz nicht da und schon wuppt es - sehr schön Leute  ;D

OT
@mi.ke
if ((Value ("Wohnungstuer") eq "open") && ("@" eq "Fenster_Katzenzimmer"))
das @ gegen $DEVICE tauschen und du bist zukunftssicher.
Ebenso, hier jetzt nicht benutzt, kann % gegen $EVENT getauscht werden.
if ((Value ("Wohnungstuer") eq "open") && ($DEVICE eq "Fenster_Katzenzimmer"))
Wobei ich das ganze zwar noch etwas umstellen würde aber es gibt ja genug Wege zum Ziel  8)
Sorry für OT

Grüße
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Damian am 23 April 2014, 10:45:02
Zitat von: mi.ke am 23 April 2014, 09:25:40
ahh, okay...

bei IF müsste dann also das ELSE (IF zwingend rein . . .
Ich hatte das in der Vergangenheit ausprobiert, bin aber mit IF am ODER immer gescheitert . . .

In diesem konkreten Fall wäre der else-Fall gar nicht erforderlich, weil die einzelnen if-Abfragen sich gegenseitig ausschließen. Es hätte also auch so funktioniert:

define Wohnungstuer_n notify Wohnungstuer:open
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);;
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);;
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen)


Und auch hier: funktioniert so in der DEF-Eingabe. Hinter open muss ein Leerzeichen (in der cfg kommen noch die Backslashes \ am Zeilenende) - das sind aber FHEM-Eigenschaften und haben mit IF nichts zu tun.

Diese Abfrage kostet ein paar Millisekunden mehr, weil hier im Gegensatz zum Beispiel mit ELSE immer alle Abfragen durchlaufen werden. ;)

Gruß

Damian
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Puschel74 am 23 April 2014, 10:49:52
Hallo,

@Damian
define Wohnungstuer_n notify Wohnungstuer:open
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);;
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);;
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)


2 Semikolon am Schluss der beiden Zeilen?
Wenn der Code für das DEF gedacht ist (da ja auch \ fehlen) sollte dann nicht 1 Semikolon genügen?
Oder ist das dem IF geschuldet?

Grüße
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 10:50:21
Vielen Dank, das ist ja fast wie im Chat hier, eine tolle und hilfsbereite Community! :-)

Der von Damian angesprochene Punkt, dass ALLE Abfragen durchlaufen werden, ist relativ wichtig. Es sollten gleich alle offenen Fenster genannt werden. Mit dem Beispiel ist das dann zwar nicht in einem Satz, aber das folgende ist auch okay: "Achtung! Fenster im Wohnzimmer ist noch offen! Achtung! Fenster im Schlafzimmer ist noch offen!"

Ich kann es leider erst heute abend testen und berichte hier bzw. werde das Thema "Wanddisplay" bei Erfolg mit allen Codeschnipseln meiner Anwendung ins Wiki packen.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Damian am 23 April 2014, 10:56:51
Zitat von: Puschel74 am 23 April 2014, 10:49:52
Hallo,

@Damian
define Wohnungstuer_n notify Wohnungstuer:open
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);;
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);;
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)


2 Semikolon am Schluss der beiden Zeilen?
Wenn der Code für das DEF gedacht ist (da ja auch \ fehlen) sollte dann nicht 1 Semikolon genügen?
Oder ist das dem IF geschuldet?

Grüße

Du hast Recht! In der DEF-Eingabe reicht auch ein Semikolon. Man müsste zwei Semikolons angeben, wenn man es in der Kommandozeile eingetippt hätte. Allerdings sind hier mehrere Zeilen, also kann man es tatsächlich nur in der DEF-Eingabe so hinbekommen.  :) Also:

define Wohnungstuer_n notify Wohnungstuer:open
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)


Gruß

Damian
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 20:53:35
Leider funktioniert es nicht. Nach Eingabe von define Wohnungstuer_n notify Wohnungstuer:open im FHEM-Frontend erscheint folgende Fehlermeldung: Usage: define <name> notify <regexp> <command>

Dann habe ich define Wohnungstuer_n notify Wohnungstuer open eingegeben (mit Leerzeichen statt Doppelpunkt), daraufhin habe ich jetzt ein notify "Wohnungstuer_n", in das ich bei DEF eingetragen habe: IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)


Hier passiert aber nichts. Wie auch, es wird ja nirgendwo definiert dass die Tür offen sein muss.
So sieht es jetzt aus:
(http://www.fotos-hochladen.net/thumbnail/notifytuerl2xbt146kn_thumb.jpg) (http://www.fotos-hochladen.net/view/notifytuerl2xbt146kn.png)

Ich stehe wieder auf dem Schlauch :-(
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Puschel74 am 23 April 2014, 20:57:25
Hallo,

define Wohnungstuer_n notify Wohnungstuer:open ()
und zwischen die beiden Klammern kommt dann im DEF
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)


Zum Schluss die  {} wieder löschen (?? - da bin ich grad überfragt aber ich hab in der commandref auch nichts gefunden dazu).
Beim normalen if würden die beiden {} kommen und der Code zwischen rein.

Grüße

Edith: Dann gehört aber auch die commandref angepasst  :o
define test notify lamp
IF ([lampe] eq "on") (

    IF ([outdoor:humidity] < 70)
        (set lamp off) ELSE
        (set lamp on)

) ELSE

    (set switch on)

das Define kann ich ja so nie per Befehlszeile eingeben *grübel*

Edith: Angepasst aufgrund von nachfolgendem Beitrag der-Lolo
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 23 April 2014, 21:03:13
meine antwort anfangs mit dem codeschnipsel von Damian führt dich zum ziel...
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 21:24:07
Danke, ich bin ein Schritt weiter. Beim notify steht jetzt im DEF:
Wohnungstuer:open (
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)
)


ABER: Das notify reagiert nur auf das Wohnzimmerfenster. Egal welche ich auf- und zumache, es wird nur das Wohnzimmerfenster angesagt. :-(
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 23 April 2014, 21:34:08
du hast da noch ein kleines verständnisproblem, das notify reagiert auf die wohnungstuer - ein kleines wichtiges Detail - anschliessend wird geschaut welche bedingung zutrifft.
Wirf mal einen Blick in den Eventmonitor, vielleicht hast du bei den anderen Zimmern einen tipfehler...
oder was ich noch eher für wahrscheinlich halte - eines deiner älteren versuchs notifys reagiert noch.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 21:44:26
Ich habe die config gespeichert und mit "shutdown restart" einen Neustart durchgeführt.
Es gibt kein weiteres notify zum Thema Türsensor.

Die Events sehen folgendermaßen aus:
Events:
2014-04-23 21:37:21 dummy Aquarium_Temperatur 24.9°C
2014-04-23 21:37:21 CUL_HM Aquarium temperature: 24.9
2014-04-23 21:37:21 CUL_HM Aquarium battery: ok
2014-04-23 21:37:21 CUL_HM Aquarium humidity: 100
2014-04-23 21:37:21 CUL_HM Aquarium T: 24.9 H: 100
2014-04-23 21:37:33 CUL_HM Fenster_Katzenzimmer open
2014-04-23 21:37:33 CUL_HM Fenster_Katzenzimmer contact: open (to CUL_0)
2014-04-23 21:37:33 CUL_HM Fenster_Katzenzimmer open
2014-04-23 21:37:33 CUL_HM Fenster_Katzenzimmer contact: open (to Sensor_Katzenzimmer)
2014-04-23 21:37:35 CUL_HM Katzenzimmer_Climate desired-temp: 6.0
2014-04-23 21:37:35 CUL_HM Sensor_Katzenzimmer desired-temp: 6.0
2014-04-23 21:37:35 CUL_HM Sensor_Katzenzimmer battery: ok
2014-04-23 21:37:36 CUL_HM Wohnungstuer open
2014-04-23 21:37:36 CUL_HM Wohnungstuer contact: open (to CUL_0)


Dennoch keine Ansage, obwohl gesagt werden müsste dass das Fenster im Katzenzimmer noch offen ist. Öffne ich danach das Wohnzimmer-Fenster und danach die Tür, kommt die Ansage, dass das Wohnzimmerfenster offen ist.

@der-Lolo: Ja, das notify soll ja auch nur reagieren, wenn die Tür geöffnet wird. So wie du es nennst ist es auch mein Ziel.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 23 April 2014, 22:25:17
und wie schauen die events beim wohnzimmer aus? gibt es dort einen unterschied?
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 22:30:53
Ich erkenne keinen Unterschied, außer, dass hier das ttsSay-Kommando ausgeführt wird:
Events:
2014-04-23 22:25:57 CUL_HM Fenster_Wohnzimmer open
2014-04-23 22:25:57 CUL_HM Fenster_Wohnzimmer contact: open (to CUL_0)
2014-04-23 22:25:57 CUL_HM Fenster_Wohnzimmer open
2014-04-23 22:25:57 CUL_HM Fenster_Wohnzimmer contact: open (to Sensor_Wohnzimmer)
2014-04-23 22:25:59 CUL_HM Sensor_Wohnzimmer desired-temp: off
2014-04-23 22:25:59 CUL_HM Sensor_Wohnzimmer battery: ok
2014-04-23 22:26:00 CUL_HM Wohnzimmer_Climate desired-temp: off
2014-04-23 22:26:03 CUL_HM Sensor_Wohnzimmer desired-temp: 6.0
2014-04-23 22:26:03 CUL_HM Sensor_Wohnzimmer battery: ok
2014-04-23 22:26:03 CUL_HM Wohnzimmer_Climate desired-temp: 6.0
2014-04-23 22:26:03 CUL_HM Wohnungstuer open
2014-04-23 22:26:03 CUL_HM Wohnungstuer contact: open (to CUL_0)
2014-04-23 22:26:03 webViewControl Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen


Zu diesem Zeitpunkt waren alle Fenster offen. Schlaf- und Katzenzimmer auf bei geschlossenem Wohnzimmer: keine Ansage. Wohnzimmerfenster auf (egal ob die anderen offen sind oder nicht): Über offenes Wohnzimmerfenster wird gewarnt.

Im DEF des notify steht weiterhin:
Wohnungstuer:open (
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)
)
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 23 April 2014, 22:57:57
hm, da bin ich dann auch am ende mit meinem latein - schau mal noch die Detail ansicht der Sensoren ganz unten Probably associated with - ob da was steht...
und beim notify sollte da auch was drin stehen...
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Damian am 23 April 2014, 23:06:07
So, champions league-Spiel ist zu ende und ich sehe du quälst dich hier. Dann wollen wir dem Problem auf den Grund gehen.

Als erstes müssen die runden Klammern weg, denn so dürfte es im Log nur Fehlermeldungen geben, denn das FHEM-Kommando "(" gibt es nicht. Das Leerzeichen hinter open muss bleiben.

Ansonsten würde ich dir empfehlen kleinschrittig vorzugehen:

z. B. den alten notify löschen und dann so in der Kommandozeile eingeben:

define Wohnungstuer_n notify Wohnungstuer:open IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen)


Katzenzimmer öffnen, sicherstellen, dass im Status von Katzenzimmer "open" steht und danach Wohnungstür öffnen. Wenn es nicht funktioniert im Log schauen. Dann sehen wir weiter.

Gruß

Damian
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 23 April 2014, 23:13:56
jetzt wo du es sagst seh ich die klammer auch...
aber wenn ja wie MaJu sagt die meldung beim Wohnzimmerfenster kommt muss es ja auch noch ein schlummerndes notify irgendwo geben... oder?
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Damian am 23 April 2014, 23:15:11
Zitat von: der-Lolo am 23 April 2014, 23:13:56
jetzt wo du es sagst seh ich die klammer auch...
aber wenn ja wie MaJu sagt die meldung beim Wohnzimmerfenster kommt muss es ja auch noch ein schlummerndes notify irgendwo geben... oder?

Das könnte auch noch sein.

Gruß

Damian
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 23:31:33
Habe etwas anderes getestet: Komischerweise reagiert das notify nur auf die mittlere IF-Bedingung (Wohnzimmerfenster), die erste und letzte IF-Bedingung werden ignoriert.
Also habe ich bei DEF im notify am Anfang und am Ende einfach noch eine sinnlose IF-Auswertung hinzugefügt. Und schon geht es für alle 3 Fenster.
Aber nur jeweils einzeln. Hier werde ich nun für jedes Fenster ein einzelnes notify anlegen, damit die Ansagen gleich hintereinanderkommen welche Fenster alles offen sind.

So sieht DEF jetzt aus:


Wohnungstuer:open (
IF ([blablubb] eq "open") (setFlurtablet ttsSay Test 1);
IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen);
IF ([blubbbla] eq "open") (set Flurtablet ttsSay Test 2)
)


Komisch.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: Damian am 23 April 2014, 23:46:14
Zitat von: MaJu am 23 April 2014, 23:31:33
Habe etwas anderes getestet: Komischerweise reagiert das notify nur auf die mittlere IF-Bedingung (Wohnzimmerfenster), die erste und letzte IF-Bedingung werden ignoriert.
Also habe ich bei DEF im notify am Anfang und am Ende einfach noch eine sinnlose IF-Auswertung hinzugefügt. Und schon geht es für alle 3 Fenster.
Aber nur jeweils einzeln. Hier werde ich nun für jedes Fenster ein einzelnes notify anlegen, damit die Ansagen gleich hintereinanderkommen welche Fenster alles offen sind.

Dann wirst du einige Fehlermeldungen im Log haben. Das mit den runden Klammern kann nicht richtig funktionieren. Ich bin mir sicher, dass du bei meinem ersten Bespiel kein Leerzeichen hinter open hattest.

Dieser Code sollte ebenfalls funktionieren:

Wohnungstuer:open IF ([Fenster_Katzenzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer ist noch offen);
IF ([Fenster_Wohnzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Wohnzimmer ist noch offen);
IF ([Fenster_Schlafzimmer] eq "open") (set Flurtablet ttsSay Achtung! Fenster im Schlafzimmer ist noch offen)


Gruß

Damian


Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: MaJu am 23 April 2014, 23:57:49
Danke Damian, genau DAS funktioniert :-)

Zumindest theoretisch. Die TTS-Ansage-Aufträge werden erzeugt. Leider werden sie aber nicht nacheinander von der WebViewControl-App abgearbeitet wenn mehrere Fenster offen sind. Sondern solange noch eine Ansage läuft wird keine neue akzeptiert.

Aber das ist eine andere Baustelle, zu der ich im WebViewControl-Thread bereits um Hilfe gebeten habe (http://forum.fhem.de/index.php/topic,10628.0.html (http://forum.fhem.de/index.php/topic,10628.0.html).

Dennoch danke, das Hauptthema ist damit abgeschlossen.
Titel: Antw:Bitte um Hilfe bei IF-Bedingung (Info über noch offene Fenster bei Tür-Öffnung)
Beitrag von: der-Lolo am 24 April 2014, 08:04:08
wegen dem ttsSay problem - erweiter deine IF bedingung doch einfach.

define Wohnungstuer_n notify Wohnungstuer:open IF (([Fenster_Katzenzimmer] eq "open") and ([Fenster_Wohnzimmer] eq "open")) (set Flurtablet ttsSay Achtung! Fenster im Katzenzimmer und im Wohnzimmer ist noch offen)