HTTPMOD GET ok aber PUT Probleme?

Begonnen von roli, 27 Februar 2023, 13:59:04

Vorheriges Thema - Nächstes Thema

roli


Ich verwende monetan HTTPMOD um  ein entsprechenden GET Aufruf zu machen -- werde aus der Duku nicht ganz schlau, wenn es auch um ein PUT geht.

Folgendes möchte ich gerne mit HTTPMOD  umsetzten :


GET:     curl --header 'Auth-Token: xxxxxx'  http://../v2/configurations/EM_OperatingMode

PUT:     curl -X PUT --data 'EM_OperatingMode=1' --header 'xxxxx'   http://..../v2/configurations



Als  Ergebnis bekomme ich ein  {"EM_OperatingMode":"1"}


nun würde ich dies gerne mit einen  HTTP MOD machen:


define Eco8_Mode HTTPMOD none 0
  attr Eco8_Mode httpVersion 1.1
  attr Eco8_Mode enableControlSet 1
  attr Eco8_Mode extractAllJSON   1
  attr Eco8_Mode event-on-change-reading .* 
  attr Eco8_Mode get01Header01    Auth-Token: ..................
  attr Eco8_Mode get01Name         EM_OperatingMode
  attr Eco8_Mode getURL               http://sb-56902:80/api/v2/configurations/EM_OperatingMode
  attr Eco8_Mode requestHeader01  Auth-Token: 720036d7-eb9f-4aea-8913-ec281a6b99dd
  attr Eco8_Mode showBody  1
  attr Eco8_Mode showError 1
  attr Eco8_Mode timeout          15
  attr Eco8_Mode verbose          2


funktioniert wie erwartet  !!

Nun der PUT Teil :


define Eco8_ModeSet HTTPMOD none 0
  attr Eco8_ModeSet httpVersion 1.1
  attr Eco8_ModeSet enableControlSet 0
  attr Eco8_ModeSet extractAllJSON   1
  attr Eco8_ModeSet event-on-change-reading .*
  attr Eco8_ModeSet set01Method      PUT   
  attr Eco8_ModeSet set01Header01    Auth-Token: .................
  attr Eco8_ModeSet set01Name        EM_OperatingMode 
  attr Eco8_ModeSet set01Data        'EM_OperatingMode=$val'
  attr Eco8_ModeSet set01URL         http://......./api/v2/configurations
  attr Eco8_ModeSet showBody  1
  attr Eco8_ModeSet showError 1
  attr Eco8_ModeSet timeout          15
  attr Eco8_ModeSet verbose          5


wenn ich  nun dies Aufrude   mit   set Eco8_ModeSet EM_OperatingMode  2

so sehe ich im log folgendes :


2023.02.27 13:50:03 5: Eco8_ModeSet: set called with EM_OperatingMode 2
2023.02.27 13:50:03 5: Eco8_ModeSet: set found option EM_OperatingMode in attribute set01Name
2023.02.27 13:50:03 4: Eco8_ModeSet: set will now set EM_OperatingMode -> 2
2023.02.27 13:50:03 5: Eco8_ModeSet: AddToQueue adds type set01 to URL http://........./api/v2/configurations, data 'EM_OperatingMode=$val', header Auth-Token: .........., retry 0, initial queue len: 0
2023.02.27 13:50:03 5: Eco8_ModeSet: HandleSendQueue called from AddToSendQueue, qlen = 1
2023.02.27 13:50:03 5: Eco8_ModeSet: HandleSendQueue - call with HTTP METHOD: PUT
2023.02.27 13:50:03 4: Eco8_ModeSet: HandleSendQueue sends set01 with timeout 15 to http://.....api/v2/configurations,
data: 'EM_OperatingMode=2',
header: Auth-Token: ........
2023.02.27 13:50:03 5: Eco8_ModeSet: ReadCallback called from __ANON__
2023.02.27 13:50:03 4: Eco8_ModeSet: Read callback: request type was set01 retry 0,
header: HTTP/1.1 403 Forbidden
Date: Mon, 27 Feb 2023 12:50:03 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
Content-Encoding: gzip, body length 25
2023.02.27 13:50:03 5: Eco8_ModeSet: Read callback: body
{"error":"403 Forbidden"}
2023.02.27 13:50:03 4: Eco8_ModeSet: BodyDecode found no charset header (bodyDecode was set to auto)
2023.02.27 13:50:03 4: Eco8_ModeSet: extracted JSON values to internal
2023.02.27 13:50:03 5: Eco8_ModeSet: GetCookies is looking for Cookies
2023.02.27 13:50:03 5: Eco8_ModeSet: ExtractSid called, context set, num 01
2023.02.27 13:50:03 4: Eco8_ModeSet: checking for redirects, code=403, ignore=0
2023.02.27 13:50:03 4: Eco8_ModeSet: no redirects to handle
2023.02.27 13:50:03 5: Eco8_ModeSet: Read callback sets LAST_REQUEST to set01
2023.02.27 13:50:03 5: Eco8_ModeSet: CheckAuth decided no authentication required


geht nicht !!!   Keine Ahnung  ob dies  jetzt ein vergleichbarer Aufruf wie mein curl  war und wieso es nicht funktioniert ?






FHEM auf Debian (RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

Aurel_B

Puuuuh, ich sehe auf den ersten Blick nicht, was schief laufen könnte. Was für Headers sendet denn curl ("--verbose") mit? Hast du da mal geschaut, ob da eine etwas andere Anfrage rausgeht?

betateilchen

wie in einem anderen Thread zum gleichen Thema schon beschrieben: man könnte das Ganze auch einfach mit FHEM Bordmitteln aus den Httputils lösen, anstatt sich den Krampf mit HTTPMOD anzutun...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!