Benachrichtigung via Alexa über offenes Fenster bei Routine

Begonnen von roadghost, 13 April 2020, 12:42:49

Vorheriges Thema - Nächstes Thema

roadghost

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 ?
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

roadghost

Naabend.

Hat keiner hier einen Tip für mich ?

Oder gar einen Lösungsvorschlag ?
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

juemuc

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
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

rabehd

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.
Auch funktionierende Lösungen kann man hinterfragen.

UweUwe

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

MadMax-FHEM

#5
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

TomLee

ZitatEDIT: was hiermit so nicht geht ist, dass mir Alexa mitteilt, welches Fenster noch offen ist ;)

Mit dem monitoring-Modul könnte man sich ausgeben lassen welche Fenster noch geöffnet sind.

Gruß

Thomas

MadMax-FHEM

Zitat von: TomLee am 16 April 2020, 09:52:05
Mit dem monitoring-Modul 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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

KyleK

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.
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

roadghost

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)
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC