Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Network OWL mit Script einlesen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    818

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Network OWL mit Script einlesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 2 Kommentatoren 1.8k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #1

    Hallo,

    da ich leider immer wieder Probleme mit node-red habe, bin ich mit dem Einlesen der OWL-Intuition Daten (Flow http://forum.iobroker.org/viewtopic.php?f=32&t=606&hilit=OWL#p4196) auf Javascript umgestiegen.

    Die Daten werden im Netzwerk ja immer von der gleichen Adresse:Port per UDP eingelesen. Das macht die Bibliothek https://www.npmjs.com/package/owlintuition von allaan. Die muss erst noch installiert werden.

    Ich habe in der Javascript-Instanz noch diese Bibliotheken installiert:

    xml2js, oauth, owlintuition, util, joi, dgram
    

    261_bildschirmfoto_2015-08-22_um_22.21.49.jpg

    Jetzt wird's haarig:

    im Adapter-Unterordner iobroker.javascript/node_modules ist danach das Modul "joi" installiert. Innerhalb dieses Moduls gibt es das Modul "hoek" (siehe Screenshot). Dieses "hoek" Modul auf die gleiche Ebene wie "joi" kopieren.
    261_bildschirmfoto_2015-08-22_um_22.24.06.jpg
    Danach gehts.

    /* OWL Daten via UDP einlesen
    UDP 224.192.32.19:22600
    
    Basis: https://www.npmjs.com/package/owlintuition
    
    todo: Monatssummen
    
    erstellt: 19.08.2015 von pix
    22.08.2015 JSON auslesen
    
    */
    
    var http = require('http');
    var util = require('util');
    var OWL = require('owlintuition');
    
    var owl = new OWL();
    owl.monitor();
    
    owl.on('connect', function() {
        log( "OWL connected" );
    });
    
    owl.on('disconnect', function() {
        log( "OWL disconnected" );
    });
    
    // Elektrizitätsmessung
    // Variablen anlegen
    createState('OWL.electricity.JSON', {name: 'Network-OWL Daten als JSON'});
    createState('OWL.electricity.ID', {name: 'Network-OWL Identifikationsnummer'});
    createState('OWL.electricity.ID.Batterie', {name: 'Network-OWL Batterieleistung', unit: '%'});
    createState('OWL.electricity.ID.RSSI', {name: 'Network-OWL Sendeleistung', unit: 'db'});
    
    createState('OWL.electricity.ID.Kanal1.aktuell', {name: 'Network-OWL Phase 1 aktuell', unit: 'W'});
    createState('OWL.electricity.ID.Kanal1.Tag', {name: 'Network-OWL Phase 1 Tag', unit: 'Wh'});
    
    createState('OWL.electricity.ID.Kanal2.aktuell', {name: 'Network-OWL Phase 2 aktuell', unit: 'W'});
    createState('OWL.electricity.ID.Kanal2.Tag', {name: 'Network-OWL Phase 2 Tag', unit: 'Wh'});
    
    createState('OWL.electricity.ID.Kanal3.aktuell', {name: 'Network-OWL Phase 3 aktuell', unit: 'W'});
    createState('OWL.electricity.ID.Kanal3.Tag', {name: 'Network-OWL Phase 3 Tag', unit: 'Wh'});
    
    // Daten auslesen
    owl.on('electricity', function(obj) {
    
        log('---------- Network OWL -------');
    
        var objekt = util.inspect(obj, {"depth": null});
        objekt_string = objekt.toString();
        daten = objekt_string.substring(1, objekt_string.length-1); // Hochkommas am Anfang und Ende abschneiden
        // log('OWL JSON-Daten eingelesen: ' + daten);
        daten = JSON.parse(daten.toString());
        setState('OWL.electricity.JSON', daten);
    
        // ID-Nummer
        var owl_id = JSON.parse(JSON.stringify(daten.id).toString());
        setState('OWL.electricity.ID', owl_id);
        log('OWL ID: ' + owl_id);    
    
        // Empfang
        var owl_rssi = JSON.parse(JSON.stringify(daten.signal.rssi).toString());
        setState('OWL.electricity.ID.RSSI', parseFloat(owl_rssi));
        log('OWL RSSI: ' + owl_rssi + ' dB');
    
        // Batterie
        var owl_batterie = JSON.parse(JSON.stringify(daten.battery).toString());
        setState('OWL.electricity.ID.Batterie', parseInt(owl_batterie,10)); // ohne %
        log('OWL Batterie: ' + parseInt(owl_batterie,10) + '%');
    
        // Kanal 1
        var kanal1 = JSON.parse(JSON.stringify(daten.channels[0]).toString()); // Verschachtelung nötig, da Feld '0' heißt
        var owl_ch1_aktuell = kanal1[0].current;
        setState('OWL.electricity.ID.Kanal1.aktuell', parseInt(owl_ch1_aktuell));
        log('OWL Phase 1 aktuell: ' + owl_ch1_aktuell + ' W');
    
        var owl_ch1_tag = kanal1[1].day;
        setState('OWL.electricity.ID.Kanal1.Tag', parseFloat(owl_ch1_tag));
        log('OWL Phase 1 Tag: ' + owl_ch1_tag + ' Wh');
    
        // Kanal 2
        var kanal2 = JSON.parse(JSON.stringify(daten.channels[1]).toString());   
        var owl_ch2_aktuell = kanal2[0].current;
        setState('OWL.electricity.ID.Kanal2.aktuell', parseInt(owl_ch2_aktuell));
        log('OWL Phase 2 aktuell: ' + owl_ch2_aktuell + ' W');
    
        var owl_ch2_tag = kanal2[1].day;
        setState('OWL.electricity.ID.Kanal2.Tag', parseFloat(owl_ch2_tag));
        log('OWL Phase 2 Tag: ' + owl_ch2_tag + ' Wh');
    
        // Kanal 3
        var kanal3 = JSON.parse(JSON.stringify(daten.channels[2]).toString());   
        var owl_ch3_aktuell = kanal3[0].current;
        setState('OWL.electricity.ID.Kanal3.aktuell', parseInt(owl_ch3_aktuell));
        log('OWL Phase 3 aktuell: ' + owl_ch3_aktuell + ' W');
    
        var owl_ch3_tag = kanal3[1].day;
        setState('OWL.electricity.ID.Kanal3.Tag', parseFloat(owl_ch3_tag));
        log('OWL Phase 3 Tag: ' + owl_ch3_tag + ' Wh');
    
        log('------------------------------');
    
    });
    

    __Eine Frage habe ich allerdings noch: :?

    Wer kann erklären, warum das Script sich mehrfach aufruft, wenn man es mehrfach edititert und wieder abgespeichert hat? Das nur am Rande.__

    Vielleicht mag noch jemand die Monatssummen einfügen, so wie hier Rookie das http://forum.iobroker.org/viewtopic.php?f=32&t=606&p=9974&hilit=OWL#p9974 schon mal gemacht hat. :P

    Gruß und viel Erfolg,

    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      Wieso kannst du nicht zu "xml2js, oauth, owlintuition, util, joi, dgram" noch hoek einfügen?

      "xml2js, oauth, owlintuition, util, joi, dgram, hoek"

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #3

        Schon dgram hat Probleme gemacht, hoek ließ sich so gar nicht mehr installieren. Habe das Gefühl, es können nicht so viele Module auf einmal installiert werden. Man kann natürlich jedes Modul einzeln laden und die Instanz jeweils danach Neustarten. Einmal installiert, bleibt auch installiert.

        Gruß

        Pix

        Gesendet von meinem iPhone mit Tapatalk

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          @pix:

          Schon dgram hat Probleme gemacht, hoek ließ sich so gar nicht mehr installieren. Habe das Gefühl, es können nicht so viele Module auf einmal installiert werden. Man kann natürlich jedes Modul einzeln laden und die Instanz jeweils danach Neustarten. Einmal installiert, bleibt auch installiert.

          Gruß

          Pix

          Gesendet von meinem iPhone mit Tapatalk `
          Es ist übrigens ein Fehler gewesen. :( Nächstes mal sofort berichten. Jetzt sollte gehen. 8-)
          5683_bildschirmfoto_2018-02-17_um_16.43.57.png
          5683_bildschirmfoto_2018-02-17_um_16.45.16.png
          5683_bildschirmfoto_2018-02-17_um_16.45.50.png

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #5

            Hallo zusammen,

            hier nochmal eine kleine Aktualisierung.

            Neu im Skript sind die Summen aller Phasen (aktuell und Tag) und das schaltbare Loggen. Da das Skript minütlich läuft, würde nach der Testphase zuviel geloggt werden. Kann man jetzt oben ausschalten.

            /* OWL Daten via UDP einlesen
            UDP 224.192.32.19:22600 alle 60s
            
            Basis: https://www.npmjs.com/package/owlintuition
            
            todo: Monatssummen
            
            erstellt: 19.08.2015 von pix
            22.08.2015 JSON auslesen
            23.08.2015 Tagessummen und aktuelle Messung aller drei Phasen addiert
                       Log-Ausgabe zentral schalten
            
            */
            
            var logging = false; // (true;false) Logausgabe zentral schalten, da minütlich ein Mehrzeiler geloggt wird.
            
            var http = require('http');
            var util = require('util');
            var OWL = require('owlintuition');
            
            var owl = new OWL();
            owl.monitor();
            
            owl.on('connect', function() {
                log( "OWL connected" );
            });
            
            owl.on('disconnect', function() {
                log( "OWL disconnected" );
            });
            
            // Elektrizitätsmessung
            // Variablen anlegen
            createState('OWL.electricity.JSON', {name: 'Network-OWL Daten als JSON'});
            createState('OWL.electricity.ID', {name: 'Network-OWL Identifikationsnummer'});
            createState('OWL.electricity.ID.Batterie', {name: 'Network-OWL Batterieleistung', unit: '%'});
            createState('OWL.electricity.ID.RSSI', {name: 'Network-OWL Sendeleistung', unit: 'db'});
            
            createState('OWL.electricity.ID.Kanal1.aktuell', {name: 'Network-OWL Phase 1 aktuell', unit: 'W'});
            createState('OWL.electricity.ID.Kanal1.Tag', {name: 'Network-OWL Phase 1 Tag', unit: 'Wh'});
            
            createState('OWL.electricity.ID.Kanal2.aktuell', {name: 'Network-OWL Phase 2 aktuell', unit: 'W'});
            createState('OWL.electricity.ID.Kanal2.Tag', {name: 'Network-OWL Phase 2 Tag', unit: 'Wh'});
            
            createState('OWL.electricity.ID.Kanal3.aktuell', {name: 'Network-OWL Phase 3 aktuell', unit: 'W'});
            createState('OWL.electricity.ID.Kanal3.Tag', {name: 'Network-OWL Phase 3 Tag', unit: 'Wh'});
            
            // Variablen für Summe der Kanäle anlegen
            createState('OWL.electricity.ID.Summe.aktuell', {name: 'Network-OWL Summe aller Phasen aktuell', unit: 'W'});
            createState('OWL.electricity.ID.Summe.Tag', {name: 'Network-OWL Summe aller Phasen Tag', unit: 'Wh'});
            
            // Daten einlesen
            owl.on('electricity', function(obj) {
            
                if (logging) log('---------- Network OWL -------');
            
                var objekt = util.inspect(obj, {"depth": null});
                objekt_string = objekt.toString();
                daten = objekt_string.substring(1, objekt_string.length-1); // Hochkommas am Anfang und Ende abschneiden
                // log('OWL JSON-Daten eingelesen: ' + daten);
                daten = JSON.parse(daten.toString());
                setState('OWL.electricity.JSON', daten);
            
                // ID-Nummer
                var owl_id = JSON.parse(JSON.stringify(daten.id).toString());
                setState('OWL.electricity.ID', owl_id);
                if (logging) log('OWL ID: ' + owl_id);    
            
                // Empfang
                var owl_rssi = JSON.parse(JSON.stringify(daten.signal.rssi).toString());
                setState('OWL.electricity.ID.RSSI', parseFloat(owl_rssi));
                if (logging) log('OWL RSSI: ' + owl_rssi + ' dB');
            
                // Batterie
                var owl_batterie = JSON.parse(JSON.stringify(daten.battery).toString());
                setState('OWL.electricity.ID.Batterie', parseInt(owl_batterie,10)); // ohne %
                if (logging) log('OWL Batterie: ' + parseInt(owl_batterie,10) + '%');
            
                // Kanal 1
                var kanal1 = JSON.parse(JSON.stringify(daten.channels[0]).toString()); // Verschachtelung nötig, da Feld '0' heißt
                var owl_ch1_aktuell = kanal1[0].current;
                setState('OWL.electricity.ID.Kanal1.aktuell', parseInt(owl_ch1_aktuell));
                if (logging) log('OWL Phase 1 aktuell: ' + owl_ch1_aktuell + ' W');
            
                var owl_ch1_tag = kanal1[1].day;
                setState('OWL.electricity.ID.Kanal1.Tag', parseFloat(owl_ch1_tag));
                if (logging) log('OWL Phase 1 Tag: ' + owl_ch1_tag + ' Wh');
            
                // Kanal 2
                var kanal2 = JSON.parse(JSON.stringify(daten.channels[1]).toString());   
                var owl_ch2_aktuell = kanal2[0].current;
                setState('OWL.electricity.ID.Kanal2.aktuell', parseInt(owl_ch2_aktuell));
                if (logging) log('OWL Phase 2 aktuell: ' + owl_ch2_aktuell + ' W');
            
                var owl_ch2_tag = kanal2[1].day;
                setState('OWL.electricity.ID.Kanal2.Tag', parseFloat(owl_ch2_tag));
                if (logging) log('OWL Phase 2 Tag: ' + owl_ch2_tag + ' Wh');
            
                // Kanal 3
                var kanal3 = JSON.parse(JSON.stringify(daten.channels[2]).toString());   
                var owl_ch3_aktuell = kanal3[0].current;
                setState('OWL.electricity.ID.Kanal3.aktuell', parseInt(owl_ch3_aktuell));
                if (logging) log('OWL Phase 3 aktuell: ' + owl_ch3_aktuell + ' W');
            
                var owl_ch3_tag = kanal3[1].day;
                setState('OWL.electricity.ID.Kanal3.Tag', parseFloat(owl_ch3_tag));
                if (logging) log('OWL Phase 3 Tag: ' + owl_ch3_tag + ' Wh');
            
                // Summe aller Phasen (selbst generiert, wird nicht übertragen)
                var summe_aller_phasen_aktuell =  parseInt(owl_ch1_aktuell) +  parseInt(owl_ch2_aktuell) +  parseInt(owl_ch3_aktuell);
                setState('OWL.electricity.ID.Summe.aktuell', summe_aller_phasen_aktuell);
                if (logging) log('OWL Phase 1-3 aktuell: ' + summe_aller_phasen_aktuell + ' W');
            
                var summe_aller_phasen_tag =  parseFloat(owl_ch1_tag) +  parseFloat(owl_ch2_tag) +  parseFloat(owl_ch3_tag);
                setState('OWL.electricity.ID.Summe.Tag', summe_aller_phasen_tag);
                if (logging) log('OWL Phase 1-3 Tag: ' + summe_aller_phasen_tag + ' Wh');
            
                if (logging) log('------------------------------');
            
            });
            

            Gruß

            Pix

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #6

              Hallo,

              hab Ihr OWL-Besitzer auch neuerdings das Problem, dass der json String nicht mehr die Channels liefert und nach dem Batterie-Wert endet?

              {"id":"44XXXXXXXXXXXXX","signal":{"rssi":"-78","lqi":"77"},"battery":"100%","channels":{"2":null}}
              

              Scheinbar wird das notwendige Modul owlintuiion nicht mehr gefunden.

              2015-09-25 19:50:31.276  - error: javascript.2 script.js.OWL: Cannot find module '/Users/pix/Documents/iobroker/node_modules/iobroker.javascript/node_modules/owlintuition'
                at script.js.OWL:80:11
              2015-09-25 19:50:31.282  - error: javascript.2 script.js.OWL: TypeError: undefined is not a function
              

              Es lässt sich aber auch nicht nachinstallieren

              2015-09-25 19:50:26.034  - error: javascript.2 npm ERR! System Darwin 14.4.0
              npm ERR! command "node" "/usr/local/bin/npm" "install" "owlintuition" "--production" "--prefix" "/Users/pix/Documents/iobroker/node_modules/iobroker.javascript"
              

              ! ````
              sudo npm install owlintuition --production --prefix /Users/pix/Documents/iobroker/node_modules/iobroker.javascript
              Password:
              npm WARN package.json util@0.10.3 util is also the name of a node core module.
              npm WARN engine hoek@2.16.3: wanted: {"node":">=0.10.40"} (current: {"node":"0.10.33","npm":"1.4.28"})
              /
              iconv@2.1.11 install /Users/pix/Documents/iobroker/node_modules/iobroker.javascript/node_modules/owlintuition/node_modules/xml2json/node_modules/node-expat/node_modules/iconv
              node-gyp rebuild
              ! Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
              ! Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
              ! gyp ERR! build error
              gyp ERR! stack Error: make failed with exit code: 69
              gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
              gyp ERR! stack at ChildProcess.emit (events.js:98:17)
              gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:810:12)
              gyp ERR! System Darwin 14.4.0
              gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
              gyp ERR! cwd /Users/pix/Documents/iobroker/node_modules/iobroker.javascript/node_modules/owlintuition/node_modules/xml2json/node_modules/node-expat/node_modules/iconv
              gyp ERR! node -v v0.10.33
              gyp ERR! node-gyp -v v1.0.1
              gyp ERR! not ok
              ! npm ERR! iconv@2.1.11 install: node-gyp rebuild
              npm ERR! Exit status 1
              npm ERR!
              npm ERR! Failed at the iconv@2.1.11 install script.
              npm ERR! This is most likely a problem with the iconv package,
              npm ERR! not with npm itself.
              npm ERR! Tell the author that this fails on your system:
              npm ERR! node-gyp rebuild
              npm ERR! You can get their info via:
              npm ERR! npm owner ls iconv
              npm ERR! There is likely additional logging output above.
              npm ERR! System Darwin 14.4.0
              npm ERR! command "node" "/usr/local/bin/npm" "install" "owlintuition" "--production" "--prefix" "/Users/pix/Documents/iobroker/node_modules/iobroker.javascript"
              npm ERR! cwd /Users/pix/Documents/iobroker
              npm ERR! node -v v0.10.33
              npm ERR! npm -v 1.4.28
              npm ERR! code ELIFECYCLE
              npm ERR! not ok code 0

              
              Gruß,
              
              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              361

              Online

              32.6k

              Benutzer

              82.0k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe