ich möchte gerne das überschreiten eines bestimmten Sonnenwinkels (Azimut) als Auslöser nutzen, allerdings hapert es noch an irgendetwas.
Und zwar möchte ich generell die Rollladen (smart über shelly) beim Überschreiten eines gewissen Sonnenstandes fahren lassen. Sprich es soll nicht bei jeder Winkeländerung auslösen, um eventuell manuelle Eingriffe nicht wieder zu "überschreiben".
Das ganze soll mit DSL Rules gelöst werden, da ich mich damit bisher am sichersten fühle.
Deshalb wollte ich es wie folgt machen:
Code: Alles auswählen
if( Sonnendaten_Azimut.previousState.state < 262 |° && Sonnendaten_Azimut.getState() >= 262 |°
) { rollo_Steuerung0offen100geschlossen.sendCommand(100) }
Code: Alles auswählen
logInfo("TEST ", "previous state was " + Sonnendaten_Azimut.previousState.state)
Code: Alles auswählen
[INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Sonnendaten_Azimut' changed from 261.9764096540953 ° to 262.96264910274374 °
[INFO ] [org.openhab.core.model.script.TEST ] - previous state was 262.96264910274374 °
Also mein derzeitiger Code sieht so aus:
Code: Alles auswählen
createTimer(now.plusMinutes(1),[|
logInfo("TEST ", "previous state was " + Sonnendaten_Azimut.previousState.state)
if(
Sonnendaten_Azimut.previousState.state < 262 |° && Sonnendaten_Azimut.getState() >= 262 |° //das überschreiten der schwelle klappt noch nicht
) {
rollo_Steuerung0offen100geschlossen.sendCommand(100)
}
])
Kann mir bitte jemand einen entscheidenden Hinweis geben?
Danke vorab.
P.S.: Wenn ich den Teil mit previouseState weglasse, dann klappt es, allerdings fährt das Rollo dann bei jeder Änderung in die Position, was ich ja gerne vermeiden möchte.