Seite 1 von 1

Temperatur Überwachung

Verfasst: 31. Jan 2020 16:42
von KellerK1nd
Hallihallo,

ich bastel mir aktuell eine Überwachung der Raumtemperaturen, Hintergrund ist eine Warnung aufs Handy falls die Temperatur in einem Raum zu hoch sein soll. Dazu würde ich einfach meine Gruppe abfragen wollen.

Code: Alles auswählen

ITEM
Group:Number:AVG                gTemperatur                     "zu Hause [%.2f °C]"                            <temperature>       (Home)                      ["CurrentTemperature"]  
In gTemperatur gibt es noch die Untergruppen der einzelnen Räume und füttern damit die Hauptgruppe mit Daten. Leider scheitert es bei mir an der Regel, da ich mich nicht so tief mit der Materie auskenne, was die Feinheiten der Ausdrücke angeht. Man lernt ja nie aus. Wie kann ich das jetzt so schreiben, das das triggernde Item mit Wert ausgespuckt werden kann, wahlweise per Notification oder eine Telegramnachricht aber nur wenn eine gewisse Temperaturgrenze (35°C) überschritten wird.

Mein Ansatz:

Code: Alles auswählen


rule "Warnen wenn Temperatur überschritten wurde"
when
    Member of gTemperatur received update
then
    if(Temperatur >35){
    	sendNotification("Temperatur zu hoch!" +triggeringItem.label)
    }
end

Vielen Dank schonmal im voraus für eure Mühe. :)

Re: Temperatur Überwachung

Verfasst: 31. Jan 2020 20:02
von bastler
hi,
nicht sicher, aber so die richtung vielleicht:

Code: Alles auswählen

rule "Warnen wenn Temperatur überschritten wurde"
when
    Member of gTemperatur changed
then
    if(triggeringItem.state > 35){
    	sendNotification("Temperatur zu hoch!" +triggeringItem.name)
    }
end
bg stefan

Re: Temperatur Überwachung

Verfasst: 1. Feb 2020 00:36
von udo1toni
Ich bin mir nicht sicher, ob ich die Fragestellung korrekt verstanden habe. Du hast eine Gruppe, in der weitere Gruppen sind. In diesen Gruppen sind die Temperatursenoren, deren Temperatur Du auswerten möchtest.
Das Problem dabei ist, dass triggeringItem in diesem Fall das GruppenItem ist und nicht das eigentliche Item. Entweder Du erstellst eine neue Gruppe, in der alle Temperaturitems unmittelbare Member sind, oder Du ersetzt den einzelnen Trigger durch die jeweiligen Gruppen als Trigger. also so:

Code: Alles auswählen

Group gAllTemp "Alle Temperaturen"
Group gTempGndFloor "Temperaturen EG" (gAllTemp)
Group gTemp1stFloor "Temperaturen 1.OG" (gAllTemp)
Group gTemp2ndFloor "Temperaturen 2.OG" (gAllTemp)
Nun statt

Code: Alles auswählen

when
    Member of gAllTemp
then
also

Code: Alles auswählen

when
    Member of gTempGndFloor or
    Member of gTemp1stFloor or
    Member of gTemp2ndFloor
then
Dabei ist es gleichgültig, aus welcher Gruppe das triggernde Item stammt.
Nun gibt es noch einen weiteren Punkt, denn Du möchtest vermutlich nicht ständig eine Alarmmeldung bekommen, wenn ein Sensor über 35°C misst. Ein möglicher Test wäre auf die alte Temperatur:

Code: Alles auswählen

if(previousState < 35 && newState >= 35)
newState steht erst mit OH2.5 stable zur Verfügung, bei älteren Versionen muss man triggeringItem.state nehmen.
Allerdings gibt es dann immer noch die Möglichkeit, dass die Temperatur um die 35°C pendelt. Falls das ein hinnehmbares Problem darstellt, geht es also recht einfach.
Eine andere Möglichkeit wäre, die Menge an Meldungen zu begrenzen, also wenn eine Temperaturwarnung verschickt wird, wird die nächste Meldung frühestens nach 15 Minuten versandt.

Re: Temperatur Überwachung

Verfasst: 1. Feb 2020 12:48
von KellerK1nd
Vielen Dank für den Input.

Funktioniert wunderbar.

Das eine permanente Warnung aktiv ist, ist hier tatsächlich auch gewünscht. Ich hab beruflich viel mit Brandschutz zu tun und wollte mir eine kleine Regel bauen die quasi als Brandmelder läuft, die Temperatur soll so niedrig wie möglich sein um eine Früherkennung zu ermöglichen aber so hoch wie nötig um die Fehlerkennung zu reduzieren.

Ich überlege noch die ob ich es auf die Untergruppen anwende oder eine "Zimmererkennung" langt.

Nochmal herzlichen dank.