Temperatur Tendenz ermitteln

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Temperatur Tendenz ermitteln

Beitrag von PeterA »

udo1toni hat geschrieben: 20. Sep 2020 17:14 Ich habe hier noch mal eine aktualisierte Fassung:

Code: Alles auswählen

import java.util.HashMap

val HashMap <String,String> hmRoller = newHashMap(  "InnenDG"      -> "Shellyswitch25_745118_roller",                      // von Sensor nach Shutter
                                                    "InnenDGKind1" -> "Shellyswitch25_00B713_roller",
                                                    "InnenDGKind2" -> "Shellyswitch25_E58F7A_roller",
                                                    "InnenWHZ"     -> "Shellyswitch25_740A26_roller"
)

val HashMap <String,String> hmSensor = newHashMap(  "Shellyswitch25_745118_roller" -> "InnenDG",                          // von Shutter nach Sensor
                                                    "Shellyswitch25_00B713_roller" -> "InnenDGKind1",
                                                    "Shellyswitch25_E58F7A_roller" -> "InnenDGKind2",
                                                    "Shellyswitch25_740A26_roller" -> "InnenWHZ"
)

var String strSensor = ""

rule "Update Kombi Item"
when
    Member of gTemp changed or
    Member of gHum changed or
    Member of gruppeRolladen_Sued changed or
    Member of gruppeRolladen_West changed
then
    strSensor = triggeringItem.name.split("_").get(0)                                                                     // Sensor bestimmen.
    if(triggeringItem.name.contains("Shellyswitch25")) {                                                                  // Falls ein Rollershutter die Rule getriggert hat
        if(hmSensor.get(triggeringItem.name) !== null)                                                                    // Falls in der Hashmap enthalten
            strSensor = hmSensor.get(triggeringItem.name)                                                                 // Ermittle Sensornamen
        else {                                                                                                            // falls nicht in der Hashmap enthalten
            logInfo("kombiupdate","Rollladen ohne Sensoren. Abbruch!")
            return;                                                                                                       // Rule abbrechen
        }
    }
    logInfo("kombiupdate","var String strSensor: {}",strSensor)
                                                                                                                          // zugehörige Items bestimmen
    val ItemTempTendenz =  gTempTendenz.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem          // Item für Temperatur Tendenz bestimmen
    logInfo("kombiupdate","ItemTempTendenz: {}",ItemTempTendenz.name)
    val ItemTempProxy   =    gTempProxy.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Proxy Item für Temperatur bestimmen
    logInfo("kombiupdate","ItemTempProxy: {}",ItemTempProxy.name)
    val ItemHumTendenz  =   gHumTendenz.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem          // Item für Feuchte Tendenz bestimmen
    logInfo("kombiupdate","ItemHumTendenz: {}",ItemHumTendenz.name)
    val ItemHumProxy    =     gHumProxy.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Proxy Item für Feuchte bestimmen
    logInfo("kombiupdate","ItemHumProxy: {}",ItemHumProxy.name)
    val ItemTemp        =         gTemp.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Temperatur Item bestimmen
    logInfo("kombiupdate","ItemTemp: {}",ItemTemp.name)
    val ItemHum         =          gHum.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Feuchte Item bestimmen
    logInfo("kombiupdate","ItemHum: {}",ItemHum.name)
    val ItemKombi       =        gKombi.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem          // Kombi Item bestimmen
    logInfo("kombiupdate","ItemKombi: {}",ItemKombi.name)
    val ItemShutter = if(hmRoller.get(strSensor) !== null)                                                                                  // falls Rollladen vorhanden
        grAllshutters.allMembers.findFirst[i|i.name == hmRoller.get(strSensor)]  as RollershutterItem   // Rolladen Pos Item bestimmen
    else
        null
    logInfo("kombiupdate","ItemShutter: {}",ItemShutter.name)
                                                                                                                          // Werte bestimmen
    val Number nTempProxy = if(ItemTempProxy.state instanceof Number) (ItemTempProxy.state as Number) else 0              // Temperatur Proxy auslesen
    val Number nHumProxy  = if(ItemHumTendenz.state instanceof Number) (ItemHumTendenz.state as Number) else 0            // Feuchte  Proxy auslesen
    logInfo("kombiupdate","Number Proxy")
    val Number nTemp = if(ItemTemp.state instanceof Number) (ItemTemp.state as Number).floatValue else nTempProxy         // Temperatur auslesen
    val Number nHum  = if(ItemHum.state instanceof Number) (ItemHum.state as Number).floatValue else nHumProxy            // Feuchte auslesen
    logInfo("kombiupdate","Number")
                                                                                                                          // Tendenz Temperatur
    var String strTempTendence = "⬅️➡️"                                                                                    // Default String für Tendenz Anzeige
    var String strTempMessage = "stagnierend"                                                                             // Default String für Tendenz Logmeldung
    if(nTemp > nTempProxy) {                                                                                              // falls aktuelle Temperatur höher als alte Temperatur
        strTempTendence = "⬆️"                                                                                            // String für Tendenz Anzeige steigend
        strTempMessage = "steigend"                                                                                       // String für Logmeldung steigend
    }
    if(nTemp < nTempProxy) {                                                                                              // falls aktuelle Temperatur geringer als alte Temperatur
        strTempTendence = "⬇️"                                                                                            // String für Tendenz Anzeige sinkend
        strTempMessage = "fallend"                                                                                        // String für Logmeldung sinkend
    }
    logInfo("kombiupdate","Sensor {} Temperatur {}",strSensor,strTempMessage)                                             // Logmeldung ausgeben
    ItemTempProxy.postUpdate(nTemp)                                                                                       // Neue Temperatur in Proxy Item übernehmen
    ItemTempTendenz.postUpdate(strTempTendence)                                                                           // Tendenz Item setzen
                                                                                                                          // Tendenz Feuchte
    var String strHumTendence = "⬅️➡️"                                                                                     // Default String für Tendenz Anzeige
    var String strHumMessage = "stagnierend"                                                                              // Default String für Tendenz Logmeldung
    if(nHum > nHumProxy) {                                                                                                // falls aktuelle Feuchte höher als alte Feuchte
        strHumTendence = "⬆️"                                                                                             // String für Tendenz Anzeige steigend
        strHumMessage = "steigend"                                                                                        // String für Logmeldung steigend
    }
    if(nHum < nHumProxy) {                                                                                                // falls aktuelle Feuchte geringer als alte Feuchte
        strHumTendence = "⬇️"                                                                                             // String für Tendenz Anzeige sinkend
        strHumMessage = "fallend"                                                                                         // String für Logmeldung sinkend
    }
    logInfo("kombiupdate","Sensor {} Feuchte {}",strSensor,strHumMessage)                                                 // Logmeldung ausgeben
    ItemHumProxy.postUpdate(nHum)                                                                                         // Neue Feuchte in Proxy Item übernehmen
    ItemHumTendenz.postUpdate(strHumTendence)                                                                             // Tendenz Item setzen
                                                                                                                          // Kombiitem setzen
    var String strKombi = strTempTendence + " " + String::format("%.1f °C / ",nTemp) + strHumTendence + " " + String::format("%.0f %%",nHum) // Kombinierter String ohne Shutter
    if(ItemShutter !== null)                                                                                              // Falls es ein passendes Shutteritem gibt
        strKombi = "Rollladen: " + ItemShutter.state.toString + "% / " + strKombi                                         // füge den Shutterstatus vorne an
    ItemKombi.postUpdate(strKombi)                                                                                        // Setze das Kombiitem
end
  • Variable global definiert (das muss funktionieren!)
  • Die log-Befehle sind angepasst.
  • Ein paar Klammern wurden ergänzt (nötig durch die log-Befehle)
  • Eine potentielle null-Meldungsquelle beseitigt... ;)
Diese log Zeile:

Code: Alles auswählen

logInfo("kombiupdate","ItemShutter: {}",ItemShutter.name)
War vermutlich für diese Meldung verantwortlich:

Code: Alles auswählen

2020-09-20 17:34:33.053 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Update Kombi Item': cannot invoke method public java.lang.String org.eclipse.smarthome.core.items.GenericItem.getName() on null
Habs durch schrittweises Auskommentieren der Log-Befehle entdeckt.

Aktuell aktive Rule:

Code: Alles auswählen

import java.util.HashMap

val HashMap <String,String> hmRoller = newHashMap(  "InnenDG"      -> "Shellyswitch25_745118_roller",                      // von Sensor nach Shutter
                                                    "InnenDGKind1" -> "Shellyswitch25_00B713_roller",
                                                    "InnenDGKind2" -> "Shellyswitch25_E58F7A_roller",
                                                    "InnenWHZ"     -> "Shellyswitch25_740A26_roller"
)

val HashMap <String,String> hmSensor = newHashMap(  "Shellyswitch25_745118_roller" -> "InnenDG",                          // von Shutter nach Sensor
                                                    "Shellyswitch25_00B713_roller" -> "InnenDGKind1",
                                                    "Shellyswitch25_E58F7A_roller" -> "InnenDGKind2",
                                                    "Shellyswitch25_740A26_roller" -> "InnenWHZ"
)

var String strSensor = ""

rule "Update Kombi Item"
when
    Member of gTemp changed or
    Member of gHum changed or
    Member of gruppeRolladen_Sued changed or
    Member of gruppeRolladen_West changed
then
    strSensor = triggeringItem.name.split("_").get(0)                                                                     // Sensor bestimmen.
    if(triggeringItem.name.contains("Shellyswitch25")) {                                                                  // Falls ein Rollershutter die Rule getriggert hat
        if(hmSensor.get(triggeringItem.name) !== null)                                                                    // Falls in der Hashmap enthalten
            strSensor = hmSensor.get(triggeringItem.name)                                                                 // Ermittle Sensornamen
        else {                                                                                                            // falls nicht in der Hashmap enthalten
            logInfo("kombiupdate","Rollladen ohne Sensoren. Abbruch!")
            return;                                                                                                       // Rule abbrechen
        }
    }
    logInfo("kombiupdate","var String strSensor: {}",strSensor)
                                                                                                                          // zugehörige Items bestimmen
    val ItemTempTendenz =  gTempTendenz.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem          // Item für Temperatur Tendenz bestimmen
    logInfo("kombiupdate","ItemTempTendenz: {}",ItemTempTendenz.name)
    val ItemTempProxy   =    gTempProxy.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Proxy Item für Temperatur bestimmen
    logInfo("kombiupdate","ItemTempProxy: {}",ItemTempProxy.name)
    val ItemHumTendenz  =   gHumTendenz.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem          // Item für Feuchte Tendenz bestimmen
    logInfo("kombiupdate","ItemHumTendenz: {}",ItemHumTendenz.name)
    val ItemHumProxy    =     gHumProxy.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Proxy Item für Feuchte bestimmen
    logInfo("kombiupdate","ItemHumProxy: {}",ItemHumProxy.name)
    val ItemTemp        =         gTemp.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Temperatur Item bestimmen
    logInfo("kombiupdate","ItemTemp: {}",ItemTemp.name)
    val ItemHum         =          gHum.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem          // Feuchte Item bestimmen
    logInfo("kombiupdate","ItemHum: {}",ItemHum.name)
    val ItemKombi       =        gKombi.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem          // Kombi Item bestimmen
    logInfo("kombiupdate","ItemKombi: {}",ItemKombi.name)
    val ItemShutter = if(hmRoller.get(strSensor) !== null)                                                                                  // falls Rollladen vorhanden
        grAllshutters.allMembers.findFirst[i|i.name == hmRoller.get(strSensor)]  as RollershutterItem   // Rolladen Pos Item bestimmen
    else
        null
    //logInfo("kombiupdate","ItemShutter: {}",ItemShutter.name)
                                                                                                                          // Werte bestimmen
    val Number nTempProxy = if(ItemTempProxy.state instanceof Number) (ItemTempProxy.state as Number) else 0              // Temperatur Proxy auslesen
    val Number nHumProxy  = if(ItemHumTendenz.state instanceof Number) (ItemHumTendenz.state as Number) else 0            // Feuchte  Proxy auslesen
    logInfo("kombiupdate","Number Proxy")
    val Number nTemp = if(ItemTemp.state instanceof Number) (ItemTemp.state as Number).floatValue else nTempProxy         // Temperatur auslesen
    val Number nHum  = if(ItemHum.state instanceof Number) (ItemHum.state as Number).floatValue else nHumProxy            // Feuchte auslesen
    logInfo("kombiupdate","Number")
                                                                                                                          // Tendenz Temperatur
    var String strTempTendence = "⬅️➡️"                                                                                    // Default String für Tendenz Anzeige
    var String strTempMessage = "stagnierend"                                                                             // Default String für Tendenz Logmeldung
    if(nTemp > nTempProxy) {                                                                                              // falls aktuelle Temperatur höher als alte Temperatur
        strTempTendence = "⬆️"                                                                                            // String für Tendenz Anzeige steigend
        strTempMessage = "steigend"                                                                                       // String für Logmeldung steigend
    }
    if(nTemp < nTempProxy) {                                                                                              // falls aktuelle Temperatur geringer als alte Temperatur
        strTempTendence = "⬇️"                                                                                            // String für Tendenz Anzeige sinkend
        strTempMessage = "fallend"                                                                                        // String für Logmeldung sinkend
    }
    logInfo("kombiupdate","Sensor {} Temperatur {}",strSensor,strTempMessage)                                             // Logmeldung ausgeben
    ItemTempProxy.postUpdate(nTemp)                                                                                       // Neue Temperatur in Proxy Item übernehmen
    ItemTempTendenz.postUpdate(strTempTendence)                                                                           // Tendenz Item setzen
                                                                                                                          // Tendenz Feuchte
    var String strHumTendence = "⬅️➡️"                                                                                     // Default String für Tendenz Anzeige
    var String strHumMessage = "stagnierend"                                                                              // Default String für Tendenz Logmeldung
    if(nHum > nHumProxy) {                                                                                                // falls aktuelle Feuchte höher als alte Feuchte
        strHumTendence = "⬆️"                                                                                             // String für Tendenz Anzeige steigend
        strHumMessage = "steigend"                                                                                        // String für Logmeldung steigend
    }
    if(nHum < nHumProxy) {                                                                                                // falls aktuelle Feuchte geringer als alte Feuchte
        strHumTendence = "⬇️"                                                                                             // String für Tendenz Anzeige sinkend
        strHumMessage = "fallend"                                                                                         // String für Logmeldung sinkend
    }
    logInfo("kombiupdate","Sensor {} Feuchte {}",strSensor,strHumMessage)                                                 // Logmeldung ausgeben
    ItemHumProxy.postUpdate(nHum)                                                                                         // Neue Feuchte in Proxy Item übernehmen
    ItemHumTendenz.postUpdate(strHumTendence)                                                                             // Tendenz Item setzen
                                                                                                                          // Kombiitem setzen
    var String strKombi = strTempTendence + " " + String::format("%.1f °C / ",nTemp) + strHumTendence + " " + String::format("%.0f %%",nHum) // Kombinierter String ohne Shutter
    if(ItemShutter !== null)                                                                                              // Falls es ein passendes Shutteritem gibt
        strKombi = "Rollladen: " + ItemShutter.state.toString + "% / " + strKombi                                         // füge den Shutterstatus vorne an
    ItemKombi.postUpdate(strKombi)                                                                                        // Setze das Kombiitem
end
Keine Meldung mehr im VSC! Top!
Aber nach wie vor bei der Feuchte kein Update auf fallend oder stagnierend jedoch auf steigend.

Code: Alles auswählen

2020-09-21 09:44:30.439 [vent.ItemStateChangedEvent] - Aussen_Hum changed from 73 to 72
2020-09-21 09:44:30.447 [vent.ItemStateChangedEvent] - AussenFeuchte changed from 73 % to 72 %
==> /var/log/openhab2/openhab.log <==
2020-09-21 09:44:30.461 [INFO ] [e.smarthome.model.script.kombiupdate] - var String strSensor: Aussen
2020-09-21 09:44:30.496 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempTendenz: Aussen_TempTendenz
2020-09-21 09:44:30.510 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempProxy: Aussen_TempProxy
2020-09-21 09:44:30.519 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumTendenz: Aussen_HumTendenz
2020-09-21 09:44:30.530 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumProxy: Aussen_HumProxy
2020-09-21 09:44:30.541 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTemp: Aussen_Temp
2020-09-21 09:44:30.558 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHum: Aussen_Hum
2020-09-21 09:44:30.571 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemKombi: Aussen_Kombi
2020-09-21 09:44:30.579 [INFO ] [e.smarthome.model.script.kombiupdate] - Number Proxy
2020-09-21 09:44:30.585 [INFO ] [e.smarthome.model.script.kombiupdate] - Number
2020-09-21 09:44:30.593 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor Aussen Temperatur stagnierend
==> /var/log/openhab2/events.log <==
2020-09-21 09:44:30.607 [vent.ItemStateChangedEvent] - Aussen_TempTendenz changed from ⬆️ to ⬅️➡️
==> /var/log/openhab2/openhab.log <==
2020-09-21 09:44:30.609 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor Aussen Feuchte steigend
==> /var/log/openhab2/events.log <==
2020-09-21 09:44:30.627 [vent.ItemStateChangedEvent] - Aussen_HumProxy changed from 73.0 to 72.0
2020-09-21 09:44:30.648 [vent.ItemStateChangedEvent] - Aussen_Kombi changed from ⬆️ 13,1 °C / ⬆️ 73 % to ⬅️➡️ 13,1 °C / ⬆️ 72 %
Zuletzt geändert von PeterA am 21. Sep 2020 09:46, insgesamt 2-mal geändert.
- OpenHab 2.4
#PWRUP

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Temperatur Tendenz ermitteln

Beitrag von peter-pan »

...war es nicht die Zeile davor ? Da steht, direkt nach "else" das "null" ganz alleine in der Zeile ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Temperatur Tendenz ermitteln

Beitrag von udo1toni »

Ja, blöd... das kommt davon, wenn man davor sitzt und nicht nachdenkt...

Also grundsätzlich waren die vielen logInfos ja ohnehin nur zur Fehlersuche gut... an dieser Stelle muss man das logInfo noch mit einem if versehen...

Code: Alles auswählen

if(ItemShutter !== null)Item.Shutter.name else „kein Shutter!“
Achtung... falsche Anführungszeichen... der Befehl ersetzt den letzten Teil des logInfo-Befehls (nach dem Komma und vor der Klammer)


Gesendet von iPad mit Tapatalk
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Temperatur Tendenz ermitteln

Beitrag von PeterA »

udo1toni hat geschrieben: 21. Sep 2020 19:10 Ja, blöd... das kommt davon, wenn man davor sitzt und nicht nachdenkt...

Also grundsätzlich waren die vielen logInfos ja ohnehin nur zur Fehlersuche gut... an dieser Stelle muss man das logInfo noch mit einem if versehen...

Code: Alles auswählen

if(ItemShutter !== null)Item.Shutter.name else „kein Shutter!“
Achtung... falsche Anführungszeichen... der Befehl ersetzt den letzten Teil des logInfo-Befehls (nach dem Komma und vor der Klammer)


Gesendet von iPad mit Tapatalk
???
Verstehe jetzt leider nicht was das ersetzen soll.

Aber warum macht die Rule bei fallender oder stagnierender Feuchte kein Update ?
Hängt das damit zusammen ?
- OpenHab 2.4
#PWRUP

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

Re: Temperatur Tendenz ermitteln

Beitrag von udo1toni »

Na, die auskommntierte Zeile muss geändert werden, damit sie auch dann funktioniert, wenn kein Rollladen zum Kombiitem gehört:

Code: Alles auswählen

logInfo("kombiupdate","ItemShutter: {}",if(ItemShutter !== null)ItemShutter.name else "Kein Rollladen gefunden!")
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Temperatur Tendenz ermitteln

Beitrag von PeterA »

udo1toni hat geschrieben: 21. Sep 2020 21:28 Na, die auskommntierte Zeile muss geändert werden, damit sie auch dann funktioniert, wenn kein Rollladen zum Kombiitem gehört:

Code: Alles auswählen

logInfo("kombiupdate","ItemShutter: {}",if(ItemShutter !== null)ItemShutter.name else "Kein Rollladen gefunden!")
Ok, habs geändert.
Hier nun ein weiterer Auszug aus dem Log:

Code: Alles auswählen

2020-09-21 21:47:29.980 [INFO ] [e.smarthome.model.script.kombiupdate] - var String strSensor: InnenEGFlur
==> /var/log/openhab2/events.log <==
2020-09-21 21:47:30.012 [vent.ItemStateChangedEvent] - InnenEGFlur_Temp changed from 21.9 to 22.0
==> /var/log/openhab2/openhab.log <==
2020-09-21 21:47:30.024 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempTendenz: InnenEGFlur_TempTendenz
2020-09-21 21:47:30.065 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempProxy: InnenEGFlur_TempProxy
2020-09-21 21:47:30.116 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumTendenz: InnenEGFlur_HumTendenz
2020-09-21 21:47:30.153 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumProxy: InnenEGFlur_HumProxy
2020-09-21 21:47:30.179 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTemp: InnenEGFlur_Temp
2020-09-21 21:47:30.201 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHum: InnenEGFlur_Hum
2020-09-21 21:47:30.226 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemKombi: InnenEGFlur_Kombi
2020-09-21 21:47:30.233 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemShutter: Kein Rollladen gefunden!
2020-09-21 21:47:30.239 [INFO ] [e.smarthome.model.script.kombiupdate] - Number Proxy
2020-09-21 21:47:30.245 [INFO ] [e.smarthome.model.script.kombiupdate] - Number
2020-09-21 21:47:30.251 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor InnenEGFlur Temperatur steigend
2020-09-21 21:47:30.263 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor InnenEGFlur Feuchte steigend
==> /var/log/openhab2/events.log <==
2020-09-21 21:47:30.263 [vent.ItemStateChangedEvent] - InnenEGFlur_TempProxy changed from 21.9 to 22.0
2020-09-21 21:47:30.277 [vent.ItemStateChangedEvent] - InnenEGFlur_TempTendenz changed from ⬇️ to ⬆️
2020-09-21 21:47:30.348 [vent.ItemStateChangedEvent] - InnenEGFlur_Kombi changed from ⬇️ 21,9 °C / ⬆️ 49 % to ⬆️ 22,0 °C / ⬆️ 49 %
Müsste nicht bei der Feuchte auf "stagnierend" upgedatet werden ?
Leider steigen gerade alle Werte der Feuchte. Da muss ich Morgen mal schauen.

Gruß Peter
- OpenHab 2.4
#PWRUP

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

Re: Temperatur Tendenz ermitteln

Beitrag von udo1toni »

Ja, man sollte natürlich die Variablen mit den korrekten Items füllen... ;)

Die Zeile für nHumProxy ist verkehrt... hier die korrekte Zeile:

Code: Alles auswählen

    val Number nHumProxy  = if(ItemHumProxy.state instanceof Number) (ItemHumProxy.state as Number) else 0                // Feuchte  Proxy auslesen
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Temperatur Tendenz ermitteln

Beitrag von PeterA »

Hallo Udo,

Yeah! Läuft!
Die "null" Meldungen sind auch sehr deutlich weniger geworden.
Hier habe ich EINE gefunden:

Code: Alles auswählen

2020-09-22 20:52:11.315 [INFO ] [e.smarthome.model.script.kombiupdate] - var String strSensor: InnenEGGaestezimmer
2020-09-22 20:52:11.349 [INFO ] [e.smarthome.model.script.kombiupdate] - var String strSensor: InnenEGGaesteWC
==> /var/log/openhab2/events.log <==
2020-09-22 20:52:11.376 [vent.ItemStateChangedEvent] - InnenEGGaestezimmer_Temp changed from 20.7 to 20.6
2020-09-22 20:52:11.392 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_Temp changed from 21.3 to 21.2
==> /var/log/openhab2/openhab.log <==
2020-09-22 20:52:11.474 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempTendenz: InnenEGGaesteWC_TempTendenz
2020-09-22 20:52:11.487 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempTendenz: InnenEGGaesteWC_TempTendenz
2020-09-22 20:52:11.549 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempProxy: InnenEGGaesteWC_TempProxy
2020-09-22 20:52:11.555 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempProxy: InnenEGGaesteWC_TempProxy
2020-09-22 20:52:11.678 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Update Kombi Item': null
2020-09-22 20:52:11.678 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumTendenz: InnenEGGaesteWC_HumTendenz
2020-09-22 20:52:11.814 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumProxy: InnenEGGaesteWC_HumProxy
2020-09-22 20:52:12.007 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTemp: InnenEGGaesteWC_Temp
2020-09-22 20:52:12.137 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHum: InnenEGGaesteWC_Hum
2020-09-22 20:52:12.229 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemKombi: InnenEGGaesteWC_Kombi
2020-09-22 20:52:12.240 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemShutter: Kein Rollladen gefunden!
2020-09-22 20:52:12.306 [INFO ] [e.smarthome.model.script.kombiupdate] - Number Proxy
2020-09-22 20:52:12.345 [INFO ] [e.smarthome.model.script.kombiupdate] - Number
2020-09-22 20:52:12.353 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor InnenEGGaesteWC Temperatur fallend
==> /var/log/openhab2/events.log <==
2020-09-22 20:52:12.377 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_TempProxy changed from 21.3 to 21.2
==> /var/log/openhab2/openhab.log <==
2020-09-22 20:52:12.392 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor InnenEGGaesteWC Feuchte stagnierend
==> /var/log/openhab2/events.log <==
2020-09-22 20:52:12.406 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_HumTendenz changed from ⬇️ to ⬅️➡️
2020-09-22 20:52:12.421 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_Kombi changed from ⬇️ 21,3 °C / ⬇️ 55 % to ⬇️ 21,2 °C / ⬅️➡️ 55 %
Edit:
Und hier noch eine:

Code: Alles auswählen

2020-09-22 20:38:10.933 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_Temp changed from 21.4 to 21.3
2020-09-22 20:38:10.937 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_Hum changed from 56 to 55
==> /var/log/openhab2/openhab.log <==
2020-09-22 20:38:10.975 [INFO ] [e.smarthome.model.script.kombiupdate] - var String strSensor: InnenEGGaesteWC
2020-09-22 20:38:10.998 [INFO ] [e.smarthome.model.script.kombiupdate] - var String strSensor: InnenEGGaesteWC
2020-09-22 20:38:11.114 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempTendenz: InnenEGGaesteWC_TempTendenz
2020-09-22 20:38:11.126 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempTendenz: InnenEGGaesteWC_TempTendenz
2020-09-22 20:38:11.256 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempProxy: InnenEGGaesteWC_TempProxy
2020-09-22 20:38:11.273 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTempProxy: InnenEGGaesteWC_TempProxy
2020-09-22 20:38:11.364 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumTendenz: InnenEGGaesteWC_HumTendenz
2020-09-22 20:38:11.392 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumTendenz: InnenEGGaesteWC_HumTendenz
2020-09-22 20:38:11.465 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumProxy: InnenEGGaesteWC_HumProxy
2020-09-22 20:38:11.466 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHumProxy: InnenEGGaesteWC_HumProxy
2020-09-22 20:38:11.529 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Update Kombi Item': null
2020-09-22 20:38:11.585 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemTemp: InnenEGGaesteWC_Temp
2020-09-22 20:38:11.653 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemHum: InnenEGGaesteWC_Hum
2020-09-22 20:38:11.743 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemKombi: InnenEGGaesteWC_Kombi
2020-09-22 20:38:11.770 [INFO ] [e.smarthome.model.script.kombiupdate] - ItemShutter: Kein Rollladen gefunden!
2020-09-22 20:38:11.779 [INFO ] [e.smarthome.model.script.kombiupdate] - Number Proxy
2020-09-22 20:38:11.793 [INFO ] [e.smarthome.model.script.kombiupdate] - Number
2020-09-22 20:38:11.818 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor InnenEGGaesteWC Temperatur fallend
==> /var/log/openhab2/events.log <==
2020-09-22 20:38:11.831 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_TempProxy changed from 21.4 to 21.3
==> /var/log/openhab2/openhab.log <==
2020-09-22 20:38:11.850 [INFO ] [e.smarthome.model.script.kombiupdate] - Sensor InnenEGGaesteWC Feuchte fallend
==> /var/log/openhab2/events.log <==
2020-09-22 20:38:11.862 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_HumProxy changed from 56.0 to 55.0
2020-09-22 20:38:11.919 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_HumTendenz changed from ⬅️➡️ to ⬇️
2020-09-22 20:38:11.936 [vent.ItemStateChangedEvent] - InnenEGGaesteWC_Kombi changed from ⬇️ 21,4 °C / ⬅️➡️ 56 % to ⬇️ 21,3 °C / ⬇️ 55 %
- OpenHab 2.4
#PWRUP

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

Re: Temperatur Tendenz ermitteln

Beitrag von udo1toni »

Wir haben noch ein weiteres Problem, was mir erst jetzt aufgeht: Die Rule wird immer doppelt getriggert, es sei denn, einer der beiden Messwerte hat sich nicht geändert. (kann man sehr schön im Log sehen, quasi alle Zeilen doppelt...)
Die simpelste Maßnahme dagegen: wir ändern den Trigger, und zwar lassen wir den einen trigger weg (z.B. Member of gHum changed), dafür ändern wir den anderen Trigger auf received update (also Member of gTemp received update).
Ich gehe davon aus, dass der Sensor immer "zeitgleich" beide Items mit den aktuellen Daten befüllt.
Warum allerdings immer noch die null-Meldung auftritt, erschließt sich mir nicht (es könnte natürlich mit dieser doppelt laufenden Rule zu tun haben...)
Jedenfalls kommt die null-Meldung offensichtlich an unterschiedlichen Stellen, das macht es nicht besser...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Temperatur Tendenz ermitteln

Beitrag von PeterA »

Also die Sensoren melden Temp und Hum nicht IMMER gleichzeitig.
Die Meldung erfolgt nur dann wenn sich ein Wert ändert. Das kann MANCHMAL gleichzeitig sein.
Und dann vermute ich gibts diesen Fehler.
- OpenHab 2.4
#PWRUP

Antworten