Eine andere Möglichkeit wäre, an geeigneter Stelle mit Smart zu sprechen und eine Art Treuhand-Proxy zu betreiben. Ähnliche Dinge kenn ich schon von einigen Alexa-Skills damit die Integration in Opensource Projekte überhaupt funktioniert, ohne daß jeder Developer werden muss.
Smart #1 API / Smart Home Integration
-
-
Man kann auch einfach ChatGPT fragen und bekommt eine erstaunlich präzise Antwort.
Frage:Weißt du, wie bei REST Kommunikation per OAuth die Sache mit dem Timestamp, Nonce und der Checksumme bzw. Signatur genau funktioniert? Auf Basis welcher Payload wird da was berechnet?
Antwort:
Ja, ich kann dir erklären, wie die Kommunikation per OAuth mit Timestamp, Nonce und Signatur funktioniert.
OAuth ist ein offenes Protokoll, das verwendet wird, um sichere API-Aufrufe zwischen Anwendungen zu ermöglichen. OAuth verwendet in der Regel das HMAC-SHA1-Signaturverfahren, um die Authentizität von Anforderungen zu überprüfen. Der Ablauf ist wie folgt:
- Der Client sendet eine Anfrage an den Server, um eine Ressource anzufordern.
- Der Client erstellt einen eindeutigen Wert, den sogenannten Nonce (Number Used Once). Der Nonce ist ein zufälliger Wert, der jede Anfrage eindeutig identifiziert. Der Nonce wird zusammen mit einem Zeitstempel (Timestamp) in der Anfrage an den Server gesendet.
- Der Server empfängt die Anfrage und prüft, ob der Nonce bereits verwendet wurde. Wenn der Nonce bereits verwendet wurde, wird die Anfrage abgelehnt. Wenn der Nonce noch nicht verwendet wurde, wird die Anfrage fortgesetzt.
- Der Server erstellt eine Signatur (Checksumme) der Anfrage durch Verwendung des HMAC-SHA1-Signaturverfahrens. Die Signatur wird aus dem geheimen Schlüssel des Servers und einer Kombination aus dem HTTP-Methodenverb, der URL und den Parametern (z.B. Nonce, Timestamp und OAuth-Token) berechnet.
- Der Server vergleicht die berechnete Signatur mit der in der Anfrage enthaltenen Signatur. Wenn die Signaturen übereinstimmen, wird die Anfrage als gültig betrachtet. Andernfalls wird die Anfrage abgelehnt.
Durch die Verwendung des Nonce und des Zeitstempels in der Anfrage wird sichergestellt, dass jede Anfrage eindeutig ist und nicht wiederverwendet werden kann. Durch die Verwendung der Signatur wird sichergestellt, dass die Anfrage nicht verändert wurde und dass der Client und der Server über den geheimen Schlüssel übereinstimmen.
Ich hoffe, diese Erklärung hat dir geholfen, das Verfahren zur Authentifizierung von OAuth-Anforderungen zu verstehen.
-
Das ist fast so faszinierend wie Github CoPilot... bestenfalls schreibst du nur noch den Funktionskopf mit Kommentar, was die Funktion machen soll...
-
Seid ihr alle Informatiker oder was? Ihr redet so locker daher, als würde jeder da draußen verstehen um was es hier geht😳😂.
Kann man das Ganze in Deutsch für Laien zusammenfassen?
Ich versuchs mal so:
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt. -
Ich brauche eigentlich nur den Füllstand in Prozent um meine Automatisierung zu vollenden. Über die Zappi bekomme ich den leider nicht mit.
Ok, eine Steuerung des Ladezustand wäre auch klasse, aber da könnte ich in der ersten Zeit drauf verzichten.
Oh ja, und das alles direkt als iobroker Plugin. Das wär dann alles.
OAuth, rest und reverse engineering von Signierungsverfahren sind leider nicht meine Welt, sonst wäre ich der Erste der hilft.
Mein leihenhaftes Vorwissen, sagt mir aber das hier ein unbekannter Schlüssel im Spiel ist um zu signieren. Sehr wahrscheinlich sogar ein Zertifikat mit entsprechendem Verwendungszweck und online PKI. Könnte daher sehr schwer werden, die Kommunikation validiert hin zu bekommen.
Den payload bekommt man durch ausprobieren hin. Meist eine Kombination mit timestamp und einem Zufalls Anteil.
Oh, Mist hab zu spät gesehen das ja schon alles gesagt wurde durch den tollen ChatGPT Auszug. Dann möchte ich nur noch anmerken, dass es nicht nur HMAC-sha-1 gibt zur Signierung.
Klugscheisser Modus aus.
-
Ich hab ja verschiedene Autos in meinem ioBroker Smart EQ, ID4GTX und Enyaq. Wie machen diese Adapter denn die Abfrage und Änderung der Werte? Die API wird doch sicher auch dort abgesichert sein. Ggf. macht es Sinn da mal reinzuschauen. Ich selbst hab da leider wenig Ahnung. Kann nur C&P 😃😬
-
Die meisten Hersteller machen ihre API öffentlich und stellen zumindest grundlegende Informationen zur Verfügung. Das läuft dann normalerweise so ab, dass man sich mit seinen Zugangsdaten anmelden kann und explizit freigibt, dass App x auf Daten y zugreifen darf. Ähnlich wie bei Spotify, wenn man es mit dem Auto koppelt. Oder wenn man andere E-Autos in Apps wie z.B. Tronity einbindet, so dass eben auch der Akkustand ausgelesen werden kann oder für die Routenplanung berücksichtigt wird.
Durchaus möglich, dass Smart das in Zukunft für den #1 auch noch zur Verfügung stellt. Bisher ist das eben noch nicht der Fall. Daher ist momentan die einzige Möglichkeit zu schauen, wie die offizielle Smart App das macht und das dann darüber herzuleiten bzw. nachzubauen.
-
Die meisten Hersteller machen ihre API öffentlich und stellen zumindest grundlegende Informationen zur Verfügung. Das läuft dann normalerweise so ab, dass man sich mit seinen Zugangsdaten anmelden kann und explizit freigibt, dass App x auf Daten y zugreifen darf. Ähnlich wie bei Spotify, wenn man es mit dem Auto koppelt. Oder wenn man andere E-Autos in Apps wie z.B. Tronity einbindet, so dass eben auch der Akkustand ausgelesen werden kann oder für die Routenplanung berücksichtigt wird.
Durchaus möglich, dass Smart das in Zukunft für den #1 auch noch zur Verfügung stellt. Bisher ist das eben noch nicht der Fall. Daher ist momentan die einzige Möglichkeit zu schauen, wie die offizielle Smart App das macht und das dann darüber herzuleiten bzw. nachzubauen.
Die Anfrage an Smart zu einer dokumentierten API habe ich ja schon vor einiger Zeit gestellt, haben sie ins Backlog mit aufgenommen😉
Ich rechne da noch nicht so schnell mit, deswegen müssen wir es selber herausbekommen.
-
Mal sehen wann das in einen Sprint kommt.
-
Hallo, ich habe diesen Post im EVCC-Forum verlinkt: https://github.com/evcc-io/evcc/discussions/7932
EVCC (https://evcc.io/) ist Open Source und die smarte Überschuss-Steuerung verschiedener Wallboxen für eine Vielzahl an Fahrzeugen EVCC gibt es auch als Integration für Home Assistent. AndiG ist der Entwickler und absoluter Experte auf dem Gebiet. Ich bin selbst sehr an einer Integration des #1 interessiert und vielleicht kann man ihn für eine Entwicklung einer Anbindung gewinnen. Ich würde selbst im Rahmen meiner Möglichkeiten meine Hilfe anbieten. Bin Softwareentwickler.
Und nein, ich bekomme keine Provision...