FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: roadghost am 13 April 2020, 12:42:49

Titel: Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: roadghost am 13 April 2020, 12:42:49
Hallo zusammen,

ich habe meine Fenster im Erdgeschoss alle mit HM-Sec Fensterkontakten ausgerüstet.

Seit gestern nutze ich das Echo-Modul für TTS, und möchte gern eine Sprachausgabe via Alexa realisieren, wenn ein Befehl eine Routine auslöst.

Die Routine heißt trefflicherweise Schlafenszeit, und schaltet TV, Licht, Beleuchtung usw. aus. Unter anderem auch einen dummy schlafenszeit_dummy auf den state "on".

Das möchte ich gern als Trigger für "set Echo speak Ein Fenster ist noch geöffnet" nutzen.

Bisher habe ich das mit einem DOIF versucht, aber es funktioniert nicht.

Hier ist das define des DOIF


(["^Fenster_:open"] and ["schlafenszeit_dummy:on"]) (set ECHO_XXXXXXXXXXXXXXX speak Achtung ein Fenster ist noch geöffnet)


Leider reagiert das DOIF nur, wenn sich der dummy im state on befindet, und sich der state eines Fenster von closed zu open öffnet, aber nicht, wenn in dem Moment des wechsel des state des dummy von off zu on bereits ein Fenster den state open besitzt.

Attribut do always ist gesetzt.

Hat jemand einen Lösungsvorschlag, wie ich das ganze besser lösen könnte ?
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: roadghost am 15 April 2020, 20:54:00
Naabend.

Hat keiner hier einen Tip für mich ?

Oder gar einen Lösungsvorschlag ?
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: juemuc am 15 April 2020, 21:46:16
Hallo roadghost,

ich würde im DOIF nur den "Dummywechsel" abfragen und dann den Fensterstatus als "IF" im Ausführungsteil.
Also wenn Schlafenszeit prüfe Fenster.

Viele Grüße
Jürgen
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: rabehd am 15 April 2020, 22:19:12
Warum ist diese Frage bei Homematic und nicht bei DOIF oder Anfängerfragen?
Weil Du Homaticfenstersensoren hast?
Verschiebe das mal!

["^Fenster_:open"]
Das ist ein Trigger und keine Statusabfrage. Wenn Dein Dummy triggert, dann dürfte hier nichts sinnvolles stehen.

Ich würde alle Fenster in eine Struktur nehmen und diese abfragen.
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: UweUwe am 16 April 2020, 09:29:23
Hallo  roadghost,
ich kann dir hier sicherlich nicht weiterhelfen, bin aber an der gesamten Vorgehensweise sehr interessiert.
Ich habe das Modul "Alarmanlage" installiert und auch "Türsensoren", auf die die Alarmanlage reagiert, bei Abwesenheit.

Deshalb würde ich gerne vor dem Gehen bei Alexa anfragen, ob alle Türen geschlossen sind.
Dies ist ja ganz nah an deinem Thema.

Könntest du mir bitte noch sagen, wie du dies mit Alexa realisiert und wie du deine Aufgabe dann gelöst hast. Ich werde mich dann auch darum kümmern und dir meine Erfahrungen mitteilen.
Ist dies ok so?

Danke
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: MadMax-FHEM am 16 April 2020, 09:39:13
Man kann Alexa ganz normal nach offenen Fenstern (Contact sensors) fragen...

Ich poste hier mal meinen "Dummy" (geht auch mit Structure, wenn die entsprechend den Gesamtzustand zeigt / hatte ich schon mal "rumgespeilt", war aber damit nicht so "glücklich" / liegt aber an meinem "Unvermögen" bzgl. Structure ;)  )...

Ich kann damit (ganz ohne Routine) fragen: "Alexa, sind alle Fenster geschlossen" (mein Dummy heißt "alle fenster" [alexaName])
(oder ich frage: "Alexa sind alle Fenster geöffnet" ;)  )

Allerdings Antwortet Alexa dann: "Alle Fenster IST geschlossen" (oder geöffnet, je nachdem ;)  )

Einziges was ich seit ein paar Wochen (OHNE Änderung) habe ist, dass die gute Alexa 2x antwortet ;)
(hatte aber noch keine Zeit/Lust zu analysieren)



defmod dmAlleFenster dummy
attr dmAlleFenster alexaName alle Fenster
attr dmAlleFenster alias Übersicht aller Fenster
attr dmAlleFenster genericDeviceType contact
attr dmAlleFenster group Fenster und Türen
attr dmAlleFenster homebridgeMapping clear ContactSensorState:contact,values=closed:CONTACT_DETECTED;;open:CONTACT_NOT_DETECTED
attr dmAlleFenster icon fts_window_2w_open_l
attr dmAlleFenster readingList contact
attr dmAlleFenster setList open closed
attr dmAlleFenster userReadings contact {ReadingsVal($NAME,"state","n.a.")}


Anmerkung: das userReadings ist nicht nötig, es würde mit angepasstem (auf "state") homebridgeMapping auch ohne gehen...
...aber hier gilt gleiches wie bzgl. Structure: wollte ich dann irgendwann immer schon mal ändern...
...aber es läuft halt ;)


Ich habe dann noch eine Sub in myUtils (die den Gesamtstatus "ermittelt" / könnte man sich mit Structure sparen):


#########################################
# Helper to set an overall status of windows
sub my_SetAllWindowsState()
{
  my @Windows = devspec2array("NAME=Fenster_.*");
  my $ActDevice = "";
  my $AllWindowsState = "closed";
 
  foreach $ActDevice (@Windows)
  {
    if(ReadingsVal($ActDevice, "state", "closed") eq "open")
    {
      $AllWindowsState = "open";
    }
  }
 
  fhem("set dmAlleFenster $AllWindowsState");
}


Und dann nat. noch das Notify was die "Ermittlung" anstößt (auch unnötig mit Structure):


defmod nCheckAllWindows notify Fenster_.*:(open|closed) {my_SetAllWindowsState()}


EDIT: was hiermit so nicht geht ist, dass mir Alexa mitteilt, welches Fenster noch offen ist ;) Aber das ist mir nicht so wichtig... War eh mehr "Spielerei"... Für "in echt" bekomme ich ein Telegram, wenn noch Fenster geöffnet sind oder irgendwelche Lampen/Verbraucher an sind (sobald meine Wohnung erkennt, dass ich "weg" bin)...

Gruß, Joachim
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: TomLee am 16 April 2020, 09:52:05
ZitatEDIT: was hiermit so nicht geht ist, dass mir Alexa mitteilt, welches Fenster noch offen ist ;)

Mit dem monitoring-Modul (https://forum.fhem.de/index.php/topic,109890.msg1038861.html#msg1038861) könnte man sich ausgeben lassen welche Fenster noch geöffnet sind.

Gruß

Thomas
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: MadMax-FHEM am 16 April 2020, 10:30:11
Zitat von: TomLee am 16 April 2020, 09:52:05
Mit dem monitoring-Modul (https://forum.fhem.de/index.php/topic,109890.msg1038861.html#msg1038861) könnte man sich ausgeben lassen welche Fenster noch geöffnet sind.

Gruß

Thomas

Irgendwas geht immer ;)

Und in fhem sowieso: tausend Möglichkeiten... ;)

Bestimmt für den TE bzw. Uwe interessant...
...mir reicht meine "Spielerei"... ;)

Danke, Joachim
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: KyleK am 16 April 2020, 13:26:21
Ich sag Alexa auch wenn ich ins Bett gehe, und hatte mir schon länger vorgenommen, mir dabei die noch offenen Fenster ansagen zu lassen.

Gestern hab ich mich dann doch mal hingesetzt und dabei ist folgendes DOIF herausgekommen:

([schlafenszeit_dummy:"on"] and [?#"^(MAX|aq)_Fenster":state:$_ ne "closed" and $TYPE ne "structure"] > 0) (set Echo_Wohnzimmer speak [@a"^(MAX|aq)_Fenster":state:$_ ne "closed" and $TYPE ne "structure"] sind noch offen)

Day DOIF reagiert lediglich auf den Dummy Switch der durch die Alexa Routine getriggert wird.
Zusätzlich wird per DOIF-Aggregation geprüft ob Fenster offen sind.
Wenn das der Fall ist, lass ich den Echo die Liste der offenen Fenster ansagen.

Da die oben verwendete Regex bei mir auch eine Structure erwischt, filter ich zusätzlich noch die structure heraus. Das kann man natürlich ggf. weglassen.
Titel: Antw:Benachrichtigung via Alexa über offenes Fenster bei Routine
Beitrag von: roadghost am 24 April 2020, 11:30:18
Hallo,

ich habe dies nun so gelöst:

([schlafenszeit_dummy:"on"] and ([Fenster_WC:state] eq "open" or [Fenster_HWR:state] eq "open" or [Fenster_Kueche:state] eq "open") ) (set ECHO_G123456789 speak Achtung Fenster sind noch offen)