Ich habe mittlerweile ein Problem innerhalb von FHEM ein http API zu verwenden.
Genau gesagt versuche ich den Mode meine Sonnenbatterie zu verändern.
Auf commandlinde geht dies ganz gut, aber auf FHEM heraus irgendwie nicht ohne Probleme.
Meine bisherige FHEM Anweisung :
# auf Manuellen Mode schalten
$content = `curl -X PUT -d EM_OperatingMode=1 --header 'Auth-Token: $Auth_Token' http://sb-56902:80/api/v2/configurations`;
if ( $content eq '{\"EM_OperatingMode\":\"1\"}' )
{
Log 1, " #### Set Batterie OperationsMode Manuell fehlgeschlagen";
return;
}
Im Logfile steht dann:
2023.02.27 12:01:26 1: ------------- Setze auf Mode 10
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 44 100 25 100 19 112 85 --:--:-- --:--:-- --:--:-- 119
Ich habe leider keine Ahnung wo der Text : % Total .... herkommt. Dies hat nichts mit meiner FHEM Programmierung zu tun.
Sowas kommt auch nicht, wenn ich curl in PUtty aufrufe -- tut alles wie es Soll - aber halt nicht in FHEM. $content müsste auch richtig zurück gekommen sein -- aber wo kommt der Rest her ?
Hi,
eine status Ausgabe von curl? Hast Du mal -s probiert? Also curl -sX ...
Gruß Otto
Warum eigentlich der Umweg mit curl und nicht mit den Bordmitteln, die FHEM in den HttpUtils zur Verfügung stellt?
Hatte dies bisher von jemand bekommen und früherer api Version ging dies problemlos.
Ich dachte auch eher an HTTPMOD aber war bisher erfolglos . Anderer Post von heute.
Ich werde weiter testen müssen um dies hoffentlich irgendwie fehlerfrei zu schaffen.
Solche Dinge sind dann halt extrem zeitraubend und ich denke es gibt sicher jemand der
So einen PUT mit. HTTPMOD mit null Aufwand machen kann.
Von HTTPMOD hat hier niemand gesprochen...
Der Hinweis von Otto mit "-sX" war goldrichtig - vielen Dank !!
Werde erst mal bei den curl Aufrufen aus PERL bleiben, zumal die ganze Geschicht mit HTTPMOD auch recht seltsam reagiert
Hauptsache, umständlich... Viel Spaß 8)
Zitat von: betateilchen am 28 Februar 2023, 16:06:21
Hauptsache, umständlich... Viel Spaß 8)
Ich denke nicht unbedingt umständlich - aber ich arbeite daran es sauberer zu machen, da es sonst
keiner versteht und pflegen kann.
Deshalb wollte ich eigentlich auch mit HTTPMOD define machen. Alles andere ist wieder zu tief PERL usw.
Ich halte auch meinen PERL code so einfach wie möglich, damit nicht jeder gleich tiefes Programmierwissen braucht.
Zitat von: roli am 28 Februar 2023, 16:21:48
Deshalb wollte ich eigentlich auch mit HTTPMOD define machen.
Eine URL aufzurufen, kann FHEM von Haus aus und sogar ganz ohne irgendein device definieren zu müssen. Da musst Du nicht aus FHEM heraus ein curl im Betriebssystem ausführen, um das Ergebnis danach wieder in FHEM auszuwerten.
https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_BlockingGet
Zitat von: betateilchen am 28 Februar 2023, 18:20:27
Eine URL aufzurufen, kann FHEM von Haus aus und sogar ganz ohne irgendein device definieren zu müssen. Da musst Du nicht aus FHEM heraus ein curl im Betriebssystem ausführen, um das Ergebnis danach wieder in FHEM auszuwerten.
https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_BlockingGet
Werde ich sicher mal ins Auge fassen und testen.
Und ja ich brauche für meine Lösung einen Blocking get. Dies ist auch das Problem mit Standard HTTPMOD . Ist nicht Blocking und deshalb habe ich ewig getestet um herauszufinden weshalb sich nach einem set nicht geändert hatten.
Viele der Docus sind nicht für simple Fälle mit 100 options und reger,.... Ist super flexibel
Aber leider dann nicht immer gleich intuitiv. Gut dass ich immer Phasen mit viel Zeit habe um dann mit viel try and error die Funktionalität herauszufinden.
Trotzdem finde ich FHEM genial