Fragen zu Rest-API

Hallo Community,
ich möchte eine REST-Anfrage an Gladys senden, aber ich hänge bei der Authentifizierung fest (Fehler 401).

Ich finde keine Informationen zum verwendeten Authentifizierungstyp oder zum benötigten Passwort (Raspberry-Konto oder Gladys-Admin)?

Zur Info: Ich verwende Python und das Modul requests (ich bin Anfänger in der Programmierung).

Danke.

Hallo,

Ich weiß nicht, ob du es gesehen hast, aber im GitHub-Repo von Gladys gibt es einen Export der Software Insomnia Core, mit dem du Anfragen an die Gladys-API testen kannst.
Sobald die Software installiert und die Exportdatei in Insomnia importiert ist, musst du die Umgebungsvariablen einmal ändern, um die URL deines Gladys-Servers zu ändern.

Dann musst du dich nur noch über Insomnia anmelden (User → login) mit den Anmeldedaten/Passwort deines Gladys-Admins, um ein Zugriffstoken (access_token) zu erhalten, das du erneut in den Umgebungsvariablen ändern kannst.

Dieses access_token wird dir nützlich sein, sobald du dich über Python angemeldet hast, um deine REST-Aufrufe zu tätigen.

ok danke, ich werde mich da mal schlau machen (muss mich über Gotify informieren, da ich das überhaupt nicht kenne)

Entschuldigung, ich wollte Gladys schreiben und nicht Gotify. Ich arbeite an einer möglichen Integration dieses Gotify-Dienstes, da bin ich wohl ein bisschen davon geprägt :wink:

Hallo @Ook! Die REST-API von Gladys 4 ist derzeit eher für den „internen“ Gebrauch innerhalb von Gladys gedacht. Es gibt noch keinen Mechanismus für langlebige Tokens, um die API extern (mit einem API-Schlüssel) nutzen zu können.

Das ist jedoch eine geplante Entwicklung, die hier aufgelistet ist:

Du kannst für die Funktion abstimmen, wenn du sie in Gladys sehen möchtest :slight_smile:

Aus Neugier, warum möchtest du die API extern nutzen?

In der Zwischenzeit gibt es zwei Möglichkeiten

1) Die MQTT-API

Wenn du neue Gerätewerte senden möchtest, kannst du die MQTT-API von Gladys verwenden (mehr Erklärungen in der Dokumentation), das ist meiner Meinung nach die sauberste Lösung :slight_smile:

2) Über ein „Benutzer“-Token, als wärst du das Frontend

Wenn du die API wirklich in einem Skript verwenden möchtest, bevor die API-Tokens verfügbar sind, kannst du den Login-Flow in deinem Skript verwenden, um ein access_token und ein refresh_token abzurufen, und dann die Gladys-API mit einem access_token im Header „Authorization“ aufrufen.

Das ist weniger sauber als mit den zukünftigen API-Schlüsseln, aber es funktioniert vorerst :slight_smile:

Mein Ziel ist doppelt: Ich arbeite an einem Skript für Spracherkennung und Sprachsynthese und möchte damit ein Szenario ausführen (im Wesentlichen alles ausschalten, wenn ich gehe).

Zum einen aus pädagogischen Gründen, denn ich lerne Python fast allein und habe bereits eine REST-API einer Software aus meinem Job genutzt. Jetzt möchte ich es mit einer anderen API versuchen, um mich an diese Technologie zu gewöhnen.

Daher denke ich, dass mir das Frontend-Äquivalent helfen würde.

Falls nicht, werde ich mit MQTT herumspielen, wenn ich einen Anwesenheitsindikator für die Abfahrt senden kann… Danke für die Info!

Top :slight_smile: Tatsächlich ist die Frontend-Option die beste für dich.

Ich empfehle dir, um zu verstehen, wie es funktioniert, den Inspektor deines Browsers im Tab „Anfragen“ zu öffnen, während du auf der Frontseite von Gladys bist.

Du wirst alle Anfragen sehen, die durchgehen, und du kannst dasselbe in deinem Python-Skript tun.

Zögere nicht, wenn du Fragen hast :slight_smile:

Ich habe es geschafft! Danke für die Tipps! Meine Spracherkennung kann jetzt Szenarien starten! Super glücklich! Jetzt muss ich es nur noch am Raspberry ausprobieren!

Genial! :clap::clap: Aus Neugier, was macht dein Skript genau?

Zögere nicht, dein Setup mit der Community zu teilen :slightly_smiling_face:

Das ist ein Python-Skript, das auf einem Mikrofon hört und eine Spracherkennung für Schlüsselwörter durchführt. (Modul pocketsphynx)

Bisher hat es mir meine Anwendungen auf Anfrage gestartet, und jetzt führt es eine Szene in Gladys aus. (Lichter ausschalten)

Derzeit läuft es auf meinem PC mit Windows 10 Pro, aber ich muss es für meinen Raspberry neu machen. Das wird der nächste Schritt sein!

Hallo, ich greife das Thema auf, um eine Frage zu stellen, auf die ich keine Antwort finde. Ist es über die API möglich, Verbrauchsinformationen einer Steckdose mit Internetverbindung abzurufen oder ist das nicht möglich? Vielen Dank im Voraus.

Hallo @desdamo, möchtest du den momentanen Verbrauch oder Verbrauchsverläufe?

Achtung, es gibt noch keinen API-Schlüsselmechanismus in Gladys 4 (geplant, aber noch in Entwicklung), daher ist die API nur nutzbar, « als ob dein Skript das Frontend wäre ».

Wenn du den momentanen Verbrauch möchtest (und dein Stecker natürlich Verbrauchsinformationen hochlädt), kannst du den Verbrauch über diesen GET-Zugriff abrufen, glaube ich: Gladys Assistant REST API documentation

Hallo @pierre-gilles, ich möchte über eine Frontend-Schnittstelle den Verbrauch mehrerer intelligenter Steckdosen abrufen. Kein Momentaufnahme, da ich den durchschnittlichen Verbrauch pro Woche oder Tag kennen möchte. Ist das möglich?

@desdamo aktuell nicht, aber wir haben einen PR, der in diese Richtung geht (https://github.com/GladysAssistant/Gladys/pull/966)