NEWS
Werte (JSON) an URL senden
-
Ich versuche das Log zu schicken, aber es kommt der Fehler "forbidden" beim Antworten
avascript.0 2023-03-01 19:16:08.834 info script.js.TeslaSolarSetSOC: {'code':3,'killed':false,'signal':null,'cmd':'curl -X 'PUT' \\ 'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1' \\ -H 'accept: */*' \\ -H 'Content-Type: application/json' \\ -d '{ \'chargeMode\': 2, \'minimumSoC\': 20, \'latestTimeToReachSoC\': \'2023-03-01T17:06:45.205Z\', \'ignoreLatestTimeToReachSocDate\': true, \'maximumAmpere\': 0, \'minimumAmpere\': 0, \'usableEnergy\': 0, \'shouldBeManaged\': true, \'chargingPriority\': 0 }''} javascript.0 2023-03-01 19:16:08.598 info script.js.TeslaSolarSetSOC: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
EIDT: Jetzt.. Evtl zu Kurze Antwort?
-
@m-a-x sagte: Evtl zu Kurze Antwort?
Ich habe keine Ahnung, was Error-Code 3 bedeutet.
-
@paul53
Das mit der zu kurzen Antwort war auf die Forenantwort bezogenwollte dir ursprünglich nur schreiben "jetzt kommt:" und dann den Code.
Gibt es eine Möglichkeit das "Text" Fenster des exec Befehls größer zu machen, sodass ich darin leichter rum probieren kann?
Ich hab in meinem ersten Beitrag auch mal ganz unten den anderen Thread verlinkt, falls das hilft -
@m-a-x
Der Kommandotext wird durch Hochkommata unterbrochen. Wenn innerhalb des Kommandos Hochkommata erforderlich sind, müssen diese mit Backslash eingeleitet werden. Anfang:'cmd':'curl -X \'PUT\' \\ \'http:/
-
@paul53
Leider nicht besser gewordenjavascript.0 2023-03-01 19:37:31.205 info script.js.TeslaSolarSetSOC1: {'code':3,'killed':false,'signal':null,'cmd':'curl -X \\'PUT\\' \\ \\'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1\\' \\ -H \\'accept: */*\\' \\ -H \\'Content-Type: application/json\\' \\ -d \\'{ \'chargeMode\': 2, \'minimumSoC\': 20, \'latestTimeToReachSoC\': \'2023-03-01T17:06:45.205Z\', \'ignoreLatestTimeToReachSocDate\': true, \'maximumAmpere\': 0, \'minimumAmpere\': 0, \'usableEnergy\': 0, \'shouldBeManaged\': true, \'chargingPriority\': 0 }\\''}
Da, wo im Log jetzt ein ' ist, war vorher ein ", da wo jetzt zwei \' sind, hatte ich ein \ vor einem ' eingefügt...
Auch ganz hinten und am Anfangcurl -X \'PUT\' \ \'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1\' \ -H \'accept: */*\' \ -H \'Content-Type: application/json\' \ -d \'{ "chargeMode": 2, "minimumSoC": 20, "latestTimeToReachSoC": "2023-03-01T17:06:45.205Z", "ignoreLatestTimeToReachSocDate": true, "maximumAmpere": 0, "minimumAmpere": 0, "usableEnergy": 0, "shouldBeManaged": true, "chargingPriority": 0 }\'
-
@m-a-x
Gibt es irgendwo eine Beschreibung der API? Request ist vielleicht besser geeignet? -
@paul53
Ich glaube leider nein..
Das ist das Projekt:
https://github.com/pkuehnel/TeslaSolarCharger -
@m-a-x sagte: leider nein..
Woher stammen die Bilder?
-
@paul53
Ich kann über IPdesSystems:7190/swagger
die API aufrufen
Also in meinem Fall 192.168.9.105:7190/swagger
-
@m-a-x sagte: ich brauche nur den chargeMode und den minimumStateOfCharge
Sollen die Werte abgefragt oder gesetzt werden?
Welche Werte kann "chargeMode" annehmen? -
@paul53
Die Werte sollen gesetzt werden. Wenn ich das per "PUT" in der API mache, klappt es auch (wie im ersten Post kommt kann dieser "code" mit CURL am Anfang raus.
Der DockerContainer lässt mein Fahrzeug nur mit PV Überschuss laden. Aber manchmal brauche ich es auch einfach, dass das Fahrzeug komplett geladen wird. Dazu möchte ich einen Taster neben die Wallbox bauen und hierdurch, über Iobroker, soll dann der SOC auf 100% gesetzt werden. Den Rest der Logik (zurückkehren zu den Standardwerten, sobald der Ladevorgang abgebrochen wird oder beendet ist) würde ich in ein Skript mit einbauen. Wichtig wäre zunächst "nur", dass dieser EXEC Block funktioniertchargeMode gibt es von 0 bis 3. Ich brauche (immer nur) chargeMode:2 (es würden auch andere gehen, dann müsste ich aber beim Zurückwechseln noch mehr Werte ändern)
Das steht in der API
minimumStateOfCharge ist eine (Prozent) Zahl zwischen 0 und 100 -
@m-a-x
Ich habe zwar nicht wirklich Ahnung davon, aber versuche es mal mit request().on({id: '0_userdata.0.Tesla.Laden.voll'}, function() { // Taste "voll laden" request({ method: 'POST', url: 'http://192.168.9.105:7190/api/Config/UpdateCarConfiguration?carId=1', headers: {accept: '*/*', 'Content-Type': 'application/json'}, body: {chargeMode: 2, minimumSoC: 100} }, function(error, response, body) { if(error) log(error, 'warn'); else log(body); }); });
-
@paul53
Wie kann ich das Skript Triggern? ich habe "0_userdata.0.Tesla.Laden.voll" ersetzt durch "javascript.0.TeslaSetSOC".
Dieses Objekt habe ich als Logik Objekt angelegt und anschließend bei den Objekten auf "true" (bestätigt) gesetzt.
Dann stürzt aber der komplette Javaskriptadapter ab und restartet -
@m-a-x sagte: Dann stürzt aber der komplette Javaskriptadapter ab und restartet
Dann ist vermutlich etwas am request() gefährlich falsch. Vielleicht meldet sich noch jemand, der sich besser damit auskennt?
-
Nutze Node-Red - da hast Du alle Methoden out of the box.
-
@paul53
Danke schon mal für deine Hilfe. Ich habe auf jeden Fall etwas gelernt, auch wenn es nicht zum Erfolg geführt hat.@mickym
Hab NodeRed jetzt mal schnell gegoogelt und hört sich wie ein "potentes" Blockly an. Also Flussdiagramme erstellen ohne zu programmieren, etc. Aber die Adapterbeschreibung ist sehr kurz und ich werde mich heute Abend nicht mehr damit beschäftigen, ob ich nur den Adapter installieren muss, oder noch weitere Änderungen vornehmen muss.. Lieber wäre mir eine Lösung ohne zusätzlichen Adapter