Seite 1 von 1

Items inkl. Wert anlegen

Verfasst: 12. Sep 2021 23:18
von Tel32
Hi,

ich habe ein paar Items angelegt die ein Script mit Werten füllen soll. Wenn ich das Item anlege ist es ja noch frisch und ohne Werte. Mit diesen NULL als Wert mag das Script gar nicht umgehen. Wenn ich im Script den Wert abrufe und z.b. mit einem anderen addieren möchte klappt es aufgrund der NULL als Wert nicht. Ich muss das Script einmalig mit einem Wert schreiben und dann gehts. Kann ich ein Item schon beim anlegen ein Wert z.b. 1 zuweisen? Kann ich das im nachhinein nocht machen und wenn ja wie?

Mfg
Jens

Re: Items inkl. Wert anlegen

Verfasst: 13. Sep 2021 07:55
von BOP
Guten Morgen!

Bevor Udo dir sicherlich ausführlicher antworten wird ( :lol: ), hier meine Antwort.

Es gibt mehrere Möglichkeiten.
Du kannst ein Item auf NULL abfragen:

Code: Alles auswählen

if (Item === NULL)
Wenn es sich um eine Number handeln muss geht auch:

Code: Alles auswählen

if(!(Item.state instanceof Number))
Und du kannst auch beim Start von OH Items setzen:

Code: Alles auswählen

rule "Systemstart"
when
    System started
then
    logInfo("Systemstart-Rule","Systemstart wird ausgefuehrt")
end

Re: Items inkl. Wert anlegen

Verfasst: 13. Sep 2021 19:58
von udo1toni
:P
BOP hat es ja schon recht umfassend beschrieben.

Zum Rechnen bietet es sich oft an, den Wert des Items zunächst in eine (lokale) Variable zu laden, das geht dann z.B. so:

Code: Alles auswählen

var wert = 0
if(MyItem.state instanceof Number) 
    wert = MyItem.state as Number
Es ist immer eine gute Idee, solche Prüfungen in die Rules einzubauen, um eine NullPointer Exception zu vermeiden.