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. ioBroker Allgemein
  4. Rest-API adapter configuration für API Powerdog

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Rest-API adapter configuration für API Powerdog

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
14 Beiträge 3 Kommentatoren 840 Aufrufe 3 Watching
  • Ä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.
  • H HT22

    Guten Tag, hat schon jemand Daten über die API vom Powerdog (ecodata) erfolgreich in iobroker integriert? Gibt es hier eine gute Anleitung? Der Powerdog Adpater funktioniert leider nicht. Vielen Dank.

    mcm1957M Online
    mcm1957M Online
    mcm1957
    schrieb am zuletzt editiert von
    #3

    @ht22 said in Rest-API adapter configuration für API Powerdog:

    Der Powerdog Adpater funktioniert leider nicht. Vielen Dank.

    Das braucht dich aber nicht zu wundern.

    Wenn du den Adapter meinst: https://github.com/JoeDev002/iobroker.powerdog - der ist nicht im Repository. Wohl aus gutem Grund, Und seit Jahren nicht aktualisisert.

    Ganz generell gilt:

    Von direkten Installation von GitHub - insbesondere auf produktiven Systemen - wird explizit abgeraten.

    GitHub Versionen können sich jederzeit (auch kurzfristig) ändern und durchaus auch in sich inkonsistent und fehlerhaft sein. Versionsangaben von GitHub Installationen sind Schall und Rauch da die Versionsnummer zumindest bei Verwendung der standardmäßigen Umgebung erst im Zuge der Releaseerstellung geändert wird.

    Auf explizite Aufforderung durch den Entwickler kann eine GitHub Installation zur Fehlereingrenzung oder zum Test neuer Funktionalität - unter Inkaufnahme des erhöhten Risikos - natürlich erfolgen.

    Adapter die nur via GitHub oder npm (also NICHT aus einem der beiden Repositories) installierbar sind sind mit erhöhter Vorsicht zu betrachten. Hier sollte der Entwickler drum ersucht werden eine Aufnahme in die Repositories zu veranlassen indem z.B. ein Issue im Adapterrepository erstellt wird.

    Und falls es irgendwie unklar ist:

    ioBroker unterstützt folgende Arten von Installation:

    • aus dem STABLE Repository

      Das sind Adapter Releases die keine groben Fehler aufweisen (sollten). Natürlich kann es auch dort Fehler geben, die Behebung davon obliegt dem jeweiligen Dev und kann ggF auch dauern.

    • aus dem LATEST Repository

      Das sind Adapter Releases die neu erstellt wurden und nur rudimentär getestet sind - oft auch als BETA Releases bezeichnet. Releases aus dem LATEST sind primär für unsere zahlreichen freiwilligen Tester gedacht. BETA / LATEST Releases können durchaus Fehler aufweisen - auch wenn ich davon ausgehe dass jeder aintainer dies zu vermeiden versucht. Vom Einsatz auf produktiven Systemen wird abgeraten außer man braucht irgenein neues Feature (z.B. neues Gerät) unbedingt. Hier muss dann jeder Entscheiden was ihm wichtig ist.

    • direkt von GITHUB

      Von Installationen direkt aus Giuthub wird definitiv abgeraten außer auf Anweisung des Maintainers und für den Fall dass man gemeinsam mit diesem etwas testen will. Details siehe oben.

    • direkt von npm

      Diese Installation kann erforderlich sein, wenn man eine bestimmte Version installieren möchte / muss. Im Normalfall sollte man direkte npm Installationen ebenso meiden wie direkte GitHub Installationen - ausgenommen um z.B. zu einer bekannten Version downzugraden - obwohl hier wenigstens ein definierter Stand garantiert ist.

    Adapter die NUR via npm und/oder nur via GitHub installierbar sind sollte man meiden - diese wurden nicht mal einem rudimentären Review unterzogen und sollten mit dem Attribut "vollständig auf eigenes Risiko verwenden" installiert werden. Hier empfiehlt es sich den Developer zu ersuchen eine Aufnahme in die Repos zu veranlassen. Wenn dieser darauf nicht reagiert sollte man von einer eher kurzen und unklaren Lebensdauer des Adapters ausgehen. Support meiner-/unsererseits für solche Adapter ist mit sicherheit minimalistisch.
    @mcm1957
    Comment

    Leave a comment

    Footer

    Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
    Support Repositoryverwaltung.

    Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

    LESEN - gute Forenbeitrage

    1 Antwort Letzte Antwort
    0
    • M MCU

      @ht22 Hab mal einige Infos zusammen gestellt, keine Ahnung ob es hilft. Hab selber kein power-dog.
      https://api.power-dog.eu/generator/

      https://api.power-dog.eu/documentation/

      https://forum.iobroker.net/topic/10985/gelöst-mit-iobroker-daten-von-powerdog-auslesen

      Script Beispiel ungetestet
      Voraussetzung: xmlrpc in javascript Modul eintragen
      b1ec7b09-c23c-4674-8f8d-01392026ef7c-image.png

      Was kommt in der console?

      const xmlrpc = require('xmlrpc');
      
      // Konfigurationsvariablen für PowerDog
      const powerDogIp = '192.168.0.100'; // IP-Adresse des PowerDog-Geräts
      const powerDogPort = 20000;         // Portnummer
      const apiKey = 'DEIN_API_KEY';      // Dein API-Schlüssel
      
      
      
      // Erstelle den XML-RPC-Client
      const client = xmlrpc.createClient({
          host: powerDogIp,
          port: powerDogPort,
          path: '/'
      });
      
      // Funktion zum Auslesen und Speichern von Daten
      function fetchPowerDogData(method, namespace) {
          client.methodCall(method, [apiKey], function (error, response) {
              if (error) {
                  log(`Fehler beim Abrufen der ${namespace}-Daten: ${error}`, 'error');
              } else if (response && response.Reply) {
                  const data = response.Reply;
                  log(`${namespace}-Daten erhalten: ${JSON.stringify(data)}`, 'info');
      
                  // Daten im ioBroker speichern
                  /*
                  for (const key in data) {
                      if (data.hasOwnProperty(key)) {
                          const obj = data[key];
                          if (typeof obj === 'object') {
                              for (const subKey in obj) {
                                  if (obj.hasOwnProperty(subKey)) {
                                      const value = obj[subKey];
                                      const id = `${namespace}.${key}.${subKey}`;
      
                                      // Objekt erstellen, falls es nicht existiert
                                      //createState(id, value, { name: subKey, type: typeof value, role: 'state' });
      
                                      // Wert setzen
                                      //setState(id, value, true);
                                  }
                              }
                          }
                      }
                  }
                  */
              } else {
                  log(`Keine ${namespace}-Daten erhalten.`, 'warn');
              }
          });
      }
      
      // PowerDog-Informationen abrufen
      fetchPowerDogData('getPowerDogInfo', 'Info');
      
      // Sensor-Daten abrufen
      fetchPowerDogData('getSensors', 'Sensors');
      
      // Zähler-Daten abrufen
      fetchPowerDogData('getCounters', 'Counters');
      
      
      H Offline
      H Offline
      HT22
      schrieb am zuletzt editiert von
      #4

      @mcu Vielen Dank für die Antwort. Leider scheitere ich schon an dem ersten Schritt. Was ist gemeint mit "Voraussetzung: xmlrpc in javascript Modul eintragen" ? Den Code gebe ich dann im unter Scripte JS ein. Folgender Fehlercode:"
      Javascript.0 19:42:52.101 error script.js.Powerdog: Error: Cannot find module '@iobroker-javascript.0/xmlrpc'
      javascript.0 19:42:52.105 error at script.js.Powerdog:2:16
      javascript.0 19:42:52.106 error at script.js.Powerdog:69:3
      javascript.0 19:42:52.122 error script.js.Powerdog: TypeError: Cannot read properties of undefined (reading 'createClient')
      javascript.0 19:42:52.124 error at script.js.Powerdog:12:23
      javascript.0 19:42:52.124 error at script.js.Powerdog:69:3

      M 1 Antwort Letzte Antwort
      0
      • H HT22

        @mcu Vielen Dank für die Antwort. Leider scheitere ich schon an dem ersten Schritt. Was ist gemeint mit "Voraussetzung: xmlrpc in javascript Modul eintragen" ? Den Code gebe ich dann im unter Scripte JS ein. Folgender Fehlercode:"
        Javascript.0 19:42:52.101 error script.js.Powerdog: Error: Cannot find module '@iobroker-javascript.0/xmlrpc'
        javascript.0 19:42:52.105 error at script.js.Powerdog:2:16
        javascript.0 19:42:52.106 error at script.js.Powerdog:69:3
        javascript.0 19:42:52.122 error script.js.Powerdog: TypeError: Cannot read properties of undefined (reading 'createClient')
        javascript.0 19:42:52.124 error at script.js.Powerdog:12:23
        javascript.0 19:42:52.124 error at script.js.Powerdog:69:3

        M Online
        M Online
        MCU
        schrieb am zuletzt editiert von MCU
        #5

        @ht22
        javascript Instanz Einstellungen öffnen -> Zusätzliche NPM Module anklicken und xmlrpx eintragen
        -> Speichern und schliessen klicken

        javascriptModulXmlrpc.gif

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        H 1 Antwort Letzte Antwort
        0
        • M MCU

          @ht22
          javascript Instanz Einstellungen öffnen -> Zusätzliche NPM Module anklicken und xmlrpx eintragen
          -> Speichern und schliessen klicken

          javascriptModulXmlrpc.gif

          H Offline
          H Offline
          HT22
          schrieb am zuletzt editiert von
          #6

          @mcu
          Vielen vielen Dank. Das scheint wohl zu funktionieren. Leider bin ich absolut nicht fit im script. Es scheint zu funktionieren nur leider habe ich keine Ahnung wie ich diese werte dann in Variablen bekomme um sie weiter zu verwenden und wo in dem iobroker Baum ich diese Daten dann finden kann. Wäre über Unterstützung sehr dankbar, da ich eigentlich nur einen einzelnen Zählerwert noch benötige aus dem Powerdog.
          javascript.0 10:49:55.952 info Start JavaScript script.js.Powerdog (Javascript/js)
          javascript.0 10:49:56.041 info script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          javascript.0 10:49:56.064 info script.js.Powerdog: Info-Daten erhalten: {}
          javascript.0 10:49:56.078 info script.js.Powerdog: Sensors-Daten erhalten: {}
          javascript.0 10:49:56.079 info script.js.Powerdog: Counters-Daten erhalten: {}

          M 1 Antwort Letzte Antwort
          0
          • H HT22

            @mcu
            Vielen vielen Dank. Das scheint wohl zu funktionieren. Leider bin ich absolut nicht fit im script. Es scheint zu funktionieren nur leider habe ich keine Ahnung wie ich diese werte dann in Variablen bekomme um sie weiter zu verwenden und wo in dem iobroker Baum ich diese Daten dann finden kann. Wäre über Unterstützung sehr dankbar, da ich eigentlich nur einen einzelnen Zählerwert noch benötige aus dem Powerdog.
            javascript.0 10:49:55.952 info Start JavaScript script.js.Powerdog (Javascript/js)
            javascript.0 10:49:56.041 info script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            javascript.0 10:49:56.064 info script.js.Powerdog: Info-Daten erhalten: {}
            javascript.0 10:49:56.078 info script.js.Powerdog: Sensors-Daten erhalten: {}
            javascript.0 10:49:56.079 info script.js.Powerdog: Counters-Daten erhalten: {}

            M Online
            M Online
            MCU
            schrieb am zuletzt editiert von MCU
            #7

            @ht22 Es kommen aber keine Daten. Welcher Port ist denn im Adapter eingegeben, auch 20000?

            Log immer in Code-Tags -> </> anklicken und dann einfügen

            javascript.0 10:49:55.952 info Start JavaScript script.js.Powerdog (Javascript/js)
            javascript.0 10:49:56.041 info script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            javascript.0 10:49:56.064 info script.js.Powerdog: Info-Daten erhalten: {}
            javascript.0 10:49:56.078 info script.js.Powerdog: Sensors-Daten erhalten: {}
            javascript.0 10:49:56.079 info script.js.Powerdog: Counters-Daten erhalten: {}
            
            
            const xmlrpc = require('xmlrpc');
             
            // Konfigurationsvariablen für PowerDog
            const powerDogIp = '192.168.0.100'; // IP-Adresse des PowerDog-Geräts
            const powerDogPort = 20000;         // Portnummer
            const apiKey = 'DEIN_API_KEY';      // Dein API-Schlüssel
             
             
             
            // Erstelle den XML-RPC-Client
            const client = xmlrpc.createClient({
                host: powerDogIp,
                port: powerDogPort,
                path: '/'
            });
             
            // Funktion zum Auslesen und Speichern von Daten
            function fetchPowerDogData(method, namespace) {
                client.methodCall(method, [apiKey], function(error, obj, reply) {
                    if (error) {
                        log(`Fehler beim Abrufen der ${namespace}-Daten: ${error}`, 'error');
                    } else {
                             console.log(obj)
                    }
                        
                });
            }
             
            // PowerDog-Informationen abrufen
            fetchPowerDogData('getPowerDogInfo', 'Info');
             
            // Sensor-Daten abrufen
            fetchPowerDogData('getSensors', 'Sensors');
             
            // Zähler-Daten abrufen
            fetchPowerDogData('getCounters', 'Counters');
             
            
            

            Nimm mal erst dies Programm

            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

            H 2 Antworten Letzte Antwort
            0
            • M MCU

              @ht22 Es kommen aber keine Daten. Welcher Port ist denn im Adapter eingegeben, auch 20000?

              Log immer in Code-Tags -> </> anklicken und dann einfügen

              javascript.0 10:49:55.952 info Start JavaScript script.js.Powerdog (Javascript/js)
              javascript.0 10:49:56.041 info script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
              javascript.0 10:49:56.064 info script.js.Powerdog: Info-Daten erhalten: {}
              javascript.0 10:49:56.078 info script.js.Powerdog: Sensors-Daten erhalten: {}
              javascript.0 10:49:56.079 info script.js.Powerdog: Counters-Daten erhalten: {}
              
              
              const xmlrpc = require('xmlrpc');
               
              // Konfigurationsvariablen für PowerDog
              const powerDogIp = '192.168.0.100'; // IP-Adresse des PowerDog-Geräts
              const powerDogPort = 20000;         // Portnummer
              const apiKey = 'DEIN_API_KEY';      // Dein API-Schlüssel
               
               
               
              // Erstelle den XML-RPC-Client
              const client = xmlrpc.createClient({
                  host: powerDogIp,
                  port: powerDogPort,
                  path: '/'
              });
               
              // Funktion zum Auslesen und Speichern von Daten
              function fetchPowerDogData(method, namespace) {
                  client.methodCall(method, [apiKey], function(error, obj, reply) {
                      if (error) {
                          log(`Fehler beim Abrufen der ${namespace}-Daten: ${error}`, 'error');
                      } else {
                               console.log(obj)
                      }
                          
                  });
              }
               
              // PowerDog-Informationen abrufen
              fetchPowerDogData('getPowerDogInfo', 'Info');
               
              // Sensor-Daten abrufen
              fetchPowerDogData('getSensors', 'Sensors');
               
              // Zähler-Daten abrufen
              fetchPowerDogData('getCounters', 'Counters');
               
              
              

              Nimm mal erst dies Programm

              H Offline
              H Offline
              HT22
              schrieb am zuletzt editiert von
              #8

              @mcu
              Danke. Leider kommt jetzt ein Fehler mit dem Passwort. Was hattest du gemeint bezüglich Port im Adapter? In welchem Adapter müsste der Port eingetragen werden. Bitte entschuldige die vielen Fragen, aber habe da leider gar keine Ahnung.

              1/5/2025, 7:30:36 PM.384	[info ]: javascript.0 (1854) Start JavaScript script.js.Powerdog (Javascript/js)
              1/5/2025, 7:30:36 PM.447	[info ]: javascript.0 (1854) script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
              1/5/2025, 7:30:36 PM.470	[info ]: javascript.0 (1854) script.js.Powerdog: { ErrorCode: 401, ErrorString: 'Invalid Password', Reply: {} }
              1/5/2025, 7:30:36 PM.473	[info ]: javascript.0 (1854) script.js.Powerdog: { ErrorCode: 401, ErrorString: 'Invalid Password', Reply: {} }
              1/5/2025, 7:30:36 PM.481	[info ]: javascript.0 (1854) script.js.Powerdog: { ErrorCode: 401, ErrorString: 'Invalid Password', Reply: {} }
              
              
              1 Antwort Letzte Antwort
              0
              • M MCU

                @ht22 Es kommen aber keine Daten. Welcher Port ist denn im Adapter eingegeben, auch 20000?

                Log immer in Code-Tags -> </> anklicken und dann einfügen

                javascript.0 10:49:55.952 info Start JavaScript script.js.Powerdog (Javascript/js)
                javascript.0 10:49:56.041 info script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                javascript.0 10:49:56.064 info script.js.Powerdog: Info-Daten erhalten: {}
                javascript.0 10:49:56.078 info script.js.Powerdog: Sensors-Daten erhalten: {}
                javascript.0 10:49:56.079 info script.js.Powerdog: Counters-Daten erhalten: {}
                
                
                const xmlrpc = require('xmlrpc');
                 
                // Konfigurationsvariablen für PowerDog
                const powerDogIp = '192.168.0.100'; // IP-Adresse des PowerDog-Geräts
                const powerDogPort = 20000;         // Portnummer
                const apiKey = 'DEIN_API_KEY';      // Dein API-Schlüssel
                 
                 
                 
                // Erstelle den XML-RPC-Client
                const client = xmlrpc.createClient({
                    host: powerDogIp,
                    port: powerDogPort,
                    path: '/'
                });
                 
                // Funktion zum Auslesen und Speichern von Daten
                function fetchPowerDogData(method, namespace) {
                    client.methodCall(method, [apiKey], function(error, obj, reply) {
                        if (error) {
                            log(`Fehler beim Abrufen der ${namespace}-Daten: ${error}`, 'error');
                        } else {
                                 console.log(obj)
                        }
                            
                    });
                }
                 
                // PowerDog-Informationen abrufen
                fetchPowerDogData('getPowerDogInfo', 'Info');
                 
                // Sensor-Daten abrufen
                fetchPowerDogData('getSensors', 'Sensors');
                 
                // Zähler-Daten abrufen
                fetchPowerDogData('getCounters', 'Counters');
                 
                
                

                Nimm mal erst dies Programm

                H Offline
                H Offline
                HT22
                schrieb am zuletzt editiert von
                #9

                @mcu ```
                Wenn ich einen anderen Port verwende (habe in einem Beitrag auch etwas von 80 gefunden) kommt folgende Fehlermeldung.

                1/5/2025, 7:46:30 PM.130	[info ]: javascript.0 (1854) Stopping script script.js.Powerdog
                1/5/2025, 7:46:31 PM.863	[info ]: javascript.0 (1854) Start JavaScript script.js.Powerdog (Javascript/js)
                1/5/2025, 7:46:31 PM.882	[info ]: javascript.0 (1854) script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                1/5/2025, 7:46:31 PM.894	[error]: javascript.0 (1854) script.js.Powerdog: Fehler beim Abrufen der Sensors-Daten: Error: Unknown XML-RPC tag 'TITLE'
                1/5/2025, 7:46:31 PM.921	[error]: javascript.0 (1854) script.js.Powerdog: Fehler beim Abrufen der Info-Daten: Error: Unknown XML-RPC tag 'TITLE'
                1/5/2025, 7:46:31 PM.944	[error]: javascript.0 (1854) script.js.Powerdog: Fehler beim Abrufen der Counters-Daten: Error: Unknown XML-RPC tag 'TITLE'
                1/5/2025, 7:47:21 PM.471	[info ]: javascript.0 (1854) Stopping script script.js.Powerdog
                
                M 1 Antwort Letzte Antwort
                0
                • H HT22

                  @mcu ```
                  Wenn ich einen anderen Port verwende (habe in einem Beitrag auch etwas von 80 gefunden) kommt folgende Fehlermeldung.

                  1/5/2025, 7:46:30 PM.130	[info ]: javascript.0 (1854) Stopping script script.js.Powerdog
                  1/5/2025, 7:46:31 PM.863	[info ]: javascript.0 (1854) Start JavaScript script.js.Powerdog (Javascript/js)
                  1/5/2025, 7:46:31 PM.882	[info ]: javascript.0 (1854) script.js.Powerdog: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                  1/5/2025, 7:46:31 PM.894	[error]: javascript.0 (1854) script.js.Powerdog: Fehler beim Abrufen der Sensors-Daten: Error: Unknown XML-RPC tag 'TITLE'
                  1/5/2025, 7:46:31 PM.921	[error]: javascript.0 (1854) script.js.Powerdog: Fehler beim Abrufen der Info-Daten: Error: Unknown XML-RPC tag 'TITLE'
                  1/5/2025, 7:46:31 PM.944	[error]: javascript.0 (1854) script.js.Powerdog: Fehler beim Abrufen der Counters-Daten: Error: Unknown XML-RPC tag 'TITLE'
                  1/5/2025, 7:47:21 PM.471	[info ]: javascript.0 (1854) Stopping script script.js.Powerdog
                  
                  M Online
                  M Online
                  MCU
                  schrieb am zuletzt editiert von MCU
                  #10

                  @ht22 Und der Adapter sagt auch Invalid Password?
                  Ist der API-KEY noch gültig?
                  Dort wird es auch so gemacht https://github.com/JoeDev002/iobroker.powerdog/blob/master/main.js#L57

                  NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                  H 1 Antwort Letzte Antwort
                  0
                  • M MCU

                    @ht22 Und der Adapter sagt auch Invalid Password?
                    Ist der API-KEY noch gültig?
                    Dort wird es auch so gemacht https://github.com/JoeDev002/iobroker.powerdog/blob/master/main.js#L57

                    H Offline
                    H Offline
                    HT22
                    schrieb am zuletzt editiert von
                    #11

                    Hallo @mcu vielen herzlichen Dank. Ich habe jetzt nochmals deinen ersten Code genommen und den API-KEY nochmal aktualisiert und jetzt spuckt er Werte aus. Ohne deine Unterstützung wäre ich nicht soweit gekommen. Da ich ja wie beschrieben nur einen Wert abgefragt benötige, wenn diese sich ändert, wäre jetzt die Frage wie ich den Code verschlanken könnte, damit nicht alle Werte abgefragt werden müssen und vorallem wie ich diesen Wert dann in eine Variable speichern könnte, welche ich dann in iobroker weiter verwenden kann z.B. in einer VIS. Es geht um diesen Wert:

                    "impulsecounter_1702364206":{"Current_Value":"154.879","Hardware":"Impulse","Key":"impulsecounter_1702364206","Last_Read_Average":"1248","Last_Usage":"104","LinearType":"counter","Max":"10000","Name":"Waermepumpe","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true}
                    
                    
                    1/6/2025, 12:16:41 PM.542	[info ]: javascript.0 (1854) script.js.Powerdog: Sensors-Daten erhalten: {"remotesensor_1702364038":{"Current_Value":"62","Hardware":"remotesensor","Key":"remotesensor_1702364038","Last_Read_Average":"0","Last_Usage":"0","LinearType":"sensor","Max":"100","Name":"Batterie-Ladezustand","Setable":"","Type":"Percent","Unit":"%","Unit_1000":"%","Unit_1000000":"%","Unit_Time_Add":"","Valid":true}}
                    1/6/2025, 12:16:41 PM.586	[info ]: javascript.0 (1854) script.js.Powerdog: Counters-Daten erhalten: {"arithmetic_1702364033":{"Current_Value":"1943","Hardware":"calculation","Key":"arithmetic_1702364033","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"Stromverbrauch Gesamt","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"arithmetic_1702364034":{"Current_Value":"1943","Hardware":"calculation","Key":"arithmetic_1702364034","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"Eigenverbrauch Gesamt","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"impulsecounter_1702364206":{"Current_Value":"154.879","Hardware":"Impulse","Key":"impulsecounter_1702364206","Last_Read_Average":"1248","Last_Usage":"104","LinearType":"counter","Max":"10000","Name":"Waermepumpe","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"modbustcpcounter_1702364034":{"Current_Value":"0","Hardware":"ModBusTCPIP_Counter","Key":"modbustcpcounter_1702364034","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"5000","Name":"Netzbezug","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"modbustcpcounter_1702364035":{"Current_Value":"6","Hardware":"ModBusTCPIP_Counter","Key":"modbustcpcounter_1702364035","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"Netzeinspeisung","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"modbustcpcounter_1703183355":{"Current_Value":"0","Hardware":"ModBusTCPIP_Counter","Key":"modbustcpcounter_1703183355","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"wallbox","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"pv_global_1702364033":{"Current_Value":"1949","Hardware":"pv_global","Key":"pv_global_1702364033","Last_Read_Average":"2191","Last_Usage":"215","LinearType":"counter","Max":"17230","Name":"PV Erzeugung Gesamt","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"remotecounter_1702364039":{"Current_Value":"1304","Hardware":"remotecounter","Key":"remotecounter_1702364039","Last_Read_Average":"579.135","Last_Usage":"48.2612","LinearType":"counter","Max":"10000","Name":"Batterie-Laden","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"remotecounter_1702364040":{"Current_Value":"0","Hardware":"remotecounter","Key":"remotecounter_1702364040","Last_Read_Average":"700.308","Last_Usage":"58.359","LinearType":"counter","Max":"10000","Name":"Batterie-Entladen","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true}}
                    1/6/2025, 12:16:45 PM.912	[info ]: javascript.0 (1854) Stopping script script.js.Powerdog
                    M 1 Antwort Letzte Antwort
                    0
                    • H HT22

                      Hallo @mcu vielen herzlichen Dank. Ich habe jetzt nochmals deinen ersten Code genommen und den API-KEY nochmal aktualisiert und jetzt spuckt er Werte aus. Ohne deine Unterstützung wäre ich nicht soweit gekommen. Da ich ja wie beschrieben nur einen Wert abgefragt benötige, wenn diese sich ändert, wäre jetzt die Frage wie ich den Code verschlanken könnte, damit nicht alle Werte abgefragt werden müssen und vorallem wie ich diesen Wert dann in eine Variable speichern könnte, welche ich dann in iobroker weiter verwenden kann z.B. in einer VIS. Es geht um diesen Wert:

                      "impulsecounter_1702364206":{"Current_Value":"154.879","Hardware":"Impulse","Key":"impulsecounter_1702364206","Last_Read_Average":"1248","Last_Usage":"104","LinearType":"counter","Max":"10000","Name":"Waermepumpe","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true}
                      
                      
                      1/6/2025, 12:16:41 PM.542	[info ]: javascript.0 (1854) script.js.Powerdog: Sensors-Daten erhalten: {"remotesensor_1702364038":{"Current_Value":"62","Hardware":"remotesensor","Key":"remotesensor_1702364038","Last_Read_Average":"0","Last_Usage":"0","LinearType":"sensor","Max":"100","Name":"Batterie-Ladezustand","Setable":"","Type":"Percent","Unit":"%","Unit_1000":"%","Unit_1000000":"%","Unit_Time_Add":"","Valid":true}}
                      1/6/2025, 12:16:41 PM.586	[info ]: javascript.0 (1854) script.js.Powerdog: Counters-Daten erhalten: {"arithmetic_1702364033":{"Current_Value":"1943","Hardware":"calculation","Key":"arithmetic_1702364033","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"Stromverbrauch Gesamt","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"arithmetic_1702364034":{"Current_Value":"1943","Hardware":"calculation","Key":"arithmetic_1702364034","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"Eigenverbrauch Gesamt","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"impulsecounter_1702364206":{"Current_Value":"154.879","Hardware":"Impulse","Key":"impulsecounter_1702364206","Last_Read_Average":"1248","Last_Usage":"104","LinearType":"counter","Max":"10000","Name":"Waermepumpe","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"modbustcpcounter_1702364034":{"Current_Value":"0","Hardware":"ModBusTCPIP_Counter","Key":"modbustcpcounter_1702364034","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"5000","Name":"Netzbezug","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"modbustcpcounter_1702364035":{"Current_Value":"6","Hardware":"ModBusTCPIP_Counter","Key":"modbustcpcounter_1702364035","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"Netzeinspeisung","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"modbustcpcounter_1703183355":{"Current_Value":"0","Hardware":"ModBusTCPIP_Counter","Key":"modbustcpcounter_1703183355","Last_Read_Average":"0","Last_Usage":"0","LinearType":"counter","Max":"10000","Name":"wallbox","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"pv_global_1702364033":{"Current_Value":"1949","Hardware":"pv_global","Key":"pv_global_1702364033","Last_Read_Average":"2191","Last_Usage":"215","LinearType":"counter","Max":"17230","Name":"PV Erzeugung Gesamt","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"remotecounter_1702364039":{"Current_Value":"1304","Hardware":"remotecounter","Key":"remotecounter_1702364039","Last_Read_Average":"579.135","Last_Usage":"48.2612","LinearType":"counter","Max":"10000","Name":"Batterie-Laden","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true},"remotecounter_1702364040":{"Current_Value":"0","Hardware":"remotecounter","Key":"remotecounter_1702364040","Last_Read_Average":"700.308","Last_Usage":"58.359","LinearType":"counter","Max":"10000","Name":"Batterie-Entladen","Setable":"","Type":"Energy","Unit":"W","Unit_1000":"kW","Unit_1000000":"MW","Unit_Time_Add":"h","Valid":true}}
                      1/6/2025, 12:16:45 PM.912	[info ]: javascript.0 (1854) Stopping script script.js.Powerdog
                      M Online
                      M Online
                      MCU
                      schrieb am zuletzt editiert von MCU
                      #12

                      @ht22 Info-Daten fehlen noch? Wenn da IDs und sowas drin stehen -> Wert unkenntlich machen XXXX, aber nicht den KEY
                      Beispiel: "Current_Value":"154.879" -> "KEY":"WERT"
                      Wenn dann setze ich alle Daten, die man jetzt bekommt in eine Struktur.
                      Wie sieht die beim Adapter aus?
                      WElche Strktur ist gewünscht?

                      Da ich ja wie beschrieben nur einen Wert abgefragt benötige, wenn diese sich ändert

                      Änderung eines Wertes kann man erst feststellen, wenn er diese geholt hat. Also muss man in bestimmten Abständen die Werte holen, der Adapter macht es alle 5 Minuten.

                      4c3a304a-b40c-4005-b3b1-36148f95f6bf-image.png

                      Ändern sich die Zahlen am Ende vom KEY?

                      1702364033 -> Dienstag, 12. Dezember 2023 07:53:53 GMT+01:00

                      // ******************
                      // powerdog v1.0.0
                      // ******************
                      // Copyright ©MCU
                      const xmlrpc = require('xmlrpc');
                       
                      // Konfigurationsvariablen für PowerDog
                      const powerDogIp    = '192.168.0.100'; // IP-Adresse des PowerDog-Geräts
                      const powerDogPort  = 20000;         // Portnummer
                      const apiKey        = 'DEIN_API_KEY';      // Dein API-Schlüssel
                      let   userDP        = '0_userdata.0.powerdog.'   
                       
                       
                      // Erstelle den XML-RPC-Client
                      const client = xmlrpc.createClient({
                          host: powerDogIp,
                          port: powerDogPort,
                          path: '/'
                      });
                      
                      function setData(data, namespace){
                          for (const key in data) {
                              if (data.hasOwnProperty(key)) {
                                  const obj = data[key];
                                  if (typeof obj === 'object') {
                                      for (const subKey in obj) {
                                          if (obj.hasOwnProperty(subKey)) {
                                              const value = obj[subKey];
                                              const id = userDP + `${namespace}.${key}.${subKey}`;
                                              // Objekt erstellen, falls es nicht existiert
                                              createState(id, value, { name: subKey, type: typeof value, role: 'state' });
                                              // Wert setzen
                                              if(existsState(id)){
                                                  setState(id, value, true);
                                              }else{
                                                  setTimeout(function(){
                                                      setState(id, value, true);
                                                  },3000)
                                              }
                                          }
                                      }
                                  }
                              }
                          }
                      }
                      
                      // Funktion zum Auslesen und Speichern von Daten
                      function fetchPowerDogData(method, namespace) {
                          client.methodCall(method, [apiKey], function (error, response) {
                              if (error) {
                                  log(`Fehler beim Abrufen der ${namespace}-Daten: ${error}`, 'error');
                              } else if (response && response.Reply) {
                                  const data = response.Reply;
                                  // log(`${namespace}-Daten erhalten: ${JSON.stringify(data)}`, 'info');
                      
                                  // Daten im ioBroker speichern
                                  setData(data,namespace)
                              } else {
                                  log(`Keine ${namespace}-Daten erhalten.`, 'warn');
                              }
                          });
                      }
                      
                      // PowerDog-Informationen abrufen
                      fetchPowerDogData('getPowerDogInfo', 'Info');
                      
                      // Sensor-Daten abrufen
                      fetchPowerDogData('getSensors', 'Sensors');
                      
                      // Zähler-Daten abrufen
                      fetchPowerDogData('getCounters', 'Counters');
                      
                      schedule('*/05 * * * *', () => {
                          // PowerDog-Informationen abrufen
                          fetchPowerDogData('getPowerDogInfo', 'Info');
                          
                          // Sensor-Daten abrufen
                          fetchPowerDogData('getSensors', 'Sensors');
                          
                          // Zähler-Daten abrufen
                          fetchPowerDogData('getCounters', 'Counters');
                      })
                      
                      

                      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                      H 1 Antwort Letzte Antwort
                      0
                      • M MCU

                        @ht22 Info-Daten fehlen noch? Wenn da IDs und sowas drin stehen -> Wert unkenntlich machen XXXX, aber nicht den KEY
                        Beispiel: "Current_Value":"154.879" -> "KEY":"WERT"
                        Wenn dann setze ich alle Daten, die man jetzt bekommt in eine Struktur.
                        Wie sieht die beim Adapter aus?
                        WElche Strktur ist gewünscht?

                        Da ich ja wie beschrieben nur einen Wert abgefragt benötige, wenn diese sich ändert

                        Änderung eines Wertes kann man erst feststellen, wenn er diese geholt hat. Also muss man in bestimmten Abständen die Werte holen, der Adapter macht es alle 5 Minuten.

                        4c3a304a-b40c-4005-b3b1-36148f95f6bf-image.png

                        Ändern sich die Zahlen am Ende vom KEY?

                        1702364033 -> Dienstag, 12. Dezember 2023 07:53:53 GMT+01:00

                        // ******************
                        // powerdog v1.0.0
                        // ******************
                        // Copyright ©MCU
                        const xmlrpc = require('xmlrpc');
                         
                        // Konfigurationsvariablen für PowerDog
                        const powerDogIp    = '192.168.0.100'; // IP-Adresse des PowerDog-Geräts
                        const powerDogPort  = 20000;         // Portnummer
                        const apiKey        = 'DEIN_API_KEY';      // Dein API-Schlüssel
                        let   userDP        = '0_userdata.0.powerdog.'   
                         
                         
                        // Erstelle den XML-RPC-Client
                        const client = xmlrpc.createClient({
                            host: powerDogIp,
                            port: powerDogPort,
                            path: '/'
                        });
                        
                        function setData(data, namespace){
                            for (const key in data) {
                                if (data.hasOwnProperty(key)) {
                                    const obj = data[key];
                                    if (typeof obj === 'object') {
                                        for (const subKey in obj) {
                                            if (obj.hasOwnProperty(subKey)) {
                                                const value = obj[subKey];
                                                const id = userDP + `${namespace}.${key}.${subKey}`;
                                                // Objekt erstellen, falls es nicht existiert
                                                createState(id, value, { name: subKey, type: typeof value, role: 'state' });
                                                // Wert setzen
                                                if(existsState(id)){
                                                    setState(id, value, true);
                                                }else{
                                                    setTimeout(function(){
                                                        setState(id, value, true);
                                                    },3000)
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        
                        // Funktion zum Auslesen und Speichern von Daten
                        function fetchPowerDogData(method, namespace) {
                            client.methodCall(method, [apiKey], function (error, response) {
                                if (error) {
                                    log(`Fehler beim Abrufen der ${namespace}-Daten: ${error}`, 'error');
                                } else if (response && response.Reply) {
                                    const data = response.Reply;
                                    // log(`${namespace}-Daten erhalten: ${JSON.stringify(data)}`, 'info');
                        
                                    // Daten im ioBroker speichern
                                    setData(data,namespace)
                                } else {
                                    log(`Keine ${namespace}-Daten erhalten.`, 'warn');
                                }
                            });
                        }
                        
                        // PowerDog-Informationen abrufen
                        fetchPowerDogData('getPowerDogInfo', 'Info');
                        
                        // Sensor-Daten abrufen
                        fetchPowerDogData('getSensors', 'Sensors');
                        
                        // Zähler-Daten abrufen
                        fetchPowerDogData('getCounters', 'Counters');
                        
                        schedule('*/05 * * * *', () => {
                            // PowerDog-Informationen abrufen
                            fetchPowerDogData('getPowerDogInfo', 'Info');
                            
                            // Sensor-Daten abrufen
                            fetchPowerDogData('getSensors', 'Sensors');
                            
                            // Zähler-Daten abrufen
                            fetchPowerDogData('getCounters', 'Counters');
                        })
                        
                        
                        H Offline
                        H Offline
                        HT22
                        schrieb am zuletzt editiert von
                        #13

                        Vielen Danke @mcu mit diesem Script bekomme ich die Werte endlich ausgelesen und kann sie direkt in einer VIS verwenden. Die Struktur passt auch schon im Iobroker. Was hattest du noch gemeint mit dem KEY? Macht es viel aus wenn Iobroker (läuft auf Raspberry Pi) alle Daten aller Zähler und Sensoren alle 5Min abfrägt? Ansonsten würde ich hier gar nichts mehr groß verändern müssen, oder?237a1ed0-ae81-421b-a2e6-64087d20ab99-image.png

                        M 1 Antwort Letzte Antwort
                        0
                        • H HT22

                          Vielen Danke @mcu mit diesem Script bekomme ich die Werte endlich ausgelesen und kann sie direkt in einer VIS verwenden. Die Struktur passt auch schon im Iobroker. Was hattest du noch gemeint mit dem KEY? Macht es viel aus wenn Iobroker (läuft auf Raspberry Pi) alle Daten aller Zähler und Sensoren alle 5Min abfrägt? Ansonsten würde ich hier gar nichts mehr groß verändern müssen, oder?237a1ed0-ae81-421b-a2e6-64087d20ab99-image.png

                          M Online
                          M Online
                          MCU
                          schrieb am zuletzt editiert von MCU
                          #14

                          @ht22 Nein, dass ist im ms Bereich.
                          Man müsste evtl nochmal ran, wenn die Zahlen sich in den Keys permanent ändern sollten.
                          Aber es hängt evtl mit der Erstinstallation vom Gerät zusammen.

                          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                          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
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          861

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          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