CSV mit historischen Sensorwerten herunterladen

Hallo zusammen!

Heute schlage ich euch ein kleines Tutorial vor, um ein CSV aller historischen Werte eines Sensors herunterzuladen.

Dafür werden wir die HTTP-API von Gladys nutzen.

Schritt 1: HTTP-Client herunterladen

Ich empfehle Yaak.

Schritt 2: Token abrufen

Da die API von Gladys gesichert ist, müssen wir ein Token abrufen.

Erstellt eine neue Anfrage in Yaak mit der URL

Methode: POST
URL: http://IP_DEINER_GLADYS_INSTANZ/api/v1/login
Body Type: JSON

Body:
{
  "email": "DEINE_EMAIL",
  "password": "DEIN_PASSWORT"
}

Sende die Anfrage, du solltest ein « access_token » rechts erhalten, das ist das, was uns interessiert:

Schritt 3: Selector des Sensors abrufen, der dich interessiert

Methode: GET
URL: http://IP_DEINER_GLADYS_INSTANZ/api/v1/device
Kein Body

Im Tab « Auth » klicke auf « Bearer token » und kopiere dein access_token:

Sende die Anfrage, du solltest eine Antwort dieser Art erhalten:

Du kannst « Strg/Cmd + F » verwenden, um nach einem Gerät zu suchen.

Dann finde das Feld « selector » der « feature », die dich interessiert.
Das ist die eindeutige Kennung, die es uns ermöglicht, dieses Gerät abzufragen.

Schritt 4: Herunterladen des gesamten Historie dieses Geräts

Erstelle eine neue Anfrage in Yaak:

Methode: GET
URL: http://IP_DEINER_GLADYS_INSTANZ/api/v1/device_feature/aggregated_states
Params:
   - interval: Die Dauer, die du in Minuten abrufen möchtest.
        (Beispiel: Um die letzten Werte der letzten Stunde abzurufen, setze 60)
        (Beispiel: Um die letzten Werte des Tages abzurufen, setze 1440, da 60*24)
  - max_states: Die maximale Anzahl der Zustände, die du zurückgeben möchtest.
          Wenn du die Vollständigkeit der Daten ohne Sampling möchtest, setze einen enormen Wert (z. B. 1000000000000)
  - device_features: Die Liste der Feature-Selector, getrennt durch Kommas. Du kannst einen einzigen verwenden

In meinem Fall sieht es so aus:

Ich suche die letzten Werte des Jahres, mit allen Werten, für meinen Feuchtigkeitssensor.

Klicke auf « Save to file » rechts, um die Werte auf der Festplatte zu speichern.

Hinweis: Achte darauf, nicht die ganze Erde herunterzuladen, deine Gladys-Instanz muss das JSON im Speicher laden und wenn du alle Geräte deiner Instanz seit dem Anfang herunterlädst, kann das viel sein :stuck_out_tongue:

Schritt 5: Konvertierung des JSON in CSV

Um das JSON in ein CSV zu konvertieren, das in jeder Analyse-Software (oder einfach in einer Excel-Tabelle) verwendet werden kann, habe ich die KI gebeten, eine kleine Website zu erstellen: https://device-json-to-csv.pages.dev/

Die Website ist einfach ein kleiner Client, der die Konvertierung automatisch clientseitig durchführt (nichts wird zu einem Server übertragen, du kannst sogar das HTML herunterladen, wenn du es lieber lokal bei dir hosten möchtest).

Fazit
Mit dieser Website erhältst du ein kleines CSV, das du nach Belieben nutzen kannst!

Beispiel bei mir mit einem Feuchtigkeitssensor:

Vergiss nicht, dass die gesamte Gladys-API hier dokumentiert ist: https://apidoc.gladysassistant.com/

Du kannst alles, was das Gladys-Frontend kann, über die API tun!

Zögere nicht, wenn du Fragen hast.

Hallo,

Ich habe wieder einen Temperatur-/Feuchtigkeitssensor, der gerade den Geist aufgegeben hat. Ich hatte das Problem bereits mit diesem und anderen Sensoren, die ich wieder in Betrieb nehmen konnte, indem ich alle Daten verloren habe. Deshalb versuche ich jetzt eine Sicherung.

Ich bin bereits bei der ersten Suche in Yaak stecken geblieben, selbst mit dem Tutorial von @pierre-gilles. Ich weiß nicht, welches Item ich auswählen soll.

Vielen Dank im Voraus für Ihre Aufklärung

Jede Kurve entspricht einem Sensor, die Temperatur unterscheidet sich je nach Balkonausrichtung.

Schau dir den Screenshot an, wenn du von dem Schritt zur Token-Wiederherstellung sprichst, musst du „JSON“ auswählen :slightly_smiling_face: