Erinnerung nach 10 Minuten Fenster auf

Begonnen von Invers, 21 Juli 2014, 17:05:15

Vorheriges Thema - Nächstes Thema

Invers

Ich möchte gerne 10 Minuten nachdem ein Fenster geöffnet wird eine Meldung darüber erhalten. Das soll aber nur passieren, wenn das Fenster nicht innerhalb dieser Zeit geschlossen wurde und die Aussentemperatur <16 Grad ist.
Fensterzustand meldet mein Fensterkontakt, Temperatur meldet mein Aussenthermometer.
Theoretisch könnte ich das ja ,mit einem Notify und einem AT machen. Aber das kann ich ja nicht wieder abbrechen, falls das Fenster innerhalb der 10 Minuten wieder geschlossen wurde.

Das I-Tüpfelchen wäre natürlich, wenn das alles nur aktiv wäre, solange die Heizperiode dauert. Die Heizperiode kann ich testen, da dann die Temperatur des Heizkörpers (die ich auch messe) mindestens einmal täglich höher ist, als die Raumtemperatur.

Wie kann ich das alles elegant bewerkstelligen? Ich habe mich da momentan total verrannt.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Puschel74

Hallo,

watchdog wäre eine Möglichkeit.

Eine weitere wäre dennoch ein notify und ein at.
Das notify triggert auf den Fensterkontakt - wenn Fenster auf das at definiert, wenn Fenster zu das at löschen.
Wenn die Heizperiode startet setzt du das Attribut disable auf 0 und am Ende dder Heizperiode auf 1.
Im notify kannst du ja alles abfragen und verknüpfen was du möchtest.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Brockmann

Wie wäre es mit DOIF?
(Pseudocode)
define DI_Fenster_offen DOIF ([Fenster] eq "offen" and [Aussenthermometer:Temperatur] < 16)(..."Meldung machen"...)
attr DI_Fenster_offen wait 600


Das wait sorgt dafür, dass die Ausführung um 10 Minuten verschoben wird. Sollten sich die Bedingungen in dieser Zeit ändern (Fenster wird geschlossen oder Temperatur steigt auf >= 16 Grad) bricht das Ganze automatisch ab.
Eine Berücksichtigung der Heizperiode ist da jetzt noch nicht mit drin, lässt sich aber sicher irgendwie ergänzen.

Invers

Hmmm..... Notyfi und AT waren auch meine erste Vorstellung, aber ich weiss nicht so recht, ob ein AT abgebrochen werden kann.

Die Lösung mit dem DOIF gefaällt mir auch sehr gut, aber da weiss ich wieder nicht genau, ob dea wait Nachteile hat. Läuft denn das System bei wait klaglos weiter? Ich erinnere mich, hie irgendwo etwas über Nachteile zu wait gelesen zu haben, finde es aber nicht wieder.

Auf jeden Fall danke ich euch beiden. Ich werde es eifach mal ausprobieren. Man kann es ja wieder ändern, falls es botwendig ist.

Danke euch beiden für die Hilfe.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Puschel74

Hallo,

Zitataber ich weiss nicht so recht, ob ein AT abgebrochen werden kann.
Doch kann es - mann kann es zur Laufzeit wieder löschen (hab ich ja geschrieben und mache ich genauso in meinen Codes).

ZitatIch erinnere mich, hie irgendwo etwas über Nachteile zu wait gelesen zu haben, finde es aber nicht wieder.
Das ist komplett falsch.
Das was du meinst ist sleep und nicht wait.
Und dann auch nur das perl-sleep und nicht das fhem-sleep.
Lies dir doch bitte erstmal den Beitrag zu DOIF im Automatisierungsbereich durch damit wir hier auch über das gleiche reden.
Danke.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Invers

Ja, du hast Recht, ich habe die beiden Begriffe vertauscht. Das erklärt auch, warum ich das, was ich meinte gelesen zu haben, nicht mehr finden kann.
DOIF habe ich schon lange auf dem Schirm.
Danke.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

fiedel

...DOIF - son neumodisches Zeugs! Die Jugend von heute, total schreibfaul!!! Früher zu Kaisers Zeiten - da haben wir noch richtig programmiert...  ;D



In die CFG:

#############################################################################
########################### Fensterüberwachung ##############################
#############################################################################
# Beim ersten Wechsel von closed nach open wird ein Notify angelegt,
# das nach 3 Minuten nochmal prüft, ob die/das Fenster noch offen sind/ist.
# Wenn es in der Zwischenzeit geschlossen wird, wird das Notify gelöscht
# Wenn nicht, wird 10 Mal eine Erinnerung abgespielt.
# Wird das Fenster geschlossen, wird auch das Erinnerungs- Notify gelöscht
# http://www.fhemwiki.de/wiki/FHTTK:_Benachrichtigung_bei_offenem_Fenster

define Fenster_Status dummy
attr Fenster_Status devStateIcon Open:Fenster_Status.Open Closed:Fenster_Status.Closed
attr Fenster_Status fp_0_Hauptbildschirm 420,38,2,
attr Fenster_Status group Status
attr Fenster_Status room 0_Überblick


# FHTTK: Mail bei offenem Fenster; Fenster_Status setzen:

# um Mails zu erhalten, folgende Zeile über "Log 3..." einfügen:
# exmail('user@@gmx.de',$subject,$fhttk_status);;

define Func_Fenster_Stat_N notify .*:Window.*(Open|Closed) { \
  my $window_state=ReadingsVal("@", "Window", "nA");;\
  my $deftype=$defs{@}{TYPE};;\
  return if ( $deftype ne "CUL_FHTTK" );;\
  if ( $defs{@}{PREVSTATE} ne $window_state ) { \
    my $fhttk_status=FHTTK_status;;\
    my $subject="FHEM: Fenster @ ".$window_state;; \
    Log 3, "@: Window ".$window_state;;\
  }\
}
attr Func_Fenster_Stat_N group Programm
attr Func_Fenster_Stat_N room 5_System

# Erinnerung Lüften beenden:
# wenn Fenster offen, starte Erinnerungsfunktion:
define Func_Fenst_Lueft_beend_N notify Fenster_Status:Open.* { \
\
my $T_aussen = (ReadingsVal("Sens_TF_Aussen", "temperature", "6.0"));;\
my $T_innen = (ReadingsVal("Sens_TF_Wohnz_UG", "temperature", "16.0"));;\
\
  if (($T_aussen <= 15.0) and OldValue("Fenster_Status") eq "Closed") {\
  fhem("define Lueft_beend_A at +00:03:00 trigger Func_Fenster_Pruef_zu_N");;\
  } \
}
attr Func_Fenst_Lueft_beend_N group Programm
attr Func_Fenst_Lueft_beend_N room 5_System

# wenn Fenster wieder zu, lösche Erinnerungsfunktion:
define Func_Fenster_zu_N notify Fenster_Status:Closed.* { \
  if (OldValue("Fenster_Status") =~ /Open/) { \
    if (($defs{Lueft_beend_A})) {\
      fhem("delete Lueft_beend_A");;\
    }\
  if (OldValue("Fenster_Status") =~ /Open/) { \
    if (($defs{Remind_Fenster_A})) {\
      fhem("delete Remind_Fenster_A");;\
    }\
   }\
  }\
}
attr Func_Fenster_zu_N group Programm
attr Func_Fenster_zu_N room 5_System

# wenn Fenster noch offen, führe Erinnerung aus
define Func_Fenster_Pruef_zu_N notify Func_Fenster_Pruef_zu_N { \
  if (Value("Fenster_Status") =~ /Open/) { \
    fhem("define Remind_Fenster_A at +*{9}00:02:00 set Dum_SM_D Qlueften_beenden");;\
    fhem("set Dum_SM_D Qlueften_beenden");;\
  }\
}
attr Func_Fenster_Pruef_zu_N group Programm
attr Func_Fenster_Pruef_zu_N room 5_System




In die myUtils:


# FHTTK: Benachrichtigung bei offenem Fenster:
##############################################

sub FHTTK_status {
  my @fhttks = devspec2array("TYPE=CUL_FHTTK");
  my @wopen = ();
  foreach(@fhttks) {
    my $fhttk_window = ReadingsVal($_, "Window", "nA");
    push (@wopen,$_) if ($fhttk_window eq "Open" );
  }
  if ( "Fenster_Status" ne "Open" ) {
    fhem("set Fenster_Status Open");
  }
  my $num_wopen = @wopen;
  my $resultstring='';
  if ( $num_wopen gt 0 ) {
    $resultstring="folgende Fenster sind noch offen:\n\n";
    foreach(@wopen) {
      $resultstring.="- ".$_."\n";
      Log 4, "FHTTK_status: ". $_. "noch offen";
    }
  } else {
    $resultstring="alle Fenster sind derzeit geschlossen.";
    fhem("set Fenster_Status Closed");
  }
  return $resultstring;
}



Wenn das mit dem DOIF oder Watchdog gut geht (was ich annehme), muss ich mein Kauderwelsch hier auch mal vereinfachen. ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Invers

Oh, vielen Dank. Hast du im Wiki gefunden?
Mist. Im Wiki zu suchen habe ich nicht dran gedacht. Das gesamte Forum hatte ich durchsucht.
Vielen Dank für die Mühe und den Code.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

bergadler

#8
Zitat von: fiedel am 22 Juli 2014, 07:00:08
Wenn das mit ... Watchdog gut geht

Der WD ruft mich seit Monaten, über eine nur dafür genutzte Telnummer, zuverlässig an:
(somit sehe ich auch gleich, daß eines meiner Fenster durchklingelt)  8)
define Watchdog_WZ_Fenster watchdog WZ_Fenster:Window:.Open 00:10:00 WZ_Fenster:Window:.Closed "anrufen.sh";; trigger Watchdog_WZ_Fenster .
Da müsste man bei Bedarf nur noch die Temperaturabfrage dranbauen.

Gruß
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

Invers

Telefonieren geht bei mir seit der Umstellung auf raspberry noch nicht. Darum muss ich mich auch noch kümmern. versucht habe ich es schon, aber vergeblich.

Die Tipps von ier muss ich erst einmal alle probieren und anpassen.

Erst einmal Dank an alle Helfer.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

Zitat von: fiedel am 22 Juli 2014, 07:00:08
...DOIF - son neumodisches Zeugs! Die Jugend von heute, total schreibfaul!!! Früher zu Kaisers Zeiten - da haben wir noch richtig programmiert...  ;D

Danke für das Kompliment - ich fühle mich direkt zehn Jahre jünger, aber wahrscheinlich bin ich älter als du ;)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Mitch

Also ich mache das über einen Watchdog.
Eine Zeile Code und ich werde benachrichtigt, wenn die Haustür länger wie 15 Minuten offen ist.

Die Temp könnte da auch noch abfragen, würde eine Zeile Code bleiben.
FHEM im Proxmox Container

Damian

Zitat von: Brockmann am 21 Juli 2014, 17:37:58
Wie wäre es mit DOIF?
(Pseudocode)
define DI_Fenster_offen DOIF ([Fenster] eq "offen" and [Aussenthermometer:Temperatur] < 16)(..."Meldung machen"...)
attr DI_Fenster_offen wait 600


Eine Berücksichtigung der Heizperiode ist da jetzt noch nicht mit drin, lässt sich aber sicher irgendwie ergänzen.

z. B.

define DI_Fenster_offen DOIF ([Fenster] eq "offen" and [Aussenthermometer:Temperatur] < 16 and [Heizung] eq "on")(..."Meldung machen"...)

oder

define DI_Fenster_offen DOIF ([Fenster] eq "offen" and [Aussenthermometer:Temperatur] < 16 and [Heizventil:d] > 0)(..."Meldung machen"...)

oder

define DI_Fenster_offen DOIF ([Fenster] eq "offen" and [Aussenthermometer:Temperatur] < 16 and $month > 10 and $month < 5)(..."Meldung machen"...)


Der Fantasie sind keine Grenzen gesetzt :)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Mitch

Immer noch Watchdog  ;D

Pseudocode:
define FensterAuf watchdog Fenster:open 00:10 Fenster:closed {if(ReadingsVal("Aussentemperatur", "state", "") < "16"){fhem("set pushover "blablabla")}}
FHEM im Proxmox Container

Damian

#14
Zitat von: Mitch am 22 Juli 2014, 13:55:26
Immer noch Watchdog  ;D

Pseudocode:
define FensterAuf watchdog Fenster:open 00:10 Fenster:closed {if(ReadingsVal("Aussentemperatur", "state", "") < "16"){fhem("set pushover "blablabla")}}

ja, es gibt im Vergleich zum unteren Beispiel einen kleinen aber feinen Unterschied.

Wenn ich das Fenster hier öffne und die Temperatur knapp über 16 Grad ist, dann gibt es keine Meldung auch dann nicht, wenn die Temperatur danach weiter fällt und die Bude im Winter komplett auskühlt.

Das würde im unteren Beispiel von Brockmann nicht passieren.

Edit: Das macht man dann besser über structure in Verbindung mit THRESHOLD und Watchdog, dann aber besser nicht mehr in einer Zeile ;)

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

THRESHOLD war mein erster Gedanke. Aber irgendwie dachte ich,  das wäre mit Kanonen auf Spatzen schiessen. Habe gestern erst im Wiki die Erläuterungen dazu gelesen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Mitch

Zitat von: Damian am 22 Juli 2014, 14:26:56
Edit: Das macht man dann besser über structure in Verbindung mit THRESHOLD und Watchdog, dann aber besser nicht mehr in einer Zeile ;)

da gebe ich Dir vollkommen recht, aber die Anforderung war ja genauso einfach: Fenster länger als 10 Min offen und Außentemp kleiner 16 Grad  ;)
FHEM im Proxmox Container

Damian

#17
Zitat von: Mitch am 22 Juli 2014, 15:21:37
da gebe ich Dir vollkommen recht, aber die Anforderung war ja genauso einfach: Fenster länger als 10 Min offen und Außentemp kleiner 16 Grad  ;)

Umgangssprachliche Formulierungen sind leider oft nicht eindeutig genug. Denn die Aussage:

"Fenster länger als 10 Min offen und Außentemp kleiner 16 Grad"

tut´s eben nicht, denn es kann 2 Stunden das Fenster offen sein (länger als 10 Min) und die Temperatur unter Null Grad (kleiner 16 Grad) sein und es gibt trotzdem, wie unten beschrieben,  keine Meldung.

Und das hat @Invers bestimmt nicht gewollt.


Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Invers am 22 Juli 2014, 15:06:58
THRESHOLD war mein erster Gedanke. Aber irgendwie dachte ich,  das wäre mit Kanonen auf Spatzen schiessen. Habe gestern erst im Wiki die Erläuterungen dazu gelesen.

ja, deswegen werde ich in der commanref von THRESHOLD die umfangreichen und damit umständlichen Beispiele in Verbindung mit watchdog zugunsten von DOIF wieder herausnehmen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

grappa24

Hab ich vor kurzem (auch) mit watchdog gelöst:

fenster:on 00:30 fenster:off {
   if (($month > 9 || $month < 4)) {
      FB_mail('alarm@xxxxx.de','FHEM-Alarm','Fenster seit 30 min offen');
      fhem("trigger wd_fenster .");
   }
}


- Eingeschränkt auf die "kalte" Jahreszeit
- Info per mail via Fritz!Box

Der trigger-Befehl sorgt dafür, dass sich der Wachhund alle 30 min meldet, solange bis das Fenster geschlossen wird ...

FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Daniel_D

Hallo Leute,
ich hab das auch so gelöst:

define SchlafzimmerFensterAuf watchdog Schlafzimmer_Fenster:open 00:15 Schlafzimmer_Fenster:closed {if(ReadingsVal("Temperaturfuehler_1", "temperature", "") < "16"){fhem ("set Pushover1 msg 'fhem' 'Schlafzimmerfenster ist auf' '' 0 ''")}}

Aber nachdem ich per Pushover  benachrichtigt worden bin und ich das Fenster geschlossen habe funktioniert es nicht mehr. Es geht nur einmal nachdem ich FHEM neu gestartet habe.

Kann mir einer einen Tip geben ich komm nicht mehr weíter.

Gruß Daniel

FHEM auf Raspberry PI
5x HM-CC-RT-DN
1x HM-CFG-LAN
8x HM-Sec-SCo
1x myJeeLink

bergadler

#21
Hallo,

da fehlt  (zum "Wiederscharfmachen") am Schluß ein

trigger SchlafzimmerFensterAuf .

Mein Fenster_Watchdog z.B. ruft mich nach 20min an:

Bad_Fenster:Window:.Open 00:20:00 Bad_Fenster:Window:.Closed "anrufen.sh"; trigger Watchdog_Bad_Fenster .

Gruß
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

Daniel_D

#22
Hi,

habe das jetzt mal so geändert

Zitatdefine SchlafzimmerFensterAuf watchdog Schlafzimmer_Fenster:open 00:01 Schlafzimmer_Fenster:closed {if(ReadingsVal("Temperaturfuehler_1", "temperature", "") < "16"){fhem ("set Pushover1 msg 'fhem' 'Schlafzimmerfenster ist auf' '' 0 ''")}}; trigger SchlafzimmerFensterAuf

geht aber immer noch nicht.

Gruß
FHEM auf Raspberry PI
5x HM-CC-RT-DN
1x HM-CFG-LAN
8x HM-Sec-SCo
1x myJeeLink

bergadler

Da fehlt ein "Leerzeichen" + "Punkt" am Ende.  ::)
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

Daniel_D

Hallo,

danke Dir jetzt geht es!

Da wäre ich allein nie drauf gekommen.

Gruß und Gute Nacht

FHEM auf Raspberry PI
5x HM-CC-RT-DN
1x HM-CFG-LAN
8x HM-Sec-SCo
1x myJeeLink

Talkabout

Hallo,

vielleicht kannst Du aus diesem Beitrag auch noch sinnvolle Infos rausziehen:

http://forum.fhem.de/index.php/topic,34482.msg268826.html#msg268826

Vorteil hier ist, dass Du den Watchdog nicht pro Fenster definieren musst, sondern nur ein mal.

Gruss

StefanD

Auch wenn der Thread schon ein paar Tage alt ist, hier noch mein(e) Senf/Lösung:

define doif_Badfenster DOIF (([og_ba_Thermostat:measured-temp:d]-[os_Aussenthermometer:temperature:d]) >= 1 and [og_ba_Fenster] ne "closed" and [og_ba_Thermostat_Weather:humidity:d] <= 55) ( set MP3DingDong_Mp3 playTone 020, set MP3DingDong_Led led orangeL 255, define at_replay_bad_Fenster at +*{15}00:03:00 set MP3DingDong_Mp3 playTone 020;; set MP3DingDong_Led led orangeL 255 )
DOELSEIF ([og_ba_Fenster] eq "closed" and [og_ba_Thermostat_Weather:humidity:d] >= 65) ( set MP3DingDong_Mp3 playTone 010, set MP3DingDong_Led led orangeL 255, define at_replay_bad_Fenster at +*{15}00:03:00 set MP3DingDong_Mp3 playTone 010;; set MP3DingDong_Led led redL 255 )
DOELSE ( set MP3DingDong_Led led pause, delete at_replay_bad_Fenster )


og_ba_Fenster ist ein HM-SEC-RHS, og_ba_Thermostat ein HM-TC-IT-WM-W-EU der zwar nichts regelt, sich aber recht unauffällig mit den PowerStrips integrieren hat lassen. Das os_Aussenthermometer ist ein HM-WDS10-TH-O auf der Nordseite und MP3DingDong ein HM-OU-CFM-PL, dessen MP3s ich für die Sprachausgabe über die Webseite http://www.fromtexttospeech.com habe erzeugen lassen.

Nach dem DOIF gerade im Bezug auf die Steuerung über Zeiten/Intervalle kürzlich ein mächtiges Update erfahren hat, werde ich das doif_Badfenster demnächst noch um den at erleichtern.  8)

VG Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

Motivierte linke Hände

Hi Stefan, danke für das Beispiel!

Zitat von: StefanD am 24 April 2015, 18:22:44
Nach dem DOIF gerade im Bezug auf die Steuerung über Zeiten/Intervalle kürzlich ein mächtiges Update erfahren hat, werde ich das doif_Badfenster demnächst noch um den at erleichtern.  8)

Hast Du das inzwischen erfolgreich umgesetzt?

Grüße, Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Motivierte linke Hände

Homematic funktioniert grundsätzlich mit allen Fenster, ja. Und ja, die Frage passt überhaupt nicht in diesen Thread  8)
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

dieda

Deinen Anforderungen fehlt leider doch noch was. Es ist sicherlich nicht sinnvoll bei Temperaturen von 16 bis 20 Grad während des Heizungsbetriebs (jetzt nicht der Heizkörper in dem betroffenen Raum) das Fenster Dauerzulüften. Auch hier kühlt die Bausubstanz aus und kann schlimmstenfalls neben einem Behaglichkeitsverlust auch zur Schimmelbildung an den typischen Kältebrücken führen, die sich leider nicht immer vermeiden lassen oder es kommt trotz Nichtheizen des dauergelüfteten Raums zu einem erhöhten Energieverbrauch.

Ein ganz krasses Beispiel: Das Fenster hat einen Abstand zur nächsten Raumseite von 30 cm oder weniger. Die Bausubstanz kühlt rund um das Fenster schön aus. Im Nachbarraum wird geduscht, gekocht oder die Luftfeuchte ist schön hoch, dann kondensiert im Nachbarraum in der Ecke das ausfallende Wasser aus der Luft. Man hat ja alles richtig gemacht. Tür zum nichtbeheizten Raum geschlossen, ... lüftet ...

Logischer weise fällt hierfür ja der HK-Thermostat im betroffenen Raum aus, da muss eine andere Messgröße her. Man könnte die Betriebsart des Heizkessels abfragen oder einen Thermostaten am/im Vorlauf oder Rücklauf des Heizkreises platzieren.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

mi.ke

Also ich mache einen modify auf die Zeit des watchdog, abhängig von der Aussentemperatur.

Also, wenn Aussen_Temp > 16 Grad ist die Warnung völlig disabled.
Zwischen 12° und 15° modify auf 60min
Zwischen 9° und 12° modify auf 30min
Zwischen 6° und 9° modify auf 20min
Zwischen 3° und 6° modify auf 15min
Zwischen -2° und 3° modify auf 10 min
< -2 modify auf  5 min

Und dann unterscheide ich noch zwischen gekipped und ganz offen. 8)

Allerdings treibe ich den Aufwand nur in Badezimmer, weil ich dort das Fenster dort gerne vergesse.

Die anderen Fenster sind nicht so detailiert.

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Hollo

Zitat von: dieda am 07 September 2015, 12:11:24
Deinen Anforderungen fehlt leider doch noch was. Es ist sicherlich nicht sinnvoll bei Temperaturen von 16 bis 20 Grad während des Heizungsbetriebs (jetzt nicht der Heizkörper in dem betroffenen Raum) das Fenster Dauerzulüften...
Ich enable/disable die Fenster-Offen-Warnung mit meinem "Heizungsstatus". Nur wenn der auf "Auto" oder "FHEM" steht, kommt eine Ansage. Im Hochsommer fand ich das sonst zu nervig.   ;D
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

FhemPiUser

ich würde gerne mit espeak sagen lassen, welches fenster zu lange offen ist. ausserdem sollte die lueftungsdauer abhaengig von der aussentemperatur sein.

ich komme wohl nicht daran herum ein watchdog pro fenster zu machen. die erlaubte lueftungsdauer wuede ich ueber eine funktion in myutils ermitteln, nur wie gebe ich eine funktion im watchdog an anstelle von timespec?

Mumpitz

@ Mi.ke:
Deine Lösung interessiert mich sehr. Würdest Du deine Lösung posten?

bergadler

Zitat von: FhemPiUser am 12 September 2015, 21:58:02
ich würde gerne mit espeak sagen lassen, welches fenster zu lange offen ist. ausserdem sollte die lueftungsdauer abhaengig von der aussentemperatur sein.
Ich habe es z.B. so gelöst:
define Bad_temp_alarm DOIF ([Hzg_Bad:measured-temp] < 17) (set nexus_webview ttsSay Das Bad hat nur noch 17 Grad. macht doch mal einer das Fenster wieder zu!)

Gruß
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

mi.ke

Zitat von: Mumpitz am 12 September 2015, 23:59:53
@ Mi.ke:
Deine Lösung interessiert mich sehr. Würdest Du deine Lösung posten?



Zitat von: mi.ke am 12 September 2015, 00:51:30
Also ich mache einen modify auf die Zeit des watchdog, abhängig von der Aussentemperatur.

Also, wenn Aussen_Temp > 16 Grad ist die Warnung völlig disabled.
Zwischen 12° und 15° modify auf 60min
Zwischen 9° und 12° modify auf 30min
Zwischen 6° und 9° modify auf 20min
Zwischen 3° und 6° modify auf 15min
Zwischen -2° und 3° modify auf 10 min
< -2 modify auf  5 min

Und dann unterscheide ich noch zwischen gekipped und ganz offen.




Du brauchst einen Dummy für TempTime, in den Du bei jeder Aktualisierung der Aussentemperatur den aktuellen Wert schreibst.

Dann wird der Timespec des Watchdogs mit dem Wert des TempTime modifiziert.
modify Bad_Fenster_Status_wd OG_Fenster_Bad:(offen) ".(Value("TempTime")).";

Der Rest ist dann nur "Aktustische Meldung und Sprachausgabe an und abschalten, bei Nachtruhe oder wenn ich nicht zu Hause bin"



define Bad_Fenster_Status_wd watchdog OG_Fenster_Bad:(offen) 01:00 OG_Fenster_Bad:(geschlossen|gekippt) {
my $Minuten = (ReadingsVal("TempTime","Minuten", 0));
if ((Value("MikeHandyS4") eq "zuHause") && (Value("Nachtruhe") eq "nein"))
{fhem ("set Pushover msg  'Fenster zu lange OFFEN' 'Das Badezimmer Fenster ist länger als $Minuten Minuten bei ".(Value("Aussentemperatur"))." geöffnet' 'Mike' 1 'Siren';
modify Bad_Fenster_Status_wd OG_Fenster_Bad:(offen) ".(Value("TempTime")).";
set ASure ttsSay Das Badezimmer Fenster kann geschlossen werden ;
trigger Bad_Fenster_Status_wd . ;")
}
elsif ((Value("MikeHandyS4") eq "zuHause") && (Value("Nachtruhe") eq "ja"))
{fhem ("set Pushover msg  'Fenster zu lange OFFEN' 'Das Badezimmer Fenster ist länger als $Minuten Minuten bei ".(Value("Aussentemperatur"))." geöffnet' 'Mike' 0 'Siren';
modify Bad_Fenster_Status_wd OG_Fenster_Bad:(offen) ".(Value("TempTime")).";
trigger Bad_Fenster_Status_wd . ")};
}
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

iHome

Zitat von: mi.ke am 14 September 2015, 14:29:30

Du brauchst einen Dummy für TempTime, in den Du bei jeder Aktualisierung der Aussentemperatur den aktuellen Wert schreibst.

Dann wird der Timespec des Watchdogs mit dem Wert des TempTime modifiziert.
modify Bad_Fenster_Status_wd OG_Fenster_Bad:(offen) ".(Value("TempTime")).";

Der Rest ist dann nur "Aktustische Meldung und Sprachausgabe an und abschalten, bei Nachtruhe oder wenn ich nicht zu Hause bin"



define Bad_Fenster_Status_wd watchdog OG_Fenster_Bad:(offen) 01:00 OG_Fenster_Bad:(geschlossen|gekippt) {
my $Minuten = (ReadingsVal("TempTime","Minuten", 0));
if ((Value("MikeHandyS4") eq "zuHause") && (Value("Nachtruhe") eq "nein"))
{fhem ("set Pushover msg  'Fenster zu lange OFFEN' 'Das Badezimmer Fenster ist länger als $Minuten Minuten bei ".(Value("Aussentemperatur"))." geöffnet' 'Mike' 1 'Siren';
modify Bad_Fenster_Status_wd OG_Fenster_Bad:(offen) ".(Value("TempTime")).";
set ASure ttsSay Das Badezimmer Fenster kann geschlossen werden ;
trigger Bad_Fenster_Status_wd . ;")
}
elsif ((Value("MikeHandyS4") eq "zuHause") && (Value("Nachtruhe") eq "ja"))
{fhem ("set Pushover msg  'Fenster zu lange OFFEN' 'Das Badezimmer Fenster ist länger als $Minuten Minuten bei ".(Value("Aussentemperatur"))." geöffnet' 'Mike' 0 'Siren';
modify Bad_Fenster_Status_wd OG_Fenster_Bad:(offen) ".(Value("TempTime")).";
trigger Bad_Fenster_Status_wd . ")};
}


Könntest Du den Code für den Dummy TempTime posten? Habs versucht nachzubauen bin dabei auf folgende Frage gestossen:
Was gibst Du für einen Wert ein wenn die Temperatur aussen höher als 15° Celsius ist? Dann sollte ja der Watchdog die öffnungszeit nicht mehr prüfen. Oder versteh ich das falsch?

Im Watchdog wird die Ansage/Pushmeldung ja erst nach 1 Stunde ausgeführt und mittels Ansage dann geagt das Fenster hätte nach 10 minuten geschlossen werden sollen?
Sollte der Watchdog nicht auch mit dem TempTimer Wert als Zeit für die Ansage genommen werden?

Für das Posten des ganzen Codes wäre ich Dir dankbar auch wenn dieser Thread schon etwas älter ist  ;D
Vielen Dank


Damian

Der Thread ist über drei Jahre alt.

Hier gibt es eine Lösung für mehrere Fenster:

siehe: Verzögerte Fenster-offen-Meldung mit Wiederholung für mehrere Fenster:

https://fhem.de/commandref_DE.html#DOIF_Einfache_Anwendungsbeispiele_Perl
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF