michael99 Geschrieben March 16, 2022 at 13:46 Geschrieben March 16, 2022 at 13:46 Ich habe eine Wallbox 1 mit 1.9.91-622f4134. Der Befehl "Http://192.168.0.xx/evse/start_charging" bringt die Fehlermeldung "Request method for this URI is not handled by server" Was ist falsch? Michael Zitieren
rtrbt Geschrieben March 17, 2022 at 08:28 Geschrieben March 17, 2022 at 08:28 Ah, da ist die API-Dokumentation veraltet, das behebe ich gleich. Du musst in dem Fall (immer wenn du Daten zur Wallbox schickst und sei es nur null) HTTP PUT anstelle von POST o.Ä. als Method verwenden. Edit: gefixt: https://www.warp-charger.com/api_beta.html Support für POST und die anderen HTTP Methods kommt eventuell wieder, da wehrt sich leider die Webserver-Implementierung etwas: https://github.com/Tinkerforge/esp32-firmware/issues/39 Zitieren
michael99 Geschrieben March 29, 2022 at 13:50 Autor Geschrieben March 29, 2022 at 13:50 Hallo geht das auch verständlich für den Anwender? Bisher konnte ich im Browser das als http senden und auch kontrollieren. Mit http://192.168.0.140/evse/state | jq ".allowed_charging_current" kann mein Browser und ich nichts anfangen. Meldung "This URI does not exist" Zitieren
rtrbt Geschrieben April 4, 2022 at 07:33 Geschrieben April 4, 2022 at 07:33 Ah, ich ging davon aus, dass du versuchst die API mit einem eigenen Skript o.Ä. zu benutzen. Vergiss den Rest ;) On 3/29/2022 at 3:50 PM, michael99 said: Bisher konnte ich im Browser das als http senden und auch kontrollieren. Das verstehe ich nicht. Wenn du http://192.168.0.xx/evse/start_charging in die Addresszeile einfügst, sollte eigentlich nichts passieren, weil das eigentlich nicht dafür gedacht ist, "von Hand" benutzt zu werden. Mit welcher Firmware hat das denn funktioniert? Bzw. warum machst du das so und nicht per Web-Interface? Hast du das einfach als Abkürzung als Lesezeichen hinterlegt o.Ä.? Zitieren
michael99 Geschrieben May 4, 2022 at 14:56 Autor Geschrieben May 4, 2022 at 14:56 (bearbeitet) Hallo, eventuell mache ich auch etwas grundsätzlich falsch. Wie muss denn der Befehl bei Curl aussehen, damit es funktioniert. Auch über das Mqtt Protokoll wären ein paar Beispiele hilfreich um das ganze zu verstehen. Also eigentlich starten und anhalten des Ladens als HTTP oder MQTT. Mein Kopf ist schon älter und dageht das nicht mehr so schnell. bearbeitet May 4, 2022 at 15:12 von michael99 Zitieren
michael99 Geschrieben May 4, 2022 at 15:16 Autor Geschrieben May 4, 2022 at 15:16 Am 4.4.2022 um 09:33 schrieb rtrbt: Ah, ich ging davon aus, dass du versuchst die API mit einem eigenen Skript o.Ä. zu benutzen. Vergiss den Rest ;) Das verstehe ich nicht. Wenn du http://192.168.0.xx/evse/start_charging in die Addresszeile einfügst, sollte eigentlich nichts passieren, weil das eigentlich nicht dafür gedacht ist, "von Hand" benutzt zu werden. Mit welcher Firmware hat das denn funktioniert? Bzw. warum machst du das so und nicht per Web-Interface? Hast du das einfach als Abkürzung als Lesezeichen hinterlegt o.Ä.? Ja, ich schicke das über PHP zum Warp. <?php $d1 = $_GET["d1"]; $d2 = substr ($d1 , 0,3); echo $d2; $heute = date("M-d.h:i"); $filename = "warp/warp-".date("d").".csv"; $contents = file_get_contents('warp/warp.txt'); echo $contents; $contents = substr ($contents , 0,2); $pos = strpos($d2,$contents); echo $pos; if ($pos !== false){ echo "Zustand hat sich nicht geändert"; echo $pos; $filestatus = file_put_contents("warp/nicht_geaendert-".date("m-d").".jur",$heute."\r\n",FILE_APPEND); exit; } $uhrzeit = date("H:i"); $inhalt = $heute.";".$uhrzeit.";".$d1."\r\n"; $filestatus = file_put_contents($filename,$inhalt,FILE_APPEND); echo $inhalt; if ($d1 == 'ein'){ $url = "http://192.168.0.140/evse/start_charging"; $filestatus = file_put_contents('warp/warp.txt','ein'); senden($url); } if ($d1 == 'aus'){ $url = "http://192.168.0.140/evse/stop_charging"; $filestatus = file_put_contents('warp/warp.txt','aus'); senden($url); } function senden($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); curl_setopt($ch, CURLOPT_CAINFO, "/volume1/web/cacert.pem"); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_ENCODING, ""); curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd() . '/cookies.cookie'); curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd() . '/cookies.cookie'); curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18"); if (strtolower($type) == 'post') { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HEADER, true); } $content = curl_exec($ch); $ergebnis = curl_error ($ch ); echo $ergebnis."\r\n"; curl_close($ch); return $content; } ?> Zitieren
rtrbt Geschrieben May 5, 2022 at 08:57 Geschrieben May 5, 2022 at 08:57 Moin, Ich habe den Code etwas umgebaut, so funktioniert es bei mir: <?php $d1 = $_GET["d1"]; if ($d1 == 'ein'){ $url = "http://192.168.0.140/evse/start_charging"; senden($url, "null"); } if ($d1 == 'aus'){ $url = "http://192.168.0.140/evse/stop_charging"; senden($url, "null"); } if ($d1 == '6A'){ $url = "http://192.168.0.140/evse/global_current_update"; senden($url, '{"current": 6000}'); } if ($d1 == 'strom'){ $url = "http://192.168.0.140/evse/global_current"; echo senden($url, ''); } function senden($url, $payload) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_ENCODING, "utf-8"); if ($payload != "") { // Payload ist nicht leer, wir wollen Daten zur Wallbox schicken. Benutze PUT und setze payload curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($payload))); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); } else { // Payload ist leer, wir wollen Daten von der Wallbox empfangen. Benutze GET curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); } $content = curl_exec($ch); $ergebnis = curl_error ($ch ); echo $ergebnis."\r\n"; curl_close($ch); return $content; } ?> Ich habe den Code, der die Dateien liest und schreibt erstmal weggelassen, habe ja nicht die selben Dateien bei mir wie du. Die senden-Funktion bekommt die Daten, die sie schicken soll übergeben, wenn du da einen leeren String übergibst, kannst du stattdessen Daten von der Wallbox lesen. Zusätzlich zu ?d1=ein und ?d1=aus habe ich eingebaut, dass du das Script mit ?d1=6A, aufrufen kannst (als Beispiel für komplexere Daten), damit wird der Ladestrom auf 6 Ampere gesetzt. Außerdem kannst du auch ?d1=strom benutzen, als Beispiel, wie du Daten von der Wallbox lesen kannst. Damit wird der Strom wieder abgefragt. Das ist der selbe Ladestrom, den du auf dem Webinterface der Wallbox sehen kannst. 17 hours ago, michael99 said: Auch über das Mqtt Protokoll wären ein paar Beispiele hilfreich um das ganze zu verstehen. Für MQTT musst du erst einen Broker aufsetzen und die Verbindung auf der Wallbox konfigurieren. Prinzipiell funktioniert die Benutzung über MQTT dann aber fast genauso wie die über HTTP. Also wenn du z.B. über HTTP den Ladestrom auf 8 Ampere setzen willst, musst du {"current": 8000} an http://192.168.0.140/evse/global_current_update schicken. Über MQTT kannst du die selben Daten, also {"current": 8000} an warp/AbC/evse/global_current_update schicken. warp/AbC ist dabei der Präfix, den du auf der MQTT-Seite der Wallbox konfigurieren kannst. Zum Schicken per MQTT kannst du z.B. mosquitto_pub benutzen. Es gibt hier: https://www.warp-charger.com/api.html#mqtt_section noch ein paar Erklärungen zur Verwendung davon. Zitieren
michael99 Geschrieben August 1, 2022 at 11:51 Autor Geschrieben August 1, 2022 at 11:51 Hallo, hatte hier einige Baustellen und bin erst jetzt dazu gekommen Deine Änderungen zu übernehmen. Toll, es funktioniert nun und sicher werden nun auch andere den Syntax besser verstehen. Danke Zitieren
michael99 Geschrieben August 2, 2022 at 14:28 Autor Geschrieben August 2, 2022 at 14:28 Ok, jetzt lläuft es auch über MQTT. Was mich allerdings irritiert, ist die Verbrauchsanzeige. Der Configured charging current ist 16A, Power draw ist 3520W, doch Charge history liegt bei etwa 1800 Zitieren
rtrbt Geschrieben August 4, 2022 at 09:48 Geschrieben August 4, 2022 at 09:48 Jeder Punkt auf dem Graph ist ein Mittelwert über ~ 4 Minuten. Da der Ladevorgang da gerade gestartet ist, wäre es also möglich, dass das noch Datenpunkte sind, wo der "Vollausschlag" nicht erreicht war. Falls sich das nach ein paar Minuten aber nicht behoben hat, muss ich dem nochmal nachgehen. Bist du auf der aktuellen WARP1 Firmware 2.0.6? Nicht dass wir alte Bugs jagen. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.