FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: roli am 27 Februar 2023, 12:22:42

Titel: curl Aufruf
Beitrag von: roli am 27 Februar 2023, 12:22:42
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 ?

Titel: Antw:curl Aufruf
Beitrag von: Otto123 am 27 Februar 2023, 18:20:40
Hi,

eine status Ausgabe von curl? Hast Du mal -s probiert? Also curl -sX ...

Gruß Otto
Titel: Antw:curl Aufruf
Beitrag von: betateilchen am 27 Februar 2023, 21:45:51
Warum eigentlich der Umweg mit curl und nicht mit den Bordmitteln, die FHEM in den HttpUtils zur Verfügung stellt?
Titel: Antw:curl Aufruf
Beitrag von: roli am 27 Februar 2023, 22:22:53
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.



Titel: Antw:curl Aufruf
Beitrag von: betateilchen am 27 Februar 2023, 23:44:45
Von HTTPMOD hat hier niemand gesprochen...
Titel: Gelöst :curl Aufruf
Beitrag von: roli am 28 Februar 2023, 15:41:06
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 
Titel: Antw:curl Aufruf
Beitrag von: betateilchen am 28 Februar 2023, 16:06:21
Hauptsache, umständlich... Viel Spaß  8)
Titel: Antw:curl Aufruf
Beitrag von: roli am 28 Februar 2023, 16:21:48
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. 
Titel: Antw:curl Aufruf
Beitrag von: betateilchen am 28 Februar 2023, 18:20:27
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
Titel: Antw:curl Aufruf
Beitrag von: roli am 28 Februar 2023, 23:03:46
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