Hallo André,
habe meine Waage nun mal ein paar Tage benutzt und wollte das Withingskonto nun in FHEM einbinden, mit deinem Modul.
Nachdem ich JSON manuell auf der FBF nachinstalliert habe, habe ich folgende Schritte gemacht:
define sz_Waage withings ACCOUNT username passwort
Daraufhin wurde das Device sz_Waage angelegt. Zusätzlich wurde etwas später das Device sowie die 2 User angelegt. Im Log war folgendes zu finden:
2014.01.23 11:52:03 3: withings_D12xxxxx: I/O device is sz_Waage
2014.01.23 11:52:03 3: sz_Waage: create new device 'withings_D12xxx' for device '12xxxxx'
2014.01.23 11:52:02 3: withings_U27xxxxx: I/O device is sz_Waage
2014.01.23 11:52:02 3: sz_Waage: create new device 'withings_U27xxxxx' for user '27xxxxx'
2014.01.23 11:52:01 3: withings_U27xxxxx: I/O device is sz_Waage
2014.01.23 11:52:01 3: sz_Waage: create new device 'withings_U27xxxxx' for user '27xxxxx'
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 153.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 152.
Use of uninitialized value $list in concatenation (.) or string at ./FHEM/32_withings.pm line 654.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 627.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 615.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 603.
Use of uninitialized value $list in concatenation (.) or string at ./FHEM/32_withings.pm line 654.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 627.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 615.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 603.
Use of uninitialized value $list in concatenation (.) or string at ./FHEM/32_withings.pm line 654.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 627.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 615.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 603.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 123.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 122.
Use of uninitialized value in string eq at ./FHEM/32_withings.pm line 121.
Danach habe ich 4 FileLogs angelegt. Für das I/O Device sz_Waage, für das Device und die 2 User. Zum debuggen habe ich bei allen 4 auf verbose auf 5 gesetzt.
Bei sz_Waage habe ich ein get devices und get users gemacht. Das einzige was sich allerdings updatet ist das device, da bekomme ich halbwegs regelmäßig Battery und CO2, das landet auch im FileLog.
Für die User bekomme ich allerdings gar keine Daten. Im FileLog ist nix, die User haben auch keine Readings. Auch ein get update oder get updateAll bringt bei den Usern nix.
list sz_Waage
Internals:
AccountID 11xxxxx
CFGFN
Clients :withings:
DEF ACCOUNT txxxx xxxxxx
Hash 9f0da1052a702a0xxxxxxxxx
Login txxxxxx
NAME sz_Waage
NR 297
Password xxxxxxx
STATE Connected
SUBTYPE ACCOUNT
SessionKey 7664-dbxxxxxxx
SessionTimestamp 1390567963
TYPE withings
Token 00d4xxxx-xxxxxx
Attributes:
room withings
verbose 5
list withings_D12xxxxx
Internals:
CFGFN
DEF 12xxxxx
Device 12xxxxx
DeviceType Body scale
INTERVAL 3600
IODev sz_Waage
LAST_POLL 2014-01-24 09:52:37
Model Body analyzer
NAME withings_D12xxxxx
NR 300
STATE 762 ppm
SUBTYPE DEVICE
TYPE withings
fw 811
sn SN-00:24:xxxxxxxxx
status 0
Readings:
2014-01-24 13:52:43 battery ok
2014-01-24 13:52:43 batteryLevel 95
2014-01-24 09:30:13 co2 762
2014-01-23 11:52:12 humidity 0
2014-01-24 13:52:43 lastWeighinDate 2014-01-24 09:37:00
2014-01-24 09:30:13 temperature 17.9
2014-01-24 09:52:37 temperature_avg_day 18.1
2014-01-24 09:52:37 temperature_avg_month 19.6
2014-01-24 09:52:37 temperature_cum_day 643581.7
2014-01-24 09:52:37 temperature_cum_month 41415701.5
2014-01-24 09:52:37 temperature_max_day 18.1
2014-01-23 11:52:07 temperature_max_month 19.8
2014-01-24 09:52:37 temperature_min_day 17.8
2014-01-23 11:52:07 temperature_min_month 17.7
Attributes:
IODev sz_Waage
alias Body scale
room withings
stateFormat co2 ppm
verbose 5
list withings_U27xxxxx
Internals:
CFGFN
CHANGED
DEF 2755832 8c93xxxxxx
INTERVAL 3600
IODev sz_Waage
Key 8c9344xxxxxxx
LAST_POLL 2014-01-24 13:34:49
NAME withings_U27xxxxx
NR 298
STATE weight kg
SUBTYPE USER
TYPE withings
User 27xxxxx
birthdate 1xxxxxxx
gender male
shortName xxx
status 0
userName xxxxxxxxx
Readings:
Attributes:
IODev sz_Waage
alias xxx
room withings
stateFormat weight kg
verbose 5
Und seit dem benutzen des Withings Moduls habe ich vermehrt die Logmeldungen im FHEM Log:
Use of uninitialized value in concatenation (.) or string at ./FHEM/32_withings.pm line 408.
Use of uninitialized value in concatenation (.) or string at ./FHEM/32_withings.pm line 432.
Use of uninitialized value $authcookies in pattern match (m//) at ./FHEM/32_withings.pm line 202.
Was läuft da schief, dass die User keine Daten bekommen?
Grüße, Tobias
verwendest du wirklich die aktuell eingecheckte version die mit update mit kommt?
es sollte die hier sein:
Zitat# $Id: 32_withings.pm 4693 2014-01-19 17:33:16Z justme1968 $
die meisten meldungen schauen danach aus das du nicht im account eingeloggt bist. das kann aber nicht sein weil dann die daten auch nicht da wären. kommt denn beim get sz_Waage users bzw devices etwas zurück?
hast du die IODev attribute selber vergeben?
bitte lösch mal alle wittings devices. die logfiles kannst du lassen aber leer machen. dann leg mal nur den account neu an. versuch es bitte mal ohne das ACCOUNT schlüsselwort. die devices und user sollten alle automatisch neu angelegt werden wenn du autoreate aktiv hast.
mach mal bitte auf die user ein 'get <device> updateAll'.
gruss
andre
Nein, habe nix manuelles gesetzt außer verbose.
Ok...also alle Logfiles leer gemacht, aber nicht gelöscht. Danach:
delete withings.*
delete sz_Waagedefine sz_Waage withings xxxx xxxx
Darauf im Log:
2014.01.24 14:59:11 1: sz_Waage: no I/O device
2014.01.24 14:59:11 3: No I/O device found for sz_Waage
Es wird aber kein User und kein Device angelegt, oder kann das evtl. sehr lange dauern? Nach 10 Minuten war noch nix da.
Scheint, dass er das define direkt als User erkannt hat:
Internals:
CFGFN
DEF xxxx xxxx
INTERVAL 3600
IODev
Key xxxx
NAME sz_Waage
NR 216
STATE Initialized
SUBTYPE USER
TYPE withings
User xxxx
birthdate 1970-01-01
gender male
shortName
status 2555
userName
Attributes:
stateFormat weight kg
Birthdate stimmt übrigens nicht.
Ein get sz_Waage updateAll sieht für mich recht Ergebnislos aus. Es verändert sich nichts im fhem-device sz_Waage und im Logfile steht auch nichts.
EDIT:
Auf der linux console habe ich gerade folgende Meldungen gesehen, die haben sich seit dem neuen define angesammelt:
Use of uninitialized value in numeric eq (==) at ./FHEM/32_withings.pm line 342.
Use of uninitialized value in concatenation (.) or string at ./FHEM/32_withings.pm line 343.
Use of uninitialized value in concatenation (.) or string at ./FHEM/32_withings.pm line 343.
Use of uninitialized value in localtime at ./FHEM/32_withings.pm line 344.
Use of uninitialized value $args[2] in concatenation (.) or string at ./FHEM/98_weblink.pm line 120.
Use of uninitialized value in sprintf at fhem.pl line 1713.
das ist schief gegangen. wenn er das als USER erkennt geht natürlich garnichts.
bitte noch mal löschen und wieder mit dem ACCOUNT schlüsselwort anlegen.
wenn das define richtig funktioniert werden die user und devices direkt danach angelegt. das dauert keine 20 sekunden.
gruss
andre
klappt nicht. Das selbe Verhalten wie im 1. post beschrieben.
Nachdem define werden user und device angelegt, für device kommen die Daten, für User nicht.
Edit: ist die aktuelle Version, habe es gerade noch mal geprüft...
was passiert beim get users und get devices?
was sagt 'version whitings'
ich baue heute abend mal eine version mit mehr debug informationen.
kannst du vielleicht bis dahin schon mal vor die zeile 654 (die mit return "Unknown...) eine zeile mitLog 3, "$name: >$hash->{SUBTYPE}< >>$cmd<<";
einfügen?
die fehlermeldungen ganz oben sind sehr seltsam. das schaut so aus als ob es wittings device gibt das weder ACCOUNT,DEVICE oder USER ist. das geht eigentlich nicht.
was sagt 'list TYPE=withings' ?
kannst du bitte mal das 'withingslogin.pl' aus dem original wittings thread mit deinen zugangsdaten laufen lassen und schauen ob das funktioniert.
gruss
andre
bei einem get user updatAll wird das internal LAST_POLL neu gesetzt, sonst passiert nichts merkbares.
Auch im Log ist kein Fehler, kein reading, kein FileLog Eintrag.
Bei einem get device updateAll werden meiner Ansicht nach die Readings aktualisiert, es sieht so zuminest vom timestamp her aus.
Version sagt:
# $Id: 32_withings.pm 4693 2014-01-19 17:33:16Z justme1968 $
list sagt:
sz_Waage
withings_D12xxxxx
withings_U27xxxxx
withings_U27xxxxx
Das Perlscript teste ich später, bin jetzt gleich Unterwegs und das ganze Wochenende weg. Den Debug Eintrag mach ich dann auch und spiele noch mal alles durch.
Danke für deine Mühe und schönes Wochenende.
Doch noch eben auf die schnelle ;-)
Hab den $log Eintrag gemacht, alle devices wieder gelöscht. Also das selbe SPiel wie vorhin.
Bei dem ddefine kommt:
2014.01.24 17:10:03 3: withings: >ACCOUNT< >>?<<
2014.01.24 17:09:51 3: withings_D12xxxxx: I/O device is withings
2014.01.24 17:09:51 3: withings: create new device 'withings_D12xxxxx' for device '12xxxxx'
2014.01.24 17:09:50 3: withings_U27xxxxx: I/O device is withings
2014.01.24 17:09:50 3: withings: create new device 'withings_U27xxxxx' for user '27xxxxx'
2014.01.24 17:09:49 3: withings_U27xxxxx: I/O device is withings
2014.01.24 17:09:49 3: withings: create new device 'withings_U27xxxxx' for user '27xxxxx'
User und Device sind im FHEM angelegt...
get updateAll auf das Device liefert:
2014.01.24 17:14:14 3: withings_D12xxxxx: >DEVICE< >>?<<
2014.01.24 17:13:23 3: withings_D12xxxxx: >DEVICE< >>?<<
Im FileLog sind die alten Daten...
get updateAll auf einen user liefert:
2014.01.24 17:15:23 3: withings_U27xxxxx: >USER< >>?<<
2014.01.24 17:15:17 3: withings_U27xxxxx: >USER< >>?<<
Im FileLog ist nix, auch kein Reading vorhanden
Bei dem 2. user ist es das selbe Spiel...
das schaut so weit gut aus. jedenfalls scheint es die warnung von ganz oben nicht zu geben.
bitte schau mal direkt in deinem account nach. kannst du da die daten sehen ?
ich mal die debug version fertig und dann sehen wir weiter.
gruss
andre
Hallo,
das Problem ist gelöst und betrifft bestimmt noch den ein oder anderen, neuen Nutzer. Deshalb hier eine kurze Beschreibung.
Das Problem ist, dass keine Daten über die API Schnittstelle gesendet werden. Eine direkte Fehlermeldung gibt es nicht. Hintergrund ist, dass die Gewichtsdaten für den Webzugriff zusätzlich freigeschaltet werden müssen. Diese freischalten funktioniert nicht über das neue Dashboard, sondern nur über das Alte.
- Im Health mate anmelden
- Im neue Dashboard rechts oben auf den Login Namen klicken -> Parameter anklicken
- Aus dem Parametermenü "Teilen" anklicken
- Klick auf die Schaltfläche "Bisheriges Interface verwenden"
- Links den Benutzer auswählen, für den man die Daten freischalten möchte
- Im oberen Bereich auf "Teilen" klicken, es öffnet sich eine Art Pop-up Menü...
- "Aktie auf meiner Webseite" anklicken
- Die Checkbox "Freigabe der Gewichtsdaten aktivieren" anhacken
- Auf "Anwenden" klicken, jetzt sollte alles funktionieren
Zur Zeit läuft das Modul auf meiner FritzBox 7390. Das JSON Modul muss per Hand nachinstalliert werden, falls nicht vorhanden (Mit einer normalen FHEM Installation, egal welche Quelle, wird JSON nicht auf der FBF installiert). Ich hoffe es ist für jemanden hilfreich.
Habe die gplot Datei etwas abgeändert....farblich dargestellt werden nun die Grenzen so, wie im Withings Dashboard beschrieben.
Tobias
Hallo,
auch wenn das Thema Withings veraltet scheint, interessiert es mich momentan sehr. Kann man die "interval"- Zeit im Attribut irgendwie kleiner als 3600 stellen? Bei mir kam beim Versuch, die Zeit auf 60 Sekunden zu stellen die Meldung: "interval set to 3600"
Höher als die angegebene Zeit in den Internals einstellen klappt. Also, falls es geht: Wie? Und falls nicht: Warum nicht? ;)
Würde mich freuen, wenn jemand helfen kann, hatte vor, mit dem Ergebnis einer Wägung ein Ereignis auszulösen.