Ankündigung

Einklappen

INFORMATION

Dieser Bereich ist für fertige Lösungen gedacht. Nutze bitte für Diskussionen die anderen Bereiche.
Mehr anzeigen
Weniger anzeigen

Luxtronik WP Steuerung auslesen (Alpha Innotec, Novelan, evtl. auch Buderus)

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

  • #31
    Node red ist wirklich simpel wenn man es am laufen hat, die Programmierung läuft über ein GUI und mit hilfe des Loxone nodes von pmayer lässt sich das ganze winderbar in die Loxone übertragen!

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Luxtronik2-Websockets.PNG
Ansichten: 2105
Größe: 102,0 KB
ID: 97586

    Kommentar


    • #32
      Hallo,

      habe node-red am laufen und "node-red-contrib-loxone" installiert.
      Luxtronik2 mit v2.81

      Hätte jemand eine kurze Hilfestellung/Anleitung wie ich jetzt in der node-red Weboberfläche die Kommunikation mit der Luxtronik 2 konfiguriere, damit ich Werte abfragen kann?

      Vielen Dank

      Kommentar


      • #33
        Auf Wunsch poste ich hier mal meinen Node-Red Flow mit dem ich die Daten meiner Luxtronik2 auslese:

        Code:
        [{"id":"402fd073.84b1b","type":"inject","z":"d4ca838b.957a9","name":"every 10s","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"x":130,"y":120,"wires":[["5cd745c.6511abc"]]},{"id":"5cd745c.6511abc","type":"Luxtronik2","z":"d4ca838b.957a9","host":"192.168.88.11","port":8214,"password":"999999","x":320,"y":120,"wires":[["26407efe.5644e2","c223d04b.67801","698bfab9.9675e4","d1ae6276.be43f","c7d064b4.2aca78","cc087b94.aaea28"]]},{"id":"26407efe.5644e2","type":"function","z":"d4ca838b.957a9","name":"proccess temperature data","func":"var data = msg.payload;\nvar result = {};\n\nfunction sanitize(s) {\n    s = s.replace(\" \", \"-\");\n    s = s.replace(\",\", \".\");\n    return s;\n}\n\nfor(var t in data[\"Informationen\"][\"Temperaturen\"]){\n    result[sanitize(t)] = parseFloat(data[\"Informationen\"][\"Temperaturen\"][t]);\n}\n\nmsg.payload = result;\nreturn msg;","outputs":1,"noerr":0,"x":620,"y":120,"wires":[["df3757b3.e885d8"]]},{"id":"c223d04b.67801","type":"debug","z":"d4ca838b.957a9","name":"","active":false,"console":"false","complete":"false","x":570,"y":60,"wires":[]},{"id":"df3757b3.e885d8","type":"influxdb out","z":"d4ca838b.957a9","influxdb":"6850184.a7a0fe8","name":"","measurement":"temperatures","x":980,"y":120,"wires":[]},{"id":"698bfab9.9675e4","type":"function","z":"d4ca838b.957a9","name":"proccess input data","func":"var data = msg.payload;\nvar result = {};\n\nfunction sanitize(s) {\n    s = s.replace(\" \", \"-\");\n    s = s.replace(\",\", \".\");\n    return s;\n}\n\nfunction parse(v) {\n    if(v === \"Ein\") {\n        return 1;\n    } else if(v === \"Aus\") {\n        return 0;\n    } else {\n        return parseFloat(v);\n    }\n}\n\nfor(var t in data[\"Informationen\"][\"Eingänge\"]){\n    if(t != \"Durchfluss\") {\n        result[sanitize(t)] = parse(data[\"Informationen\"][\"Eingänge\"][t]);\n    }\n}\n\nmsg.payload = result;\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":180,"wires":[["87f3665c.01c478"]]},{"id":"87f3665c.01c478","type":"influxdb out","z":"d4ca838b.957a9","influxdb":"6850184.a7a0fe8","name":"","measurement":"inputs","precision":"","retentionPolicy":"","x":960,"y":180,"wires":[]},{"id":"d1ae6276.be43f","type":"function","z":"d4ca838b.957a9","name":"proccess output data","func":"var data = msg.payload;\nvar result = {};\n\nfunction sanitize(s) {\n    s = s.replace(\" \", \"-\");\n    s = s.replace(\",\", \".\");\n    return s;\n}\n\nfunction parse(v) {\n    if(v === \"Ein\") {\n        return 1;\n    } else if(v === \"Aus\") {\n        return 0;\n    } else {\n        return parseFloat(v);\n    }\n}\n\nfor(var t in data[\"Informationen\"][\"Ausgänge\"]){\n    if(!t.startsWith(\"seit\")) {\n        result[sanitize(t)] = parse(data[\"Informationen\"][\"Ausgänge\"][t]);\n    }\n}\n\nmsg.payload = result;\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":240,"wires":[["b45745a3.c3f958"]]},{"id":"b45745a3.c3f958","type":"influxdb out","z":"d4ca838b.957a9","influxdb":"6850184.a7a0fe8","name":"","measurement":"outputs","precision":"","retentionPolicy":"","x":960,"y":240,"wires":[]},{"id":"c7d064b4.2aca78","type":"function","z":"d4ca838b.957a9","name":"proccess output data","func":"var data = msg.payload;\nvar result = {};\n\nfunction sanitize(s) {\n    s = s.replace(\" \", \"-\");\n    s = s.replace(\",\", \".\");\n    return s;\n}\n\nfunction parse(v) {\n        return parseFloat(v);\n}\n\nfor(var t in data[\"Informationen\"][\"Betriebsstunden\"]){\n    if(!t.startsWith(\"Laufzeit\")) {\n        result[sanitize(t)] = parse(data[\"Informationen\"][\"Betriebsstunden\"][t]);\n    }\n}\n\nmsg.payload = result;\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":300,"wires":[["94e825ea.3ea0f8"]]},{"id":"94e825ea.3ea0f8","type":"influxdb out","z":"d4ca838b.957a9","influxdb":"6850184.a7a0fe8","name":"","measurement":"operating-hours","precision":"","retentionPolicy":"","x":990,"y":300,"wires":[]},{"id":"cc087b94.aaea28","type":"function","z":"d4ca838b.957a9","name":"proccess output data","func":"var data = msg.payload;\nvar result = {}\n\nfunction sanitize(s) {\n    s = s.replace(\" \", \"-\");\n    s = s.replace(\",\", \".\");\n    return s;\n}\n\nfunction parse(v) {\n        return parseFloat(v);\n}\n\nfor(var t in data[\"Informationen\"][\"Wärmemenge \"]){\n        result[sanitize(t)] = parse(data[\"Informationen\"][\"Wärmemenge \"][t]);\n}\n\nmsg.payload = result;\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":360,"wires":[["704c0b77.c0f574"]]},{"id":"704c0b77.c0f574","type":"influxdb out","z":"d4ca838b.957a9","influxdb":"6850184.a7a0fe8","name":"","measurement":"heat-quantity","precision":"","retentionPolicy":"","x":980,"y":360,"wires":[]},{"id":"6850184.a7a0fe8","type":"influxdb","z":"","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"heatpump","name":"","usetls":false,"tls":""}]
        Damit das ganze klappt muss mein luxtronik2 node installiert sein: https://www.npmjs.com/package/node-r...-luxtronik2-ws
        Ausserdem verwendet der Flow den influxdb node um die gelesenen Daten in eine Influxdb zu schreiben, visualisieren tu ich das ganze dann mit Grafana.

        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Grafana.PNG
Ansichten: 2194
Größe: 297,2 KB
ID: 104739
        Zuletzt geändert von Bouni; 28.Jun.2017, 06:50.

        Kommentar


        • #34
          Auf einen weiteren Wunsch hin, beschreibe ich hier mal mein Setup udn wie ich vorgegangen bin.

          Ich habe im Keller in meinem Netzwerkschrank einen kleinen Server mit Arch Linux als OS auf dem ich Node Red, InfluxDB und Grafana installiert habe.

          Code:
          yaourt -S nodejs
          npm install -g node-red
          yaourt -S influxdb
          yaourt -S grafana
          Das ganze sollte auch auf einem anderen Rechener wie z.B. einem RaspberryPi ohne weiteres möglich sein, dort variieren je nach OS einfach die Befehle evtl. ein wenig aber das Internet hilf auch dabei zuverlässig weiter.

          Da node-red nicht per default einen service mitbringt muss man ein systemd unit file anlegen (gesetzt dem Fall man verwendet systemd, aber auch wenn nicht muss man das selbe für sein OS tun, nur eben an die dortigen Gegebenheiten angepasst).

          Ich habe einen neuen Benutzer und das unit file angelegt:
          Code:
          sudo useradd -d node-red
          sudo touch /etc/systemd/system/node-red.service
          Das hier muss in das eben angelegte node-red.service
          Code:
          [Unit]
          Description=Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways.
          After=syslog.target network.target
          Documentation=http://nodered.org/
          
          [Service]
          ExecStart=-/usr/bin/node-red
          WorkingDirectory=/home/node-red
          User=node-red
          Group=node-red
          Nice=10
          Restart=on-failure
          KillSignal=SIGINT
          
          [Install]
          WantedBy=multi-user.target
          Dann ein reload:
          Code:
          sudo systemctl daemon-reload
          sudo systemctl enable node-red.service
          sudo systemctl start node-red.service
          Nun läuft node-red und die Web GUI ist auf Port 1880 erreichbar, z.B. http://192.168.178.100:1880

          Nun müssen auch noch influxdb und grafana gestartet werden:
          Code:
          sudo systemctl enable influxdb.service
          sudo systemctl start influxdb.service
          sudo systemctl enable grafana.service
          sudo systemctl start grafana.service
          Als nächstes installieren wir den Luxtronik2 node:

          Code:
          sudo npm install -g node-red-contrib-luxtronik2-ws
          Anschliessend nochmal node-red neu starten:

          Code:
          systemctl restart node-red.service
          Nun in der Weboberfläche von node-red den influxdb node installieren, dazu auf Menü -> Manage Palette -> install und in der Suche influx eingeben, anschkliessend auf install klicken.

          Als letzten Schritt den oben geposteten Flow importieren: Menü -> Import -> Clipboard

          Im Flow müssen natürlich noch die IP/Passwort der Luxtronik als auch die IP/Passwort der InfluxDB angepasst werden, aber das sollte selbsterklärend sein.

          Kommentar


          • #35
            Über Import -> Clipboard konnte ich den Flow hinzufügen.
            Wie speichere ich das ganze? Nach einem Neustart bzw. Stop/start von node-red sind die flows weg.

            Wo befindet sich das "root" Verzeichnis der node-red installation? also da wo ich mit npm dein Luxtronik contrib installieren muss?

            Kommentar


            • #36
              Normalerweise muss man nichts speichern, die Flows liegen im home Verzeichnuis des Benutzers mt dem Node Red gestartet wurde.
              Bei Mir z.B. unter /home/node-red/.node-red/flows_<hostname>.json

              - existiert das home Verzeichnis überhaupt?
              - was ergibt ein "journalctrl -u node-red.service"?
              - was ein "ls -la /home/<username>/.node-red"

              Du kannst den installationsbefehl in jedem beliebigen Verzeichnis ausführen, npm macht dann das richtige (npm install -g nope-red-contrib-luxtronik2-ws)

              Kommentar


              • #37
                Bouni

                - home Verzeichnis existiert.

                -journalctl -u node-red.service

                [info] Settings file : /home/node-red/.node-red/sett
                [info] User directory : /home/node-red/.node-red
                [info] Flows file : /home/node-red/.node-red/flow

                #cd /home/node-red/.node-red/
                #ls -la
                drwxr-xr-x 5 node-red node-red 4096 Jun 28 11:48 ../
                -rw-r--r-- 1 node-red node-red 16119 Jun 28 11:49 .config.json
                -rw-r--r-- 1 node-red node-red 44 Jun 28 11:52 flows_ovibox-server_cred.json
                -rw-r--r-- 1 node-red node-red 676 Jun 28 11:53 flows_ovibox-server.json
                -rw-r--r-- 1 node-red node-red 448 Jun 28 11:52 .flows_ovibox-server.json.backup
                drwxr-xr-x 3 node-red node-red 4096 Jun 28 10:50 lib/
                drwxr-xr-x 5 node-red node-red 4096 Jun 28 11:49 node_modules/
                -rw-r--r-- 1 node-red node-red 9165 Jun 28 10:50 settings.js

                nach einer sauberen Neuinstalltion von Node-red scheint das speichern zu gehen.
                Allerdings existiert das Verzeichnis /flow nicht.


                Kommentar


                • Bouni
                  Bouni kommentierte
                  Kommentar bearbeiten
                  Was soll das Verzeichnis /flow sein!?
                  Alle flows werden zusammen gewurstst in flows_ovibox-server.json gespeichert

              • #38
                Bouni

                Mir ist noch aufgefallen das du eine andere WP hast.

                Bei AIT gibt es unterschiedliche Typen mit unterschiedlichen Firmware-Typen: X.81 (X= 1bis 4) Ab Version X.81 alle mit websockets.
                In meinem Fall die 2.81 -> bei dir die 3.81.
                Werde Testen ob es ebenfalls funktioniert.

                Kommentar


                • #39
                  Phil__
                  Poste doch mal n Screenshot vom Webinterface, dann kann ich Dir gleich sagen obs was anderes ist oder nicht!

                  Kommentar


                  • #40
                    Bouni

                    Ist das gleiche Webinterface, habe einen Bekannten bereits gefragt mit 3.81.

                    Dein Flow in Verbindung mit Grafana läuft! Super Danke!

                    Jetzt wollte ich Daten in dem node-red Dashboard anzeigen lassen. Z.B. WW Ist Temperatur mit dem den "gauge node" aus dem node-red Dashboard.
                    Wie bekomme ich die Werte aus deinen Abfragen extrahiert?
                    Oder z.B. einzelne Werte an einen Loxone Miniserver senden.

                    Siehe exemplarisch den Screenshot!

                    Kommentar


                    • #41
                      Hi Phil__
                      generell kann der "Gauge Node" nur mit Zahlenwerten umgehen.
                      Wenn also aus den verwendeten Funktionen mehr rausfällt als eine Zahl (z.B.: ein komplexeres Objekt) musst Du vorher mit dem "Change Node" umwandeln.
                      Im Zweifelsfall musst Du Dir über den Debug Node mal die Ausgabe anzeigen lassen und dann ein wenig nach Deinen Vorstellungen basteln.

                      Nach meiner Erfahrung benötige ich den Change-Node in fast jedem Flow, weil immer irgendwas irgendwohin umgewandelt werden muss.

                      Viel Erfolg
                      Loxone-Installation mit mehreren Extensions, Dimmer-Extension, DMX, 1-Wire (alles aktuell noch im Auslieferungszustand);
                      FritzBox, Netgear Plus Switch mit mehreren VLANs, Intel NUC mit VMWare ESXi 6.5 (pfSense, Loxberry, Kleinkram)

                      Kommentar


                      • #42
                        Riesenschnabel
                        Bouni

                        Das Change-node und debug-node habe ich zwar gefunden.... Allerdings ist mir nicht klar wie ich diese Anwende um einzelne Daten aus den Datensätzen zu extrahieren. (zB eine bestimmte Temperatur.

                        Kommentar


                        • #43
                          Phil__ Der debug node tut wie der Name schon andeutet alles was aus einem Baustein rausfällt im Debug Fenster auf der rechten Seite anzeigen.
                          Du muss mit entweder einem Change oder einem Formel Baustein den einzelnen Wert aus dem Objekt herauspopeln, das setzt minimale JS Kentnisse Voraus.

                          Kommentar


                          • #44
                            Hi Phil__
                            ein wenig mit der Programmierung und der Anwendung der einzelnen Nodes wirst Du Dich definitiv selber beschäftigen müssen.
                            Andernfalls wirst Du es sicherlich auch sehr schwer mit irgendwelcher Fehleranalyse und -behebung haben.

                            Zum Change-Node gibt es in dieser Anleitung eine ganz passable Beschreibung. Und sonst hilft Tante Google meist ganz gut weiter.

                            Viel Erfolg
                            Loxone-Installation mit mehreren Extensions, Dimmer-Extension, DMX, 1-Wire (alles aktuell noch im Auslieferungszustand);
                            FritzBox, Netgear Plus Switch mit mehreren VLANs, Intel NUC mit VMWare ESXi 6.5 (pfSense, Loxberry, Kleinkram)

                            Kommentar


                            • #45
                              Bouni

                              Könntest du ein Beispiel für das auseinanderdröseln des Objects geben? Komme da auf keinen grünen Zweig

                              Kommentar

                              Lädt...
                              X