Luftfeuchtigkeitswarnung per Telegram

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
DarkOfSoul
Beiträge: 28
Registriert: 11. Jul 2019 17:40

Luftfeuchtigkeitswarnung per Telegram

Beitrag von DarkOfSoul »

Moin moin Zusammen,

ich habe mal wieder ein kleines Problem. Ich habe ein paar Zigbee Temperatur und Luftfeuchtigkeitssensoren angebracht und in Openhab 2.5 eingebunden. Funktioniert soweit tadellos. Nun würde ich gerne eine Warnung erhalten wenn die Luftfechtigkeit einen bestimmten Wert überschreitet. Ich dachte ich kann da einfach eine Regel umschreiben die ich auch für den Batteriestatus nutze, das funktioniert nur leider nicht. Ich habe gelesen das Openhab wohl die werte nicht vergleichen kann weil er die nicht mehr als Zahlen sieht und das man diese wieder umwandeln mus. Ich habe aber null verstanden wie man es mach. Vielleicht kann mir das jemand anhand eines Beispieles erklären.

Die Regel:

Code: Alles auswählen

rule "Luftfeuchtigkeit überwachen"
when
    Member of g_Luft_All changed or
    System started
then
    var Integer z = 0
    var String s = ''
    g_Luft_All?.members.forEach[i|
        if ((i.state) > 50) {
            s = s + "\n" + i.name
            z++
        }       
    ]
    if (z > 0) {
        var String meldetext = z + ' Luftfeuchtigkeits Warnungen für folgende Zimmer: ' + s
        logInfo('rules', meldetext)
        sendTelegram('benny', meldetext)
    }
end
Die Items:

Code: Alles auswählen

Number:Dimensionless         Ist_Luft_Schlafzimmer              "Die Luftfeuchtigkeit beträgt [%.1f %unit%]"                                (g_Luft_All)             {channel="deconz:humiditysensor:homeserver:5c0272fffec4c613010405:humidity"}   
Number:Dimensionless         Ist_Luft_Wohnzimmer                "Die Luftfeuchtigkeit beträgt [%.1f %unit%]"                                (g_Luft_All)             {channel="deconz:humiditysensor:homeserver:5c0272fffea35b46010405:humidity"}   
Number:Dimensionless         Ist_Luft_Kinderzimmer              "Die Luftfeuchtigkeit beträgt [%.1f %unit%]"                                (g_Luft_All)             {channel="deconz:humiditysensor:homeserver:5c0272fffebbe89c010405:humidity"}   
Number:Dimensionless         Ist_Luft_Buero                     "Die Luftfeuchtigkeit beträgt [%.1f %unit%]"                                (g_Luft_All)             {channel="deconz:humiditysensor:homeserver:5c0272fffebbe846010405:humidity"}   
Number:Dimensionless         Ist_Luft_Badezimmer                "Die Luftfeuchtigkeit beträgt [%.1f %unit%]"                                (g_Luft_All)             {channel="deconz:humiditysensor:homeserver:5c0272fffea16075010405:humidity"}   
Number:Dimensionless         Ist_Luft_Flur                      "Die Luftfeuchtigkeit beträgt [%.1f %unit%]"                                (g_Luft_All)             {channel="deconz:humiditysensor:homeserver:5c0272fffec3db18010405:humidity"}   
Ich freue mich von euch zu hören.
Viele Grüße
DarkOfSoul

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Luftfeuchtigkeitswarnung per Telegram

Beitrag von udo1toni »

Da es sich um ein UoM Item handelt, hält der Status zusätzlich zur Zahl auch noch die Einheit (in diesem Fall %). Die einfachste Variante, den Wert als Zahlenwert zu betrachten ist folgende Funktion:

Code: Alles auswählen

(i.state as Number).floatValue
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

DarkOfSoul
Beiträge: 28
Registriert: 11. Jul 2019 17:40

Re: Luftfeuchtigkeitswarnung per Telegram

Beitrag von DarkOfSoul »

Super das war die richtige Lösung. Also wenn ich es richtig verstehe funktioniert es bei allen Items so. Wo noch was hinzu formatiert wurde?

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Luftfeuchtigkeitswarnung per Telegram

Beitrag von udo1toni »

Das funktioniert bei allen UoM Items, also alle Number Items, die mit Number:<irgendwas> definiert sind. Kennzeichen ist, dass im log eine Einheit angezeigt wird (changed from xx.xx <Unit> to yy.yy >Unit>)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

DarkOfSoul
Beiträge: 28
Registriert: 11. Jul 2019 17:40

Re: Luftfeuchtigkeitswarnung per Telegram

Beitrag von DarkOfSoul »

Okay Verstanden... Als Ausgabewert kommt nun ja das Item rausgeworfen. Kann man den jetzt noch mapping oder so wecheln das da statt das Item z.B. Ist_Luft_Kinderzimmer nur Kinderzimmer steht?

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Luftfeuchtigkeitswarnung per Telegram

Beitrag von udo1toni »

Da Du Deine Itemnamen sinnvoll gestaltet hast, kannst Du einfach statt

Code: Alles auswählen

            s = s + "\n" + i.name
folgende Codezeile verwenden:

Code: Alles auswählen

            s = s + "\n" + i.name.split("_").get(2)
split() tut genau das, es teilt den übergebenen String - in diesem Fall der Name des Items - an dem angegebenen Zeichen auf - in diesem Fall der Unterstrich - und schreibt die Teilstrings (ohne das Trennzeichen) in eine Liste. get() greift auf die einzelnen Listenelemente zu. Der Zeiger ist 0-basiert, get(0) liefert also den 1. Teilstring (das wäre das Wort "Ist").
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten