Es gibt verschiedene Möglichkeiten, das Problem gescheit umzusetzen, aber keine davon beinhaltet Blockly. Der einfache Grund: Blockly erlaubt es nicht, frei Funktionen zu programmieren (meines Wissens)Jensemann_P hat geschrieben: ↑5. Aug 2021 19:17Genau diese Berechnung ist der Punkt an dem ich hänge (nicht die Berechnung, sondern wo/wie die Implementiert wird).
Ich bin soweit, dass ich schon einiges an Gateways und things habe. Aus den vorhandenen Things hab ich mir dann auch über den Assistenten Items erstellt. So z.B. für meine EnOcean h/t Sensoren. Ich müsste jetzt also als Globales Objekt ein eigenes Item kreieren (vermute dann Textbasiert?)
Kann ich nun meine Taupunktberechnung in diesem Item direkt einbinden mit Channels aus den vorhandenen things, oder muss ich die Änderungen von h/t in den Items welche die Sensoren repräsentieren als Event abfangen, meinen Taupunkt außen in einer Rule berechnen und dass dann in mein "ItemTaupunktAussen" speichern?
Ungebundene Items kannst Du ganz einfach über die Main UI erstellen wie jedes andere Item auch (natürlich vorausgesetzt, Du legst ein Item überhaupt selbst an… Ich mutmaße, dass all Deine bisherigen Items halbautomatisch von openHAB erzeugt wurden. Schau mal unter Einstellungen -> Items. Da gibt es genau wie bei den Things das weiße Plus in blauem Kreis. Man muss keinen Text eingeben (also außer den, den man in die Felder einträgt, wie auch beim automatischen Erzeugen von Items)
Ein Thread::sleep() ist die schlechteste aller Möglichkeiten. Ich vermisse meinen Threadpool schon jetzt.Jensemann_P hat geschrieben: ↑5. Aug 2021 15:07hier geht es mir z.B. darum, wie ich meine halbe Stunde Sperrzeit (Intervalllüftung) hinbekomme. Wenn ich das z.B. im Script als Wait/Sleep (Sofern es hier sowas gibt), würde das ja im Prinzip schon reichen, auch ohne Timer. Dann erneute Abfrage der Randparameter (die sich ja zwischenzeitlich auch hätten ändern können) und somit Loop bis eben irgendein Parameter die Randbedinung False werden lässt. Da in OH3 scheinbar jedes Script seinen eigenen Thread hat, müsste dieses Vorgehen ja funktioniere. Oder gibt es so toll implementierte Timer, dass die sich auch schon für solch ganz einfache Aufgaben eignen? Wie dann vorgehen wenn so ein Timer laufen würde und durch wertänderung würde das Event auslösen und das Script neu starten? Im Script einfach abfragen ob dann "TimerLueftungsIntervallHeizraum" noch aktiv ist?
Ein Item mit expire-Option ist die bequemste Variante. Du setzt das Item in Deiner Rule z.B. auf ON. Wenn die Rule aufgerufen wird, prüfst Du, od das Item auf OFF steht. Ist das der Fall, läuft die Rule wie geplant weiter, ansonsten bricht sie ab. Der über expire eingestellte Timer setzt das Item nach Ablauf wieder auf OFF, so dass die Rule umgehend wieder aktiv ist. Wenn die Rule bei jedem changed Ereignis der beiden Messwerte triggert, musst Du Dic um sonst gar nichts mehr kümmern, denn die Rule macht alles alleine.
Jensemann_P hat geschrieben: ↑5. Aug 2021 15:07mein Handy-Autocorrect hatte da aus Timern Zimemrn gemacht.
