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. Entwicklung
  4. Request in Adapter verliert Daten

NEWS

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

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

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

Request in Adapter verliert Daten

Geplant Angeheftet Gesperrt Verschoben Entwicklung
6 Beiträge 5 Kommentatoren 1.1k 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.
  • U Offline
    U Offline
    urian
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    da ich seit kurzen über drei Discovergy Zähler verfüge, möchte ich diese mit IOBROKER über die neue Discovergy API auslesen.

    Mein Script scheitert aktuell an dem Request. Der Request wird aufgerufen und es wird auch der ConsumerKey abgeholt.

    Innerhalb des Request übergebe ich die Daten an eine globale Variable DAPI_Token. Sobald der Request verlassen wird sind die Daten weg.

    Die Funktion zum Speichern der Token wird fehlerfrei aufgerufen, aber es wird keine Datei erstellt.

    Wo liegt mein (Gedanken) Fehler?

    Danke für die Hilfe

    //***********************************************************************************************************************
    //***********************************************************************************************************************
    //***
    //***  iobroker.doscovergy Adapter
    //***
    //***  Adapter for reading Discovergy electricity meters via the API
    //***
    //***  API Documentation:  https://api.discovergy.com/docs/
    //***
    //***  (c) 2017 
    //***
    //***********************************************************************************************************************
    //***********************************************************************************************************************
    
    "use strict";
    
    //***
    //*** INIT
    //***
    var debug = true;
    var DAPIconnected = false;
    var DAPISignin = true;
    
    var utils   = require(__dirname + '/lib/utils');
    
    var adapter = utils.adapter('discovergy');
    
    var request = require('request');
    
    var DAPI_Constants = {
        BaseUrl    : 'https://api.discovergy.com/public/v1/',
        ClientName : 'iobroker.discovergy',
        TokenFile  : adapter.adapterDir + '/' + adapter.namespace + '.token.json'
    }
    
    var DAPI_Token = {
        ConsumerKey:''
    };
    
    var DAPI_MeterData = {};
    
    //***
    //*** is called when adapter shuts down - callback has to be called under any circumstances!
    //***
    adapter.on('unload', function (callback) {
        try {
            adapter.log.info('cleaned everything up...');
            callback();
        } catch (e) {
            callback();
        }
    });
    
    //***
    //*** is called when databases are connected and adapter received configuration.
    //*** start here!
    adapter.on('ready', function () {
        main();
    });
    
    function main() {
    
        //***
        //*** Gespeichertes Token lesen oder neuen consumer token paar erzeugen
        //***
        Fn_DAPIReadTokenFile();
    
    } // END main
    
    function Fn_DAPIReadTokenFile () {
    
        var FunctionName = 'Fn_DAPIReadTokenFile';
        var TokenRead = false;
    
        //*** Gespeichertes Token aus Datei lesen
        try {
            adapter.readFile(DAPI_Constants.TokenFile, 'utf8', function (error, data) {
                if ( !error ) {
                    DAPI_Token = JSON.parse(data);
                    if ( debug ) console.log(FunctionName + ' - Read: ' + DAPI_Constants.TokenFile);
                    var TokenRead = true;
                } else {
                    adapter.log.error(FunctionName + ' - error: ', error);                               // Error beim Einlesen
                    adapter.stop;
                }
            });
        } catch (e) {
            if ( debug ) console.log(FunctionName + ' - ERROR TRY: ', e);
        } // END try
    
        if ( !TokenRead ) Fn_DAPIGetConsumerToken();
    
    } // END function Fn_DAPIReadTokenFile
    
    function Fn_DAPIWriteTokenFile () {
    
        var FunctionName = 'Fn_DAPIWriteTokenFile';
    
        var data = JSON.stringify(DAPI_Token);
        try {
            adapter.writeFile(DAPI_Constants.TokenFile, data, function (error) {});
            if ( debug ) console.log(FunctionName + ' - Write:');
        } catch (e) {
            adapter.log.error(FunctionName + ' - ERROR TRY : ' + e);        
        }
    
    } // END function Fn_DAPIWriteToken
    
    function Fn_DAPIGetConsumerToken () {
    
        var FunctionName = 'Fn_DAPIGetConsumerToken';
    
        var Data;
        var RequestOptions = {                 
            method: 'POST',             
            uri: DAPI_Constants.BaseUrl + 'oauth1/consumer_token',
            body: "client=" + DAPI_Constants.ClientName,
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
        }; // END RequestOptions   
    
        try {
            request(RequestOptions, function (error, response, body) {
                if (!error && response.statusCode == 200) {              // kein Fehler, Inhalt in body
                    if ( debug ) console.log(FunctionName + ' - body: ', body);
                    Data = JSON.parse(body);
                    if ( debug ) console.log(FunctionName + ' - Data key:', Data.key);
                    if ( debug ) console.log(FunctionName + ' - Data secret:', Data.secret);
                    DAPI_Token.ConsumerKey = Data.key;
                    DAPI_Token.ConsumerKeySecret = Data.secret;
                    DAPI_Token.Client = Data.owner;
                    if ( debug ) console.log(FunctionName + ' - Token key:', DAPI_Token.ConsumerKey);
                    if ( debug ) console.log(FunctionName + ' - Token secret:', DAPI_Token.ConsumerKeySecret);
                    Fn_DAPIWriteTokenFile();
                } else {
                    adapter.log.error(FunctionName + ' - error: ', error);                               // Error beim Einlesen
                    adapter.stop;
                } 
            });
        } catch (e) {
            adapter.log.error(FunctionName + ' - Fehler TRY: ' + e);
            adapter.stop;
        }
    
    } // END function Fn_DAPIGetConsumerToken
    
    

    Debug-Ausgabe in VS-Code

    Fn_DAPIGetConsumerToken - body: {"key":"h2hn832rg4fgl4e1828caljlu0","secret":"notc9uh6j8l86lhr203cb290eg","owner":"iobroker.discovergy","attributes":{},"principal":null}

    Fn_DAPIGetConsumerToken - Data key: h2hn832rg4fgl4e1828caljlu0

    Fn_DAPIGetConsumerToken - Data secret: notc9uh6j8l86lhr203cb290eg

    Fn_DAPIGetConsumerToken - Token key: h2hn832rg4fgl4e1828caljlu0

    Fn_DAPIGetConsumerToken - Token secret: notc9uh6j8l86lhr203cb290eg

    Fn_DAPIWriteTokenFile - Write:
    3973_iobroker.discovergy.rar

    1 Antwort Letzte Antwort
    0
    • Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      schrieb am zuletzt editiert von
      #2

      @urian:

      if ( debug ) console.log(FunctionName + ' - Write:'); `

      Also das deine Ausgabe leer ist liegt wohl daran das du hier keine Variable in deine Ausgabe geschrieben hast.

      Warum keine Datei geschrieben wird kann ich dir leider auch nicht sagen, es sieht auf den ersten Blick in Ordnung aus.

      Statt der Pfadangabe in der Funktion writeFile kannst du ja mal nur einen Datei namen angeben.

      Persönlicher Support
      Spenden -> paypal.me/J3YC33

      1 Antwort Letzte Antwort
      0
      • U Offline
        U Offline
        urian
        schrieb am zuletzt editiert von
        #3

        Hallo,

        es liegt nicht an dem debug.log. Diese Zeile zeigt nur an, das, dass die Datei geschrieben wurde.

        Die Daten sind in der Variable data und sind korrekt in einen String gepackt.

        Ich glaube fast das man den gesamten Ablauf in diesen Request packen muss und die weiteren Requests

        geschachtelt.

        Wirft bei mir eine Frage auf: Muss bei jedem Durchlauf (Abfrage Zähler) die gesamte oauth Prozedur wiederholt werden?

        Gruß Guido

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tikr_de
          schrieb am zuletzt editiert von
          #4

          Hallo,

          hast du die Abfrage der Discovergy Zähler zum Laufen bekommen?

          Wenn ja, wäre ich sehr an deinem Skript interessiert.

          Danke!

          Gruß

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            chrugel
            schrieb am zuletzt editiert von
            #5

            Hallo @urian,

            schließe mich tikr_de an:
            @tikr_de:

            hast du die Abfrage der Discovergy Zähler zum Laufen bekommen?

            Wenn ja, wäre ich sehr an deinem Skript interessiert. `
            :)

            DANKE und herzliche Grüße!

            1 Antwort Letzte Antwort
            0
            • WebrangerW Offline
              WebrangerW Offline
              Webranger
              schrieb am zuletzt editiert von
              #6

              Ich hätte auch interesse! Seit heute hängt der discovergy Zähler bei mir im Keller.

              Gruß

              Intel NUC Celeron, Xiaomi Gateway, Fritzbox 7590, XS1

              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

              485

              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