voda hat geschrieben: ↑22. Mär 2023 06:21
Mein Gedanke war in etwa so:
Schalter an -> Javascript welche die Heizung steuert
Schalter aus -> Regelung aus
Nein, so funktioniert das NICHT.
openHAB ist ein eventbasiertes System. Rules - egal, ob nun in JavaScript, DSL, Blockly (ebenfalls JavaScript...) - werden bei einem Event ausgeführt, erledigen ihren Job und sind beendet. Dir schwebt ein Script vor, welches dauerhaft läuft, solange der Schalter auf ON steht, das widerspricht der Arbeitsweise von openHAB.
Ich gehe mal davon aus, dass Du grundsätzlich vier Items hast:
1. HeizungFreigabe (also der Schalter, der die Regelung aktiviert)
2. Solltemperatur
3. Isttemperatur
4. Heizung ON/OFF (die eigentliche Heizung... Solange ON, wird es wärmer, solange OFF wird es nicht wärmer)
Nun reicht eine einfache Rule für die Regelung:
Code: Alles auswählen
rule "Heizung"
when
Item Isttemperatur changed or // Temperatur geändert
Item Solltemperatur changed or // Solltemperatur geändert
Item HeizungFreigabe changed // Heizung aktiviert/deaktiviert
then
var switchSoll = OFF // Sollzustand heizen (Vorgabe OFF
if(HeizungFreigabe.state == ON) { // Falls Heizung aktiviert
var soll = 20 // Vorgabe Solltemperatur
var ist = 22 // Vorgabe Isttemperatur
if(Solltemperatur.state instanceof Number) // falls gültiger Wert im Item Solltemperatur
soll = (Solltemperatur.state as Number).floatValue // setze Solltemperatur auf diesen Wert
if(Isttemperatur.state instanceof Number) // falls gültiger Wert im Item Isttemperatur
ist = (Isttemperatur.state as Number).floatValue // setze Isttemperatur auf diesen Wert
if(ist < soll) // falls ist kleiner soll
switchSoll = ON // ändere Sollzustand heizen
}
if(Heizung.state != switchSoll) // Falls Sollzustand heizen von Istzustand abweicht
Heizung.sendCommand(switchSoll.toString) // Schaltbefehl senden
end
Wenn Du Dich (sehr gut) in Regelungstechnik auskennst, kannst Du natürlich auch den Pi-Regler nehmen, der über den Marketplace zur Verfügung steht. Allerdings frisst der wohl nicht eben wenig Rechenkapazität, im Gegensatz zu obiger Rule, welche pro Durchlauf vermutlich < 10 ms benötigt. zu 99% wird die Rule durch die Änderung der Raumtemperatur getriggert, da kommt es also nur auf den Fühler an, bzw. wie dieser an openHAB angebunden ist, wie oft die Rule ausgeführt wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet