Push: Wohnung Temperatur-Mittelwert vergleichen mit Außentemperatur

Begonnen von FHEM-Wohnung, 02 August 2017, 21:50:14

Vorheriges Thema - Nächstes Thema

FHEM-Wohnung

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 :)

rabehd

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?
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux


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
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

Christoph Morrison

[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?

Schlimbo

Hi CoolTux,
danke für dein Beispiel.
Das einbeziehen der yahoo-weather-condition-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?


CoolTux

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
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

CoolTux

Zitat von: Schlimbo am 03 August 2017, 00:06:20
Hi CoolTux,
danke für dein Beispiel.
Das einbeziehen der yahoo-weather-condition-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
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

Frank_Huber

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?

CoolTux

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
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

Frank_Huber

#9
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.

Christoph Morrison

Zitat von: Schlimbo am 03 August 2017, 00:06:20
Das einbeziehen der yahoo-weather-condition-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.

Brice

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  ::)
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

FHEM-Wohnung


FHEM-Wohnung

#13
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 :)

CoolTux

Warum machst du das alles nicht als ein DOIF? Ich dachte mein Beispiel wäre dafür ein guter Einstieg
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