Withings Modul

Heisst der Eintrag so ?
„ DoMeas | Keine ID gefunden : --„
Dann ist es ein Fehler von Withings in der API.
Hab aber schon gemailt und auch eine Moeglichkeit dies zu umgehen. Hab das Problem bei mir auch.

Gesendet von iPad mit Tapatalk

Hi,
hier ist das verkürzte Debug-Log:


TXT: 03.09.2019, 13:56:23 |             DoDevice | Devices werden ausgewertet.
TXT: 03.09.2019, 13:56:23 |          DoDevice :  | Type     : Scale
TXT: 03.09.2019, 13:56:23 |          DoDevice :  | Modell   : Body Cardio
TXT: 03.09.2019, 13:56:23 |          DoDevice :  | Batterie : high
TXT: 03.09.2019, 13:56:23 |             DoDevice | batterie-high
TXT: 03.09.2019, 13:56:23 |          Update Data | Update Data Get Meas     -> 03.09.2019 13:56:23 
TXT: 03.09.2019, 13:56:23 |              GetMeas | Status:0
TXT: 03.09.2019, 13:56:23 |               DoMeas | MeasDaten werden ausgewertet.24227]
TXT: 03.09.2019, 13:56:23 |               DoMeas | ---------------------------------------
TXT: 03.09.2019, 13:56:23 |               DoMeas | Keine ID gefunden : --
TXT: 03.09.2019, 13:56:23 |               DoMeas | DeviceID .: 29.08.2019 18:50:32 - 
TXT: 03.09.2019, 13:56:23 |               DoMeas | ---------------------------------------
TXT: 03.09.2019, 13:56:23 |               DoMeas | Keine ID gefunden : --
TXT: 03.09.2019, 13:56:23 |               DoMeas | DeviceID .: 29.08.2019 18:50:32 - 
TXT: 03.09.2019, 13:56:23 |               DoMeas | ---------------------------------------
TXT: 03.09.2019, 13:56:23 |               DoMeas | ID gefunden : 14645-- hier steht eine ID
TXT: 03.09.2019, 13:56:23 |               DoMeas | DeviceID .: 29.08.2019 18:55:06 - 
TXT: 03.09.2019, 13:56:23 |               DoMeas | ---------------------------------------
...
TXT: 03.09.2019, 13:56:23 |               DoMeas | ---------------------------------------
TXT: 03.09.2019, 13:56:23 |               DoMeas | ID gefunden : 14645-- hier steht auch die selbe ID
TXT: 03.09.2019, 13:56:23 |               DoMeas | DeviceID .: 02.09.2019 21:44:21 - 

TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : weight-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : bmi-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : timestamp-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : weight-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : bmi-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : timestamp-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : fatmassweight-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : muskelmasse-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : wasseranteil-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : bonemass-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : fatradio-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : fatfree-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : heartpulse-23101
TXT: 03.09.2019, 13:56:23 | CheckOldVersionCatID | Variable nicht mehr alter Kategorie : pulswave-23101
TXT: 03.09.2019, 13:56:23 |          Update Data | Update Data Get Sleep    -> 03.09.2019 13:56:23 
TXT: 03.09.2019, 13:56:23 |          Update Data | Update Data Get Activity -> 03.09.2019 13:56:23 
TXT: 03.09.2019, 13:56:23 |          Update Data | Update Data Get Intra    -> 03.09.2019 13:56:23 
TXT: 03.09.2019, 13:56:23 |          Update Data | Update Data ENDE         -> 03.09.2019 13:56:23 
TXT: 03.09.2019, 13:56:23 |          Update Data | Update Data Laufzeit     -> 1

das … sind Auswertungen zu anderen Zeiten.

Edit: Heute Morgen stimmte BMI wieder. Komisch.

Ralf

Hallo
Hab jetzt testweise die Benachrichtigungen von Withings am Laufen. Infos von neuen Daten ( Gewicht,Blutdruck, Temperatur)
Kommen wirklich zeitnah < 1 Minute.
Beim Schlafsensor kam die erste Meldung wenn er festgestellt hat , dass ich schlafe. Davor hat er eine Zeitlang gesagt „wach“ .
Schlafunterbrechung und Aufstehen waren ziemlich zeitnah.
Hab aber erst einen Tag getestet.
Problem ist mit IPSymcon , das das System noch kein TLS kann.
Withigs gibt als Anforderung an.
Benutze ein NAS mit TLS Unterstuetzung.
TLS soll irgenwann kommen.

Gesendet von iPad mit Tapatalk

Symcon kann vielen Bereichen TLS. Die Anforderungen sind zu unscharf um da eine verbindliche Aussage zu treffen.

Aber wenn ich das richtig sehe, nutzt das Modul doch den Zugriff auf die externen Cloud Server.
Und von dort ein Event an Symcon zu senden, sollte schon funktionieren.
Kann der Server das Event über einen Webhook versenden?
Das über den Symcon ConnectDienst aufrufen. Der unterstützt TLS.

Glaube kaum das du wirklich einen TLS ClientSocket oder Serversocket dafür benötigst. Ersterer ist ja nur für permanent stehen TCP Verbindungen und zweiter benötigt (um von extern benutzbar zu sein) ein gültiges Zertifikat und Portweiterleitung.
Michael

Hallo
Bin Neuling in TLS, API setzt eine TLS Verbindung voraus. Ist eine CallbackURL.
Eine Connect Verbindung wird ablehnt. Hab ein NAS mit TLS das funktioniert.
Laut deiner Antwort gibt es noch keine TLS in IPSymcon:
https://www.symcon.de/forum/threads/40747-IO-mit-TLS-f%C3%BCr-Velux?p=402844#post402844
Zertifkat sollte beim Connect Dienst doch da sein ?

Dort wird ein ClientSocket mit TLS benötigt. Ist also nicht vergleichbar.
Hast du die ipmagic Adresse mit https angegeben und einen passenden Webhook in dem Ziel-IPS?
Eine callback URL deutet ja auf eine Übertragung mit dem http Protokoll hin.
Gibt es eine Doku wo das beschrieben ist?
Michael

Hallo
Hier der Link auf die Doku fuer die Notication Callback
https://developer.withings.com/oauth2/release.html

HTTPS is now required
If you specify a port, you must only use 443
The URL must not contain an IP
The use of localhost is no longer allowed

HTTPS with the SNI (Server Name Indication) extension will be required as of November 2018.
HTTP calls will be rejected.
You must use a client that supports TLS 1.2.
To follow industry standards, including those provided by NIST and PCI-DSS,
we will drop support for TLS versions 1.0 and 1.1 beginning November 30, 2018.

Folgendes probiert, erstmal ohne hook.
Router so konfiguriert , dass Port 443 auf Symcon-Server.
https://xxxxxxx.de/user/home.php
Funktioniert nicht.
https://xxxxxxxipmagic.de/user/home.php
Funktioniert nicht.

Router so konfiguriert , dass Port 443 auf Synology-NAS
https://xxxxxxx.de/Test/home.php
Funktioniert.

Mit SSL Server Test (Powered by Qualys SSL Labs) Symcon-Server getestet.
TLS 1.2 und TLS 1.3 vorhanden.

Gesendet von iPad mit Tapatalk

Danke, ich habe vorhin den Link auf Seite 1 zu API gesehen.
Das ist ein normaler HTTP-Get. Das sollte also funktionieren.
Liefert die home.php im user-Verzeichnis auch ein HTTP 200 zurück an den Server?
SNI sollte der ConnectDienst können.
Michael

Die home.php sind auf beiden Server gleich.
Per Browser antworten beide.

Gesendet von iPad mit Tapatalk

Hallo
Ich bin jetzt einen Schritt weiter. Hab versucht die Seite mit PHP
( file_get_contents($file); ) zu lesen. Mit dem NAS funktioniert das ohne Probleme . Bei Symcon kommt folgender Fehler:

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in C:\ProgramData\Symcon\scripts\53567.ips.php on line 16

Warning: file_get_contents(): Failed to enable crypto in C:\ProgramData\Symcon\scripts\

Auf dem NAS ist das Original certificat und auf Symcon eine Kopie.
Browser sagen Zertifikate bei beiden OK.

Gesendet von iPad mit Tapatalk

Wie?
Was willst du den lesen?
Was ist den $file?
Du bekommst die Daten als HTTP-Get gesendet, laut deren Doku.
Nimm Mal das Script hier:


IPS_LogMessage("HTTP-GET", print_r($_GET, true)); IPS_LogMessage("HTTP-POST", print_r($_POST, true)); IPS_LogMessage("IPS Variable", print_r($_IPS, true)); IPS_LogMessage("HTTP-RAW", file_get_contents("php://input"));

Michael

Kann mir jemand erklären warum das Modul bei mir lauter Dummies mit dem Name „IntraDayActivity“ im Symcon Root anlegt?
Ist das ein Bug?
Wie kann man das abstellen?

Waehle erstmal Aktivitaetswerte in der Konfiguration ab.

Gesendet von iPad mit Tapatalk

Ist tatsaechlich ein Bug. Fix im naechsten Update.

Hallo
Ich glaube ich fange noch einmal vorne an. Es geht nicht um den Inhalt von home.php
Das Modul kann entweder regelmaessig Daten vom Withingsserver holen oder sich automatisch
benachrichtigen lassen wenn neue Daten vorhanden. Um das zu nutzen muss man „Notify - Subscribe“ benutzen.
http://developer.withings.com/oauth2/#tag/notify%2Fpaths%2Fhttps%3A~1~1wbsapi.withings.net~1notify%3Faction%3Dsubscribe%2Fget
Das Problem dabei ist die callbackurl.
Der Aufbau ist in der Doku beschrieben. Link hatte ich gepostet:
https://developer.withings.com/oauth2/release.html
Folgendes funktioniert mit meinem Webserver auf meinem NAS:

$callbackurl = urlencode("https://xxxxxxxx.de/Test/home.php");
$url = "https://wbsapi.withings.net/notify?action=subscribe&access_token=".$access_token."&callbackurl=".$callbackurl."&appli=1&comment=SubscribeWeight";
$this->DoCurl($url,true);

callbackurl wird aktiviert und bei neuen Daten wird die callbackurl aufgerufen. Dort ist im Moment nur ein Logging.

Wenn ich als callbackurl auf meinem IPSymcon nutzen will wird der subscribe Befehl mit Fehler beendet.
Callbackurl fehlerhaft.
Fehler bei:

$callbackurl = urlencode("https://xxxxxxx.de/user/home.php");		
$url = "https://wbsapi.withings.net/notify?action=subscribe&access_token=".$access_token."&callbackurl=".$callbackurl."&appli=1&comment=SubscribeWeight";
$this->DoCurl($url,true);

Fehler bei:

$callbackurl = urlencode($connectinfo."/user/home.php");
$url = "https://wbsapi.withings.net/notify?action=subscribe&access_token=".$access_token."&callbackurl=".$callbackurl."&appli=1&comment=SubscribeWeight";
$this->DoCurl($url,true);

Mit Wireshark sehe ich, dass Withings Kontakt mit meinem Server aufnimmt, aber irgendetwas stoert ihn.

  1. HTTPS REQUIRED WITH SNI AND TLS 1.2
    HTTPS with the SNI (Server Name Indication) extension will be required as of November 2018. HTTP calls will be rejected.
    You must use a client that supports TLS 1.2. To follow industry standards, including those provided by NIST and PCI-DSS, we will drop support for TLS versions 1.0 and 1.1 beginning November 30, 2018.

Ich habe das Modul man raus genommen.

Legt zu jedem Gerät eine Batterieinstanz bei jeder abfragen an.

Hast du die aktuelle Version aus MASTER ?

Ja bin auf Master

Sollte eigentlich behoben sein.:confused:
Wird die Instanz immer noch in root erstellt?
Wie ist genau der Name der Instanz und welchen Ident hat sie?
Hat die Instanz Variablen?

Hi,

komme im Moment nicht dazu zu prüfen.
Melde mich wieder.