Servus,
ich scheitere an einer Idee:
Mein Garagentor wird über ZWEI KNX Ausgänge gesteuert.
AUF/STOPP = 1/1/5
ZU/STOPP = 1/1/6
Zustandswerte gibts nur Offen oder Geschlossen und nix dazwischen
Ich möchte jetzt in der GUI keine zwei items haben und dachte, ich könnte es in einem rollershutter vereinen.
Gesagt, getan.
Der Rollershutter bedient aber nur 1/1/5 mit EIN und AUS.
Ich brauche aber Button Auf = 1/1/5 EIN
Button Zu = 1/1/6 EIN
Einen Aus Zustand brauche ich nicht
Wo hab ich nen Fehler :O
Garagentor KNX als Rollershutter?
-
- Beiträge: 39
- Registriert: 10. Nov 2020 09:14
Garagentor KNX als Rollershutter?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 183
- Registriert: 20. Aug 2019 08:37
- Wohnort: Aachen
Re: Garagentor KNX als Rollershutter?
Mit nur einem Item wird das nicht funktionieren, da die GAs keine eindeutige Funktion haben.
Ich habe das, übertragen auf deine Situation, so gelöst, dass ich SwitchItems nehme, um UP, DOWN und STOPP mitzubekommen, die ich dann je nach Status des Tors interpretiere. Den Status kannst du in einem Rollershutter-Item, aber auch in einen Number- oder String-Item pflegen.
Zudem musst du, wenn etwa DOWN gedrückt wird, einen Timer starten, der die Laufzeit des Tores überdeckt. Wenn in dieser Zeit kein Stopp kommt, kannst du "geschlossen" annehmen. Ähnlich UP.
Perfekt geht das in deinem Fall aber nicht, da du keine Information über die Endlagen "offen" oder "geschlossen" erhältst und daher das nur annehmen kannst. Wenn also das Tor aufgehalten wird, weil die Mülltonne druntersteht, kriegst du das nicht mit.
Unterschieden habe ich die Status
"undefiniert" habe ich, weil mir zusätzlich die Endlagen signalisiert werden. Erreicht das Tor nicht die Endlage, bevor der Timer abgelaufen ist, hat irgendwas das Tor aufgehalten.
Du musst berücksichtigen, dass das Schließen und das Öffnen des Tors unterschiedlich lange daueren kann.
Ich habe das, übertragen auf deine Situation, so gelöst, dass ich SwitchItems nehme, um UP, DOWN und STOPP mitzubekommen, die ich dann je nach Status des Tors interpretiere. Den Status kannst du in einem Rollershutter-Item, aber auch in einen Number- oder String-Item pflegen.
Zudem musst du, wenn etwa DOWN gedrückt wird, einen Timer starten, der die Laufzeit des Tores überdeckt. Wenn in dieser Zeit kein Stopp kommt, kannst du "geschlossen" annehmen. Ähnlich UP.
Perfekt geht das in deinem Fall aber nicht, da du keine Information über die Endlagen "offen" oder "geschlossen" erhältst und daher das nur annehmen kannst. Wenn also das Tor aufgehalten wird, weil die Mülltonne druntersteht, kriegst du das nicht mit.
Unterschieden habe ich die Status
- offen
- abwärts
- gestoppt
- aufwärts
- offen
- undefiniert
"undefiniert" habe ich, weil mir zusätzlich die Endlagen signalisiert werden. Erreicht das Tor nicht die Endlage, bevor der Timer abgelaufen ist, hat irgendwas das Tor aufgehalten.
Du musst berücksichtigen, dass das Schließen und das Öffnen des Tors unterschiedlich lange daueren kann.
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container
-
- Beiträge: 39
- Registriert: 10. Nov 2020 09:14
Re: Garagentor KNX als Rollershutter?
Hi,
habe ich schlecht erwähnt.
Ich habe eine Endlagen Kontrolle. Ich habe das Magic1000-3 mit der Zusatzkarte verbaut und frage über einen MDT Binäreingang den Status ab.
Das funktioniert. Aber wie gesagt habe ich keinen Fortschritt. Aber darum ging es mir nicht.
Ich wollte es mit einem ITEM realisieren aber wie du schon sagt, der Rollershutter kann das scheinbar nicht.
habe ich schlecht erwähnt.
Ich habe eine Endlagen Kontrolle. Ich habe das Magic1000-3 mit der Zusatzkarte verbaut und frage über einen MDT Binäreingang den Status ab.
Das funktioniert. Aber wie gesagt habe ich keinen Fortschritt. Aber darum ging es mir nicht.
Ich wollte es mit einem ITEM realisieren aber wie du schon sagt, der Rollershutter kann das scheinbar nicht.
- udo1toni
- Beiträge: 15242
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Garagentor KNX als Rollershutter?
Nicht nur scheinbar, sondern tatsächlich
- ist allerdings nicht dem Rollershutter anzulasten, das wäre, wie einen Hammer dafür zu beschimpfen, weil man damit das Holz nicht absägen kann.
Wenn Du Endlagenerkennung hast, macht das die ganze Sache etwas angenehmer. Du brauchst: vier Items (Auf, Zu, Offen, geschlossen) als Switch bzw. Contact Item. Diese verknüpfst Du mit den entsprechenden Channels, welche als switch bzw. contact Channel angelegt sind.
Außerdem brauchst Du noch ein Rollershutter Item für die UI und ein paar Rules.
Wenn Du schreibst AUF/STOPP bzw. ZU/STOPP, wäre die Frage, wie sich das Tor verhält, bei einem Impuls startet die Fahrt, beim nächsten Impuls stoppt die Fahrt, oder solange die 1 anliegt fährt das Tor, bei 0 stoppt das Tor (Totmannschaltung). Letztere Variante ist unüblich, aber es gibt Torsteuerungen, die das unterstützen...
Rule 1: Es kommt ein Befehl von openHAB in Richtung Tor. Die möglichen Befehle sind UP/DOWN/STOP/0-100. Letztere sind eher ein Sahnehäubchen, wäre aber ebenfalls realisierbar (das könnte man verwenden, um die Garage im Sommer zum Lüften nur einen Spalt weit zu öffnen). Hier aber die Variante ohne Positionsfahrten, mit Impulsen:
Und eine Rule für die Rückmeldung:
Die Rückmeldung löst ein Rücksetzen des echten Schaltausgangs aus. Falls dieser ohenhin schon auf Aus stehen wird, kannst Du hier auch ein postUpdate verwenden, um das Item in openHAB auf OFF zu bringen.
Es gibt hier natürlich ein paar Haken, das ist abhängig davon, wie die Steuerung funktioniert. Ich habe in der Steuer-Rule darauf gesetzt, dass der Status des echten Schaltausgangs den letzten gesendeten Status beibehält, so dass man darüber erkennen kann, ob das Tor gerade öffnet oder schließt (für die Stopp Funktion). Die Stopp Taste darf nur dann Auswirkungen haben, wenn das Tor gerade fährt. Wenn die Items swTorZu und swTorAuf den letzten Zustand nicht beibehalten, muss man sich den Zustand "Fahrt aktiv" auf andere Art merken und entsprechend zurücksetzen.
Das gezielte Schalten nach OFF, dann ON und wieder OFF ist für den Fall, dass der echte Schaltkontakt zu dem Zeitpunkt noch eingeschaltet ist.
Die saubere Lösung wäre aber vermutlich (bei Impuls Steuerung), die Kontakte automatisch wieder auf OFF zu setzen (z.B. mit dem Expiration Timer in den Metadaten der Items), dann muss natürlich die aktive Fahrt anderweitig gespeichert werden.
In der Oberfläche reicht danach das Item vGaragentor mit passendem dynamischen Icon, um sowohl den Zustand als auch die Steuerung abzubilden.

Wenn Du Endlagenerkennung hast, macht das die ganze Sache etwas angenehmer. Du brauchst: vier Items (Auf, Zu, Offen, geschlossen) als Switch bzw. Contact Item. Diese verknüpfst Du mit den entsprechenden Channels, welche als switch bzw. contact Channel angelegt sind.
Außerdem brauchst Du noch ein Rollershutter Item für die UI und ein paar Rules.
Wenn Du schreibst AUF/STOPP bzw. ZU/STOPP, wäre die Frage, wie sich das Tor verhält, bei einem Impuls startet die Fahrt, beim nächsten Impuls stoppt die Fahrt, oder solange die 1 anliegt fährt das Tor, bei 0 stoppt das Tor (Totmannschaltung). Letztere Variante ist unüblich, aber es gibt Torsteuerungen, die das unterstützen...
Rule 1: Es kommt ein Befehl von openHAB in Richtung Tor. Die möglichen Befehle sind UP/DOWN/STOP/0-100. Letztere sind eher ein Sahnehäubchen, wäre aber ebenfalls realisierbar (das könnte man verwenden, um die Garage im Sommer zum Lüften nur einen Spalt weit zu öffnen). Hier aber die Variante ohne Positionsfahrten, mit Impulsen:
Code: Alles auswählen
rule "Garage steuern"
when
Item vGaragentor received command
then
if(receivedCommand instanceof Number) {
logInfo("garage","Positionsfahrt nicht unterstützt!")
return;
}
switch(receivedCommand.toString) {
case "UP" : {
swTorZu.postUpdate(OFF)
swTorAuf.sendCommand(ON)
}
case "DOWN" : {
swTorAuf.postUpdate(OFF)
swTorZu.sendCommand(ON)
}
case "STOP" {
if(swTorAuf.state == ON) {
swTorZu.postUpdate(OFF)
swTorAuf.sendCommand(OFF)
swTorAuf.sendCommand(ON)
swTorAuf.sendCommand(OFF)
}
if(swTorZu.state == ON) {
swTorAuf.postUpdate(OFF)
swTorZu.sendCommand(OFF)
swTorZu.sendCommand(ON)
swTorZu.sendCommand(OFF)
}
}
}
end
Code: Alles auswählen
rule "Garage Rückmeldung"
when
Item cGarageAuf changed to CLOSED or
Item cGarageZu changed to CLOSED
then
if(triggeringItemName == "cGarageAuf"){
vGaragentor.postUpdate(0)
} else {
vGaragentor.postUpdate(100)
}
swTorZu.sendCommand(OFF)
swTorAuf.sendCommand(OFF)
end
Es gibt hier natürlich ein paar Haken, das ist abhängig davon, wie die Steuerung funktioniert. Ich habe in der Steuer-Rule darauf gesetzt, dass der Status des echten Schaltausgangs den letzten gesendeten Status beibehält, so dass man darüber erkennen kann, ob das Tor gerade öffnet oder schließt (für die Stopp Funktion). Die Stopp Taste darf nur dann Auswirkungen haben, wenn das Tor gerade fährt. Wenn die Items swTorZu und swTorAuf den letzten Zustand nicht beibehalten, muss man sich den Zustand "Fahrt aktiv" auf andere Art merken und entsprechend zurücksetzen.
Das gezielte Schalten nach OFF, dann ON und wieder OFF ist für den Fall, dass der echte Schaltkontakt zu dem Zeitpunkt noch eingeschaltet ist.
Die saubere Lösung wäre aber vermutlich (bei Impuls Steuerung), die Kontakte automatisch wieder auf OFF zu setzen (z.B. mit dem Expiration Timer in den Metadaten der Items), dann muss natürlich die aktive Fahrt anderweitig gespeichert werden.
In der Oberfläche reicht danach das Item vGaragentor mit passendem dynamischen Icon, um sowohl den Zustand als auch die Steuerung abzubilden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 39
- Registriert: 10. Nov 2020 09:14
Re: Garagentor KNX als Rollershutter?
Danke dir.
ich scheitere an einem Rule Syntax.
ich kenne bislang nur OH4 Rule syntax:
configuration: {}
triggers: []
conditions: []
actions: []
wenn ich deinen kopiere, kommen nur ganz viele syntax Fehler.
ich scheitere an einem Rule Syntax.
ich kenne bislang nur OH4 Rule syntax:
configuration: {}
triggers: []
conditions: []
actions: []
wenn ich deinen kopiere, kommen nur ganz viele syntax Fehler.
- udo1toni
- Beiträge: 15242
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Garagentor KNX als Rollershutter?
Ja, das ist die openHAB1 DSL: In der UI sieht das so aus:
Natürlich kann man das auch über Blockly als JavaScript erstellen. Ich bin halt ein Textjunkie 
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: vGaragentor
type: core.ItemCommandTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/vnd.openhab.dsl.rule
script: |-
if(receivedCommand instanceof Number) {
logInfo("garage","Positionsfahrt nicht unterstützt!")
return;
}
switch(receivedCommand.toString) {
case "UP" : {
swTorZu.postUpdate(OFF)
swTorAuf.sendCommand(ON)
}
case "DOWN" : {
swTorAuf.postUpdate(OFF)
swTorZu.sendCommand(ON)
}
case "STOP" : {
if(swTorAuf.state == ON) {
swTorZu.postUpdate(OFF)
swTorAuf.sendCommand(OFF)
swTorAuf.sendCommand(ON)
swTorAuf.sendCommand(OFF)
}
if(swTorZu.state == ON) {
swTorAuf.postUpdate(OFF)
swTorZu.sendCommand(OFF)
swTorZu.sendCommand(ON)
swTorZu.sendCommand(OFF)
}
}
}
type: script.ScriptAction
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: cGarageAuf
type: core.ItemStateChangeTrigger
- id: "2"
configuration:
itemName: cGarageZu
type: core.ItemStateChangeTrigger
conditions: []
actions:
- inputs: {}
id: "3"
configuration:
type: application/vnd.openhab.dsl.rule
script: |-
if(triggeringItemName == "cGarageAuf") {
vGaragentor.postUpdate(0)
} else {
vGaragentor.postUpdate(100)
}
swTorZu.sendCommand(OFF)
swTorAuf.sendCommand(OFF)
type: script.ScriptAction

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet