Seite 1 von 2

OH3 Item Status Null nach Neustart

Verfasst: 30. Mär 2021 21:36
von scotty
Hallo Zusammen,

nach einem Neustart haben verschiedene Items bekanntlich den Status Null. Ist es richtig, dass unter OH3 die Korrektur per Rules so erreicht werden kann:

Code: Alles auswählen

if(SMA_Day_Start.state==NULL || SMA_Day_Start.state == UNDEF) { SMA_Day_Start.postUpdate(0) }

Re: Item Status Null nach Neustart

Verfasst: 30. Mär 2021 22:19
von int5749
Hallo alleine

über welchen Trigger möchtest Du gehen?? bei System start könnten einige Items ja noch nicht da sein.
Ich habe dies für die für mich wichtigen Items über persist gelöst mit restore on startup.

Re: Item Status Null nach Neustart

Verfasst: 30. Mär 2021 22:20
von udo1toni
Mein Tipp wäre, es eher so zu machen:

Code: Alles auswählen

if(!(SMA_Day_Start.state instanceof Number)) SMA_Day_Start.postUpdate(0)

Re: Item Status Null nach Neustart

Verfasst: 31. Mär 2021 01:10
von scotty
@Udo
vielen Dank für den Tipp!

@int5749
so habe ich es unter OH2.5 auch gemacht. In einem Beitrag vom 26.03 hatte mich Udo allerdings darauf hingewiesen, diese Vorgehensweise zu überdenken.
udo1toni hat geschrieben: 26. Mär 2021 18:47
Die Faustregel ist, dass man den Status eines Items nach Möglichkeit vom verlinkten Binding setzen lässt. Dashalb auch die Aussage, dass es von den eingesetzten Bindings abhängt.

Re: Item Status Null nach Neustart

Verfasst: 31. Mär 2021 08:36
von int5749
scotty hat geschrieben: 31. Mär 2021 01:10 @int5749
so habe ich es unter OH2.5 auch gemacht. In einem Beitrag vom 26.03 hatte ich Udo allerdings darauf hingewiesen, diese Vorgehensweise zu überdenken.
udo1toni hat geschrieben: 26. Mär 2021 18:47
Die Faustregel ist, dass man den Status eines Items nach Möglichkeit vom verlinkten Binding setzen lässt. Dashalb auch die Aussage, dass es von den eingesetzten Bindings abhängt.
OK, klingt plausibel. Meine Frage von weiter oben bleibt ja, wie und zu welchem Zeitpunkt würde man die rule triggern um den Status dann vom Binding setzen zu lassen?

Re: OH3 Item Status Null nach Neustart

Verfasst: 31. Mär 2021 09:48
von peter-pan
int5749 hat geschrieben: 31. Mär 2021 08:36 um den Status dann vom Binding setzen zu lassen?
...ich denke dazu braucht es keine Rule. Das Binding macht das von alleine, wenn es dir einen aktuellen Wert liefert (z.B.: die aktuelle Temperatur) ;)

Re: OH3 Item Status Null nach Neustart

Verfasst: 31. Mär 2021 10:03
von int5749
peter-pan hat geschrieben: 31. Mär 2021 09:48
...ich denke dazu braucht es keine Rule. Das Binding macht das von alleine, wenn es dir einen aktuellen Wert liefert (z.B.: die aktuelle Temperatur) ;)
Ja, dann bräuchte es aber auch nicht den Aufruf aus Udo's Post

Bei mir sind es eben einige Werte, die nicht von einem Binding gesetzt werden und ich daher persistiert (restore on startup) habe.
Ja, auch diese würden früher oder später über eine Rule gesetzt, aber bis dahin eben falsch dargestellt.

Und der Aufruf aus dem Post müste ja auch irgendwie getriggert werden. Oder ich stehe (wieder einmal) auf der Leitung und verstehe dies nicht :?

Re: OH3 Item Status Null nach Neustart

Verfasst: 31. Mär 2021 11:04
von scotty
Hallo zusammen,

unter OH2.5 war meine Lösung folgende:

Code: Alles auswählen

Strategies {
    default = everyUpdate
}

Items {
        * : strategy = everyChange,restoreOnStartup
}

zusätzlich hatte ich nach einem Neustart immer noch Items mit dem Status "Null". Diese wiederum wurden durch eine zusätzliche Regel geändert:

Code: Alles auswählen

//------------------------------------------------------------------------
//    Item Statusänderung 
//------------------------------------------------------------------------
rule Startup
when
	System started
then
	Flag_Siko.postUpdate("OFF")
	gGartenShutters.postUpdate("OFF")
	gTerrasseShutters.postUpdate("OFF")
end
Durch den Einwurf von Udo, die Vorgehensweise "restoreOnStartup" zu überdenken, suche ich jetzt nach dem korrekten Weg.

Re: OH3 Item Status Null nach Neustart

Verfasst: 31. Mär 2021 13:48
von peter-pan
int5749 hat geschrieben: 31. Mär 2021 10:03 Bei mir sind es eben einige Werte, die nicht von einem Binding gesetzt werden
Das ist genau der Punkt. Bei ungebundenen Items könnte man so etwas machen.

Wenn man das in ein Startup-Rule einbaut, kommt es halt vor, dass die Regel vor dem Item geladen wird und deshalb eine Fehlermeldung hochkommt. Um dies zu umgehen, sollte man solche (ungebundenen) Items persistieren(MapDB), da sie ja sonst keinen gültigen Wert beim Start haben.

Bei gebundenen Items (mit Channel verlinkt) macht das aber keinen Sinn und kann zu Fehlern führen, z.B. wenn der Temperaturwert ein ganz anderer ist als vor dem Neustart, oder ein Schalter auf "OFF" war und zwischenzeitlich angeschaltet wurde...... etc.

Grundsätzlich sollte aber in jeder Regel abgefragt werden, ob ein gültiger Wert vorhanden ist (instanceof ...) und ich gehe mal davon aus, dass Udo das auch so gemeint hat.

Die Persistierung sollte deshalb nicht global gemacht werden sondern gezielt.

Re: OH3 Item Status Null nach Neustart

Verfasst: 31. Mär 2021 14:36
von scotty
peter-pan hat geschrieben: 31. Mär 2021 13:48 ....
Grundsätzlich sollte aber in jeder Regel abgefragt werden, ob ein gültiger Wert vorhanden ist (instanceof ...) und ich gehe mal davon aus, dass Udo das auch so gemeint hat.

Die Persistierung sollte deshalb nicht global gemacht werden sondern gezielt.
Könntest du mir denn mal Hilfestellung leisten, wie die Regel demnach zu formulieren ist?