Rolltor Steuerung mit KNX und Siemens Logo 8

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

JFKOGLER
Beiträge: 14
Registriert: 31. Jul 2020 09:51
Answers: 0

Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von JFKOGLER »

hallo zusammen, ich bin relativ neu im openhab umfeld und habe leider ein paar fragen die ich alleine nicht lösen kann...

vlt kann mir ja hier jemand helfen...

my config:

Release = Raspbian GNU/Linux 10 (buster)
Kernel = Linux 4.19.118-v7l+
Platform = Raspberry Pi 4 Model B Rev 1.2
openHAB 2.5.6-2 (Release Build)

rolltor wird gesteuert und überwacht von siemens logo 8 und knx

jetzt wirds ein wenig kompliziert:

knx wird verwendet und das rolltor zu steuern (über siemens logo 8), d.h. knx triggert einen impuls an logo und diese schaltet den impuls auf
den rolltor motor durch, je nach zustand fährt das rolltor auf oder zu..

logo 8 liefert gleichzeitig über 2 digitale inputs den zustand es rolltors zurück,

input 1 = tor offen (true/false)
input 2 = tor zu (true/false)

es gibt noch einen 3ten digitalen input, der zeigt aber nur an ob die warnleuchte eingeschaltet ist oder nicht...

dieses konstrukt möchte ich nun mit openhab2 abbilden

nun zu meinen fragen:
  • wie kann ich die 2 digitalen inputs von logo 8 in basic ui zu einem "zustands"-item verheiraten?
    zb. Roll-Tor-Status offen / geschlossen ??
  • wie kann ich einen button in basic ui bauen der ein command an das knx binding (1ne gruppenadresse) schickt?
folgende files hab ich erstellt, mit hilfe von homebuilder und paper ui

Code: Alles auswählen

home.items

Code: Alles auswählen

    Group           Home                        "HOME"                      <house>                                           ["Building"]
    Group           OU                          "Aussen"                    <garden>          (Home)                          ["Outdoor"]
    Group           OU_Entryway                 "Zufahrt"                   <frontdoor>       (Home, OU)                      ["Room"]
    Contact         OU_Entryway_Door            "Roll-Tor"                  <frontdoor>       (OU_Entryway, gDoor)            ["Door"]                        {channel="knx:device:1f849a7c:200"}
    Contact         OU_Entryway_Logo8_I2        "Rolltor Warnleuchte" 		<light>           (OU_Entryway, gDoor)            ["Lighting", "Switchable"]      {channel="plclogo:digital:Logo8:Inputs:I2"}
    Contact         OU_Entryway_Logo8_I3        "Rolltor Offen"             <frontdoor>       (OU_Entryway, gDoor)            ["Door"]                        {channel="plclogo:digital:Logo8:Inputs:I3"} 
    Contact         OU_Entryway_Logo8_I4        "Rolltor Geschlossen" 		<frontdoor>       (OU_Entryway, gDoor)            ["Door"]                        {channel="plclogo:digital:Logo8:Inputs:I4"}
und

Code: Alles auswählen

home.sitemap

Code: Alles auswählen

    sitemap home label="home" {
        Frame label="Aussen" icon="garden" {
            Group item=OU_Entryway
            Group item=OU_FrontYard
        }
    }
die kontake habe ich nur eingebunden um den aktuellen zustand direkt zu sehen,

Code: Alles auswählen

OU_Entryway_Logo8_I3 >> logo 8 status open >> rolltor geschlossen
+

Code: Alles auswählen

OU_Entryway_Logo8_I4 >> logo 8 status closed >> rolltor geschlossen
bzw.

Code: Alles auswählen

OU_Entryway_Logo8_I3 >> logo 8 status closed >> rolltor offen
+

Code: Alles auswählen

OU_Entryway_Logo8_I4 >> logo 8 status open >> rolltor offen

ich hab verschiedenste ansätze probiert, auch aus div. foren

zb mit folgenden .items

Code: Alles auswählen

    Switch mySwitch 	"Roll-Tor Status" 		(OU_Entryway, gDoor)
    Contact myContact 	"Roll-Tor Status"		["Door"] {channel=">[plclogo:digital:Logo8:Inputs:I3],<[plclogo:digital:Logo8:Inputs:I4]"}

und .sitemap

Code: Alles auswählen

    sitemap home label="home" {
        Frame label="Aussen" icon="garden" {
            Group item=OU_Entryway
            Group item=OU_FrontYard
            Switch item=mySwitch label="Door closed" icon="door-closed" mappings=[ON="ON"] visibility=[myContact==CLOSED]
            Switch item=mySwitch label="Door open"   icon="door-open"   mappings=[ON="ON"] visibility=[myContact==OPEN]
        }
    }
aber irgendwie bekomm ichs nicht hin, bzw. gar keine änderung des status

geht sowas nur mit rules? bzw wie verknüpfe ich 2 item-zustände zu einem?

und wie bekomm ich sauber einen button hin in basic ui?

hat jemand eine idee?

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

Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von udo1toni »

Also, grundsätzlich ist ein Contact Item per Definition ausschließlich ein Eingang.

Die korrekte Adresse des Inputs muss natürlich bekannt sein :) und im Allgemeinen ist die Konfiguration von openHAB kein Ratespiel ;)

Heißt: schau bitte mal genau nach, welche Information im Thing/Channel einzutragen ist.

Wenn Du die Verknüpfung zum Item über eine *.items Datei machen willst, kannst Du den korrekten Link in Paper UI direkt vom Channel in die Zwischenablage kopieren lassen (das kleine Symbol mit den zwei Seiten übereinander)
Alternativ kannst Du Items automatisch von VSCode erzeugen lassen, dann ist der Link zum Channel schon korrekt gesetzt und Du musst nur noch Itemnamen, -label und -Gruppen anpassen.


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

JFKOGLER
Beiträge: 14
Registriert: 31. Jul 2020 09:51
Answers: 0

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von JFKOGLER »

servus udo,

das freut mich den profi persönlich aktiviert zu haben *gg*

vlt hab ich das falsch rüber gebracht:

hab 2 probleme:

1,

ich hab 2 items vom typ contact, diese 2 items werden von logo 8 mit zuständen (open / closed) befüllt, das ging lt. elektriker nicht anders, da die logo 8 jeweils den zustand rolltor offen / geschlossen über 2 verschiede reed-kontakte bekommt..

daher:

Code: Alles auswählen

digital input 1 = rolltor offen  (ja / nein)
digital input 2 = rolltor geschlossen ( ja / nein)
diese beiden contact zustände bekomme ich auch sauber in paper ui und basic ui (zur kontrolle) angezeigt

was ich aber möchte ist folgendes:

ein eigenes item zb. Roll-Tor-Status und dieses item bekommt seinen Zustand (offen / geschlossen / in Bewegung...) über

eine logische Verknüpfung von

Code: Alles auswählen

OU_Entryway_Logo8_I3 >> logo 8 status open >> rolltor geschlossen
+
OU_Entryway_Logo8_I4 >> logo 8 status closed >> rolltor geschlossen

>> ergibt item Roll-Tor-Status = geschlossen

bzw

Code: Alles auswählen

OU_Entryway_Logo8_I3 >> logo 8 status closed >> rolltor offen
+
OU_Entryway_Logo8_I4 >> logo 8 status open >> rolltor offen

>> ergibt item Roll-Tor-Status = offen

wie schaff ich das?

2, das mit dem button klären wir vlt später

danke & lg

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

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von udo1toni »

Ah. Also, abgesehen davon, dass ich das eher direkt in der Logo! abbilden würde, musst Du dafür drei Items verwenden.

1. Item Contact OU_Entryway_Logo8_I3 (vermutlich obere Endlage)
2. Item Contact OU_Entryway_Logo8_I4 (vermutlich untere Endlage)
3. Item String oder Number Rolltor (Dies ist ein Proxy Item ohne Link zu einem Binding)

Dazu eine Rule (hier mit dem Proxy Item als Number):

Code: Alles auswählen

rule "Zustand Rolltor setzen"
when
    Item OU_Entryway_Logo8_I3 changed or
    Item OU_Entryway_Logo8_I4 changed
then
    var Number nZustand = 0
    if(OU_Entryway_Logo8_I3.state == CLOSED && OU_Entryway_Logo8_I4.state == OPEN)
        nZustand = 1
    if(OU_Entryway_Logo8_I3.state == OPEN && OU_Entryway_Logo8_I4.state == OPEN)
        nZustand = 2
    if(OU_Entryway_Logo8_I3.state == OPEN && OU_Entryway_Logo8_I4.state == CLOSED)
        nZustand = 3
    if(OU_Entryway_Logo8_I3.state == CLOSED && OU_Entryway_Logo8_I4.state == CLOSED)
        nZustand = 4
    if((Rolltor.state != nZustand)
        Rolltor.postUpdate(nZustand)
end
Nun hat das Proxy Item 4 verschiedene Zustände, welche mit einem Mapping auch im Klartext angezeigt werden können:

rolltor.map:

Code: Alles auswählen

0=Kontaktfehler!
1=offen
2=zwischendrin
3=geschlossen
4=FEHLER!
-=-
NULL=unbekannt
Wenn Du nun das Label von Rolltor so definierst:

Code: Alles auswählen

Number Rolltor "Rolltor [MAP(rolltor.map):%s]"
sollte in Deiner Sitemap die Position des Tors jederzeit angezeigt werden.
Wie Du siehst, gibt es insgesamt sieben mögliche Meldungen. 0 -> mindestens einer der Kontakte meldet weder OPEN noch CLOSED, also ist das Item (noch) nicht gefüllt, also lässt sich auch keine zuverlässige Aussage über die Position treffen (oder zumindest gibt es eine Restunsicherheit...)
1 -> Tor ist offen, da obere Endlage erreicht.
2 -> Tor befindet sich irgendwo zwischen den Endlagen (das heißt aber nicht, dass das Tor gerade fährt!!!)
3 - > Tor befindet sich in der unteren Endlage
4 -> Beide Kontakt sind geschlossen, also liegt ein Fehler vor.
- und NULL -> Das Item wurde (noch) nicht von der Rule auf einen Status gesetzt.

Man könnte natürlich auch ein String Item benutzen und den Status direkt schreiben, aber sowohl NULL als auch - lassen sich so nicht in eine entsprechende Meldung umsetzen, außerdem möchtest Du vielleicht ja irgendwo den Status auswerten, und eine Abfrage gegen eine Zehl ist einfacher als gegen einen String.

Wenn Du mit Restzweifeln über die Meldung leben kannst, gibt es noch eine leicht andere Variante:

Code: Alles auswählen

rule "Zustand Rolltor setzen"
when
    Item OU_Entryway_Logo8_I3 changed or
    Item OU_Entryway_Logo8_I4 changed
then
    var Number nZustand = 0
    if(OU_Entryway_Logo8_I3.state == CLOSED && OU_Entryway_Logo8_I4.state != COSED)
        nZustand = 1
    if(OU_Entryway_Logo8_I3.state == OPEN && OU_Entryway_Logo8_I4.state == OPEN)
        nZustand = 2
    if(OU_Entryway_Logo8_I3.state != CLOSED && OU_Entryway_Logo8_I4.state == CLOSED)
        nZustand = 3
    if(OU_Entryway_Logo8_I3.state == CLOSED && OU_Entryway_Logo8_I4.state == CLOSED)
        nZustand = 4
    if((Rolltor.state != nZustand)
        Rolltor.postUpdate(nZustand)
end
Es gibt immer noch sieben Möglichkeiten, nun reicht es aber, wenn genau einer der beiden Endschalter CLOSED ist (und der andere eben nicht), um die Endlage zu melden. Es kommt ein wenig darauf an, wie die Kontakte gemeldet werden, ob die zweite Variante vielleicht sogar besser ist als die erste.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

JFKOGLER
Beiträge: 14
Registriert: 31. Jul 2020 09:51
Answers: 0

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von JFKOGLER »

servus udo, danke für die ausführungen,

werd das heute abend testen...

ja logo wär einfacher ich weiss, möcht aber kein geld für die logo software ausgeben...

über rules hab ich auch schon nachgedacht aber bin über folgendes gestolpert:

eine rule wird ja nur bei änderung eines zustandes aktiv,

wie bekomm ich aber eine richtige zustands-anzeige nach aufrufen der der basic ui zum ersten mal nach erfolgter openhab config? wenn sich das rolltor zb stundenlang nicht bewegt hat?

danke & lg

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

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von udo1toni »

openHAB ist eine Anwendung, die dauerhaft als Server laufen sollte. Der Start auf einem Raspberry mit typischer Konfiguration dauert mehrere Minuten. Ergo gibt es nur kurze Zeitfenster, in denen man openHAB z.B. mal neu startet, weil man etwas konfiguriert hat, ansonsten läuft das durch.

Die Zustände der Kontakte sollte das Logo Binding beim Start von openHAB aktiv abfragen. Anschließend sind die Items auf dem aktuellen Stand. Jegliche Änderung der Kontakte bekommt openHAB dann ebenfalls mit.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

JFKOGLER
Beiträge: 14
Registriert: 31. Jul 2020 09:51
Answers: 0

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von JFKOGLER »

hallo udo, danke für deine infos

hab mich jetzt mit den rules gespielt...leider kein erfolg ( hab auch eine bedinnung eingebaut "system started") damit beim reboot die regel auch ausgeführt wird...kein erfolg, das proxy number item bleibt immer auf state=NULL

dann hab ich test-weise eine timer-rule erstellt, welche jede minute ausgeführt wird

Code: Alles auswählen

rule TimeToAlarm
  when
    Time cron "0 0/1 * 1/1 * ? *"
  then
      logInfo("Timer Rule", "Rule triggered status!")
      var Number nZustand = 0
      if(OU_Logo8_I3.state == CLOSED && OU_Logo8_I4.state == OPEN)
          nZustand = 1
      if(OU_Logo8_I3.state == OPEN && OU_Logo8_I4.state == OPEN)
          nZustand = 2
      if(OU_Logo8_I3.state == OPEN && OU_Logo8_I4.state == CLOSED)
          nZustand = 3
      if(OU_Logo8_I3.state == CLOSED && OU_Logo8_I4.state == CLOSED)
          nZustand = 4
      if((OU_DOORSTATE.state != nZustand)
          OU_DOORSTATE.postUpdate(nZustand)
end
aber in keinen log-files ein eintrag mit logInfo etc...

könnte es sein das bei mir rules "abgeschaltet" sind?

wie könnt ich rules sonst testen?

danke & lg

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von Darkwin101 »

Also grundsätzlich zu deinen if Anweisung ist Anzumerken das du mit {} eingeklammert werden muss was bei Erfüllung der if Abfrage ausgeführt werden soll ansonsten wird alles einfach hintereinander Abgefragt also als Beispiel:
if(OU_Logo8_I3.state == CLOSED && OU_Logo8_I4.state == OPEN){
nZustand = 1}
Erst so wird nZustand = 1 ausgeführt nur wenn die if Anweisung erfüllt ist ohne die Klammer wird es immer ausgeführt.

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

Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von udo1toni »

Nein, das stimmt so nicht.

Klammern werden nur dann benötigt, wenn mehr als ein Befehl vom if-Statement abhängt. Also z.B.

Code: Alles auswählen

if(true){
    Item1.sendCommand(ON)
    Item2.sendCommand(OFF)
}
Außerdem betrifft das nicht die logInfo-Anweisung, die ist ja vor dem if-Statement.

Aber da keine Logzeile generiert wird (das landet in openhab.log, wird aber in frontail auch angezeigt), gibt es wohl ein grundsätzliches Problem.

Schau bitte mal in das log, ob die Datei überhaupt geladen wird (das wird normalerweise wenige Sekunden nach dem Speichern passieren und auf jeden Fall geloggt)

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

JFKOGLER
Beiträge: 14
Registriert: 31. Jul 2020 09:51
Answers: 0

Re: Rolltor Steuerung mit KNX und Siemens Logo 8

Beitrag von JFKOGLER »

hallo zusammen,

danke für die tips..

hab mal die timer.rule umgebaut

Code: Alles auswählen

rule TimeToAlarm
  when
    Time cron "0 0/1 * 1/1 * ? *"
  then
      logInfo("Timer Rule", "Rule triggered status!")
end
gespeichert, wird aber im log nicht angezeit das die rule geladen wird, weder im openhab.log noch in der web-log ansicht

auch nicht in der karaf-console

was könnts da haben?

lg

Antworten