Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Withings Daten einlesen

NEWS

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

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

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

Withings Daten einlesen

Scheduled Pinned Locked Moved Skripten / Logik
126 Posts 27 Posters 32.7k Views 19 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stoffel67
    wrote on last edited by
    #81

    ja also,
    hast du denn deine Client-ID und/oder den scope angegeben?

    Mein Adapter: JUNG/GIRA eNet-Adapter

    K 1 Reply Last reply
    0
    • S stoffel67

      ja also,
      hast du denn deine Client-ID und/oder den scope angegeben?

      K Offline
      K Offline
      Kaiman55
      wrote on last edited by
      #82

      @stoffel67 sagte in Withings Daten einlesen:

      ja also,
      hast du denn deine Client-ID und/oder den scope angegeben?

      Ja. Habe ich.

      1 Reply Last reply
      0
      • S Offline
        S Offline
        stoffel67
        wrote on last edited by
        #83

        bei mir sieht der Aufruf so aus:
        https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=xxxxxxxxxxx&state=OK&scope=user.info,user.metrics,user.activity&redirect_url=http://meinserver.ddns.net/cgi-bin/withings.cmd

        Mein Adapter: JUNG/GIRA eNet-Adapter

        K 1 Reply Last reply
        0
        • S stoffel67

          bei mir sieht der Aufruf so aus:
          https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=xxxxxxxxxxx&state=OK&scope=user.info,user.metrics,user.activity&redirect_url=http://meinserver.ddns.net/cgi-bin/withings.cmd

          K Offline
          K Offline
          Kaiman55
          wrote on last edited by
          #84

          @stoffel67
          So ist es bei mir auch.
          Keine Ahnung, was falsch ist. Vielleicht liegt es an den zwei Personen, die ich hinterlegt habe.
          Hast Du dir den Entwickler Account auch erst jetzt geholt? Vielleicht gehts nur bei den älteren.

          Ich habe mal mit IFTTT gespielt.
          Bekomme da mein Gewicht als Push angezeigt.
          Und an mein Lametrics Display bekomme ich es so auch gesendet.
          Allerdings noch ohne ioBroker.
          Ich muss mir @Marty56 Doku mal genauer anschauen, wie ich das dann als Objekt speicher.

          Danke Dir trotzdem sehr für die Hilfe.

          S 1 Reply Last reply
          0
          • S Offline
            S Offline
            stoffel67
            wrote on last edited by
            #85

            ich habe auch zwei Personen, wird ja in der der ersten Maske angezeigt, und man wählt eine Person, dann auf "weiter"
            und APP zustimmen, dann kommt der callback auf deine angegebene URL mit dem "code"

            Mein Adapter: JUNG/GIRA eNet-Adapter

            K 1 Reply Last reply
            0
            • S stoffel67

              ich habe auch zwei Personen, wird ja in der der ersten Maske angezeigt, und man wählt eine Person, dann auf "weiter"
              und APP zustimmen, dann kommt der callback auf deine angegebene URL mit dem "code"

              K Offline
              K Offline
              Kaiman55
              wrote on last edited by
              #86

              @stoffel67 sagte in Withings Daten einlesen:

              ich habe auch zwei Personen, wird ja in der der ersten Maske angezeigt, und man wählt eine Person, dann auf "weiter"
              und APP zustimmen, dann kommt der callback auf deine angegebene URL mit dem "code"

              Wie gesagt: Die beiden Personen sehe ich auch. Klicke ich auf eine (egal welche) kommt die o.g. Meldung.

              1 Reply Last reply
              0
              • S Offline
                S Offline
                stoffel67
                wrote on last edited by
                #87

                wie sieht denn dein Aufruf aus? ( Client_id als xxxx)

                Mein Adapter: JUNG/GIRA eNet-Adapter

                K 1 Reply Last reply
                0
                • K Kaiman55

                  @stoffel67
                  So ist es bei mir auch.
                  Keine Ahnung, was falsch ist. Vielleicht liegt es an den zwei Personen, die ich hinterlegt habe.
                  Hast Du dir den Entwickler Account auch erst jetzt geholt? Vielleicht gehts nur bei den älteren.

                  Ich habe mal mit IFTTT gespielt.
                  Bekomme da mein Gewicht als Push angezeigt.
                  Und an mein Lametrics Display bekomme ich es so auch gesendet.
                  Allerdings noch ohne ioBroker.
                  Ich muss mir @Marty56 Doku mal genauer anschauen, wie ich das dann als Objekt speicher.

                  Danke Dir trotzdem sehr für die Hilfe.

                  S Offline
                  S Offline
                  stoffel67
                  wrote on last edited by
                  #88

                  Ich habe mal mit IFTTT gespielt.
                  Bekomme da mein Gewicht als Push angezeigt.

                  dann bekommst du ja dein Gewicht?😳

                  Mein Adapter: JUNG/GIRA eNet-Adapter

                  K 1 Reply Last reply
                  0
                  • S stoffel67

                    wie sieht denn dein Aufruf aus? ( Client_id als xxxx)

                    K Offline
                    K Offline
                    Kaiman55
                    wrote on last edited by
                    #89

                    @stoffel67 sagte in Withings Daten einlesen:

                    wie sieht denn dein Aufruf aus? ( Client_id als xxxx)

                    https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=MEINE_ID_NUMMER&scope=user.info,user.metrics,user.activity&redirect_url=http://fixeIP_meines_Servers/cgi-bin/withings.cmd

                    Die IP ist erreichbar.
                    Sieht also aus wie bei Dir.
                    Egal... Ich geb erstmal auf. So wichtig ist es mir dann nicht.

                    Vielen Dank trotzdem.

                    S 1 Reply Last reply
                    0
                    • S stoffel67

                      Ich habe mal mit IFTTT gespielt.
                      Bekomme da mein Gewicht als Push angezeigt.

                      dann bekommst du ja dein Gewicht?😳

                      K Offline
                      K Offline
                      Kaiman55
                      wrote on last edited by
                      #90

                      @stoffel67 sagte in Withings Daten einlesen:

                      Ich habe mal mit IFTTT gespielt.
                      Bekomme da mein Gewicht als Push angezeigt.

                      dann bekommst du ja dein Gewicht?😳

                      Ja. So ja. Halt nur auf dem Handy.
                      Hab die Doku noch nicht gelesen, wie ich IFTTT in ioBroker dazu bringe, dass ich ein Objekt vom Gewicht bekomme.
                      Schaue ich mir die Tage mal an.

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        stoffel67
                        wrote on last edited by stoffel67
                        #91

                        NEIN, sieht er nicht.... wo ist der Parameter "&state"
                        und hast du auch im Ordner cgi-bin eine Datei withings.cmd?

                        Mein Adapter: JUNG/GIRA eNet-Adapter

                        K 1 Reply Last reply
                        0
                        • S stoffel67

                          NEIN, sieht er nicht.... wo ist der Parameter "&state"
                          und hast du auch im Ordner cgi-bin eine Datei withings.cmd?

                          K Offline
                          K Offline
                          Kaiman55
                          wrote on last edited by
                          #92

                          @stoffel67 sagte in Withings Daten einlesen:

                          NEIN, sieht er nicht.... wo ist der Parameter "&state"

                          🙂 Den habe ich versehendlich für den Post rausgelöscht. 😄

                          1 Reply Last reply
                          0
                          • K Kaiman55

                            @stoffel67 sagte in Withings Daten einlesen:

                            wie sieht denn dein Aufruf aus? ( Client_id als xxxx)

                            https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=MEINE_ID_NUMMER&scope=user.info,user.metrics,user.activity&redirect_url=http://fixeIP_meines_Servers/cgi-bin/withings.cmd

                            Die IP ist erreichbar.
                            Sieht also aus wie bei Dir.
                            Egal... Ich geb erstmal auf. So wichtig ist es mir dann nicht.

                            Vielen Dank trotzdem.

                            S Offline
                            S Offline
                            stoffel67
                            wrote on last edited by
                            #93

                            https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=MEINE_ID_NUMMER&scope=user.info,user.metrics,user.activity&redirect_url=http://fixeIP_meines_Servers/cgi-bin/withings.cmd

                            Die IP ist erreichbar.
                            Vielen Dank trotzdem.

                            hast du eine IP angegeben?
                            das geht lt. Doku nicht:
                            Your URL must :
                            •be a valid URL, provided as a URL-encoded string. Please refer to w3schools URL encoding reference to learn more about URL encoding.
                            •not be greater than 255 characters.
                            •neither contain an IP or 'localhost'. Only port 80 and 443 are allowed.

                            Mein Adapter: JUNG/GIRA eNet-Adapter

                            K 1 Reply Last reply
                            0
                            • S stoffel67

                              https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=MEINE_ID_NUMMER&scope=user.info,user.metrics,user.activity&redirect_url=http://fixeIP_meines_Servers/cgi-bin/withings.cmd

                              Die IP ist erreichbar.
                              Vielen Dank trotzdem.

                              hast du eine IP angegeben?
                              das geht lt. Doku nicht:
                              Your URL must :
                              •be a valid URL, provided as a URL-encoded string. Please refer to w3schools URL encoding reference to learn more about URL encoding.
                              •not be greater than 255 characters.
                              •neither contain an IP or 'localhost'. Only port 80 and 443 are allowed.

                              K Offline
                              K Offline
                              Kaiman55
                              wrote on last edited by
                              #94

                              @stoffel67 sagte in Withings Daten einlesen:

                              https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=MEINE_ID_NUMMER&scope=user.info,user.metrics,user.activity&redirect_url=http://fixeIP_meines_Servers/cgi-bin/withings.cmd

                              Die IP ist erreichbar.
                              Vielen Dank trotzdem.

                              hast du eine IP angegeben?
                              das geht lt. Doku nicht:
                              Your URL must :
                              •be a valid URL, provided as a URL-encoded string. Please refer to w3schools URL encoding reference to learn more about URL encoding.
                              •not be greater than 255 characters.
                              •neither contain an IP or 'localhost'. Only port 80 and 443 are allowed.

                              Oh. Das habe ich überlesen.
                              Meine Herren machen die das kompliziert.

                              1 Reply Last reply
                              0
                              • StuebiS Offline
                                StuebiS Offline
                                Stuebi
                                wrote on last edited by
                                #95

                                Kann jemand netterweise von Euch nochmals das Script hier posten um das Gewicht der Withings Waage auszulesen.
                                Danke!

                                ioBroker auf Synology DS216+II im Docker Container

                                1 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  stoffel67
                                  wrote on last edited by
                                  #96

                                  meins sieht so aus: ( Client_id und Client_secret mußt du noch selbst anpassen)

                                  //* Withings Daten einlesen
                                  
                                  
                                  /*
                                  SB
                                  oauth_token=XXXXXX
                                  oauth_token_secret=XXXXXX
                                  userid=YYYYYYYY
                                  deviceid=0
                                  
                                  BB
                                  oauth_token=XXXXXX
                                  oauth_token_secret=XXXXXXX
                                  userid=XXXXXX
                                  deviceid=0
                                  */
                                  
                                  const request = require("request");
                                  var client_ID      = "xxxxxxxxx";
                                  var client_secret = "xxxxxxxxx";
                                  
                                  /*
                                  createState('Withings.SB.Gewicht', {name:'Withings Gewicht', unit: 'kg'});
                                  createState('Withings.SB.Gewicht.Datum', {name:'Withings Gewicht (Datum)'});
                                  createState('Withings.SB.Gewicht.Datum.epoc', {name:'Withings Gewicht (Datum im UNIX EPOC Format)'});
                                  createState('Withings.BB.Gewicht', {name:'Withings Gewicht', unit: 'kg'});
                                  createState('Withings.BB.Gewicht.Datum', {name:'Withings Gewicht (Datum)'});
                                  createState('Withings.BB.Gewicht.Datum.epoc', {name:'Withings Gewicht (Datum im UNIX EPOC Format)'});
                                  createState('Withings.SB.access_token', {name:'access_token', unit: ''},access_token);
                                  createState('Withings.SB.refresh_token', {name:'refresh_token', unit: ''},refresh_token);
                                  createState('Withings.BB.access_token', {name:'access_token', unit: ''},access_token);
                                  createState('Withings.BB.refresh_token', {name:'refresh_token', unit: ''},refresh_token);
                                  */
                                  
                                  function datum_heute() {
                                      var heute = new Date();
                                      var tag_roh = heute.getDate(),
                                          tag = ((tag_roh <10) ? '0' : '') + tag_roh,
                                          monat_roh = heute.getMonth() + 1,
                                          monat = ((monat_roh <10) ? '0' : '') + monat_roh,
                                          jahr = heute.getFullYear();
                                  
                                      var datum = jahr + '-' + monat + '-' + tag;
                                   
                                      return(datum);
                                  }
                                  
                                  function refresh_access_token(user) {
                                      var access_token=getState('javascript.0.Withings.'+user+'.access_token').val;
                                      var refresh_token=getState("Withings."+user+".refresh_token").val;
                                      var lc= getState('javascript.0.Withings.'+user+'.refresh_token').lc;
                                      console.log (lc);
                                      var delta_t=Date.now()-lc;
                                      console.log ('Vergangene Zeit'+delta_t);
                                      var data="grant_type=refresh_token&client_id=xxxxxxxx&client_secret=yyyyyyyy&refresh_token="+refresh_token;
                                  
                                      var options ={
                                         url:'https://account.withings.com/oauth2/token',
                                         method:'POST',
                                         body:data
                                      };
                                  
                                          log('Withings refresh  token');
                                          request(options, function(error, response,body) {
                                              log (response);
                                              log(body);
                                              if (!error) {
                                                  result = JSON.parse(body);
                                                  access_token=result.access_token;
                                                  refresh_token=result.refresh_token;
                                                  var userid=result.userid
                                                  console.log("AT:"+access_token);
                                                  console.log("RT:"+refresh_token);
                                                  setState('Withings.'+user+'.access_token',access_token);
                                                  setState('Withings.'+user+'.refresh_token',refresh_token);
                                                  setState('Withings.'+user+'.userid',userid);
                                              }
                                          });   
                                          log ('jetzt Daten lesen ..........'+delta_t)
                                          withings_einlesen('gewicht',user,access_token);
                                  
                                  }
                                  
                                  function withings_einlesen(datentyp,user,access_token) { // Eigenen Daten statt xxxxxx einfügen
                                      var zeit=Date.now()/1000-3600;
                                      log ('AT:::'+access_token)
                                   
                                     
                                      // Abfrage einzelner Daten nach Typ
                                      if (datentyp === "gewicht") {
                                          var url = "https://wbsapi.withings.net/measure?action=getmeas&access_token="+access_token+"&meastype=1&category=1"//&lastupdate="+zeit;
                                          log('Withings Gewicht wird eingelesen');
                                          log (url);
                                          request.get(url, function(error,data, response) {
                                              log (error);
                                              var result;
                                              if (!error) {
                                                  try{
                                                      result = JSON.parse(response);
                                                      data = JSON.stringify(result, null, 2);
                                                      log('Kein Fehler :-D bei Withings Gewicht');
                                                  } catch (e){
                                                      log('Parse Fehler:' + e);
                                                  }
                                                      result = JSON.parse(response);
                                                  if (result.status === 0) {
                                                      console.log("hole Daten von Withings!");
                                                      log (data)  // hier wird die ganze Wurst ausgegeben!!!!!!
                                                      var gewicht = result.body.measuregrps[0].measures[0].value;
                                                       log('-------> Gewicht: ' + gewicht);
                                                      pw=Math.pow(10,result.body.measuregrps[0].measures[0].unit);
                                                      setState('Withings.'+user+'.Gewicht', gewicht *pw);
                                                      var gewicht_epoc = (result.body.measuregrps[0].date+7200)*1000; //7200=Sommerzeit
                                                      setState('Withings.'+user+'.Gewicht.Datum', new Date(gewicht_epoc)); // Datum wird umgewandelt
                                                      setState('Withings.'+user+'.Gewicht.Datum.epoc', gewicht_epoc); //EPOC wird übernommen
                                                  } else {
                                                      log('Fehler beim Auswerten'+result.error)
                                                  }
                                              } else {
                                                  log('Fehler: ' + error);
                                              }
                                          });
                                      } else if (datentyp === "schritte") {
                                          datum = datum_heute();
                                          url = withings.signUrl("http://wbsapi.withings.net/measure?action=getmeas&date=" + datum + "&userid=" + userid, oauth_access_token, oauth_access_token_secret);
                                          log('Withings Schritte werden eingelesen');
                                          log (url)
                                          withings.get(url, null, null, function(error, response) {
                                              if (!error) {
                                                  var result;
                                                  try{
                                                      result = JSON.parse(response);
                                                      var data = JSON.stringify(result, null, 2);
                                                      log('Kein Fehler :-D bei Withings Schritte');
                                                  } catch (e){
                                                      log('Parse Fehler:' + e);
                                                  }
                                                  if (result) {
                                                      log (result)
                                                      var schritte = result.body.steps;
                                                      // log('-------> Schritte: ' + schritte);
                                                      setState('Withings.Schritte', schritte);
                                                      var schritte_datum = result.body.date;
                                                      setState('Withings.Schritte.Datum', schritte_datum); // Datum wird übernommen
                                                  }
                                              } else {
                                                  log('Fehler: ' + error);
                                              }
                                          });
                                      }
                                  
                                  }
                                  
                                     
                                  
                                  
                                  on('javascript.0.Withings.callback_SB', function(data) {
                                      var cb = data.state.val;
                                      //log('Zustand'+cb)
                                      var lc= getState('javascript.0.Withings.callback_SB').lc;
                                      console.log (lc);
                                      console.log (Date.now());
                                      var delta_t=Date.now()-lc;
                                      console.log ('Vergangene Zeit'+delta_t);
                                      if (cb === true && delta_t > 5) {
                                          log ('lese Nokia SB');
                                          refresh_access_token('SB');
                                          //withings_einlesen('gewicht','SB');
                                      }
                                      setState('javascript.0.Withings.callback_SB', false);
                                  });
                                  
                                  on('javascript.0.Withings.callback_BB', function(data) {
                                      var cb = data.state.val;
                                      //log('Zustand'+cb)
                                      var lc= getState('javascript.0.Withings.callback_BB').lc;
                                      console.log (lc);
                                      var delta_t=Date.now()-lc;
                                      console.log ('Vergangene Zeit'+delta_t);
                                      if (cb === true && delta_t > 5) {
                                          log ('lese Nokia BB');
                                          refresh_access_token('BB');
                                          //withings_einlesen('gewicht','BB');
                                      }
                                      setState('javascript.0.Withings.callback_BB', false);
                                  });
                                  
                                  //refresh_access_token("BB")
                                  //refresh_access_token("SB")
                                  

                                  Mein Adapter: JUNG/GIRA eNet-Adapter

                                  StuebiS 1 Reply Last reply
                                  0
                                  • S stoffel67

                                    meins sieht so aus: ( Client_id und Client_secret mußt du noch selbst anpassen)

                                    //* Withings Daten einlesen
                                    
                                    
                                    /*
                                    SB
                                    oauth_token=XXXXXX
                                    oauth_token_secret=XXXXXX
                                    userid=YYYYYYYY
                                    deviceid=0
                                    
                                    BB
                                    oauth_token=XXXXXX
                                    oauth_token_secret=XXXXXXX
                                    userid=XXXXXX
                                    deviceid=0
                                    */
                                    
                                    const request = require("request");
                                    var client_ID      = "xxxxxxxxx";
                                    var client_secret = "xxxxxxxxx";
                                    
                                    /*
                                    createState('Withings.SB.Gewicht', {name:'Withings Gewicht', unit: 'kg'});
                                    createState('Withings.SB.Gewicht.Datum', {name:'Withings Gewicht (Datum)'});
                                    createState('Withings.SB.Gewicht.Datum.epoc', {name:'Withings Gewicht (Datum im UNIX EPOC Format)'});
                                    createState('Withings.BB.Gewicht', {name:'Withings Gewicht', unit: 'kg'});
                                    createState('Withings.BB.Gewicht.Datum', {name:'Withings Gewicht (Datum)'});
                                    createState('Withings.BB.Gewicht.Datum.epoc', {name:'Withings Gewicht (Datum im UNIX EPOC Format)'});
                                    createState('Withings.SB.access_token', {name:'access_token', unit: ''},access_token);
                                    createState('Withings.SB.refresh_token', {name:'refresh_token', unit: ''},refresh_token);
                                    createState('Withings.BB.access_token', {name:'access_token', unit: ''},access_token);
                                    createState('Withings.BB.refresh_token', {name:'refresh_token', unit: ''},refresh_token);
                                    */
                                    
                                    function datum_heute() {
                                        var heute = new Date();
                                        var tag_roh = heute.getDate(),
                                            tag = ((tag_roh <10) ? '0' : '') + tag_roh,
                                            monat_roh = heute.getMonth() + 1,
                                            monat = ((monat_roh <10) ? '0' : '') + monat_roh,
                                            jahr = heute.getFullYear();
                                    
                                        var datum = jahr + '-' + monat + '-' + tag;
                                     
                                        return(datum);
                                    }
                                    
                                    function refresh_access_token(user) {
                                        var access_token=getState('javascript.0.Withings.'+user+'.access_token').val;
                                        var refresh_token=getState("Withings."+user+".refresh_token").val;
                                        var lc= getState('javascript.0.Withings.'+user+'.refresh_token').lc;
                                        console.log (lc);
                                        var delta_t=Date.now()-lc;
                                        console.log ('Vergangene Zeit'+delta_t);
                                        var data="grant_type=refresh_token&client_id=xxxxxxxx&client_secret=yyyyyyyy&refresh_token="+refresh_token;
                                    
                                        var options ={
                                           url:'https://account.withings.com/oauth2/token',
                                           method:'POST',
                                           body:data
                                        };
                                    
                                            log('Withings refresh  token');
                                            request(options, function(error, response,body) {
                                                log (response);
                                                log(body);
                                                if (!error) {
                                                    result = JSON.parse(body);
                                                    access_token=result.access_token;
                                                    refresh_token=result.refresh_token;
                                                    var userid=result.userid
                                                    console.log("AT:"+access_token);
                                                    console.log("RT:"+refresh_token);
                                                    setState('Withings.'+user+'.access_token',access_token);
                                                    setState('Withings.'+user+'.refresh_token',refresh_token);
                                                    setState('Withings.'+user+'.userid',userid);
                                                }
                                            });   
                                            log ('jetzt Daten lesen ..........'+delta_t)
                                            withings_einlesen('gewicht',user,access_token);
                                    
                                    }
                                    
                                    function withings_einlesen(datentyp,user,access_token) { // Eigenen Daten statt xxxxxx einfügen
                                        var zeit=Date.now()/1000-3600;
                                        log ('AT:::'+access_token)
                                     
                                       
                                        // Abfrage einzelner Daten nach Typ
                                        if (datentyp === "gewicht") {
                                            var url = "https://wbsapi.withings.net/measure?action=getmeas&access_token="+access_token+"&meastype=1&category=1"//&lastupdate="+zeit;
                                            log('Withings Gewicht wird eingelesen');
                                            log (url);
                                            request.get(url, function(error,data, response) {
                                                log (error);
                                                var result;
                                                if (!error) {
                                                    try{
                                                        result = JSON.parse(response);
                                                        data = JSON.stringify(result, null, 2);
                                                        log('Kein Fehler :-D bei Withings Gewicht');
                                                    } catch (e){
                                                        log('Parse Fehler:' + e);
                                                    }
                                                        result = JSON.parse(response);
                                                    if (result.status === 0) {
                                                        console.log("hole Daten von Withings!");
                                                        log (data)  // hier wird die ganze Wurst ausgegeben!!!!!!
                                                        var gewicht = result.body.measuregrps[0].measures[0].value;
                                                         log('-------> Gewicht: ' + gewicht);
                                                        pw=Math.pow(10,result.body.measuregrps[0].measures[0].unit);
                                                        setState('Withings.'+user+'.Gewicht', gewicht *pw);
                                                        var gewicht_epoc = (result.body.measuregrps[0].date+7200)*1000; //7200=Sommerzeit
                                                        setState('Withings.'+user+'.Gewicht.Datum', new Date(gewicht_epoc)); // Datum wird umgewandelt
                                                        setState('Withings.'+user+'.Gewicht.Datum.epoc', gewicht_epoc); //EPOC wird übernommen
                                                    } else {
                                                        log('Fehler beim Auswerten'+result.error)
                                                    }
                                                } else {
                                                    log('Fehler: ' + error);
                                                }
                                            });
                                        } else if (datentyp === "schritte") {
                                            datum = datum_heute();
                                            url = withings.signUrl("http://wbsapi.withings.net/measure?action=getmeas&date=" + datum + "&userid=" + userid, oauth_access_token, oauth_access_token_secret);
                                            log('Withings Schritte werden eingelesen');
                                            log (url)
                                            withings.get(url, null, null, function(error, response) {
                                                if (!error) {
                                                    var result;
                                                    try{
                                                        result = JSON.parse(response);
                                                        var data = JSON.stringify(result, null, 2);
                                                        log('Kein Fehler :-D bei Withings Schritte');
                                                    } catch (e){
                                                        log('Parse Fehler:' + e);
                                                    }
                                                    if (result) {
                                                        log (result)
                                                        var schritte = result.body.steps;
                                                        // log('-------> Schritte: ' + schritte);
                                                        setState('Withings.Schritte', schritte);
                                                        var schritte_datum = result.body.date;
                                                        setState('Withings.Schritte.Datum', schritte_datum); // Datum wird übernommen
                                                    }
                                                } else {
                                                    log('Fehler: ' + error);
                                                }
                                            });
                                        }
                                    
                                    }
                                    
                                       
                                    
                                    
                                    on('javascript.0.Withings.callback_SB', function(data) {
                                        var cb = data.state.val;
                                        //log('Zustand'+cb)
                                        var lc= getState('javascript.0.Withings.callback_SB').lc;
                                        console.log (lc);
                                        console.log (Date.now());
                                        var delta_t=Date.now()-lc;
                                        console.log ('Vergangene Zeit'+delta_t);
                                        if (cb === true && delta_t > 5) {
                                            log ('lese Nokia SB');
                                            refresh_access_token('SB');
                                            //withings_einlesen('gewicht','SB');
                                        }
                                        setState('javascript.0.Withings.callback_SB', false);
                                    });
                                    
                                    on('javascript.0.Withings.callback_BB', function(data) {
                                        var cb = data.state.val;
                                        //log('Zustand'+cb)
                                        var lc= getState('javascript.0.Withings.callback_BB').lc;
                                        console.log (lc);
                                        var delta_t=Date.now()-lc;
                                        console.log ('Vergangene Zeit'+delta_t);
                                        if (cb === true && delta_t > 5) {
                                            log ('lese Nokia BB');
                                            refresh_access_token('BB');
                                            //withings_einlesen('gewicht','BB');
                                        }
                                        setState('javascript.0.Withings.callback_BB', false);
                                    });
                                    
                                    //refresh_access_token("BB")
                                    //refresh_access_token("SB")
                                    
                                    StuebiS Offline
                                    StuebiS Offline
                                    Stuebi
                                    wrote on last edited by Stuebi
                                    #97

                                    @stoffel67 , danke für das Script. Ich habe noch eine Frage. Ich muss doch einmalig vorher folgendes im Webbrowser aufrufen um den authentication code zu erhalten:

                                    https://account.withings.com/oauth2_user/authorize2?response_type=code&client_id=xxxxxxxxxxxxx&state=OK&scope=user.info,user.metrics,user.activity&redirect_url=http://my-ddns-address/withings.cmd
                                    

                                    Ich bekomme immer folgende Fehlermeldung zurück.

                                    {"errors":[{"message":"redirect_uri_mismatch: The redirect URI provided is missing or does not match partner callback url"}]}
                                    

                                    Kannst Du auch das Script withings.cmd zur Verfügung stellen?

                                    ioBroker auf Synology DS216+II im Docker Container

                                    1 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      stoffel67
                                      wrote on last edited by stoffel67
                                      #98

                                      "redirect_url=http://my-ddns-address/withings.cmd"

                                      hast du hier deine Adresse eingetragen?
                                      gibt es bei dir ein "withings.cmd"
                                      meine hilft dir da nicht ( die heißt z.B. callback_SB.tcl).... du brauchst an deinem WEB-Server etwas ( evtl Python?) als Aufruf für die Rückgabe eines "HTTP OK"

                                      aber das ist doch so schon in der Withings API beschrieben...

                                      Mein Adapter: JUNG/GIRA eNet-Adapter

                                      1 Reply Last reply
                                      0
                                      • B Offline
                                        B Offline
                                        bnz99
                                        wrote on last edited by
                                        #99

                                        Ich habe mit die Lösung per IFTTT gebaut für Waage und Blutdruckmonitor, so dass der ganze Kram mit Developer Keys nicht notwendig ist. Sie ist noch nicht ganz fertig getestet, bin aber ganz zuversichtlich, dass es ok funktioniert. Hat das jemand Interesse an einer Zusammenfassung wie ich das gemacht habe?

                                        MaufloM 1 Reply Last reply
                                        0
                                        • B bnz99

                                          Ich habe mit die Lösung per IFTTT gebaut für Waage und Blutdruckmonitor, so dass der ganze Kram mit Developer Keys nicht notwendig ist. Sie ist noch nicht ganz fertig getestet, bin aber ganz zuversichtlich, dass es ok funktioniert. Hat das jemand Interesse an einer Zusammenfassung wie ich das gemacht habe?

                                          MaufloM Offline
                                          MaufloM Offline
                                          Mauflo
                                          wrote on last edited by Mauflo
                                          #100

                                          @bnz99 Ja, ich hätte großes Interesse daran - bis jetzt scheitere ich kläglich am Authorisierungsprozess via Javascript. Obwohl ich mir viel lieber einen eigenen Script schreiben würde, der meine Daten ausliest und die in die Datenpunkte überträgt. Ich weiß nämlich immer noch nicht was in der withings.cmd stehen muß und wo ich die ablegen muss, damit der Autorisierungsprozess funktioniert. Braucht man dafür einen Webserver? Hab ich nämlich nicht!

                                          RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

                                          S 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          351

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe