Ankündigung

Einklappen
Keine Ankündigung bisher.

Logiken in Openhab - Was nutzt ihr? Gibt es Vorlagen für gängige Anwendungsfälle?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Logiken in Openhab - Was nutzt ihr? Gibt es Vorlagen für gängige Anwendungsfälle?

    Hallo,
    ich bastel schon einige Zeit an einer Visu / Logikmaschine für den KNX Bus und ein paar MQTT Geräte. FHEM, Iobroker und IPSymcon habe ich durch und bin nun erstmal bei Openhab hängen geblieben. (IP Symcon war schon cool, aber wegen des Preises dann doch zu Openhab).
    Eingerichtet ist alls soweit und die App läuft. Damit war ich bei Openhab nach relativ kurzer Zeit schon recht weit *Daumen hoch*

    Nun geht es demnächst daran, die ersten Dinge zu automatisieren (z. B. Rolladenautomatik, Lüfter- /Bewässerungssteuerung, Anwesenheitssimulation...) und es stellt sich mir die Frage, ob Rules in Openhab das Mittel der Wahl sind oder ob man auf NodeRed oder noch was anderes setzen sollte.

    Zu Rules:
    Gibt es ggf. schon fertige Module zu bekommen, die man nur noch anpassen muss? Wo kann man diese am besten finden?

    Bei NodeRed:
    Ich kenne mich damit noch gar nicht aus, habe aber hier gelesen, dass man es innerhalb von Openhab installieren und als Logikmaschine nutzen kann. Wäre das empfehlenswert? Gibt es unter NodeRed ggf. fertige Module?

    Anmerkung:
    Ich erwarte keine fertigen Lösungen - das sollte klar. Ein paar Denkanstöße und Meinungen wären toll, um zielgerichteter auf die Entdeckungsreise zu gehen. Wer Links zu guten Projekten, Tutorials oder ähnlichem hat - da wäre ich auch nicht fies vor
    Zuletzt geändert von stonev; 13.09.2019, 06:16.

    #2
    Ich verwende die Rules DSL und bin damit glücklich. Wäre ich Programmierer, ginge ich vermutlich eher in Richtung Jython, weil die Rules DSL sich nur ungern verbiegen lässt, man muss sich also beim Erstellen seiner Regeln auf die DSL einlassen, statt die eigene Denkweise der DSL aufzuzwingen.

    Zu NodeRed kann ich nichts beitragen, aber soweit ich weiß, ist das auch nicht direkt verfügbar (also vergleichsweise aufwändig in der Einrichtung).

    Es gibt für die DSL keine fertigen Vorlagen, außer Du suchst hier im Forum (oder in einem der anderen Foren) konkret nach Schlüsselworten und schaust Dir die teils sehr umfangreichen Rules an, die andere programmiert haben. Für die von Dir angesprochenen Bereiche gibt es jeweils eine erschlagende Menge an Rules
    Zuletzt geändert von udo1toni; 12.09.2019, 14:02.

    Kommentar


      #3
      Ich stimme udo1toni zu und halte die Rules in Textform für die große Stärke von Openhab. Ich hab noch nichts gefunden, wo ich Automatisierungen so schnell und komfortabel erstellen/ändern kann (vergleichen mit Home Assistant, FHEM, Gira X1/HS). Kommentare sind einfach möglich (//), in IDEs wie Eclipse oder VS Code Editor gehen auch Autovervollständigungen schnell von der Hand.
      Da die Rules auf Xtend (https://www.eclipse.org/xtend/index.html) basieren, ist einerseits eine hohe Ähnlichkeit zu Java gegeben, auf der anderen Seite findet man auch außerhalb der Openhab-Welt Antworten zu Problemen (z.B. Stackoverflow).

      Im Endeffekt ist es eine Grundsatzentscheidung: Visuelle Editoren wie NodeRed haben eine geringere Einstiegshürde, aber bei komplexeren Rules wirst du auch dort Code schreiben müssen (function-Modul). Abschreckend finde ich auch die Unübersichtlichkeit von Add-Ons (bei npm kann ja jede/r was hochladen).

      Bei den DSL Rules gibt es auch in der Openhab-Community viele Hilfen und Codebeispiele.

      Kommentar


        #4
        Ich benutzte inzwischen Node-Red für die Rules.
        Hab historisch noch einige integrierten Rules im Gebrauch.
        Beide Systeme haben Vor- und Nachteile.
        Die Fehlersuche und das Debugin ist mit node-Red einfacher.
        Dafür hat man mit den integrierten Regeln mehr Freiheiten, wenn man Programmieren kann und sich tiefer in die Materie einarbeitet und es gibt keine Abhängigkeiten zu andere System.

        Node-Red kann mit vielen Komponenten auch ohne OpenHab betrieben werden.
        Es gibt z.B. KNX, MQTT, SNMP, E-Mail, ... Schnittstellen und kann dadurch zu einer alternative zu OpenHab werden, was ich allerdings nicht vorhabe.
        Zuletzt geändert von lo4dro; 13.09.2019, 06:38.
        --
        Gruß
        Lothar

        Kommentar


          #5
          Puh, ich habe mich gerade mal versucht in Rules DSL etwas einzulesen. Das wäre sicher irgendwann zu schaffen, aber nach einem "relativ" schnellem Erfolg sieht das in meinem Fall nicht aus. Ich bin kein Programmierer und muss das alles erst autodidaktisch erlernen. Kennt denn jemand eine gute Dokumentation dazu auf Deutsch? Das würde es schon ein wenig erleichtern.

          Nodered schaue ich mir die Tage auch an, bin ich noch nicht zu gekommen.

          Kommentar


            #6
            Haha... Dokumentation... und dann noch auf deutsch...

            Die DSL baut auf XTEND auf, welches wiederum viele Merkmale vom darunter arbeitenden Java hat. Jede Rule hat einen fixen Rahmen:
            Code:
            rule "Name der Rule"
            when
                // hier steht mindestens ein Trigger, wenn es mehrere sind, sind sie durch or getrennt
            then
                // Dieser Teil des Codes wird ausgeführt, sobald ein Event aus dem Trigger-Teil auftritt
            end
            Als Trigger gibt es Events auf dem openHAB Bus (Item ... oder Member of ... changed, received update, received command, Channel ... triggered, Time cron, System started und Thing status changed.
            Die Rule triggert, sobald eines der Ereignisse auftritt, es gibt keine UND-Verknüpfung, denn es geht hier um Trigger. (das ist einer der größten Stolpersteine bei Anfängern)
            Will man Code nur unter bestimmten Voraussetzungen ausführen, so muss man diese Entscheidung also im Execute-Teil der Rule treffen, z.B. mittels if().

            Ansonsten gibt es zwei Methoden für die Manipulation von Items, nämlich .postUpdate() und .sendCommand(), erstere, um den Status eines Items auf dem openHAB Bus zu ändern, letztere, um einen Befehl an ein an das Item gebundenes Binding zu senden. Dabei wird openHAB normalerweise den Status automatisch passend zum gesendeten Befehl ändern (z.B. nach ON, wenn der gesendete Befehl ON war), man erspart sich dann in der Rule das postUpdate(),

            Jedes Item hat bestimmte Eigenschaften, z.B. .name ist der Name .state ergibt den aktuellen Status, .previousState.state ergibt den vorherigen Status (falls das Item persistiert wurde).

            Zeilen werden im Gegensatz zu Java nicht mit einem Semikolon abgeschlossen.

            Wenn Du VSCode als Editor verwendest, kannst Du ein Plugin für openHAB installieren (das geht direkt aus dem Editor heraus). Nachdem das Plugin korrekt konfiguriert wurde (Adresse des openHAB Servers...), hast Du Fehleranzeige, CodeCompletion, Links zu (englischer) Doku, ins Forum, und, und, und...
            Zuletzt geändert von udo1toni; 13.09.2019, 19:25.

            Kommentar


              #7
              Zitat von stonev Beitrag anzeigen
              Kennt denn jemand eine gute Dokumentation dazu auf Deutsch?
              SmartHome mit OpenHAB2 von Marianne Spiller wäre ein Anfang. Wenn es nur um den Beispielcode geht, gibt's den auch auf dem Repo zum Buch. Das Buch ist gerade für die Fragestellung "Wie geht das mit Rules und wie fange ich an" sehr empfehlenswert. Wofür das Buch nichts bringt, ist das Thema KNX & OpenHAB.

              Kommentar


                #8
                Zitat von stonev Beitrag anzeigen
                Kennt denn jemand eine gute Dokumentation dazu auf Deutsch?
                online Tutorial: Smart Home mit openHAB 2 - cloudless / herstellerunabhängig

                kompakt, übersichtlich und wie ich finde sehr gut erklärt

                Kommentar


                  #9
                  Danke für die Hinweise. Ich werde mich dann mal reinarbeiten und mir das ganze einer konkreten Aufgabenstellung erarbeiten.
                  Grundsätzlich ist der Aufbau der Rules ja klar. Einfache Sachen, wie "fahre Rolladen mit Sonnenaufgang hoch" sind denke ich auch keine Herausforderung. Wenn man do eine Automatisierung aber ansprechender gestalten und für den User ein paar Auswahloptionen bereitstellen will, wird das schon komplizierter...

                  Wenn ich jetzt richtig verstanden habe, dann kann man sich bei komplizierteren Sachen innerhalb des Execute-Teils mit Script austoben, welches dann rein auf XTEND basiert.

                  Vlt. noch eine Frage: Kommen alle Rules in eine Datei?

                  Kommentar


                    #10
                    Vielleicht liest du einfach mal welche der dir inzwischen genannten Bücher und Dokumente durch. Dann kannst du auch was mit der Antwort "kommt darauf an" anfangen.

                    Kommentar

                    Lädt...
                    X