Quatsch. Das zerkratze ist nur ein aufgeklebter Aluring. Da drunter ist die original Krone.
Temperatur Tendenz ermitteln
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Temperatur Tendenz ermitteln
- OpenHab 2.4
#PWRUP
#PWRUP
-
- Beiträge: 600
- Registriert: 20. Sep 2019 05:49
Re: Temperatur Tendenz ermitteln
Um welches Model handelt es sich denn?
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Temperatur Tendenz ermitteln
- OpenHab 2.4
#PWRUP
#PWRUP
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Temperatur Tendenz ermitteln
Um mal on Topic zu bleiben
frage ich die Kompetenz hier ob sich folgende Rules vereinfachen liessen ?
Es sind zwei Rules. Das Temp und Feuchte Item kommen aber vom gleichen Sensor.
Triggern auch nicht gleichzeitig. Aber könnte man das nicht nicht eine Rule zusammen fassen ?

Code: Alles auswählen
rule "Aussentemperatur Tendenz ermitteln / Update Kombi Item"
when
Item AussenTemp changed or
System started
//Time cron "0 * * * * ?"// jede Minute// jede Minute
then
if(!(AussenTemp_Tendenz_Proxy.state instanceof Number)) {
AussenTemp_Tendenz_Proxy.postUpdate(0)
}
if((AussenTemp.state as Number).floatValue > (AussenTemp_Tendenz_Proxy.state as Number)){
logInfo("Aussentemperatur", "steigend")
AussenTemp_Tendenz.postUpdate("⬆️")
}
//if((AussenTemp.state as Number).floatValue == (AussenTemp_Tendenz_Proxy.state as Number)){
// logInfo("Aussentemperatur", "stagnierend")
// AussenTemp_Tendenz.postUpdate("⟷")
//}
if((AussenTemp.state as Number).floatValue < (AussenTemp_Tendenz_Proxy.state as Number)){
logInfo("Aussentemperatur", "fallend")
AussenTemp_Tendenz.postUpdate("⬇️")
}
AussenTemp_Tendenz_Proxy.postUpdate((AussenTemp.state as Number).floatValue)
LaCrosse_Aussen_Kombi.postUpdate(AussenTemp_Tendenz.state.toString + " " + AussenTemp.state + " °C / " + AussenFeuchte_Tendenz.state.toString + " " + AussenFeuchte.state.toString + " ")
end
rule "AussenFeuchte Tendenz ermitteln / Update Kombi Item"
when
Item AussenFeuchte changed or
System started
//Time cron "0 * * * * ?"// jede Minute// jede Minute
then
if(!(AussenFeuchte_Tendenz_Proxy.state instanceof Number)) {
AussenFeuchte_Tendenz_Proxy.postUpdate(0)
}
if((AussenFeuchte.state as Number).floatValue > (AussenFeuchte_Tendenz_Proxy.state as Number)){
logInfo("Aussenfeuchte", "steigend")
AussenFeuchte_Tendenz.postUpdate("⬆️")
}
//if((AussenFeuchte.state as Number) == (AussenFeuchte_Tendenz_Proxy.state as Number)){
// logInfo("Aussenfeuchtee", "stagnierend")
// AussenFeuchte_Tendenz.postUpdate("⟷")
//}
if((AussenFeuchte.state as Number).floatValue < (AussenFeuchte_Tendenz_Proxy.state as Number)){
logInfo("Aussenfeuchte", "fallend")
AussenFeuchte_Tendenz.postUpdate("⬇️")
}
AussenFeuchte_Tendenz_Proxy.postUpdate((AussenFeuchte.state as Number).floatValue)
LaCrosse_Aussen_Kombi.postUpdate(AussenTemp_Tendenz.state.toString + " " + AussenTemp.state + " °C / " + AussenFeuchte_Tendenz.state.toString + " " + AussenFeuchte.state.toString + " ")
end
Triggern auch nicht gleichzeitig. Aber könnte man das nicht nicht eine Rule zusammen fassen ?
- OpenHab 2.4
#PWRUP
#PWRUP
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatur Tendenz ermitteln
Ja sicher. Es ist zwar kaum etwas dabei zu gewinnen, aber zumindest sieht es etwas aufgeräumter aus.
Bitte immer darauf achten, die Log-Befehle korrekt zu verwenden 
Code: Alles auswählen
rule "Update Kombi Item"
when
Item AussenTemp changed or
Item AussenFeuchte changed or
System started
//Time cron "0 * * * * ?"// jede Minute// jede Minute
then
val Number nTempTendence = if(AussenTemp_Tendenz_Proxy.state instanceof Number) (AussenTemp_Tendenz_Proxy.state as Number) else 0
val Number nHumTendence = if(AussenFeuchte_Tendenz_Proxy.state instanceof Number) (AussenFeuchte_Tendenz_Proxy.state as Number) else 0
val Number nTemp = if(AussenTemp.state instanceof Number) (AussenTemp.state as Number).floatValue else nTempTendence
val Number nHum = if(AussenFeuchte.state instanceof Number) (AussenFeuchte.state as Number).floatValue else nHumTendence
var String strTempTendence = "⟷"
var String strTempMessage = "stagnierend"
if(nTemp < nTempTendence) {
strTempTendence = "⬆️"
strTempMessage = "steigend"
}
if(nTemp > nTempTendence) {
strTempTendence = "⬇️"
strTempMessage = "fallend"
}
logInfo("temphum","Aussentemperatur {}",strTempMessage)
AussenTemp_Tendenz.postUpdate(strTempTendence)
AussenTemp_Tendenz_Proxy.postUpdate(nTemp)
var String strHumTendence = "⟷"
var String strHumMessage = "stagnierend"
if(nHum < nHumTendence) {
strHumTendence = "⬆️"
strHumMessage = "steigend"
}
if(nHum > nHumTendence) {
strHumTendence = "⬇️"
strHumMessage = "fallend"
}
logInfo("temphum","Aussenfeuchte {}",strHumMessage)
AussenFeuchte_Tendenz.postUpdate(strHumTendence)
AussenFeuchte_Tendenz_Proxy.postUpdate(nHum)
LaCrosse_Aussen_Kombi.postUpdate(strTempTendence + " " + nTemp.toString + " °C / " + strHumTendence + " " + nHum.toString + " %")
end

openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Temperatur Tendenz ermitteln
Allright.
Das würde die Anzahl der Rules schon erheblich von derzeit 28 (14 Temp und 14 Feuchte items) auf 14 Rules reduzieren.
Könnte man hier nicht auch etwas mit dieser Gruppenfilter Funktion machen ?
Denn alle Temperatur und Feuchte Items sind in einer Gruppe. Alle Items enden mit der Bezeichnung "Temp" und "Feuchte".
Gruß Peter
Das würde die Anzahl der Rules schon erheblich von derzeit 28 (14 Temp und 14 Feuchte items) auf 14 Rules reduzieren.
Könnte man hier nicht auch etwas mit dieser Gruppenfilter Funktion machen ?
Denn alle Temperatur und Feuchte Items sind in einer Gruppe. Alle Items enden mit der Bezeichnung "Temp" und "Feuchte".
Gruß Peter
- OpenHab 2.4
#PWRUP
#PWRUP
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatur Tendenz ermitteln
Ja sicher
das sollte kein unlösbares Problem sein 
Du brauchst für jede Sorte Items eine eigene Gruppe. Der Sensorname (also z.B. "Aussen") muss bei allen Items jeweils identisch sein, an 1. Stelle stehen und ein Unterstrich muss folgen. Also z.B.Die anderen Items jeweils entsprechend.
Nun reicht eine Rule:
Da die Rule jeweils nur einen Sensor setzt und dazu zwingend den Namen des triggeringItems braucht, kann diese Rule nicht über System started oder Time cron getriggert werden, doch das sollte kein Problem darstellen. Man könnte eine Extra Rule für den Systemstart erstellen, aber per Definition stehen zu diesem Zeitpunkt ja keine gültigen Werte zur Verfügung, es wäre also sinnvoller, die Items samt und sonders per restoreOnStartup aus der Persistence Deiner Wahl beim Systemstart wiederherzustellen. Sobald die Sensoren den nächsten Wert liefern, werden die Werte aktualisiert.
Hier sind es halt massig unterschiedliche Items
Man könnte die Items auch über den 2. Teil des Itemnamens identifizieren und alle Items in einer Gruppe zusammenfassen, aber so sind alle Items gleich nach Sorte gruppiert.


Du brauchst für jede Sorte Items eine eigene Gruppe. Der Sensorname (also z.B. "Aussen") muss bei allen Items jeweils identisch sein, an 1. Stelle stehen und ein Unterstrich muss folgen. Also z.B.
Code: Alles auswählen
Group gTempTendenz
Group gTempProxy
Group gHumTendenz
Group gHumProxy
Group gTemp
Group gHum
Group gKombi
String Aussen_TempTendenz "Außentemp. Tendenz [%s]" (gTempTendenz)
Number Aussen_TempProxy "Außentemp. Proxy [%s]" (gTempProxy)
String Aussen_HumTendenz "Außenfeuchte Tendenz [%s]" (gHumTendenz)
Number Aussen_HumProxy "Außenfeuchte Proxy [%s]" (gHumProxy)
Number Aussen_Temp "Außentemp. [%s]" (gTemp)
Number Aussen_Hum "Außenfeuchte [%s]" (gHum)
String Aussen_Kombi "Außen [%s]" (gKombi)
Nun reicht eine Rule:
Code: Alles auswählen
rule "Update Kombi Item"
when
Member of gTemp changed or
Member of gFeuchte changed
then
val String strSensor = triggeringItem.name.split("_").get(0) // Sensor bestimmen
// zugehörige Items bestimmen
val ItemTempTendenz = gTempTendenz.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem
val ItemTempProxy = gTempProxy.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem
val ItemHumTendenz = gHumTendenz.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem
val ItemHumProxy = gHumProxy.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem
val ItemTemp = gTemp.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem
val ItemHum = gHum.members.findFirst[i|i.name.split("_").get(0) == strSensor] as NumberItem
val ItemKombi = gKombi.members.findFirst[i|i.name.split("_").get(0) == strSensor] as StringItem
// Werte bestimmen
val Number nTempTendence = if(ItemTempProxy.state instanceof Number) (ItemTempProxy.state as Number) else 0
val Number nHumTendence = if(ItemHumTendenz.state instanceof Number) (ItemHumTendenz.state as Number) else 0
val Number nTemp = if(ItemTemp.state instanceof Number) (ItemTemp.state as Number).floatValue else nTempTendence
val Number nHum = if(ItemHum.state instanceof Number) (ItemHum.state as Number).floatValue else nHumTendence
// Tendenz Temperatur
var String strTempTendence = "⟷"
var String strTempMessage = "stagnierend"
if(nTemp < nTempTendence) {
strTempTendence = "⬆️"
strTempMessage = "steigend"
}
if(nTemp > nTempTendence) {
strTempTendence = "⬇️"
strTempMessage = "fallend"
}
logInfo("temphum","Sensor {} Temperatur {}",strSensor,strTempMessage)
ItemTempTendenz.postUpdate(strTempTendence)
ItemTempProxy.postUpdate(nTemp)
// Tendenz Feuchte
var String strHumTendence = "⟷"
var String strHumMessage = "stagnierend"
if(nHum < nHumTendence) {
strHumTendence = "⬆️"
strHumMessage = "steigend"
}
if(nHum > nHumTendence) {
strHumTendence = "⬇️"
strHumMessage = "fallend"
}
logInfo("temphum","Sensor {} Feuchte {}",strSensor,strHumMessage)
ItemHumTendenz.postUpdate(strHumTendence)
ItemHumProxy.postUpdate(nHum)
// Kombiitem
ItemKombi.postUpdate(strTempTendence + " " + nTemp.toString + " °C / " + strHumTendence + " " + nHum.toString + " %")
end
Hier sind es halt massig unterschiedliche Items

openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Temperatur Tendenz ermitteln
Wow!
Nun versuche ich das ganze erst mal zu Verstehen
Mir ist noch nicht ganz klar wie die Rule die "Ausgabe" sortiert.
Insgesamt habe ich ja 14 Sensoren. Das macht zusammen 28 Werte. 14 Temperatur und 14 Humidtiy.
Wie "Sortiere" wird denn dann das "steigend" oder "fallend" dem entsprechenden AussenItemKombi.postUpdate oder zb. InnenDGKombi.postUpdate
zugeordnet ?
hier mal die ganzen Items:
(Die eigentlichen Items mit den Werten sind über die PaperUI angelegt und fehlen hier)
(Folgen aber dem Schema "AussenTemp, AussenFeuchte, InnenDGTemp .... usw)

Nun versuche ich das ganze erst mal zu Verstehen

Mir ist noch nicht ganz klar wie die Rule die "Ausgabe" sortiert.
Insgesamt habe ich ja 14 Sensoren. Das macht zusammen 28 Werte. 14 Temperatur und 14 Humidtiy.
Wie "Sortiere" wird denn dann das "steigend" oder "fallend" dem entsprechenden AussenItemKombi.postUpdate oder zb. InnenDGKombi.postUpdate
zugeordnet ?
hier mal die ganzen Items:
(Die eigentlichen Items mit den Werten sind über die PaperUI angelegt und fehlen hier)
(Folgen aber dem Schema "AussenTemp, AussenFeuchte, InnenDGTemp .... usw)
Code: Alles auswählen
String AussenTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number AussenTemp_Tendenz_Proxy
String AussenFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number AussenFeuchte_Tendenz_Proxy
String InnenDGTemp2_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenDGTemp2_Tendenz_Proxy
String InnenDGFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenDGFeuchte_Tendenz_Proxy
String InnenDGKind1Temp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenDGKind1Temp_Tendenz_Proxy
String InnenDGKind1Feuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenDGKind1Feuchte_Tendenz_Proxy
String InnenDGKind2Temp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenDGKind2Temp_Tendenz_Proxy
String InnenDGKind2Feuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenDGKind2Feuchte_Tendenz_Proxy
String InnenDGBadTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenDGBadTemp_Tendenz_Proxy
String InnenDGBadFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenDGBadFeuchte_Tendenz_Proxy
String InnenDGSZTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenDGSZTemp_Tendenz_Proxy
String InnenDGSZFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenDGSZFeuchte_Tendenz_Proxy
String InnenEGFlurTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenEGFlurTemp_Tendenz_Proxy
String InnenEGFlurFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenEGFlurFeuchte_Tendenz_Proxy
String InnenWHZTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenWHZTemp_Tendenz_Proxy
String InnenWHZFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenWHZFeuchte_Tendenz_Proxy
String InnenKellerFlurTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenKellerFlurTemp_Tendenz_Proxy
String InnenKellerFlurFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenKellerFlurFeuchte_Tendenz_Proxy
String InnenKellerTechnikTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenKellerTechnikTemp_Tendenz_Proxy
String InnenKellerTechnikFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenKellerTechnikFeuchte_Tendenz_Proxy
String InnenKellerHBYTRRTemp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenKellerHBYTRRTemp_Tendenz_Proxy
String InnenKellerHBYTRRFeuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenKellerHBYTRRFeuchte_Tendenz_Proxy
String InnenKellerKeller1Temp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenKellerKeller1Temp_Tendenz_Proxy
String InnenKellerKeller1Feuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenKellerKeller1Feuchte_Tendenz_Proxy
String InnenKellerKeller2Temp_Tendenz "Temperatur Tendenz [%s]" <temperature>
Number InnenKellerKeller2Temp_Tendenz_Proxy
String InnenKellerKeller2Feuchte_Tendenz "Luftfeuchtigkeit Tendenz [%s]" <humidity>
Number InnenKellerKeller2Feuchte_Tendenz_Proxy
String Durchschnitt_Temperatur_Haus_Tendenz "∅ Temperatur Haus Tendenz [%s]" <temperature>
Number Durchschnitt_Temperatur_Haus_Tendenz_Proxy
String Durchschnitt_Feuchte_Haus_Tendenz "∅ Luftfeuchtigkeit Haus Tendenz [%s]" <humidity>
Number Durchschnitt_Feuchte_Haus_Tendenz_Proxy

- OpenHab 2.4
#PWRUP
#PWRUP
- PeterA
- Beiträge: 1106
- Registriert: 8. Feb 2019 12:12
Re: Temperatur Tendenz ermitteln
Hallo Udo,
in einem anderen Post hast Du eine Rule gepostet wo direkt nach einem "Zeichen" in der Gruppe gesucht wird:
Könnte ich das bei mir auch so anwenden ?
Also direkt in der Gruppe nach "Temp" und "Feuchte" in der Bezeichnung der Items suchen ?
in einem anderen Post hast Du eine Rule gepostet wo direkt nach einem "Zeichen" in der Gruppe gesucht wird:
Code: Alles auswählen
GS_GFA.allMembers.forEach[ m | // Altbau Erdgeschoss
if (m.name.contains("5"))
m.sendCommand(50) // Schlafzimmertür auf 50%
else if (m.name.contains("3"))
m.sendCommand(90) // Wohnzimmerfenster auf 90%
else m.sendCommand(100)
Also direkt in der Gruppe nach "Temp" und "Feuchte" in der Bezeichnung der Items suchen ?
- OpenHab 2.4
#PWRUP
#PWRUP
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatur Tendenz ermitteln
Ja, das geht auch, aber es ist letztlich zusätzlicher Aufwand im Code. Man kann ein Item beliebig vielen Gruppen gleichzeitig zuordnen, falls Du also nur "schon eine Gruppe hast", pack einfach eine weitere dazu...
Gesendet von meinem SM-G973F mit Tapatalk
Gesendet von meinem SM-G973F mit Tapatalk
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet