Hallo,
ich bin noch Anfänger in FHEM. Ich bin auf der Suche eine Pushmitteilung zu erhalten wenn die Außentemperatur gleich oder größer ist als die Wohnungstemperatur.
So kann ich perfekt an Sommertagen lüften. Morgens mach ich die Fenster auf. Sobald es draußen gleich oder wärmer ist bekomme ich eine Mitteilung das ich die Fenster schließen muss.
Dies soll natürlich auch umgekehrt sein. Sodass ich abends eine Meldung bekomme wann draußen Kühlere Luft herrscht als in der Wohnung.
Nun der zusätzliche Kniff: Ich habe in allen Räumen Thermometer. FHEM soll sich nun einen Mittelwert alle Thermometer bilden. Dieser wird dann als Referenz genommen und mit der Außentemperatur verglichen.
Leider habe ich solch ein Script nicht online gefunden. Da ich noch Anfänger bin, komme ich nicht drauf wie das möglich ist.
Könnte mir jemand sagen wie ich dies realisieren kann? :)
Vielen Dank :)
Man addiert alle Temperaturen, teilt das Ergebnis durch die Anzahl und wenn man will schreibt man das Ergebnis z.B. in einen Dummy
Was ist Dein Problem?
Internals:
CFGFN
DEF ((([TempFeuchtSensorKinZimSteven:temperature] + [TempFeuchtSensorKinZimIsabel:temperature] + [WandThermostatWohnzimmer_Weather:temperature] + [TempFeuchtSensorFlur:temperature] + [TempFeuchtSensorSchlafzimmer:temperature] + [TempFeuchtSensorBadezimmer:temperature]) / 6 ) > 25
and [TempFeuchtSensorAussen:temperature] > 30
and [?weatherStahnsdorfYahoo:code] > 25
and [?weatherStahnsdorfYahoo:code] < 37
and [?twilightStahnsdorf:azimuth] > 169
and [?structureFensterSuedWest] eq "offen" )
( set pushmsg msg 'Wohnungstemperatur kritisch!!!' 'Diverse Werte deuten auf direkte Sonneneinstrahlung hin. Bitte Fenster schließen und Vorhänge zuziehen!!!' 'handy-marko' 0 '' )
DOELSEIF ( ( ([TempFeuchtSensorKinZimSteven:temperature] + [TempFeuchtSensorKinZimIsabel:temperature] + [WandThermostatWohnzimmer_Weather:temperature] + [TempFeuchtSensorFlur:temperature] + [TempFeuchtSensorSchlafzimmer:temperature] + [TempFeuchtSensorBadezimmer:temperature]) / 6 ) > [TempFeuchtSensorAussen:temperature]
and [?weatherStahnsdorfYahoo:code] > 25 and [?weatherStahnsdorfYahoo:code] < 37
and [?structureFensterSuedWest] ne "offen" and [?structureFensterOst] ne "offen" )
( set pushmsg msg 'Status Wohnungstemperatur!!!' 'Die Innentemperatur ist höher wie die Aussentemperatur. Bitte Fenster öffnen zum lüften!!!' 'handy-marko' 0 '' )
DOELSE ()
Hier mal eine mögliche Lösung mit DOIF
[quote author=CoolTux link=topic=75002.msg667525#msg667525 date=1501704269]
DOELSE ()
Hier mal eine mögliche Lösung mit DOIF
[/quote]
Kurz ot-Frage: Warum hast du ein leeres DOELSE dran hängen?
Hi CoolTux,
danke für dein Beispiel.
Das einbeziehen der yahoo-weather-condition-codes (https://developer.yahoo.com/weather/documentation.html#codes) ist ja eine interessante Idee, dass werde ich gleich mal so bei mir übernehmen. 8)
Eine Frage habe ich aber zu dem DOELSEIF:
Im Winter ist es ja immer drinnen wärmer als draußen, bekommst du hierdurch nicht ständig einen Aufforderung zum lüften?
Zitat von: jeschkec am 02 August 2017, 22:40:18
Kurz ot-Frage: Warum hast du ein leeres DOELSE dran hängen?
Damit ich einen dritten state habe. Es wird zwar nichts geschalten aber es kann wieder einer der beiden anderen erstes angenommen werden.
Hätte ich da nur mit dir always gearbeitet hätte ich jedesmal eine Nachricht bekommen auch wenn sich eigentlich nichts geändert hätte.
Grüße
Zitat von: Schlimbo am 03 August 2017, 00:06:20
Hi CoolTux,
danke für dein Beispiel.
Das einbeziehen der yahoo-weather-condition-codes (https://developer.yahoo.com/weather/documentation.html#codes) ist ja eine interessante Idee, dass werde ich gleich mal so bei mir übernehmen. 8)
Eine Frage habe ich aber zu dem DOELSEIF:
Im Winter ist es ja immer drinnen wärmer als draußen, bekommst du hierdurch nicht ständig einen Aufforderung zum lüften?
Kann ich Dir irgendwie gerade nicht sagen. Ist alles schon bisschen her. Entweder habe ich das DOIF dann im Winter deaktiviert oder es kam nie eine Meldung.
Muss ich Mal im Winter drauf achten und zur Not noch mit meinem Heizungsdummy verbinden.
Grüße
Zitat von: CoolTux am 03 August 2017, 05:42:52
Damit ich einen dritten state habe. Es wird zwar nichts geschalten aber es kann wieder einer der beiden anderen erstes angenommen werden.
Hätte ich da nur mit dir always gearbeitet hätte ich jedesmal eine Nachricht bekommen auch wenn sich eigentlich nichts geändert hätte.
ginge das nicht auch mit dem repeatsame Attribut?
Zitat von: Frank_Huber am 03 August 2017, 08:53:13
ginge das nicht auch mit dem repeatsame Attribut?
Ja ginge auch.
Der Code hat schon ein gewisses Alter. Gut möglich das ich es da nicht besser wusste oder es das Attribut da noch nicht gab ;D
Zitat von: CoolTux am 03 August 2017, 09:00:22
Ja ginge auch.
Der Code hat schon ein gewisses Alter. Gut möglich das ich es da nicht besser wusste oder es das Attribut da noch nicht gab ;D
Hehe. never change a running code. ;)
Hab mir das jetzt auch eingebaut:
defmod DOIF_notificate_Lueften DOIF (((([?Temperaturen:EG_Gast]+[?Temperaturen:EG_Kammer]+[?Temperaturen:EG_Garderobe]+[?Temperaturen:EG_Bad]+[?Temperaturen:EG_Kueche]+[?Temperaturen:EG_Ofen]+[?Temperaturen:EG_Wohn]+[?Temperaturen:OG_Bad]+[?Temperaturen:OG_Flur_Ost]+[?Temperaturen:OG_Flur_West]+[?Temperaturen:OG_Johanna]+[?Temperaturen:OG_Luisa]+[?Temperaturen:OG_Schlafzimmer]) / 13) >= [Aussen_Temp:temperature]) and [?Aussen_Temp:temperature] >= 15)\
((set TelegramBot message Lüften: Draussen ist kühler als Drinnen. --> Lüften OK, Fenster AUF!))\
((set PushOver msg 'Lüften' 'Draussen ist kühler als Drinnen. --> Lüften OK. Fenster AUF!'))\
\
DOELSEIF (((([?Temperaturen:EG_Gast]+[?Temperaturen:EG_Kammer]+[?Temperaturen:EG_Garderobe]+[?Temperaturen:EG_Bad]+[?Temperaturen:EG_Kueche]+[?Temperaturen:EG_Ofen]+[?Temperaturen:EG_Wohn]+[?Temperaturen:OG_Bad]+[?Temperaturen:OG_Flur_Ost]+[?Temperaturen:OG_Flur_West]+[?Temperaturen:OG_Johanna]+[?Temperaturen:OG_Luisa]+[?Temperaturen:OG_Schlafzimmer]) / 13) < [Aussen_Temp:temperature]) and [?Aussen_Temp:temperature] >= 15)\
((set TelegramBot message Lüften: Draussen ist wärmer als Drinnen. --> Lüften NICHT OK, Fenster ZU!))\
((set PushOver msg 'Lüften' 'Draussen ist wärmer als Drinnen. --> Lüften NICHT OK, Fenster ZU!'))
attr DOIF_notificate_Lueften do always
attr DOIF_notificate_Lueften group Benachrichtigung
attr DOIF_notificate_Lueften repeatsame 1:1
attr DOIF_notificate_Lueften room Kommunikation
bezüglich dem Winter habe ich eine Schwelle bei 15 Grad Aussentemperatur eingebaut. Wenn es draussen unter 15 grad geht gibt es keine Nachrichten mehr.
Zitat von: Schlimbo am 03 August 2017, 00:06:20
Das einbeziehen der yahoo-weather-condition-codes (https://developer.yahoo.com/weather/documentation.html#codes) ist ja eine interessante Idee, dass werde ich gleich mal so bei mir übernehmen. 8)
Im Proplanta-Modul gibt es auch einen Wert für den UV-Index und einen für die Sonneneinstrahlung. Die benutze ich um die Rolladen ggf. runterzufahren.
Ich habe das doif auch modifiziert übernommen und abhängig von der Anwesenheit gemacht.
Komisch: ich habe einige wetter- oder temperaturabhängige Notifys bei denen ggfls. Pushnachrichten verschickt werden. Aber auf diese Idee bin ich nicht gekommen und habe manuell Außen- und Innentemperatur verglichen, um dann Fenster/Balkontür zu schließen ::)
Vielen Dank! Ihr habt mir sehr geholfen :)
Ich muss nochmal fragen...
also ich habe jetzt ein DOIF angelegt:
Notify_Info_TempDurchschnitt
state
{([Badezimmer_Thermometer:temperature]+[Wohnzimmer_Thermometer:temperature]+[Schlafzimmer_Thermometer:temperature])/3}
Das state wird mir so ausgegeben: 23.8666666666667
Mein Notify_Wohnung_Lueften sieht so aus:
define Notify_Wohnung_Lueften {
if ({ReadingsVal("Notify_Info_TempDurchschnitt","state","0")}>{ReadingsVal("Wohnzimmer_Sensor_Draussen","temperature","0")}) {
fhem("set pushmsg msg 'Lüften'");
}
}
Die jeweiligen "ReadingsVal" geben jeweils den richtigen Wert als Zahl aus.
Leider bekomme ich jedoch keine Meldung per Pushover. Der Dienst Pushover funktioniert bei mir jedoch mit anderen Notifys. Wo hab ich einen Fehler drin?
Vielen Dank :)
Warum machst du das alles nicht als ein DOIF? Ich dachte mein Beispiel wäre dafür ein guter Einstieg
Hi FHEM-Wohnung,
ich sehe in Deinem gesamten Code kein DOIF.
Der erste Codeblock ist ein Perlausdruck, wozu der gehört ist nicht ersichtlich? userreadings?
Dein notify Notify_Wohnung_Lueften ist kein notify!
Da steht lediglich ein Name, kein Modul, kein Pattern und dann wieder ein Perlausdruck?
Das da keine Meldung kommt ist klar, woher sollte die kommen. Der Perlausdruck wird so nie ausgeführt. Fehlermeldungen beim define sollten kommen!
Gruß Otto