Garagentor KNX als Rollershutter?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
astrong
Beiträge: 39
Registriert: 10. Nov 2020 09:14
Answers: 0

Garagentor KNX als Rollershutter?

Beitrag von astrong »

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Garagentor KNX als Rollershutter?

Beitrag von Tokamak »

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
  • offen
  • abwärts
  • gestoppt
  • aufwärts
  • offen
  • undefiniert
"abwärts" und "aufwärts" bedeutet "Tor in Fahrt" und gesetzt, wenn der Timer gestartet wird, offen und geschlossen, wenn die entsprechende Endlage nach Ablauf des Timers errreicht wird, gestoppt, wenn während des Timer-Laufs ein Stopp kommt.

"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

astrong
Beiträge: 39
Registriert: 10. Nov 2020 09:14
Answers: 0

Re: Garagentor KNX als Rollershutter?

Beitrag von astrong »

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.

Benutzeravatar
udo1toni
Beiträge: 15242
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Garagentor KNX als Rollershutter?

Beitrag von udo1toni »

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:

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
Und eine Rule für die Rückmeldung:

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
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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

astrong
Beiträge: 39
Registriert: 10. Nov 2020 09:14
Answers: 0

Re: Garagentor KNX als Rollershutter?

Beitrag von astrong »

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.

Benutzeravatar
udo1toni
Beiträge: 15242
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Garagentor KNX als Rollershutter?

Beitrag von udo1toni »

Ja, das ist die openHAB1 DSL: In der UI sieht das so aus:

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
Natürlich kann man das auch über Blockly als JavaScript erstellen. Ich bin halt ein Textjunkie :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten