NEWS
REST API Post
-
Hallo zusammen,
ich bräuchte bitte einmal eure Hilfe für mein Projekt.
Ich habe ein Script, mit dem ich die Entladung meines Energiespeichersystems steuern möchte. Nicht komplett steuern, sondern in einigen Fällen am Tag eher übersteuern. Beispielsweise die Entladung des Akkus auf 0 setzen, wenn das eAuto beladen wird.
Dafür muss ich an eine lokale API des Energiespeichersystems (läuft hier im lokalem Netz) einen Wert per POST Request senden. Die Sache an der ich jetzt scheitere ist die verflixte Authentifizierung. Man muss Username und Passwort übergeben.
Ich habe das versucht, bekomme aber keine Erfolgs- oder Fehlermeldung. Wenn das Script läuft tut sich schlicht "nichts" Im Postman funktioniert es. Also die API des Speichersystem selbst funktioniert.
Hier das Script
let server = 'http://192.168.25.99:8084/rest/channel/ess0/SetActivePowerEquals'; let body_sent = { "value": 2500 }; console.log("Server : " + server); request.post({ url: server, headers: {'Content-Type': 'application/json'}, json: body_sent, form: {username: 'x', password: 'y'} }, function(error, response, body) { if (error) { console.log(error); } if (!error && response.statusCode == 200) { log(JSON.parse(body)); } } );
Könnt Ihr mir helfen? Wie bzw. wo genau muss ich die Credentials unterbringen? In der Anleitung des Herstellers steht, das username und Passwort genutzt werden müssen. Kein API Key.
Vielen Dank!
Jörn -
@jörnw sagte in REST API Pos:
In der Anleitung des Herstellers steht,
ahhh und du erwartest jetzt was.. meine Glaskugel ist gerade zur Politur..
also kein Plan :
was du das hast
welche API genutzt wird
welche Doku es zur der Api gibtund zur guter letzt.. LOG ??
-
-
@arteck : Sorry, ich wolle nicht, das du noch zur Politur greifen musst oder gar den ganzen Kristallkugel-Cluster hochfahren musst.
Ich habe mich da wohl nicht präzise genug ausgedrückt. Sehe es mir als Anfänger bitte nach. Das was mir fehlte war schlicht der richtige Weg, wie ich Username und Password übergeben muss. Ich habe mich da die Tage "zu Tode Gegoogelt". Habe gestern einen Tip bekommen es mit Axios zu versuchen. Dort bei Axios-http in der Doku habe ich einen Hinweis gefunden, der auch mit meinem Code hier funktioniert...
Ich habe versucht die Benutzerdaten so zu übergeben: (s. oben im Code):
form: {username: 'x', password: 'y'}
Korrekt wäre aber wohl gewesen:
auth: { username: 'x', password: 'y', }
Mit "auth{}" bekomme ich nun status code 200 zurück. Und das ESS reagiert wie gewünscht.
Mit "form{}" war es status code 401. Da dann wohl die Credentials an der falschen Stelle (oder garnicht übertragen wurden?) standen.Ich habe dann noch die Info von @OliverIO mit eingebaut. Danke dafür @OliverIO
Nun läuft es wie verrückt und mir fällt, nach dem ganzen hin und her probieren, ein Stein vom Herzen das es endlich klappt
Viele Grüße & Danke
Jörn -
@jörnw
Programmieren ist eine exakte Disziplin.
Nix mit ungefähr wird schon funktionieren.Viele müssen das erst lernen Texte genau zu lesen und zu verstehen.
Aber um so öfters man das macht um so einfacher fällt einem das