Lichtschalter mit OPenHAB Rule

  • Liebe Community, ich betreibe OpenHAB 3 im Docker Container auf einer Synology Diskstation. Einbindung Livisi Zentrale in OH funktioniert wie hier in der Community beschrieben. Alle Geräte können auch in der Openhab Basic UI bedient werden. Ich scheitere aber seit Wochen an einer einfachen Rule die ich in Livisi nutze, aber nicht auf OpenHAB umgesetzt bekomme.

    Ich möchte ein Deckenlicht wie folgt schalten: Egal ob die Channels Button1 oder Button2 ein "PRESSED" oder "SHORT-PRESSED" liefern soll das Deckenlicht den Zustand ändern. D.h. egal wo ich wie lange auf den Taster drücke soll sich das Licht mit jedem Druck von An zu Aus oder von Aus zu AN ändern, je nachdem in welchem Zustand es vorher war. Leider mache ich irgendetwas in der Programmierung falsch. Es würde mir sehr helfen wenn jemand hier den Codeschnipsel für einfaches Licht an/aus posten könnte. Vielen Dank!

  • Hallo!


    Ich habe das so verstanden, dass du einen ISS2 (UP-Schalter) als Gerät hast.


    Ich habe das so bei mir gelöst:

    1. In Livisi ein Szenario erstellet, welches auf Taster 1 oder 2 hört und ein/ausschaltet - easy (s. Screenshot 1)
    2. in OH kannst du ein Standard-Widget oder was extravagantes nehmen, welches auf das Item (Thing-Channel) "switch" hört. (s. Screenshot 2)

    schon gehts 😊 .

    Eine Rule in OH brauche ich somit nicht.


    Hoffe das hilft etwas.

    Viele Grüße, Tom


  • Müsste im Prinzip so aussehen:



    Ist natürlich schwierig genau zu sagen, da wir keine Item-Namen etc. von dir haben.

  • Erstmal vielen Dank für eure Antworten. Ich hatte leider die letzten Tage keine Zeit an dem Thema weiter zu arbeiten. Daher meine späte Antwort.


    CharlyT : Die Funktion über Livisi geht auch bei mir. Das steuern über Openhab Basic UI geht auch. Was nicht funktioniert ist jegliche Art von Rule. Ich möchte alle Livisi Automations sukzessive auf Openhab umsetzen. Ich habe auch bereits zusätzlich zur Livisi Bridge eine Raspberrymatic aufgesetzt und die Livisi Geräte die kaputt gegangen sind durch Homematic IP erstetzt. Über Openhab möchte ich nun beide Welten steuern und Schritt für Schritt auf Homematic IP Geräte umsteigen.


    M1K: Danke für den Entwurf. Ich habe das mit meinen Item Namen versucht aber das Script wird nicht als Rule erkannt. D.h. Ich kopiere den Text in den Editor und schalte dann in der Oberfläche auf Design um. Ich hätte erwartet, dass bei korrekter Syntax die Rule hätte erkannt werden müssen.


    Ich fürchte ich verstehe da einfach noch zu wenig von der Scripting Sprache.


    Ich habe mal das Log ausgelesen und herauskopiert was passiert wen man den Schalter drückt:


    2024-02-13 16:56:41.850 [INFO ] [openhab.event.ChannelTriggeredEvent ] - livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da:button1 triggered PRESSED

    2024-02-13 16:56:43.641 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ISS2_Licht_Buro_Dachgeschoss_Schalter' changed from ON to OFF

    2024-02-13 16:56:44.008 [INFO ] [openhab.event.ChannelTriggeredEvent ] - livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da:button1 triggered SHORT_PRESSED

    2024-02-13 16:56:44.011 [INFO ] [openhab.event.ChannelTriggeredEvent ] - livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da:button1 triggered PRESSED

    2024-02-13 16:56:44.016 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ISS2_Licht_Buro_Dachgeschoss_Button1Count' changed from 32 to 33

    2024-02-13 16:56:46.767 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'ISS2_Licht_Buro_Dachgeschoss_Schalter' changed from OFF to ON


    Mein Ziel wäre immer noch den Schalter mit Hilfe einer Rule in Openhab so zu steueren dass egal welche Taste am Schalter wie lange gedrückt wird das Licht von Aus zu An oder An zu Aus geschaltet wird.


    Helfen die Log Einträge?

  • Hier noch die Rule zum Einschalten die nicht funktioniert:


    configuration: {}

    triggers:

    - id: "1"

    configuration:

    thingUID: livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da

    channelUID: livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da:button1

    event: PRESSED

    type: core.ChannelEventTrigger

    - id: "4"

    configuration:

    thingUID: livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da

    channelUID: livisismarthome:ISS2:639bd73c0c:55f1c9f1f81b4b76880c626317d036da:button2

    event: PRESSED

    type: core.ChannelEventTrigger

    conditions:

    - inputs: {}

    id: "3"

    configuration:

    itemName: ISS2_Licht_Buro_Dachgeschoss

    state: OFF

    operator: =

    type: core.ItemStateCondition

    actions:

    - inputs: {}

    id: "2"

    configuration:

    command: ON

    itemName: ISS2_Licht_Buro_Dachgeschoss

    type: core.ItemCommandAction

  • Hallo Charlyt, ich hatte in der Openhab Oberfläche von "Design" auf "Code" umgeschaltet und dachte das was ich gepostet hatte wäre der Code der Rule gewesen. Habe leider noch keine Kenntnisse von Java, beherrsche aber C und VB. Ich fürchte ich mache hier noch irgendeinen blöden Anfängerfehler, komme aber selbst nicht drauf. Ich habe jetzt den Livisi Lichtschalter resettet und neu eingebunden. Openhab hat ihn auch erkannt und ich konnte ihn in das Model einfügen. Jetzt habe ich als anderes/einfacheres Beispiel mal die gezeigte Rule entworfen die das Licht einschaltet wenn die Haustür geöffnet wird.

    Im Log erscheint auch der Status Change wie in der Rule angegeben:


    2024-02-14 16:12:15.318 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'WDS_Haustur_Flur_TurFensterstatus' changed from CLOSED to OPEN

    2024-02-14 16:12:19.711 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'WDS_Haustur_Flur_TurFensterstatus' changed from OPEN to CLOSED


    Trotzdem scheint das Kommando "on" nicht anzukommen. Es gibt auch irgendwie kein Debugging so dass man sehen könnte ob die Rule überhaupt getriggert wurde. Sie ist im Status "idle". Muss die vielleicht noch irgendwie "aktiv" geschalten werden?

  • Moin,

    Wenn Du das komplett über die UI machen willst gibt es 2 Wege:


    1. 2 Rules eine für an, eine für aus beide mit dem Trigger "when Item Status changed" (das reicht es ist dann egal von welchem in welchen Zustand geändert wird (überigens auch bei triggerbutton fires)) bei der Regel für "ein" ist die zusätzliche Bedingung unten "but only when" das das Item eben "Off" ist bei der Off Regel anders herum.


    2. Mit einem scribt das ausgeführt wird und in dem eine If/else Abfrage steht.


    Idle heißt, dass die Rule aktive ist.


    Ob du closed/Open oder on/Off abfragen musst, hängtvja auch von deiner Item-Konfig (cobtact/Switch/...) ab deshalb erstmal als Trigger nur when changed damit klappt bestimmt was 😉


    🖖🏻

  • CeBe ich glaube die Lösung ist viel einfacher als du denkst. Du musst das ON nicht direkt auf den Lichtschalter senden (so wie du es machst), sondern auf das jeweilige Item "Schalter" des Things.


    Dann klappt es auch mit dem Nachbarn. ;)

    Ich hab aber auch noch ein Problem damit die Szenarien zur Lichtschaltung an OH zu übertragen. Und zwar versuche ich aktuell das Szenarion aus der Cloud in OH zu übertragen das das Licht ein oder ausgeschaltet wird, egal ob Button 1 oder 2 gedrückt wird.


    Grundsätzlich klappt das auch über das Abfragen der Channel.


    im jeweiligen Channel ist wichtig, dass zwingend auf SHORT_PRESSED oder PRESSED abgefragt wird... denn aus welchem Grund auch immer, ist es vollkommen egal ob der Schalter SHORT_PRESS oder lange gedrückt wird... in beiden Fällen werden nämlich beide Events im Log ausgeführt. Also selbst, wenn ich den Schalter 30 Sekunden drücke und loslassen, kommt immer das SHORT_PRESS + PRESSED im Eventlog an. Frag ich also nicht auf einen der Werte ab, wird das Licht quasi ein und sofort wieder ausgeschalter.


    Grundsätzlich funktioniert also dieses kurze Skript und macht was es soll.


    Aber, und jetzt kommen wir zum großen aber... das läuft so derart zeitverzögert, dass man nach dem Drücken des Schalter tatsächlich überlegt ob man ihn gedrückt hat. Nutze ich das Szenario in der Cloud, drück ich den Schalter und zeitgleich geht das Licht an... deaktiviere ich das Szenario in der Cloud und nutze das Skrip in OH, vergehen locker 2 Sekunden bis das Licht endlich schaltet.


    Etwas Verzögerung dürfte ja normal sein, da das Signal ja erstmal von der Zentrale in OH, dort verarbeitet werden muss und dann ein Signal wieder zurück an die Zentrale gehen muss. Aber 2 Sekunden ist schon arg lang und so auch unbrauchbar. Ich hab im Treppenhaus z.B. schon die halbe Treppe geschafft, bis das Licht sich tatsächlich einschaltet.


    Mach ich was falsch? Hab ich einen Denkfehler? Oder ist das aus OH raus tatsächlich nicht schneller steuerbar?

  • Ich muss etwas ausholen.... Bei Livisi gibt es keine "cloud-Szenarien" es gibt Szenarien die benötigen die Zentrale (auch komplett ohne Internet nutzbar) das sind alle Szenarien, die man selbst ohne eine Vorlage erstellt hat. Und es gibt Szenarien, die komplett ohne Zentrale nur zwischen den Sensoren/Aktoren ablaufen (die liegen real auf den Teilnehmern... Bei Homatic sind dies die Direktverknüpfungen) diese Szenarien sind die "out of the box " Vorlagen die Livisi anbietet.


    Die ersteren weisen ähnliche Probleme auf wie wenn sie in oh als Rules arbeiten, die ootb sind meist pfeilschnell.


    2sec. Ist schon gut ich hab bei oh und auch bei Livisi Szenarien bis zu 10sec. Verzögerung. Kann auch sein, dass dies mittels anderer Trigger usw. Besser wird, hab keine Zeit das zu probieren....



    Übrigens sendet der User CEBE an ein Item 🤷🏼‍♀️😉

    • New
    • Official Post

    Bei Livisi gibt es keine "cloud-Szenarien" es gibt Szenarien die benötigen die Zentrale (auch komplett ohne Internet nutzbar) das sind alle Szenarien, die man selbst ohne eine Vorlage erstellt hat. Und es gibt Szenarien, die komplett ohne Zentrale nur zwischen den Sensoren/Aktoren ablaufen (die liegen real auf den Teilnehmern... Bei Homatic sind dies die Direktverknüpfungen) diese Szenarien sind die "out of the box " Vorlagen die Livisi anbietet.

    Sehr gute Beschreibung. Wir können ergänzen, dass einige OOTB Szenarien allerdings auch die Zentrale benötigen (bspw. Schimmelschutz), weil die Gerätefirmware nicht alle Bedingungen aus dem Szenario kennt und kann.

    Es gibt hingegen auch selbstgebaute Szenarien die letztlich vollständig im Gerät gespeichert werden und mit anderen Geräten direkt kommuniziert (bspw. wenn Du einen Zwischenstecker zu einer bestimmten Uhrzeit schaltest).

  • Ok, also lange Rede kurzer Sinn... es liegt nicht an OH oder meiner Rule... sondern die Verzögerung entsteht schlicht durch die Übertragungswege zwischen OH und der Zentrale, sowie der Zentrale und dem Lichter und lässt sich nicht verkürzen. Dann bleibt die Steuerung der Lichtschalter halt bei Livisi und wird nicht nach OH umgezogen. :(

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!