(Gelöst) zu doof für doif?

Begonnen von mg64, 23 April 2016, 19:35:07

Vorheriges Thema - Nächstes Thema

mg64

Hallo,
ich beiße mir jetzt seit geraumer Zeit die Zähne an fhem aus - mit mehr oder, aktuell weniger Erfolg.

Absicht ist: wenn ein Fensterkontakt "open" sendet und mein Handy "absent" erkannt wird, soll die bot message rausgehen.
Problem ist die "Verallgemeinerung auf alle Fenster und die Verknüpfung mit der Presence...

Wahrscheinlich nur ein Syntaxfehler, aber ich hab jetzt gefühlt 98 Varianten probiert und komme nicht weiter.

Vielleicht hat jemand einen Lösungsvorschlag für mich, DANKE im voraus  ;)

define di_window_open DOIF ([Window|Fenster] eq "Open" and [Meik_Handy] eq "absent") (set fhem_mg64_bot message di Balkontuer oder Fenster offen)

PS: Die ganzen Proficodings die man im Forum findet möchte ich nicht nutzen - meine Hoffnung war DOIF so zu verstehen, daß ich möglichst viele Problemstellungen damit "erschlagen" kann.

Papaloewe

ZitatDie ganzen Proficodings die man im Forum findet möchte ich nicht nutzen - meine Hoffnung war DOIF so zu verstehen, daß ich möglichst viele Problemstellungen damit "erschlagen" kann.

Das kannst du auch mit Hilfe von DOIF, nur nicht aufgeben.
Meistens liegt es nur an Kleinigkeiten.

Schau mal nach, ob der Status von denen Fesntern wirklich "Open" ist und nicht "open".

Viel Erfolg!

Gruß
Thomas

mg64

Danke für die schnelle Antwort,
ich hab beides schon probiert - ohne Erfolg.
Aktuell zeigt DOIF folgenden Fehlerstatus:

timer_1_c1 error: Wrong timespec Window: either HH:MM:SS or {perlcode}

interpretiert die gerade Klammer wohl als Zeitangabe...

Morgennebel

Dein Window|Fenster wird von DOIF als wochentags wiederholung erkannt, nicht als oder.

Versuche ([Fenster] eq "open" or [Window] eq "open")

Ciao, MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

mg64

Hallo, hab Fenster komplett rausbekommen, immer noch die Fehlermeldung...

Ellert

Zitat[Window|Fenster]
Die mehrfache Angabe von Devicces/Readings ist in dieser Form nicht erlaubt, s. http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung

also entweder (([Window] eq "Open" or [Fenster] eq "Open") and [Meik_Handy] eq "absent") (set ..) oder, wie hier beschrieben: http://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

statt [Window|Fenster] eq "Open" dies ["Window|Fenster:Open"]

Ellert

ZitatHallo, hab Fenster komplett rausbekommen, immer noch die Fehlermeldung...

Poste mal die Listings der Geräte di_window_open, Window, Fenster

mg64

Werd ich ausprobieren, in deinem Code ist auf jeden Fall eine runde Klammer mehr als bei mir. Danke erst mal. Melde morgen, ob es funktioniert hat.

Gesendet von meinem YOGA Tablet 2-830L mit Tapatalk


mg64

Mojn Mojn,
danke noch mal für die Hilfestellungen gestern.
Ich hab mal noch ein bißchen experimentiert und bin jetzt soweit gekommen:

funktioniert jetzt:
define di_window_open DOIF (([EG_Buero_Fenster:Window] eq "Open") and [Meik_Handy] eq "present") (set fhem_mg64_bot message Buero Fenster offen)

Die Ursache warum "Window" nicht ausgewertet wurde, war: ich hatte zuvor mit Notify rumexperimentiert.
Weil die Meldungen in 2 Minutenabständen wiedeholt wurden hab ich:

attr EG_Buero_Fenster event-on-change-reading state

konfiguriert = Meldung nur noch bei Wechsel von "state" auf "open" + keine readings mehr.

Damit komme ich soweit klar, daß ich für jedes Fenster jetzt ein eigenes Notify mit der passenden Benachrichtigung konfigurieren kann,
hat ja auch den Charme, daß ich sehe welches Fenster offen steht  ;)

Unklar ist mir aber immer noch warum die Angabe ["indow"] nicht wie beschrieben als Platzhalter funktioniert...

Schönes Rest-Wochenende an alle

Ellert

ZitatUnklar ist mir aber immer noch warum die Angabe ["indow"] nicht wie beschrieben als Platzhalter funktioniert...

Was konkret meinst Du damit? Wo ist das beschrieben? Wie sieht Deine Definition aus?

mg64

Ich zitiere mal aus Caommand Referenz für DOIF:

"Beispiele für Regex-Angaben:

["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten "

dementsprechend hatte ich gedacht:

define di_window_open DOIF ((["indow"] eq "Open") and [Meik_Handy] eq "present") (set

müßte für alle Devices die indow enthalten während Meik_Handy present die Meldung anstossen...

mg64

ich glaub ich hab´s jetzt...

indow  ist eigentlich das Reading, nicht das Device?

korrekt?

Ellert

Ja, also [":indow"] müsste klappen. Du könntest auch $DEVICE und  $EVENT in der Nachricht nutzen, um das auslösende Gerät anzuzeigen

mg64

der : nach den Anführungszeichen trennt und verweist darauf, daß indow im Reading enthalten sein muß - korrekt?

Wo müßte ich dann $DEVICE oder $EVENT angeben?

Ellert

Zitatder : nach den Anführungszeichen trennt und verweist darauf, daß indow im Reading enthalten sein muß - korrekt?
Ja.
ZitatWo müßte ich dann $DEVICE oder $EVENT angeben?
Im set- Befehl, etwa so: set message "Das $DEVICE ist $EVENT"