Hauptmenü

Warnmeldung bitte nur 1x

Begonnen von Markus Hermann, 22 Mai 2013, 10:22:25

Vorheriges Thema - Nächstes Thema

Ralph

Zitat von: Markus Hermann schrieb am Mi, 22 Mai 2013 10:22... diese Meldung bekomme ... nur 1x alle 2 Stunden ...
Du könntest ja mal diese Routinen anschauen, da steckt der von Dir gewünschte Zeitvergleich größer als mit drin:
http://forum.fhem.de/index.php?t=msg&goto=76947&rid=0&srch=dev2chk#msg_76947
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

MisterEltako

Hier noch ein Vorschlag von mir, der m.E. genau das machen müsste, was du ursprünglich wolltest:

define Frost notify KS300:temperature {
my $KS300Temp = ReadingsVal("KS300","temperature","keinWert");;\
my $Emailnötig = (ReadingsVal("KS300", "Tempalarm", 0);;\
 
if (($KS300Temp < 0) && ($Emailnötig = 0)) {\
   fhem ("attr KS300 userReadings Tempalarm 1");;\
   fhem("set mp3_play playTone 019,045");;\
   Log 3, "Temperaturalarm gemailt!!!! ($KS300Temp, "
   }elsif (($KS300Temp > 0) && ($Emailnötig = 1)){
       fhem ("attr KS300 userReadings Tempalarm 0");;\
       Log 3, ,,kein Tempalarm ausgelöst: Temp: $KS300Temp, $Emailnötig";;\
   }
}

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

abc2006

Ich habe gerade nochmal drüber nachgedacht:

eigentlich ist das ja DIE Situation für einen Watchdog:

WENN die Temperatur ansteigt( oder abfällt) und länger so bleibt, löse einmal! alarm aus:


define tempalarm watchdog {ReadingsVal("KS300","temperature","keinWert") gt 8 } 00:10 { ReadingsVal("KS300","temperature","keinWert") lt 8 } { fhem("set mp3_play playTone 019,045");;fhem("trigger tempalarm .")}

und wenn du auch eine Mail auf der anderen Flanke haben willst, das ganze andersherum:

define tempalarm_hoch watchdog {ReadingsVal("KS300","temperature","keinWert") gt 8 } 00:10 { ReadingsVal("KS300","temperature","keinWert") lt 8 } { fhem("set mp3_play playTone 019,045");;fhem("trigger tempalarm_runter.")}
define tempalarm_runter watchdog {ReadingsVal("KS300","temperature","keinWert") lt 8 } 00:10 { ReadingsVal("KS300","temperature","keinWert") gt 8 } { fhem("set mp3_play playTone 019,045");;fhem("trigger tempalarm_hoch .")}


habe natürlich jetzt nicht getestet, ob das mit dem ReadingsVal so vernünftige Werte liefert...

Aber die Konstellation läuft so für meine Anwesenheitserkennung, und die Befehle werden immer nur beim Statuswechsel gesendet ( FHT, FS20, Mail brauch ich nicht ;)


Der Nachteil daran ist, dass du nur einmal ( extrem: am Winteranfang) eine Mail erhältst, wenn es kalt wird, und erst wieder 4 Monate später eine, dass es warm wird...
Ausser, du setzt mit


define scharfmachen at 19:00 set tempalarm_hoch,tempalarm_runter defined
define unscharfmachen at 06:00 set tempalarm_hoch,tempalarm_runter triggered<- ist das korrekt??

Damit solltest du jeden Tag um 19:10 eine Mail bekommen, wenn es zu kalt/zu warm ist ...



lg
stephan

Nachtrag: ACHTUNG! habe gerade festgestellt, dass der Watchdog sich nicht mit Perl auslösen lässt! Alleine der von ihm ausgeführte Befehl kann in Perl sein > soweit zumindest meine aktuelle Erkenntnis!!!
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Markus Hermann

Hallo Ralph,

Deine Routine kann ich eher für meine ganzen HM-SEC-SC gebrauchen um zu prüfen ob diese "closed" sind bevor die Alarmanlage scharf geschaltet wird.


@MisterEltako:

Deinen letzte Vorschlag habe ich versucht. Ich musste erstmal den Syntax anpassen und habe jetzt folgenden Code:

define Frost notify KS300 {my $KS300Temp = ReadingsVal("KS300","temperature","keinWert");;my $Emailnoetig = ReadingsVal("KS300","Tempalarm", 0);;\
if (($KS300Temp < 12) && ($Emailnoetig = 0)) {\
    fhem("attr KS300 userReadings Tempalarm 1");;\
    fhem("set mp3_play playTone 019,045");;\
    Log 3, "Temperaturalarm gemailt!!!! $KS300Temp, "\
}\
elsif (($KS300Temp > 12) && ($Emailnoetig = 1)){\
    fhem("attr KS300 userReadings Tempalarm 0");;\
    Log 3,"kein Tempalarm ausgelöst: Temp: $KS300Temp, $Emailnoetig";;\
}\
}



Wenn die Temeratur > 12 ist  (Zur Zeit haben wir hier 11 Grad) dann bekomme ich im Log "kein Tempalarm ausgelöst Temp: 11.1" angezeigt
Wenn die Temperaur aber < 12 ist, passiert gar nichts.


Gruß
Markus
CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

MisterEltako

Hi!

Hatte dir eigentlich heute Mittag eine funktionierende Lösung gepostet. Da hat wohl etwas nicht funktioniert, wenn du noch Interesse daran hast poste ich sie in ca 1h nochmals.

Sorry! Das o.g. hat bei mir auch nicht den Test bestanden, aber die überarbeitete Version schon. So ein Mist.

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Markus Hermann

Klar habe ich Interesse.

Immer her damit :-)

Lass Dir aber Zeit.

CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

MisterEltako

Hi!
Ich hatte tatsächlich den Code in einen anderen Thread gepostet. Wie peinlich! ;o)Lag also an mir.
So nun also mein Vorschlag:

define Frost notify KS300 {\    
      my $KS300Temp = ReadingsVal("KS300","temperature","keinWert");;\
      my $MP3noetig = ReadingsVal("KS300", "Tempalarm", 0);;\
  if (($KS300Temp < 0) && ($MP3noetig == 0)) {\
        fhem("set mp3_play playTone 019,045");;\
        Log 3, "Temperaturalarm wurde gemailt....Temp: $KS300Temp, $MP3noetig";;\
           readingsBeginUpdate($main::defs{KS300});;\
           readingsBulkUpdate($main::defs{KS300}, 'Tempalarm', 1);;\
           readingsEndUpdate($main::defs{KS300}, 1);;\
   }elsif (($KS300Temp > 0) && ($MP3noetig == 1)){\
        Log 3, "kein Tempalarm aufgehoben, da Temperatur: $KS300Temp, $MP3noetig";;\
           readingsBeginUpdate($main::defs{KS300});;\
           readingsBulkUpdate($main::defs{KS300}, 'Tempalarm', 0);;\
          readingsEndUpdate($main::defs{KS300}, 1);;\
   } \
 }


Sinnvoll ist eine Abwandlung, um ihn bei entsprechender Funktionalität zum universellen Einsatz in die 99_Utils.pm auszulagern und per Funktion aus FHEM.cfg aufzurufen mit verschiedenen Parametern.

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Markus Hermann

Hallo MisterEltako,

das scheint die Lösung zu sein.

Bisher habe ich erst 1x ein Abspielen des MP3-Files gehört. (Zum Test habe ich $KS300Temp < 12 eingestellt)
Mal sehen was passiert wenn die Temperatur > 12 wird und heute abend wieder abfällt.

Der Code sieht aber sehr gut danach aus, dass es klappen sollte.

Viele Dank dafür.

Auch an alle Anderen für ihre Tipps.

Gruß
Markus


CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

justme1968

und so richtig viel kuerzer als meine version :) die sogar noch zwei grenzen, konfigurierbare schwellwerte und intervalle hat.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Damian

Zitat von: justme1968 schrieb am Sa, 25 Mai 2013 09:58und so richtig viel kuerzer als meine version :) die sogar noch zwei grenzen, konfigurierbare schwellwerte und intervalle hat.

gruss
  andre

Wenn es um die Kürze geht:

hier noch mal ein Vorschlag:

define TH_Frost THRESHOLD KS300:temperature:0:0 mp3_play||set @ playTone 019,045

Spielt Ansage jedesmal einmalig ab, wenn die Temperatur vom KS300 unter Null fällt.

Gruß

Damian

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

MisterEltako

@justme1968
Beleidigt? Ich sehe ja ein, dass es keinen Zweizeiler für das Problem gibt.

Ich habe versucht hier nicht noch einen zusätzlichen Dummy reinzubringen, sondern der Alarmstatus bleibt bei den Gerätereadings, wo er hingehört. Bei vielen Devices weis man ja sonst gar nicht wohin mit den Dummys. Deswegen ist dieser Code etwas aufgeblähter. Zudem komt er ohne zusätzlichen 99_Utils-Teil aus bzw. wenn man ihn auslagert, lässt er sich über einen kurzen Funktionsaufruf mit 2-3 Parametern realisieren.


MfG,MisterEltako


PS: Hast du schon die Zeilenanzahl verglichen...??? *zwinker*
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Markus Hermann

@Damian:

Bei

define TH_Frost THRESHOLD KS300:temperature:0:0 mp3_play||set @ playTone 019,045


erhalte ich nach dem Speichern der fhem.cfg die Fehlermeldung:

TH_Frost: Unknown actor device mp3_play specified

Gruß
Markus
CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

justme1968

beleidigt? nö. warum denn? ihr habt ja beim selber machrn was gelernt und du hast es doch eingesehen :)

nicht verglichen. aber wenn ich meine aufgeräumte version vergleiche ist sie nicht länger. sogar wenn dich die ganze diskussion und die unterschiedlichen versionen nicht mit zaehle *zwinker*. und das mit attributen statt dummys hatte ich glaube ich auch erwähnt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Damian

Zitat von: Markus Hermann schrieb am Sa, 25 Mai 2013 14:19@Damian:

Bei

define TH_Frost THRESHOLD KS300:temperature:0:0 mp3_play||set @ playTone 019,045


erhalte ich nach dem Speichern der fhem.cfg die Fehlermeldung:

TH_Frost: Unknown actor device mp3_play specified

Gruß
Markus

Das bedeutet, dass zum Zeitpunkt der Definition der Aktor mp3_play nicht existiert.

Wie heißt denn dein mp3-player in FHEM?

Man kann es auch ohne Prüfung definieren:

define TH_Frost THRESHOLD KS300:temperature:0:0 ||set mp3_play playTone 019,045



Gruß

Damian

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

justme1968

THRESHOLD ist gut. das kannte ich jetzt noch nicht :).

der einzige nachteil ist das die nachricht wirklich und in jedem fall nur ein mal verschickt wird. d.h wenn die frost warnung z.b. nachts unterdrückt wird kommt unter umständen erst nächsten herbst wieder eine. threshold mit intervall wäre schön

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968