Seite 1 von 2
Button Switch
Verfasst: 1. Feb 2023 09:30
von Mac3
Hallo Zusammen,
ich bin neu bei OpenHab (3.4) und möchte meine Logos8 steuern. Die Verbindung zu den Logos habe ich über das AddOn PLC-Binding herstellen können. Da die Programme in der Logo auf Tasterimpulse und nicht auf Schaltzuständewechsel reagieren, benötige ich anstatt Toggle Switch einen Button Switch.
Wie kann ich einen richtigen Button einem Item zuweisen, sodass er nicht als Schalter sonder als Button unter der Standortansicht auftaucht?
Wie gesagt bin noch Laie in Openhab.
Besten Dank im Voraus.
mit freundlichen Grüßen
Marcel
Re: Button Switch
Verfasst: 1. Feb 2023 12:02
von udo1toni
Herzlich willkommen im Forum!
Die einfache Antwort lautet: gar nicht.
Die längere Version: Es gibt in openHAB für die gewünschte Aufgabe lediglich das Switch Item. Was Du möchtest, ist, dass das Switch Item immer einen ganz bestimmten Befehl sendet (mutmaßlich ON), nicht abwechselnd ON und OFF.
Das geht, indem Du die Darstellung des Widgets anpasst.
Ich bin mir nicht sicher, ob man das in der Main UI beeinflussen kann. Eine Möglichkeit wäre, dem Item eine Expiration Time zu setzen und es danach automatisch auf OFF zu setzen. In der Basic UI verwendet man dafür ein mapping, damit wird dann ein einzelnen Knopf gerendert (oder mehrere, wenn man will)
Auf der Übersichtsseite (oder anderen Seiten, die man selbst erstellt) kann man sich ein passendes Widget raus suchen, welches dann keinen Schalter rendert.
Re: Button Switch
Verfasst: 1. Feb 2023 15:21
von Mac3
Hallo Udo,
zunächst Danke für deine schnelle Rückmeldung.
Jetzt bin ich tatsächlich ein wenig verwirrt. Da es in der Openhab-App-Demoansicht im Widget Overview genau so ein Button gibt. (Siehe Anhang)
IMG_6947.jpg
Generell hast du recht, ich möchte eine gewissen Pulslänge einen On-Befehl senden. Dafür habe ich bisher ein Pulse Thing/Item angelegt mit einer Impluslänge von 150ms.
Soweit korrekt oder?
Welches mapping muss ich für die Basic UI auswählen?
Könntest du das mit der Main UI nochmal in anderen Worten erklären ?
Sorry
VG
Marcel
Re: Button Switch
Verfasst: 1. Feb 2023 17:32
von udo1toni
Ja, das ist eine Sitemap. In der Sitemap ist es kein Problem, so einen Knopf zu erzeugen. Auch im Main UI Overview (bitte nicht mit der Demoseite verwechseln...) kannst Du gezielt ein passendes Widget dafür verwenden. Die Standort, Geräte und Eigenschaften Seiten werden aber automatisch generiert. Hier wird es vermutlich keine Option geben, einen Knopf rendern zu lassen.
In der Basic UI geht das so:
Das erzeugt einen einzelnen Knopf mit der Beschriftung
Los!. Wird der Knopf gedrückt, wird der Befehl
ON an das Item
meinItem gesendet.
Re: Button Switch
Verfasst: 1. Feb 2023 18:40
von mad-mike
Moin.
Ich habe das mit einer Rule gelöst:
Code: Alles auswählen
when
Item Zentral_taster changed to ON // APP
then
tue etwas Befehl...
Zentral_taster.sendCommand(OFF) // APP Schalter
end
Also Wenn ich einen Schalter auf ON setze werden die Befehle nach einander abgearbeitet, und zum Schluss wird der Schalter wieder auf OFF gesetzt.
Und die Impulsteuerung habe ich so gelöst:
Code: Alles auswählen
when
Item HTTPURLThing_km6 changed
then
if(HTTPURLThing_km6.state != OFF)
Thread::sleep(500)
HTTPURLThing_km6.sendCommand(OFF)
end
Vielleicht nicht optimal, funktioniert aber wie gewünscht...
Re: Button Switch
Verfasst: 1. Feb 2023 18:53
von udo1toni
Der "Taster" ist also in Wirklichkeit ein externer Schalter, den Du zurücksetzen musst? Hier liegt die Sache ja etwas anders... openHAB soll lediglich den On-Befehl in Richtung Logo! senden, ich gehe davon aus, dass ein expliziter OFF-Befehl gar nicht notwendig ist. Aber wenn, dann macht man das besser über den Expiration Timer. Über Text definiert:
Code: Alles auswählen
Switch MeinTasterItem "Drück mich!" { channel="...", expire="1s,command=OFF" }
Muss der Befehl hingegen nicht gesendet werden, so reicht das Update:
Code: Alles auswählen
Switch MeinTasterItem "Drück mich!" { channel="...", expire="1s,state=OFF" }
Zugegeben - expire kann lediglich sekundengenau schalten, dafür ist es aber auch nur eine kleine Konfiguration.
Über die UI kann man den Parameter in den Metadaten setzen.
Re: Button Switch
Verfasst: 1. Feb 2023 20:12
von mad-mike
Der "Taster" ist also in Wirklichkeit ein externer Schalter, den Du zurücksetzen musst?
Ähm nein, es handelt sich in meinem Fall um ein ""Proxy Item"" Switch.
Zurücksetzen aus dem Grund: Wenn ich auf dem Habpanel, oder in der APP auf diesen ""Zentral"" schalter Drücke, setzt er sich ja nicht zurück.
deswegen die Rule.
Als Feedback kann man sehen, das ich den Schalter gedrückt habe, und sofort zurück springt..
Als ich nun den Beitrag von @Mac3 gelesen habe, dachte ich gleich an meine Umsetzung. = Proxy Item und Rule.

Re: Button Switch
Verfasst: 1. Feb 2023 21:16
von udo1toni
Wenn es ein Proxy Item ist, wäre postUpdate korrekt...
Re: Button Switch
Verfasst: 2. Feb 2023 07:52
von Mac3
udo1toni hat geschrieben: ↑1. Feb 2023 17:32
Ja, das ist eine Sitemap. In der Sitemap ist es kein Problem, so einen Knopf zu erzeugen. Auch im Main UI Overview (bitte nicht mit der Demoseite verwechseln...) kannst Du gezielt ein passendes Widget dafür verwenden. Die Standort, Geräte und Eigenschaften Seiten werden aber automatisch generiert. Hier wird es vermutlich keine Option geben, einen Knopf rendern zu lassen.
In der Basic UI geht das so:
Das erzeugt einen einzelnen Knopf mit der Beschriftung
Los!. Wird der Knopf gedrückt, wird der Befehl
ON an das Item
meinItem gesendet.
Der von dir angegebene Code funktioniert auch für die Sitemaps?
Schonmal Dankes! Ich werde es am Wochenende testen und mich ggf. nochmal melden.
Re: Button Switch
Verfasst: 2. Feb 2023 12:14
von udo1toni
Der von mir angegebene Code funktioniert
nur in der Sitemap.
Vielleicht noch zur Ergänzung: Das hier funktioniert auch:
Code: Alles auswählen
Switch item=meinNumberItem mappings=[15="15",1="eins",2="zwo",7="neun",57="drölf!!"]
Es gibt weder eine festgelegte Reihenfolge (bzw. die Schaltflächen werden eben in der angegebenen Reihenfolge gerendert) noch eine Begrenzung auf eine Anzahl Schaltflächen (außer der zur Verfügung stehende Platz auf dem Bildschirm). Das Widget heißt Switch, es kann aber auch mit Number Items und String Items umgehen:
Code: Alles auswählen
Switch item=meinStringItem mappings=[yes="Ja",NO="Nö","absolutely no"="keinesfalls!"]
Und im Beispiel zu sehen: Zuzuweisende Strings ohne Leerzeichen werden nicht in Anführungszeichen gesetzt, Strings mit Leerzeichen aber sehr wohl. Es wird die exakte Schreibweise verwendet.