[V4] Dev-Service Withings

Hallo,

ich versuche, einen Dienst zu entwickeln, der die Daten von Geräten dieser Marke abruft.

Sobald die Informationen zum Konto und den Geräten abgerufen wurden, möchte ich alle Daten der historischen Messungen abrufen.

Ich erstelle Feature_States für jede Messung, indem ich das created_date und das updated_date definiere, aber nach der Registrierung werden diese beiden Daten auf das aktuelle Datum erzwungen und nicht auf das, was ich definiert habe.

Wie kann ich Messungen von Geräten in der Vergangenheit speichern?

Hallo @euguuu! Super, wenn du diesen Service entwickelst, ich habe deinen PR gesehen :slight_smile:

Guter Hinweis, das ist tatsächlich das aktuelle Verhalten, siehe die fragliche Codezeile:

Könntest du mir den erwarteten Ablauf deines Services etwas genauer beschreiben, damit wir sehen können, wie wir das am besten umsetzen können?

In diesem Service beginne ich damit, die Informationen anzufordern, um das Withings-Konto des Benutzers zu verbinden (über OAuth2).

Sobald die Verbindung bestätigt ist, hole ich die Kontoinformationen ab, um die vorhandenen Geräte in diesem Konto zu erstellen (Waage, Uhr, usw.) und die zugehörigen Funktionen (Batterie, Gewicht, Puls, usw.). Ich hole auch den bestehenden Messwertverlauf ab und möchte diese Messwerte (mit ihren echten Erstellungsdaten) speichern, um den Verlauf in Gladys zu haben und die Anzeige in Form von Kurven zu ermöglichen.

Sobald das alles erledigt ist, möchte ich einen Poll einrichten, um die neuen Messwerte einmal täglich abzurufen. In meinem Fall zählt nicht der Zeitpunkt, zu dem Gladys die Messwerte abruft, sondern das Erstellungsdatum der Messung durch das Gerät im Withings-Konto.

Ok, ich verstehe die Idee!

Da du auf einmal viele Werte synchronisierst, denke ich nicht, dass die aktuelle Funktion sinnvoll ist.

Was wir brauchen, wäre eine Funktion wie die Funktion saveState, die aber statt einem Wert ein Array von Werten übernimmt.

Diese Funktion würde:

  1. Die Liste der t_device_feature_state in die DB einfügen
  2. Das t_device_feature.last_value mit dem letzten Wert des Arrays aktualisieren
  3. Die Szenen mit dem letzten Wert aufrufen und den letzten Wert über Websockets an die verbundenen Clients weiterleiten

Also im Grunde diese Funktion kopieren:

Um die Mehrfach-Einfügung zu verwalten.

Dann auf ein neues Event hören, z.B. EVENTS.DEVICE.NEW_STATE_SYNC, ähnlich wie EVENTS.DEVICE.NEW_STATE

Könntest du dich in deinem PR darum kümmern? :slight_smile:

Zögere nicht, wenn du Fragen hast!

Hallo,

ich muss mich wieder ranhalten, aber ja, ich werde mich darum kümmern, diese Änderung zu integrieren.

Hallo,

ich bin mit dieser Entwicklung gut vorangekommen und habe gerade eine fast finale Version in den PR [WIP] Withings gepusht.

Diese Integration ermöglicht:

  • die Verbindung zum Withings-Konto
  • eine generische API (Server & Frontend) zur Verbindung mit OAuth2-Diensten (muss an anderen Integrationen bestätigt werden)
  • die automatische Erstellung von Withings-Geräten
  • das Abrufen von Messwerten der Geräte
  • die Anzeige einer „Gesundheit“-Box im Dashboard, ähnlich wie die Box DeviceInRoom

Folgende Punkte müssen noch erledigt werden, um die Integration als korrekt zu betrachten:

  • Dokumentation der Integration (in Arbeit)
  • Hinzufügen einer Konfiguration für die Demo-Website
  • Code-Review, falls möglich, und Berücksichtigung der Anmerkungen
  • [optional] Test der Integration durch Freiwillige mit mehr Geräten (normalerweise sollte die Integration für alle Withings-Geräte funktionieren, aber ich habe derzeit nur eines)

Idealerweise hätte ich für eine nächste Version gerne eine Box im Dashboard in Form eines Kurvendiagramms angezeigt. Gibt es bereits Komponenten, die zur Anzeige des Datenverlaufs vorgesehen sind?

Einige Bilder der Integration:

Genial alles! Danke @euguuu
Gibt es zufällig eine Möglichkeit, eine historische Kurve des Gewichts anzuzeigen? Das ist im Allgemeinen der ganze Sinn einer vernetzten Waage. Einstellbar nach Belieben: 1 Woche / 1 Monat / 1 Jahr.

Er stellt sich auch diese Frage :wink:

Ach ja wenn ich lesen könnte würde ich nicht solche Fragen stellen… ^^
Entschuldigung!

Magnifique !!

Das ist wirklich tolle Arbeit @euguuu :slight_smile:

Ich denke, das ist etwas, das man generell bei Gladys möchte, nicht nur bei diesem Service. Daher wäre es meiner Meinung nach nicht nötig, das in den Service zu entwickeln.

Wir haben bereits diese Aufgabe mit 12 Stimmen:

Ich denke, das wird das Problem lösen :slight_smile:

Das mochte ich an der v3… :stuck_out_tongue:

Super! Da ich den Aufbau von Gladys nicht verstehe, dachte ich nicht, dass man ein „historisches“ Tool erstellen und es auf alle gewünschten Sensoren anwenden kann. Danke für die Info!

Ja, aktuell ist der Verlauf in der Datenbank. Übrigens, wenn du Gladys zum ersten Mal einrichtest, legst du fest, wie lange die Daten gespeichert werden sollen.

Die Funktion muss entwickelt werden.

Gibt es auf dieser Anzeige eine laufende Entwicklung? Gibt es bereits Entscheidungen über die zu verwendende Technologie oder die Architektur, die implementiert werden soll, oder müssen wir von vorne beginnen?

Dort geht’s lang

Es gibt keine laufende Entwicklung. Darüber haben wir im anderen Thema gesprochen, das nur eine „To-Do“-Liste ist. Aber im Großen und Ganzen ist alles zu tun: Auswahl der Chart-Bibliothek und Entwicklung :slight_smile:

Davon reden wir im anderen Thema?

Hallo zusammen,
ich greife das Thema nochmal auf.
@euguuu ist kurz vor Ende der Entwicklung, das PR ist in der Überprüfung, wir suchen also Freiwillige, um den Service zu testen / zu validieren, idealerweise mit Hardware.

Vielen Dank im Voraus.

Ich bringe das Thema wieder auf. Hat jemand Material und könnte den PR testen? :slight_smile:

Falls nicht, wäre es möglich, eine kleine Präsentation des PR von @euguuu zu bekommen? :slight_smile:

Was macht sie? Welche Withings-Geräte werden unterstützt?

Die zugehörige Dokumentation beschreibt Schritt für Schritt jede Seite des Dienstes. Ich kann bei Bedarf eine Demo durchführen oder meinen Withings-Code (entspricht OAuth2, da ich sie nach den Tests mit einem Klick löschen/ändern kann) bereitstellen.

Ich habe den Dienst nur mit einem Gerät (der Body-Waage) unter realen Bedingungen getestet.
Aber theoretisch ist der Dienst mit allen Geräten der Marke kompatibel.

Der Dienst erstellt automatisch Geräte basierend auf denen, die auf der Withings-Plattform angegeben sind, holt den Verlauf der Messungen ab und führt dann eine tägliche Abfrage durch, um neue Messungen abzurufen.

Bei der Nutzung der Messungen gibt es eine Box ähnlich der Device-in-Room-Box, die jedoch nur die Features der Kategorie ‹ Gesundheit › abruft.

Okay, und wie gehst du damit um, dass es sich um Gesundheitsgeräte handelt, die eher „persönlich“ sind als mit dem Haus verbunden?

Deine Waage gibt Gewichte aus, die mit Personen in deinem Haushalt verbunden sind (und nicht mit Räumen wie die meisten Sensoren bisher), wie hast du darüber nachgedacht?