Hallo,
Ich hab Lüftungsmeldungen die ich über WebViewControl auf nem Tablet als Sprachansage ausgebe wenn die Luftfeuchte in Rämen zu hoch ist.
Nun würd ich das gern zyklisch machen, da man öfter nicht im Raum ist wenn das ausgegeben wird.
Dezeit schaut das so aus:
DOIF ([Kueche.DHT11:Humidity] > 70
and ([08:00-22:00|67] or [16:00-23:00|12345] or [04:50-05:15|12345])) (set androidTablet volume 12,set androidTablet ttsSay "Küche muss gelüftet werden")
Wie kann man sowas möglichst einfach umsetzen ?
So könnte es gehen:
define humidity_alarm dummy
attr humidity_alarm setList on off
DOIF ([Kueche.DHT11:Humidity] > 70
and ([08:00-22:00|67] or [16:00-23:00|12345] or [04:50-05:15|12345])) (set humidity_alarm on) DOELSE (set humidity_alarm off)
define di_msg DOIF ([+00:05] and [humidity_alarm] eq "on") (set androidTablet volume 12,set androidTablet ttsSay "Küche muss gelüftet werden")
attr di_msg do always
Alarm-Ausgabe alle 5 min entsprechend anpassen.
Gruss
flurin
Zitat von: chris_z am 12 März 2015, 20:45:32
Hallo,
Ich hab Lüftungsmeldungen die ich über WebViewControl auf nem Tablet als Sprachansage ausgebe wenn die Luftfeuchte in Rämen zu hoch ist.
Nun würd ich das gern zyklisch machen, da man öfter nicht im Raum ist wenn das ausgegeben wird.
Dezeit schaut das so aus:
DOIF ([Kueche.DHT11:Humidity] > 70
and ([08:00-22:00|67] or [16:00-23:00|12345] or [04:50-05:15|12345])) (set androidTablet volume 12,set androidTablet ttsSay "Küche muss gelüftet werden")
Wie kann man sowas möglichst einfach umsetzen ?
einfach zusätzlich entsprechende Attribute deines DOIF-Moduls definieren:
attr dein_doif_modul do always
attr dein_doif_modul cmdpause 300
Genaueres siehe Commandref zu DOIF
Gruß
Damian
Perfekt, danke Damian. Keine "Zwischengeräte" die Lösung ist super.
Zitat von: chris_z am 13 März 2015, 05:34:13
Keine "Zwischengeräte"
Bei einem ähnlichen Fall wird bei mir der Zustand (humidity_alarm) im Frontend angezeigt und ist überall ersichtlich. Zudem wird der Zustand in einem Log-File protokolliert und in einem Plot dargestellt. ;)
Gruss
flurin
Zitat von: chris_z am 13 März 2015, 05:34:13
Perfekt, danke Damian. Keine "Zwischengeräte" die Lösung ist super.
wenn du noch verhindern willst, dass cmd_2 (das ist der hier nicht vorhandene ELSE-Fall) nicht bei jedem Senden des Feuchtigkeitsensors gesetzt wird, solltest du noch zusätzlich
attr dein_doif_modul repeatsame 0:1
setzen.
Was auch durchaus Sinn macht (in der Commandref erklärt), ist die Anzahl der Ansagen zu begrenzen, dann sieht die Sache so aus:
define di_ansage DOIF ([Kueche.DHT11:Humidity] > 70
and ([08:00-22:00|67] or [16:00-23:00|12345] or [04:50-05:15|12345])) (set androidTablet volume 12,set androidTablet ttsSay "Küche muss gelüftet werden")
attr di_ansage repeatsame 40
attr di_ansage waitsame 300
do always wird nicht gesetzt, cmd_2 wird dann automatisch nur einmal im Modul gesetzt (weil do always fehlt) und die Ansageanzahl ist hier auf 40-mal begrenzt.
Gruß
Damian
Hallo
Ich habe ein ähnliches Problem und hänge mich daher mal an.
Im Unterschied zu chris_z soll ein HM-Fenstersensor (ThreeState) abgefragt werden. Wenn dort der State "open" erkannt wird, soll nach einer Wartezeit dann zyklisch eine Meldung abgesetzt werden, bis der State wieder auf "closed" geht. Da auf das Öfnnen nur einmal getriggert wird, z.B. ([hm.window_BadFenster] eq "open"), lassen sich mit repeatsame keine Wiederholungen des Kommandos erzeugen. Ich könnte nun temporär ein at definieren, das bei "closed" wieder gelöscht wird. Gibt es dazu eventuell noch eine andere Alternative im DOIF-Modul?
Viele Grüße
G.
Zitat von: Gernott am 14 März 2015, 15:21:29
Hallo
Ich habe ein ähnliches Problem und hänge mich daher mal an.
Im Unterschied zu chris_z soll ein HM-Fenstersensor (ThreeState) abgefragt werden. Wenn dort der State "open" erkannt wird, soll nach einer Wartezeit dann zyklisch eine Meldung abgesetzt werden, bis der State wieder auf "closed" geht. Da auf das Öfnnen nur einmal getriggert wird, z.B. ([hm.window_BadFenster] eq "open"), lassen sich mit repeatsame keine Wiederholungen des Kommandos erzeugen. Ich könnte nun temporär ein at definieren, das bei "closed" wieder gelöscht wird. Gibt es dazu eventuell noch eine andere Alternative im DOIF-Modul?
Viele Grüße
G.
define meldung dummy
define di_meldung DOIF ([BadFenster] eq "open") (set meldung on, push meldung)
DOELSEIF ([BadFenster] eq "closed") (set meldung off)
DOELSEIF ([meldung] eq "on" and [+00:15]) (push meldung)
attr di_meldung wait 300
Hier mit Verzögerung von 5 Minuten und Benachrichtigung alle 15 Minuten. push meldung musst du deinen Bedürfnissen anpassen.
Gruß
Damian
Hallo Damian
Danke für den Lösungsvorschlag. Prinzipiell geht das, allerdings wird das dritte Kommando nach einem ersten Test nur einmalig ausgeführt, und nicht repetierend. Muß man da noch ein Attribut setzen?
Gruß
G.
Zitat von: Gernott am 14 März 2015, 17:43:38
Hallo Damian
Danke für den Lösungsvorschlag. Prinzipiell geht das, allerdings wird das dritte Kommando nach einem ersten Test nur einmalig ausgeführt, und nicht repetierend. Muß man da noch ein Attribut setzen?
Gruß
G.
Hatte ich doch glatt vergessen. Für beliebige Wiederholung reicht:
attr di_meldung do always
Für bestimmte Anzahl repeatsame verwenden - siehe deutsche Commandref zu DOIF.
Gruß
Damian
Macht nichts, freue mich über jede Hilfe.
Jetzt geht es perfekt.
Viele Grüße
G.
Hallo
ich hab da auch ein änliches problem und komme nicht so wirklich weiter. Ich möchte das eine ansage solange gespielt wird bis die tür wieder zu ist.
code aus cfg:define Tueroffen dummy
attr Tueroffen event-on-change-reading state
#
define Tueroffen_Ansage dummy
#
define watchdogTuer watchdog TuerFlur_b:open 00:10:00 TuerFlur_b:closed set Tueroffen on ;; setstate watchdogTuer defined
attr watchdogTuer regexp1WontReactivate 1
#
define AlarmTuer DOIF ([Tueroffen] eq "on") (set Tueroffen_Ansage on) DOELSEIF ([Tueroffen] eq "off") (set MyTTS tts Danke scön!)
#
define AlarmTuer_Ansage DOIF ([Tueroffen_Ansage] eq "on") (set MyTTS tts :gong.mp3: Die Haustür steht noch offen. Bitte mach sie zu!)
attr AlarmTuer_Ansage do always
#
define AlarmTuerOff notify TuerFlur_b:closed {fhem ("set Tueroffen off");; fhem ("set Tueroffen_Ansage off")}
Nur bekomme ich nur 1x die ansage obwohl die tür offen bleibt. sollte aber doch sollange weitergehen bis sie zu ist oder hab ich da was übersehen?
Zitat von: WarLord am 09 November 2015, 19:06:43
Hallo
ich hab da auch ein änliches problem und komme nicht so wirklich weiter. Ich möchte das eine ansage solange gespielt wird bis die tür wieder zu ist.
code aus cfg:define Tueroffen dummy
attr Tueroffen event-on-change-reading state
#
define Tueroffen_Ansage dummy
#
define watchdogTuer watchdog TuerFlur_b:open 00:10:00 TuerFlur_b:closed set Tueroffen on ;; setstate watchdogTuer defined
attr watchdogTuer regexp1WontReactivate 1
#
define AlarmTuer DOIF ([Tueroffen] eq "on") (set Tueroffen_Ansage on) DOELSEIF ([Tueroffen] eq "off") (set MyTTS tts Danke scön!)
#
define AlarmTuer_Ansage DOIF ([Tueroffen_Ansage] eq "on") (set MyTTS tts :gong.mp3: Die Haustür steht noch offen. Bitte mach sie zu!)
attr AlarmTuer_Ansage do always
#
define AlarmTuerOff notify TuerFlur_b:closed {fhem ("set Tueroffen off");; fhem ("set Tueroffen_Ansage off")}
Nur bekomme ich nur 1x die ansage obwohl die tür offen bleibt. sollte aber doch sollange weitergehen bis sie zu ist oder hab ich da was übersehen?
Dieses Modul kann nur etwas wiederholen, wenn es von außen immer wieder angetriggert wird, sonst nicht.
Für wiederholende Ausführung ohne externe wiederholende Triggerung gibt es eine neue Version, siehe hier:
http://forum.fhem.de/index.php/topic,43638.msg355719.html#msg355719
Gruß
Damian
Funktioniert! Danke Schön!
Zitat von: WarLord am 09 November 2015, 20:32:20
Funktioniert! Danke Schön!
Übrigens wenn du DOIF benutzt kannst du mit wait dir den watchdog sparen.
Gruß
Damian