Entwicklung node-red-contrib-loxone für node-red

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • pmayer
    LoxBus Spammer
    • 27.02.2017
    • 379

    Entwicklung node-red-contrib-loxone für node-red

    Hallo zusammen,

    lese seit langem mit und hatte jetzt endlich den Anlass gefunden auch mal was zu schreiben.

    Ich habe angefangen einen node für node-red zur Anbindung des Loxone-Miniservers zu schreiben: https://github.com/codmpm/node-red-contrib-loxone
    Genutzt wird die Loxone Websocket API für die es bereits ein Modul für nodeJS gibt.

    Bisher kann man bereits Werte vom Miniserver verarbeiten, die über das Structure-File ausgewählt werden können. Näheres dazu auf Github.
    Es gibt natürlich noch eine Menge zu tun :-)

    Da ich keine eigenen Loxone-Installation habe, würde ich mich freunen wenn ein paar von euch vielleicht Zeit hätten mich bei der ganzen Sache zu untzerstützen. Zum entwickeln habe ich von einem Freund einen Miniserver geliehen.

    Mitentwickeln wäre super - aber auch Testen und generelles Feedback ist auf jeden Fall erwünscht.
    Vielleicht hat ja mal einer Zeit es auszuprobieren.

    Ich bin gespannt auf eure Antworten. Danke!

    Grüße,
    Patrik

    //Wusste nicht so wirklich wohin mit dem Thema. Also gerne verschieben, wenn gewünscht.
    Zuletzt geändert von pmayer; 27.02.2017, 11:35.
    https://allgeek.de/

    https://twitter.com/pregopm, https://github.com/codmpm/
    https://github.com/codmpm/node-red-contrib-loxone
    https://github.com/codm/wled-controller
  • eisenkarl
    Lox Guru
    • 28.08.2015
    • 1349

    #2
    Du solltest evtl mal genauer erklären was Node-red ist und was genau das ganze bringt

    Kommentar

    • pmayer
      LoxBus Spammer
      • 27.02.2017
      • 379

      #3
      Hi, klar.

      node-red ist ein von Nick O'Leary entwickeltes open-source Projekt. Es findet aktive Entwicklung statt und wird durch IBM unterstützt und gehört mittlerweile zur JS Foundation.

      node-red selbst bezeichnet sich als Software für das "Wiring the internet of things" - übersetzt also grob ein Baukasten für das Internet der Dinge.
      Es erlaubt die grafische Programmierung sogenannter flows und kann durch module (nodes) erweitert werden.
      In sog. Flows werden Daten "durchgeleitet". Das ist nicht mit der klassischen SPS-, Loxone- oder Logigprogrammierung zu verwechseln, da ein node immer nur einen Eingang hat. Man kann aber natürlich auch selbst einfache Funktionen in einem function-node schreiben.

      Bei uns in der Firma benutzten wir node-red seit über einem Jahr und konnten darüber sehr einfach Schnittstellen der verschiedenen Techniken vereinen. Zu Hause automatisiere ich meine komplette Wohnung damit und bin, auch dadurch dass ich auf mqtt als Kommunikationsstandard setze, nicht an irgend eine Technik gebunden.
      Ich hatte Mitte letzten Jahres mal einen Vortrag, wo auch node-red im Zusammenhang mit node-red-dashboard erklärt ist, in unserem lokalen MakerSpace gehalten. Wen das interessiert, der findet ihn hier: https://cloud.codm.de/nextcloud/inde...Dgug4ZT2augviY

      Aktuell gibt es zum Beispiel über 800 nodes (http://flows.nodered.org/) die unterschiedliche Dienste anbinden. Ich glaube es ist wirklich alles vertreten was man sich vorstellen kann.

      Da Loxone mein Bitten nach mqtt-Unterstützung im Miniserver leider nicht erhört hat (https://twitter.com/pregopm/status/797018367127408641), habe ich beschlossen diesen Umstand selbst zu beseitigen. Eine fertige nodeJS Implementation dafür gibt es schon die ich nur noch in node-red anbinde.

      Jetzt laß ich zum Beispiel davon, dass Loxone das Interval von Modbus-Abfragen auf 5s erhöht hat. node-red-contrib-loxone erlaubt einem also nun die Modbus-Anbindung selbst - in einem beliebigen Interval - zu erledigen und die Daten dann per Websocket an die Loxone zu geben.

      Bei weiteren Fragen, immer her damit :-)

      Grüße,
      Patrik
      Zuletzt geändert von pmayer; 27.02.2017, 11:50.
      https://allgeek.de/

      https://twitter.com/pregopm, https://github.com/codmpm/
      https://github.com/codmpm/node-red-contrib-loxone
      https://github.com/codm/wled-controller

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11200

        #4
        Wo läuft das ganze dann (physisch)?

        Im Prinzip ist es so wie Loxone (eventbasiert), nur dass man in der Loxone Config alles sieht, und bei Node-red sieht man dann immer nur alles ab dem Eingangs-Node - versteh ich das richtig?
        Zuletzt geändert von Christian Fenzl; 27.02.2017, 12:51.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

        • pmayer
          LoxBus Spammer
          • 27.02.2017
          • 379

          #5
          Wenn ich dich richtig verstanden habe, ja!

          Node-Red soll ja Loxone nicht ersetzen sondern ergänzen und die Anbindung an andere Protokolle, die Loxone nicht von Hause aus spricht, erleichtern. Aktuell ist zwar erst der loxone-in-node implementiert aber natürlich wird es auch den loxone-out-node geben, damit man bidirektional mit dem Miniserver reden kann.

          Node-red kann auf allem laufen, auf dem nodeJS läuft. Es bietet sich natürlich dafür ein RaspberryPi oder ein eventuell vorhandener (Linux-)Server an. Siehe: https://nodered.org/docs/getting-started/installation
          Das kann auch durchaus parallel zu anderen Diensten, die auf diesem Host laufen, passieren. Node-Red ist zum Glück nicht sehr resourcenhungrig und ein Pi3 ist absolut ausreichend - selbst wenn noch ein mqtt-broker und andere Dienste darauf laufen.

          Hier mal ein Beispiel, wie man die Werte aus der Loxone mittels node-red-dashboard visualisieren kann: https://cloud.codm.de/nextcloud/inde...pyO1AbRHhD6Zin - das ist quasi das Beispiel von der GitHub-Seite.
          https://allgeek.de/

          https://twitter.com/pregopm, https://github.com/codmpm/
          https://github.com/codmpm/node-red-contrib-loxone
          https://github.com/codm/wled-controller

          Kommentar

          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11200

            #6
            Das Konzept gefällt mir sehr gut! Wirklich sehr gut!
            Vergleichbar mit IFTTT, nur auf einer richtigen Plattform.
            Ideen hätte ich sofort, aber Javascript programmieren mit node.js kann ich nicht.
            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar

            • pmayer
              LoxBus Spammer
              • 27.02.2017
              • 379

              #7
              Mir reicht es schon, wenn jemand mit mehr Loxone Know-How als ich beim Testen helfen könnte ;-)
              Ich habe sicher nicht jede Installationsmöglichkeit und Hardwarekombination auf dem Schirm.

              Es ist nicht wirklich IFTTT, sondern "wiring the internet of things". Einer der Entwickler erklärt es hier auch recht gut: https://www.youtube.com/watch?v=vYreeoCoQPI - Die self-hosted Open-Source Alternative zu IFTTT wäre https://github.com/cantino/huginn

              Es werden bei IFTTT ja Agents erzeugt, die etwas für einen tun. Node-Red ist komplett eventbasiert, wobei ein Event natürlich auch ein zeitliches Ereignis sein kann - gebe aber zu nicht komplett in IFTTT drin zu sein, weil ich sowas lieber self-hosted statt in der cloud haben will.
              Wichtig war mir, offene Kommunikationsprotokolle zu nutzen - in dem Fall MQTT. Mein komplette selbt gebaute HA läuft darauf, sieht man ja in den Folien vom Makerspace.

              Funktional kann man mit node-red aber das gleiche erreichen wie mit IFTTT... es kann aber noch so viel mehr.
              Zuletzt geändert von pmayer; 27.02.2017, 14:13.
              https://allgeek.de/

              https://twitter.com/pregopm, https://github.com/codmpm/
              https://github.com/codmpm/node-red-contrib-loxone
              https://github.com/codm/wled-controller

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11200

                #8
                Hier gibt's ja das LoxBerry-Projekt für all die Dinge, die der Miniserver selbst nicht kann.
                Ich hab mir die Node-Library durchgesehen (ich weiß natürlich nicht im Detail, was die Nodes alles können), aber das schreit förmlich danach, dass das auf einem LoxBerry laufen muss. Ein paar Sachen sind für LoxBerry entwickelt worden, die man mit einem Loxone-Node-Red und einem Node aus der Library schon abdecken könnte.

                Was ich als schwieriger erachte: Bei node-red erstellst du für kleine Funktionen Nodes. Beim Loxone Miniserver müsste man für volle Unterstützung praktisch jeden Funktionsbaustein als Node, oder Bestandteil eines Nodes, implementieren.

                Loxone-Fragen können dir hier alle beantworten.
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar

                • pmayer
                  LoxBus Spammer
                  • 27.02.2017
                  • 379

                  #9
                  Loxberry hatte ich schon gesehen - der Ansatz war mir nur eben nicht universell genug. Loxberry leistet tolle arbeit, es muss aber alles was in anderen Projekten schon realisiert wurde, nochmals umgesetzt werden. Node-Red bietet eben schon sehr sehr viel und bleibt dabei so flexibel wie es nur geht.
                  Loxberry bietet ja fertige Funktionen die an den Miniserver angebunden werden an, oder?

                  Mein Ansatz ist ja, sich damit einen universellen Konnektor bauen zu können, in welcher Form auch immer.
                  Anstatt also alles in die Loxone-Welt zu holen wollte ich Loxone in die Welt der anderen holen ;-)

                  Zitat von Christian Fenzl
                  Was ich als schwieriger erachte: Bei node-red erstellst du für kleine Funktionen Nodes. Beim Loxone Miniserver müsste man für volle Unterstützung
                  praktisch jeden Funktionsbaustein als Node, oder Bestandteil eines Nodes, implementieren.
                  Ich hoffe, ich habe dich richtig verstanden.
                  Da der node das Loxone Structure File nutzt und sich einfach nur auf die Events hängt, die der Miniserver über die Websocket API sendet, sollte das nicht so sein.
                  In meinen Tests habe ich einfach einen Baustein in Loxone erstellt, in den Miniserver geladen und kann ihn danach im loxone-in node auswählen. Natürlich muss aber jeder "Datenpunkt" den man aus der Loxone anbinden möchte, verknüpft werden.

                  Ich habe zum Beispiel noch nicht verstanden, wie ich einen Eingang direkt holen kann? Bisher habe ich das immer nur über ein Schaltmodul geschafft. Ein 1-Wire Temperatursensor aber zum Beispiel taucht direkt im Structure-File auf. Leider habe ich, wie gesagt, keine komplette Installation zum testen. Da komme ich frühestens die nächsten Wochen zu.
                  Zuletzt geändert von pmayer; 27.02.2017, 14:38.
                  https://allgeek.de/

                  https://twitter.com/pregopm, https://github.com/codmpm/
                  https://github.com/codmpm/node-red-contrib-loxone
                  https://github.com/codm/wled-controller

                  Kommentar

                  • pmayer
                    LoxBus Spammer
                    • 27.02.2017
                    • 379

                    #10
                    So sieht es aktuell bei der Konfiguration des Nodes aus.
                    https://allgeek.de/

                    https://twitter.com/pregopm, https://github.com/codmpm/
                    https://github.com/codmpm/node-red-contrib-loxone
                    https://github.com/codm/wled-controller

                    Kommentar

                    • Christian Fenzl
                      Lebende Foren Legende
                      • 31.08.2015
                      • 11200

                      #11
                      Nehmen wir als Beispiel die Intelligente Raumregelung. Da gibt es eine Liste an Eingangs- und Ausgangspunkte, die auch per Websocket geliefert werden.
                      Wie würde man z.B. die Soll-Temperatur anpassen? Müsste ich dann irgendwo eine Funktion schreiben, die weiß, dass dieser Baustein nun ein IRR ist und selbst implementieren, was damit geschehen soll? Wäre so eine Funktion dann selbst auch ein Node?
                      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                      Kommentar

                      • pmayer
                        LoxBus Spammer
                        • 27.02.2017
                        • 379

                        #12
                        Zitat von Christian Fenzl
                        Müsste ich dann irgendwo eine Funktion schreiben, die weiß, dass dieser Baustein nun ein IRR ist und selbst implementieren, was damit geschehen soll? Wäre so eine Funktion dann selbst auch ein Node?
                        Dur würdest nur den Eingang des IRR über den Websocket beschreiben. Dafür ist der node gedacht, sofern loxone-out bereits implementiert wäre.

                        Woher der Wert, den du drauf schreibst kommt, bleibt völlig dir überlassen. Du könntest jetzt mit einem function-node (https://nodered.org/docs/writing-functions) irgend eine Logik in JavaScript programmieren die Anhand anderer Werte in node-red eine Solltemperatur vorgeben.

                        Ich spinn mal ein bisschen rum:
                        Beispielsweise könntest du ein Homematic Raumthermostat über eine CCU oder Homegear mit node-red verbinden und den da eingestellten Wert an den IRR geben. Oder du twitterst den Wert, schreibst eine E-Mail oder du baust dir eine Webseite die per Abstimmung die Solltemperatur ermittelt und node-red kümmert sich um den Weg zur Loxone.
                        Zuletzt geändert von pmayer; 27.02.2017, 17:23.
                        https://allgeek.de/

                        https://twitter.com/pregopm, https://github.com/codmpm/
                        https://github.com/codmpm/node-red-contrib-loxone
                        https://github.com/codm/wled-controller

                        Kommentar

                        • Christian Fenzl
                          Lebende Foren Legende
                          • 31.08.2015
                          • 11200

                          #13
                          Ich hoffe, ich nerve nicht mit meinen Fragen. Eigentlich wolltest ja du die Fragen stellen :-)

                          Ok, angenommen ich erstelle mir einen function-node, der irgendwas mit den IRR-Parametern anstellt.

                          1. Wie lässt sich das generisch konfigurierbar machen? Muss ich dann praktisch in meinem function-node eine "Webseite" implementieren, die den miniserver-node nach IRR-Bausteinen fragt, um dem Benutzer beispielsweise eine Auswahl an IRRs anzubieten. Die Auswahl lässt sich dann irgendwo abspeichern.

                          2. Lässt sich ein node-Gebilde dann fertig abspeichern, also miniserver-node -> IRR-function-node -> homematic-node als fertiges "Template"? Oder muss sich das jeder wieder selbst zusammenklicken?

                          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                          Kommentar

                          • pmayer
                            LoxBus Spammer
                            • 27.02.2017
                            • 379

                            #14
                            Zitat von Christian Fenzl
                            1. Wie lässt sich das generisch konfigurierbar machen? Muss ich dann praktisch in meinem function-node eine "Webseite" implementieren, die den miniserver-node nach IRR-Bausteinen fragt, um dem Benutzer beispielsweise eine Auswahl an IRRs anzubieten. Die Auswahl lässt sich dann irgendwo abspeichern.
                            Quasi... dafür gibt es aber zum Beispiel schon node-red-dashboard. Es kommt aber ganz drauf an was du machen willst. Am Anfang erschlägt einen diese Fleixibilität vielleicht. Abspeichern musst du es aber selbst. Das ist dann alles node-red spezifisch.
                            Mein node bildet nur die Kommunikation mit dem Miniserver über den Websockets ab. Damit brauchst du, wenn du den Baustein in node-red nutzt, nur noch zu sagen welchen "Datenpunkt" du im Miniserver gerne ansprechen würdest und entsprechend in node-red "verdrahten". Was passieren soll erzeugt man durch den Flow in node-red.

                            Ich hoffe ich hab dich mit meinem Beispielen nicht durcheinander gemacht.


                            Zitat von Christian Fenzl
                            2. Lässt sich ein node-Gebilde dann fertig abspeichern, also miniserver-node -> IRR-function-node -> homematic-node als fertiges "Template"? Oder muss sich das jeder wieder selbst zusammenklicken?
                            Sowas könnte man in subflows (https://github.com/node-red/node-red...sign:-subflows) machen.
                            Man kann aber auch einfach seinen Template-Flow copy&pasten und weitergeben, so wie das bereits auf http://flows.nodered.org/ passiert. Such da einfach mal nach "flows" - da sind fertige Teilabläufe, die Leute geteilt haben.

                            Frag gerne. Wenn ich es erklären muss ergibt sich mich ja auch der ein oder andere Zusammenhang.
                            https://allgeek.de/

                            https://twitter.com/pregopm, https://github.com/codmpm/
                            https://github.com/codmpm/node-red-contrib-loxone
                            https://github.com/codm/wled-controller

                            Kommentar

                            • Holger_kausch
                              LoxBus Spammer
                              • 27.08.2015
                              • 323

                              #15
                              Also ich nutze node seit kurzem in IOBROKER um Daten per UDP an den Miniserver zu senden. Das nutze ich auch für Alexa . . Wäre es nicht sinnvoll eine Schnittstelle zwischen IOBroker und loxone zu realisieren ? IOBroker hat sehr viele Schnittstellen und läuft bei mir zusammen mit dem Loxbery auf einem Raspberry Pi . Ich bin aber nur normaler Anwender und habe nichts mit Programmieren zu tun .

                              Gruß Holger

                              Gesendet von meinem SM-T800 mit Tapatalk

                              Kommentar

                              Lädt...