Seite 2 von 2

Re: Wie Number aus Shellscript für Color-Abfragen verwenden

Verfasst: 26. Feb 2020 09:31
von bastler
herzlichen dank für die sehr ausführliche erläuterung udo1toni, jetzt hab ich das verstanden :D

Re: Wie Number aus Shellscript für Color-Abfragen verwenden

Verfasst: 28. Feb 2020 14:58
von steffenschmidt
Danke fuer das gute Beispiel.

rule "temperatur"
when
Item TempKuehlschrank changed
then
logInfo ("Rule temperatur", "nTempKuehlschrank {}", nTempKuehlschrank.state)
logInfo ("Rule temperatur", "TempKuehlschrank {}", TempKuehlschrank.state)
nTempKuehlschrank.postUpdate(Float::parseFloat(TempKuehlschrank.state))
end

Soweit so gut, wenn ich es aber so einbaue, dann bekomme ich folgende Fehlermeldung :(

2020-02-28 14:45:16.347 [INFO ] [arthome.model.script.Rule temperatur] - nTempKuehlschrank NULL
2020-02-28 14:45:16.364 [INFO ] [arthome.model.script.Rule temperatur] - TempKuehlschrank 19.562
2020-02-28 14:45:16.371 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'temperatur': An error occurred during the script execution: Could not invoke method: java.lang.Float.parseFloat(java.lang.String) on instance: null

Warum ist das Item null? muss man das vorher initialisieren?

Re: Wie Number aus Shellscript für Color-Abfragen verwenden

Verfasst: 28. Feb 2020 15:33
von udo1toni
Dass nTempKuehlschrank den Status NULL hält, ist normal, solange kein Status hineingeschrieben wurde.
Nicht so schön ist, dass die Zuweisung nicht funktioniert. Probiere bitte mal folgendes:

Code: Alles auswählen

rule "temperatur"
when
    Item TempKuehlschrank changed
then
    logInfo ("Rule temperatur", "nTempKuehlschrank {}", nTempKuehlschrank.state)
    logInfo ("Rule temperatur", "TempKuehlschrank {}", TempKuehlschrank.state)
    nTempKuehlschrank.postUpdate(Float::parseFloat(TempKuehlschrank.state.toString))
end
parseFloat erwartet einen String. Hier greift die automatische Konvertierung leider nicht.

Re: Wie Number aus Shellscript für Color-Abfragen verwenden

Verfasst: 29. Feb 2020 14:21
von steffenschmidt
Super. Genauso hat es funktioniert. Gewußt wie. Wieder ein Stück schlauer.

Vielen Dank :)