Globale, flexible Fenster-/Tür-Offen-Meldungen

Begonnen von Benni, 20 April 2015, 20:19:31

Vorheriges Thema - Nächstes Thema

DeeSPe

Hallo Benni,

ich habe die grundlegende Idee Deiner hier erstellten Automatik in mein gerade entstehendes Modul rund um den "Zuhause Status" einfliessen lassen.
Das Konzept finde ich sehr gut und habe es fast 1:1 übernommen. Der Code ist allerdings für das Modul ein anderer geworden. ;)
Da mein Modul alle möglichen allgemeinen Readings haben soll, eben auch für die Jahreszeit, überlege ich Attribute für mögliche ReTriggerTimer-Teiler anhand der Jahreszeit einzuführen!
Grundlegend ist die Jahreszeit doch schon erst mal ein recht guter Indikator für die mögliche Öffnungszeit.
Also z.B. Sommer Teiler 1 und Winter Teiler 3. Herbst und Frühling könnten Teiler 2 bekommen.
Muss man es wirklich noch genauer haben anhand von weiteren Sensoren?
Wir sprechen hier von einfachen Offen-Warnungen bzw. von automatisch öffnenden/schliessenden Fenstern!?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Benni

Zitat von: DeeSPe am 30 Dezember 2016, 21:45:56
Das Konzept finde ich sehr gut und habe es fast 1:1 übernommen. Der Code ist allerdings für das Modul ein anderer geworden. ;)

Hallo Dan,

das klingt ja sehr interessant! Das muss ich mir demnächst mal anschauen. Verfolgt habe ich die Entstehung hier im Forum schon flüchtig  8)

Da bin ich ja gerade mal froh, dass ich noch mit nichts angefangen habe, was das geplante Modul betrifft. Habe mir gerade noch eine andere Baustelle ans Bein gebunden und bin im Moment Dabei mein komplette Haus mit anständigem LAN und WLAN auszurüsten.

Der Code wäre bei mir als Modul sicher auch etwas anders geworden, als er bisher ist. ;)

Ich glaube übrigens auch nicht, dass man die Öffnungsregelung noch genauer machen muss, v.a. unter dem Aspekt, dass man das als Modul relativ breit einsetzen können soll. Irgendwann wird es einfach zu speziell. Außerdem muss man ja eine gewisse Mindestdauer auch unabhängig von der Temperatur lüften, um überhaupt einen vernünftigen Luftaustausch zu haben und ebenso bringt eine zu lange Dauer letztendlich auch keinen Mehrgewinn, selbst wenn's draußen warm genug ist.

Gruß Benni.

CoolTux

Und nicht vergessen das Fenster zum schlafen eventuell auch dauerhaft über Nacht aufbleiben  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Benni

Zitat von: CoolTux am 30 Dezember 2016, 22:34:15
Und nicht vergessen das Fenster zum schlafen eventuell auch dauerhaft über Nacht aufbleiben  ;D

Für sowas habe ich die ursprüngliche Lösung bei mir so erweitert, dass ich auf meinem Tablet einen Button (für einen Dummy) habe, mir dem ich die noch ausstehenden Meldungen auf einen Schlag alle Löschen kann. Wenn ich im ganzen Haus gleichzeitig alle Fenster zum Lüften Aufreiße will ich nicht x Meldungen bekommen.

Den kann ich bei mir dann auch vor dem Schlafengehen nochmal drücken ;)

Ich wollte bei mir auch mal noch ein Sammeln einbauen, sobald mehrere Fenster (>3 oder so) gleichzeitig offen sind und jeweils eine Meldung anstünde, so dass eben nur noch eine kommt, die angibt dass derzeit noch 3 (oder mehr) Fenster geöffnet sind.

DeeSPe

Zitat von: CoolTux am 30 Dezember 2016, 22:34:15
Und nicht vergessen das Fenster zum schlafen eventuell auch dauerhaft über Nacht aufbleiben  ;D

Stimmt!
Das hatte ich auch schon bedacht, aber bisher mein Schlafzimmerfenster einfach keinen Trigger gegeben! 8)
Also noch ein Attribut ala "DontTriggerInMode" wo man dann den RESIDENTS State angeben kann in dem keine Erinnerung getriggert werden soll! Das setzt man dann ala Regex auf z.B. "gotosleep|asleep|awoken".

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

CoolTux

Genau. Ich verwende gotosleep und asleep fur meinen Sohn. Da bei asleep nach 10s das Licht aus geht, Stelle ich ihn lieber auf gotosleep und öffne dann in Ruhe das Fenster.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DeeSPe

Falls jemand Interesse hat, ich habe Bennis Code in etwas abgewandelter Form in mein neues Modul integriert. 8)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

rageltus

Hallo zusammen!

danke für den Code. Es ist eigentlich genau das was ich suche. Brauche jedoch noch eine Idee. Ich möchte nur die Fenster etc in einem bestimmten überwachen. Funktioniert soweit indem ich disableforintervals in dem Open notify entsprechend setze. Event on Change readings habe ich auch für die Fenster gesetzt, da diese sonst jedesmal das notify neu triggern. Das funktioniert alles soweit wenn Fenster in dem Zeitraum geöffnet werden. Wenn allerdings Fenster vorher geöffnet worden sind, wird das notify ja nie getriggert,da Event on Change reading das blockt. Hat hier jemand eine Idee?
Raspberry 3,HM-USB, SIGNALDuino 433, nanoCUL 868 SlowRF, Homematic, IKEA Tradfri Beleuchtung, FHEMApp

Tho-Gra

#143
Hallo zusammen,

Vorab vielen Dank für dein Script :) gefällt mir sehr... wenn ich es den bloß zum laufen kriegen würde :)...

Folgende Fehlermeldung habe ich...

2017.02.27 14:11:40 1: define WC.Fenster_OpenTimer at +1 {PushInfo('Fenster','WC.Fenster ist noch  offen');winOpenStart('WC.Fenster','1');}: Wrong timespec 1: either HH:MM:SS or {perlcode}
2017.02.27 14:11:40 3: define WC.Fenster_OpenTimer at +1 {PushInfo('Fenster','WC.Fenster ist noch  offen');;winOpenStart('WC.Fenster','1');;} : Wrong timespec 1: either HH:MM:SS or {perlcode}
2017.02.27 14:11:40 3: Please define WC.Fenster_OpenTimer first
2017.02.27 14:11:40 3: attr WC.Fenster_OpenTimer room Toilette : Please define WC.Fenster_OpenTimer first
2017.02.27 14:11:40 3: winOpen.OpenNotify return value: Please define WC.Fenster_OpenTimer first
2017.02.27 14:11:41 1: define WC.Fenster_OpenTimer at +1 {PushInfo('Fenster','WC.Fenster ist noch  offen');winOpenStart('WC.Fenster','1');}: Wrong timespec 1: either HH:MM:SS or {perlcode}
2017.02.27 14:11:41 3: define WC.Fenster_OpenTimer at +1 {PushInfo('Fenster','WC.Fenster ist noch  offen');;winOpenStart('WC.Fenster','1');;} : Wrong timespec 1: either HH:MM:SS or {perlcode}
2017.02.27 14:11:41 3: Please define WC.Fenster_OpenTimer first
2017.02.27 14:11:41 3: attr WC.Fenster_OpenTimer room Toilette : Please define WC.Fenster_OpenTimer first
2017.02.27 14:11:41 3: winOpen.OpenNotify return value: Please define WC.Fenster_OpenTimer first



list
Attributes:
   IODev      HMLAN1
   actCycle   028:00
   actStatus  alive
   autoReadReg 4_reqStatus
   expert     2_full
   firmware   2.4
   model      HM-SEC-SC-2
   peerIDs    00000000,22E34A03,
   room       Toilette
   serialNr   LEQ0404274
   subType    threeStateSensor
   userattr   winOpenMaxTrigger winOpenTimer winOpenTimer2 winOpenType:Fenster,Türe winOpenName
   winOpenMaxTrigger 10
   winOpenTimer 1
   winOpenTimer2 2
   winOpenType Fenster


Grüße

Thomas


EDIT : Fehler gefunden

winOpenTimer 00:01:00
winOpenTimer2 00:02:00

Skram

Ich verwende für unterschiedliche Fenster frei definierbare, TEMPERATURABHÄNGIGE Meldezeiten.
Dazu habe ich mir das Attribut ""winOpenTempArray" gebaut. Vielleicht kann's ja wer brauchen:

# Außentemperatur ermitteln. Hier Wetterservice via 'openweathermap'
# Kann natürlich auch ein lokaler Temperatursensor sein
sub getTemperature
{
        my $temperature=ReadingsVal('owo','c_temperature',0);
        return $temperature;
}


Und untenstehenden Code direkt einfügen hinter
#Zeit, nach der die Meldung ausgegeben werden soll
#Default sind 10 Minuten, falls nicht angegeben
my $waittime=AttrVal($dev,'winOpenTimer','00:10:00');




          # Temperaturabhaengige Erstalarmierungszeiten verwenden
          #
          # und ggf die Wartezeit ueberschreiben, wurde ein Temperatur-Array definiert.
          # Wird in den definierten Intervallen nicht die passende Temperatur gefunden, dient 'winOpenTimer' als default
          #
          # Ein Temperaturintervall wird im Device-Attribut "winOpenTempArray" angegeben und mit "<MIN> <MAX> <DAUER>" definiert.
          # Mehrere Intervalle koennen mit ";" aneinander gefuegt werden.
          #
          # Beispiel: -99 -1 00:05:00;-1 5 00:10:00;5 10 00:15:00;10 15 00:30:00;15 99 0
          #     Zwischen 5 und 10 Grad Celsius wird die Erstalarmierungszeit auf 15 Minuten gesetzt.
          #
          my $tempArray=AttrVal($dev,'winOpenTempArray',0);
          if($tempArray) {
                my @temperatures = split /;/, $tempArray;
                foreach (@temperatures)
                {
                        my ($minTemp, $maxTemp, $dauer) = split / /, $_;
                        # die Funktion "getTemperature" muss definiert sein, welche die zu pruefende Temperatur liefert.
                        if ($minTemp < getTemperature && $maxTemp >= getTemperature) {
                                $waittime=$dauer;
                                last;
                        }
                }
          }
          #################### ENDE Temperaturabhaengige Erstalarmierungszeiten verwenden

CoolTux

Ich bin gestern endlich mal dazu gekommen eine Raummeldung bei mehr wie einem geöffneten Fenster pro Raum zu erstellen. Mir war das zu nervig das wenn ich 2 Fenster in einem Raum öffne alle x Minuten kurz hintereinander 2 Meldungen bekam.
Sollte es von Interesse sein stelle ich den Code mit Erklärung gerne ein.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Benni

Zitat von: CoolTux am 25 April 2017, 06:46:28
Ich bin gestern endlich mal dazu gekommen eine Raummeldung bei mehr wie einem geöffneten Fenster pro Raum zu erstellen. Mir war das zu nervig das wenn ich 2 Fenster in einem Raum öffne alle x Minuten kurz hintereinander 2 Meldungen bekam.

Das Problem der "zu vielen Meldungen" beim Lüften habe ich bei mir mit einem Dummy gelöst, der auf on gesetzt wird und bleibt, so lange es aktive Timer (bei mir inzwischen mittels sleep gelöst) gibt.
Wird dieser Dummy auf off gesetzt, werden alle noch aktiven Timer (resp. sleep) gelöscht und Ruhe ist :)

CoolTux

Auch eine gute Lösung. Und so viel einfacher  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dhupfer

Guten Abend Forum!

diese tolle Lösung mag bei mir nur mit dem Dummy Fenster funktionieren, mit den echten Fenstersensoren klappt es leider nicht. Den Code habe ich von Seite 1 kopiert, bestimmt passt nur eine Kleinigkeit nicht, vielleicht kann mir jemand von Euch helfen, die Tomaten von den Augen zu entfernen.

Notify
Internals:
   DEF        .*:(open|tilted) {winOpenStart($NAME)}
   NAME       winOpen.OpenNotify
   NR         162
   NTFY_ORDER 50-winOpen.OpenNotify
   REGEXP     .*:(open|tilted)
   STATE      active
   TYPE       notify
   Readings:
     2017-04-26 19:48:41   state           active
Attributes:
   room       FHT,Zentral


Fenster
Internals:
   CODE       1d1d
   DEF        1d1d
   FHZ_0_MSGCNT 15
   FHZ_0_RAWMSG 810c04f20909a0011d1d7e006720
   FHZ_0_TIME 2017-04-26 20:40:25
   LASTInputDev FHZ_0
   MSGCNT     15
   NAME       Temp.KG.Buero
   NR         33
   STATE      measured-temp: 20.9
   TYPE       FHT
   Readings:
     2017-04-26 20:40:25   ack             32
     2017-04-26 20:39:33   actuator        92%
     2017-04-26 20:40:25   battery         ok
     2017-04-26 20:40:24   desired-temp    12.0
     2017-04-26 20:40:25   end-xmit        32
     2017-04-26 20:40:25   lowtemp         ok
     2017-04-26 20:30:34   measured-temp   20.9
     2017-04-25 21:03:54   mode            auto
     2017-04-26 20:30:34   state           measured-temp: 20.9
     2017-04-26 20:30:34   temperature     20.9
     2016-07-10 14:02:27   tue-from1       09:00
     2016-07-10 14:02:28   tue-from2       24:00
     2016-07-10 14:02:28   tue-to1         21:00
     2016-07-10 14:02:28   tue-to2         24:00
     2017-04-26 20:40:25   warnings        Window open
     2017-04-26 20:40:25   window          open
     2017-04-26 20:40:25   windowsensor    ok
Attributes:
   room       FHT
   userattr   winOpenMaxTrigger winOpenTimer winOpenTimer2 winOpenType:Fenster,Türe winOpenName
   winOpenMaxTrigger 3
   winOpenName KGfenster
   winOpenTimer 00:00.10
   winOpenTimer2 00:00:30
   winOpenType Fenster


Wenn ich wenigstens einen Hinweis im Log sehen würde, aber da kommt einfach gar nichts. Wenn ich ein Fenster öffne, ändert sich das Reading "Window      closed" zu "Window      open", doch das Notify springt nicht an.

Bin für jeden Tipp dankbar!
Dirk

CoolTux

Dein Fensterkontakt zeigt Temperatur an. Scheint eher ein Thermostat zu sein. Hast du keine reinen Fensterkontakte?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net