ich gebe es auf. Ich scheitere wohl an einer banalen Aufgabe meine Temperatur und Luftfeuchtigkeit, welche über einen DHT22 via MQTT reinkommt (vom Arduino an den Raspi) in ein Chart Objekt darzustellen.
Dazu die Items:
Code: Alles auswählen
String TemperatureTechnikUG "Temperatur [%d °C]" <temperature> { mqtt="<[broker:stat/UG/Technik/Temperature:state:default]" }
Number NumberTemperatureTechnikUG
//String TemperatureIndexTechnikUG "Temperatur Index [%d °C]" <temperature> { mqtt="<[broker:stat/UG/Technik/TemperatureIndex:state:default]" }
String HumidityTechnikUG "relative Luftfeuchte [%d %%]" <humidity> { mqtt="<[broker:stat/UG/Technik/Humidity:state:default]" }
Number NumberHumidityTechnikUG
Code: Alles auswählen
Frame label="Technikraum" {
Default item=TemperatureTechnikUG label="Temperatur [%s °C]" icon="temperature"
//Default item=TemperatureIndexTechnikUG label="Temperatur Index [%d °C]" icon="temperature"
Default item=HumidityTechnikUG label="relative Luftfeuchte [%s %%]" icon="humidity"
Text label="Verläufe Technik UG" icon="line" {
Frame label="Temperatur" {
Switch item=PeriodTemp label="Zeiteinheit" icon="time" mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Jahr"]
Chart item=NumberTemperatureTechnikUG period=h refresh=7200 visibility=[PeriodTemp==0, PeriodTemp=="Uninitialized"]
Chart item=NumberTemperatureTechnikUG period=D refresh=14400 visibility=[PeriodTemp==1]
Chart item=NumberTemperatureTechnikUG period=W refresh=14400 visibility=[PeriodTemp==2]
Chart item=NumberTemperatureTechnikUG period=Y refresh=14400 visibility=[PeriodTemp==3]
}
Frame label="Luftfeuchtigkeit" {
Switch item=PeriodHum label="Zeiteinheit" icon="time" mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Jahr"]
Chart item=NumberHumidityTechnikUG period=h refresh=7200 visibility=[PeriodHum==0, PeriodHum=="Uninitialized"]
Chart item=NumberHumidityTechnikUG period=D refresh=14400 visibility=[PeriodHum==1]
Chart item=NumberHumidityTechnikUG period=W refresh=14400 visibility=[PeriodHum==2]
Chart item=NumberHumidityTechnikUG period=Y refresh=14400 visibility=[PeriodHum==3]
}
}
Code: Alles auswählen
Strategies {
everyMinute : "0 * * * * ?"
default = everyChange
}
Items {
NumberTemperatureTechnikUG : strategy = everyChange, everyMinute, restoreOnStartup
NumberHumidityTechnikUG : strategy = everyChange, everyMinute, restoreOnStartup
}
Code: Alles auswählen
rule "Transformation Temperatur String2Double"
when
Item TemperatureTechnikUG changed
then
if (log) logInfo('rules','String2Double: Temperatur Technik UG')
NumberTemperatureTechnikUG = Double::parseDouble(TemperatureTechnikUG.state.toString)
end
rule "Transformation Luftfeuchtigkeit String2Double"
when
Item HumidityTechnikUG changed
then
if (log) logInfo('rules','String2Double: Humidity Technik UG')
NumberHumidityTechnikUG = Double::parseDouble(HumidityTechnikUG.state.toString)
end
2021-02-25 16:23:22.347 [vent.ItemStateChangedEvent] - HumidityTechnikUG changed from 71.60 to 71.50
2021-02-25 16:23:22.354 [INFO ] [eclipse.smarthome.model.script.rules] - String2Double: Humidity Technik UG
2021-02-25 16:23:22.365 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Transformation Luftfeuchtigkeit String2Double': An error occurred during the script execution: Cannot assign a value in null context.
Ich habe verstanden für Chart benötige ich ein Item vom Type Number, daher die Transformation. Warum dies aber scheitert, da komme ich einfach nicht drauf. Hat einer eine Idee?
Besten danke.