Openhab Taster und Status

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
Smather
Beiträge: 8
Registriert: 22. Nov 2019 09:55
Answers: 0

Openhab Taster und Status

Beitrag von Smather »

Hallo zusammen,
ich hoffe Ihr könnt mich bei meiner Fragestellung unterstüzen und helfen.
Ich habe meine Visualisierung/Programmierung in Openhab 2 schon soweit mit Taster funktion am LAufen. Jetzt ist es allerdings so, dass ich sobald ich den Taster drücke nach einer Zeit (500ms) den Wert von On wieder auf OFF stelle. Ich brauche es aber so dass solange in der APP der Taster gedrückt ist ein ON geschickt wird, und nach loslassen des Tasters ein OFF. Sozusagen als reine Tasterfunktion Tippen und halten = ON, Loslassen = Off.
Weiterhin habe ich in der APP ja den STatus des Tasters, der so auh noch nicht funktioniert. Diesen möchte ich über modbus von meiner WAGO Steuerung auch über ein Bit beeinflussen. Sozusagen den Status der Lampe meines Wago Systems im Status des Tasters anzeigen.

Ich habe das ganze wie folgt an einem Beispiel konfiguriert:

----------------------------------------------------------------------------------------------------------------------------------
.rules:

Code: Alles auswählen

rule "WZ_Licht"
when
    Item WZ_Licht received command ON
then
	Thread::sleep(500)
    WZ_Licht.sendCommand(OFF)
end
----------------------------------------------------------------------------------------------------------------------------------
.sitemap:

Code: Alles auswählen

Frame label="Licht" {
Switch item=WZ_Licht label="Wohnzimmer" mappings=[ON="An/Aus"]
}
----------------------------------------------------------------------------------------------------------------------------------
.items:

Code: Alles auswählen

Switch WZ_Licht"Wohnzimmer" (EG_Wohnzimmer, EG)  [ "Switchable" ] { channel="modbus:data:Wago:coils:Bit5:switch" }
----------------------------------------------------------------------------------------------------------------------------------
.things:

Code: Alles auswählen

Bridge modbus:tcp:Wago [ host="192.168.178.222", port=502, id=1 ] {
// Inputregister lesen
Bridge poller inputRegisters [ start=12308, length=2, refresh=5000, type="input" ] {
Thing data Float1 [ readStart="12308", readValueType="float32_swap"]
}
Bridge poller inputRegistersRoll [ start=12310, length=2, refresh=5000, type="input" ] {
Thing data B_Pos [ readStart="12310", readValueType="float32_swap" ]
}
// BOOL Bytes lesen und schreiben
Bridge poller coils [ start=12528, length=43, refresh=300, type="coil" ] {
Thing data Bit1 [ readStart="12528", readValueType="bit" , writeStart="12528", writeValueType="bit", writeType="coil"]
Thing data Bit2 [ readStart="12529", readValueType="bit" , writeStart="12529", writeValueType="bit", writeType="coil"]
Thing data Bit3 [ readStart="12530", readValueType="bit" , writeStart="12530", writeValueType="bit", writeType="coil"]
Thing data Bit4 [ readStart="12531", readValueType="bit" , writeStart="12531", writeValueType="bit", writeType="coil"]
Thing data Bit5 [ readStart="12532", readValueType="bit" , writeStart="12532", writeValueType="bit", writeType="coil"]
Thing data Bit6 [ readStart="12533", readValueType="bit" , writeStart="12533", writeValueType="bit", writeType="coil"]
Thing data Bit7 [ readStart="12534", readValueType="bit" , writeStart="12534", writeValueType="bit", writeType="coil"]
}
}
----------------------------------------------------------------------------------------------------------------------------------

Wie bekomme ich die richtige Tasterfunktion hin inkl. der Anzeige des Status?
Ich freue mich auf eure Unterstützung.

Besten Dank für Eure Rückmeldung

Viele Grüße
Matthias
Zuletzt geändert von seppy am 18. Dez 2019 13:50, insgesamt 1-mal geändert.
Grund: Code Tags eingefügt

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

Re: Openhab Taster und Status

Beitrag von udo1toni »

Das geht so nicht. Es gibt kein Event "Taste losgelassen", welches so auszuwerten wäre.

Oder meinst Du eine physische Taste (also über irgendein Binding in openHAB eingebunden)? Dann wäre es eher kontraproduktiv, über eine Rule den Taster automatisch wieder zurückzusetzen. Stattdessen müsstest Du in Deinem Bussystem dafür sorgen, dass das Loslassen der Taste zu einem OFF führt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Smather
Beiträge: 8
Registriert: 22. Nov 2019 09:55
Answers: 0

Re: Openhab Taster und Status

Beitrag von Smather »

Hallo Udotoni,
schade dass es nicht so einfach geht. Ich dachte ich hab da was gelesen, dass es mit einem System Trigger Channel Type (Channel Type ID: rawbutton bzw. button) gehen könnte. Wenn ich das loslassen der Taste auch als Variable über modbus in mein WAGO system bekomme, dann könnte ich die Funktion sicherlich auch da realisieren. Oder vielleicht geht es doch über die o.g. Trigger Möglichkeit? Wie würden denn da so die Optionen aussehen bzw. wie kann da die Programmierung/Einrichtung in OH aussehen? Hintergrund: Ich brauch diese Funktion "kurzes und langes/dauerhaftes drücken" für meine Rollo Steuerung in meinem Wago System.

Mein zweites Problem an dem ich nicht weiterkomme ist der Status des Tasters/Schalters. Ich habe Taster in OH (als Item und dann in der Sitemap über Rule gesteuert) eingerichtet. siehe unten die code schnipsel (kann auch gerne mehr zeigen falls notwendig). Die Tasterfunktion aus OH heraus benötige ich, da ich in meiner Wago die Lampen schalte und dafür als Eingang einen kurzen Impuls benötige. Dafür habe ich mir in der Wago Steueurng eine eigene Funktion gebaut. Hierdurch ist es dann möglich, meine Lampen über Wago, KNX und auch über OH Visualisierung zu schalten. Also über Systemgrenzen hinaus schaltbar.

.things code:

Code: Alles auswählen

//Modbus Binding
Bridge modbus:tcp:Wago [ host="x.x.x.x", port=502, id=1 ] {

// BOOL Bytes lesen und schreiben
Bridge poller coils [ start=12528, length=20, refresh=300, type="coil" ] {
Thing data Bit1 [ readStart="12528", readValueType="bit" , writeStart="12528", writeValueType="bit", writeType="coil"]
Thing data Bit2 [ readStart="12529", readValueType="bit" , writeStart="12529", writeValueType="bit", writeType="coil"]
Thing data Bit3 [ readStart="12530", readValueType="bit" , writeStart="12530", writeValueType="bit", writeType="coil"]
Thing data Bit4 [ readStart="12531", readValueType="bit" , writeStart="12531", writeValueType="bit", writeType="coil"]
Thing data Bit5 [ readStart="12532", readValueType="bit" , writeStart="12532", writeValueType="bit", writeType="coil"]
Thing data Bit6 [ readStart="12533", readValueType="bit" , writeStart="12533", writeValueType="bit", writeType="coil"]
Thing data Bit7 [ readStart="12534", readValueType="bit" , writeStart="12534", writeValueType="bit", writeType="coil"]
}
}
.item code:

Code: Alles auswählen

Group:Switch gPulse
Switch Licht_WZ1 "Wohnzimmer 1" (gPulse) { channel="modbus:data:Wago:coils:Bit5:switch" }
Switch Licht_Essen "Esstisch" (gPulse)  { channel="modbus:data:Wago:coils:Bit6:switch" }
Switch Licht_Kueche "Küche Decke" (gPulse)  { channel="modbus:data:Wago:coils:Bit7:switch" }
.sitemap code:

Code: Alles auswählen

sitemap modbus label="Modbus" {
Frame label="Licht" {
Switch item=Licht_WZ1 label="Wohnzimmer 1" mappings=[ON="An/Aus"] 
Switch item=Licht_Essen label="Esstisch" mappings=[ON="An/Aus"]
Switch item=Licht_Kueche label="Küche Decke" mappings=[ON="An/Aus"]
}
}
.rules code:

Code: Alles auswählen

rule "Taster"
when
    Member of gPulse received command ON
then
    val sItem = gPulse.members.filter[i|i.name.endsWith(triggeringItem.name.split("_").get(1))].head
    Thread::sleep(500)
    sItem.sendCommand(OFF)
    //sItem.sendCommand(if(sItem.state != ON) ON else OFF)
end
Das Tasten funktioniert sehr gut.
So nun zu dem zweiten Thema:
Es gibt ja neben dem Schalter auch ein Ein/Aus Status bzw. auch Taster Symbol welches Rot und grün durch aktivieren des Tasters seinen Status ändert. Ich will den Status dieser Anzeige durch ein Steuer Bit aus meiner Steuerung beeinflussen, welches den Status meiner geschalteten Lampe in meinem Wago System darstellt. Damit erspare ich mir ein weiteres Item für den Status der Lampe in OH.

Könnt Ihr da weiterhelfen?

Vielen Vielen Dank schonmal im Voraus

Grüße
Matthias

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

Re: Openhab Taster und Status

Beitrag von udo1toni »

Ich hab das ja im anderen Thread schon erwähnt: üblicherweise bildet man Ausgänge als Items ab und steuert diese direkt an. Letztlich gibt es auf Wago-Seite ja Ausgänge, die dauerhaft entweder low oder high sind, die können direkt gesetzt oder gelöscht werden, der Zustand kann abgefragt werden.
Ich habe selbst kein Wago System, aber SPS funktionieren doch eh alle ähnlich.
Für eine Umsetzung Tastenimpuls -> Latch verwendet man ein Flip-Flop. Das Flip-Flop hat einen Takteingang (der wird mit der Taste verbunden), einen Setzeingang und einen Rücksetzeingang. Je nach Implementation braucht es also noch zwei Impulsgeber und ein NOT vor dem einen Impulsgeber. Dann steuert ein Befehl ON den Setzeingang mit einem Impuls, ein OFF steuert den Rücksetzeingang mit einem Impuls. Weiterhin hat das Flip-Flop einen Ausgang (und vermutlich einen invertierten Ausgang, den wir nicht benötigen). Dieser Ausgang steuert das Relais an, und dieser Ausgang muss auch an openHAB als Status zurückgegeben werden (er sollte auch lesbar sein...).
Die Taste gibt nach Wago ein high- und ein low- Signal ab. Beides muss nach openHAB geschickt werden, damit hast Du die Taste in openHAB zur Verfügung.

Aber um noch mal einen Schritt zurück zu gehen: Du solltest die Wago-Seite so weit konfigurieren, dass alle Grundfunktionen (Licht an/aus, Rollladen hoch/stop/runter usw.) komplett ohne openHAB funktionieren. Ja, sogar Positionsfahrten sollten in ihrer Grundfunktion in Wago gelöst werden, so dass openHAB nur einen Zahlenwert von 0 bis 100 schicken muss, um einen Rollladen in eine bestimmte Position zwischen offen und geschlossen zu fahren.

openHAB ist eine highLevel Anwendung und nicht dazu gedacht, lowLevel Problemne zu lösen, auch wenn dies im Einzelfall möglich sein könnte.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

RSG
Beiträge: 7
Registriert: 21. Jan 2021 11:53
Answers: 0

Re: Openhab Taster und Status

Beitrag von RSG »

Hallo, wird die Hilfe noch benötigt?
ich habe das für mein Roma Garagentor es so gemacht...
Bild
ImpulsGaragentor.png
Sieht man das Bild?
Ich habe eine Rule erstellt bei dem der KNX Aktor Ausgang zurück gesetzt wird, wenn sich der Status ändert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten