Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

amenomade

#900
Und wo sind die sidHeaders Attribute geblieben? Insb. sidHeader03, bei dem ich gesagt habe, es ist entscheidend?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

guhu

Danke, du hast Recht, die hatte ich nicht gesetzt!
Resultat: 2020.09.19 15:57:08.986 5: komoot: CheckAuth decided no authentication required
Das Login scheint zu funktionieren, vielen Dank! Das muss ich mir jetzt erstmal anschaune, warum das jetzt so funktioniert.
FHEM 5.9 auf Synology DS918+ (in Docker), HM-CFG-USB2 mit hmlan, HM-CC-RT-DN, HM-SEC-SC-2, nanoCUL,a-culfw,deCONZ,Brennenstuhl-Steckdosen,-FB
Module:ENIGMA2,SONOS,FRITZBOX,FB_CALLLIST,WDT_TIMER,VCONTROL300,WITHINGS

guhu

nochmals vielen Dank! Habe mittlerweile in komoot noch bessere Seiten gefunden, die die Daten sofort in JSON zurückliefern, damit funktioniert es auch!!  ;D
FHEM 5.9 auf Synology DS918+ (in Docker), HM-CFG-USB2 mit hmlan, HM-CC-RT-DN, HM-SEC-SC-2, nanoCUL,a-culfw,deCONZ,Brennenstuhl-Steckdosen,-FB
Module:ENIGMA2,SONOS,FRITZBOX,FB_CALLLIST,WDT_TIMER,VCONTROL300,WITHINGS

StefanStrobel

Hallo,

ich habe die neue Version von HTTPMOD wie angekündigt soeben eingecheckt.
Bitte meldet Euch falls sie doch Probleme macht.

Gruss
   Stefan

Mitch

Mein go-eCharger geht damit nicht mehr:

2020.09.23 17:14:37 4: go_eCharger: no header to look for redirects
2020.09.23 17:14:37 4: go_eCharger: Read found no charset header (bodyDecode was set to auto)
2020.09.23 17:14:37 4: go_eCharger: Read callback: request type was update retry 0, no headers, no body
2020.09.23 17:14:37 3: go_eCharger: Read callback: Error: http://192.168.0.81/status: empty answer received
2020.09.23 17:14:37 4: IP: 192.168.0.81 -> 192.168.0.81
2020.09.23 17:14:37 4: go_eCharger: HandleSendQueue sends update with timeout 2 to http://192.168.0.81/status, No Data, No Header
2020.09.23 17:14:37 4: go_eCharger: GetUpdate called (reread)


2020.09.23 17:16:42 4: go_eCharger: no header to look for redirects
2020.09.23 17:16:42 4: go_eCharger: Read found no charset header (bodyDecode was set to auto)
2020.09.23 17:16:42 4: go_eCharger: Read callback: request type was update retry 0, no headers, no body
2020.09.23 17:16:42 3: go_eCharger: Read callback: Error: http://192.168.0.81/status: empty answer received
2020.09.23 17:16:42 4: IP: 192.168.0.81 -> 192.168.0.81
2020.09.23 17:16:42 4: go_eCharger: HandleSendQueue sends update with timeout 2 to http://192.168.0.81/status, No Data, No Header
2020.09.23 17:16:42 4: go_eCharger: UpdateTimer called from HTTPMOD::GetUpdate with cmd next sets timer to call update function in 60.0 sec at 2020-09-23 17:17:42, interval 60
2020.09.23 17:16:42 4: go_eCharger: GetUpdate called (update)


Alte Version zurück gespielt, alles gut.
FHEM im Proxmox Container

Hugo Becker

Guten Abend,
auch bei mir funktioniert das Auslesen eines ESP8266 nicht mehr.

2020.09.23 17:39:43 5: espeasy_8: set called with reread
2020.09.23 17:39:43 4: espeasy_8: GetUpdate called (reread)
2020.09.23 17:39:43 5: espeasy_8: AddToQueue adds type update to URL http://192.168.100.71/json, no data, no headers, retry 0, initial queue len: 0
2020.09.23 17:39:43 5: espeasy_8: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.09.23 17:39:43 4: espeasy_8: HandleSendQueue sends update with timeout 2 to http://192.168.100.71/json, No Data, No Header
2020.09.23 17:39:43 5: HttpUtils url=http://192.168.100.71/json
2020.09.23 17:39:43 4: IP: 192.168.100.71 -> 192.168.100.71
2020.09.23 17:39:43 5: HttpUtils request header:
GET /json HTTP/1.0
Host: 192.168.100.71
User-Agent: fhem
Accept-Encoding: gzip,deflate

2020.09.23 17:39:43 3: espeasy_8: Read callback: Error: http://192.168.100.71/json: empty answer received
2020.09.23 17:39:43 4: espeasy_8: Read callback: request type was update retry 0, no headers, no body
2020.09.23 17:39:43 5: espeasy_8: Read callback: body empty
2020.09.23 17:39:43 4: espeasy_8: Read found no charset header (bodyDecode was set to auto)
2020.09.23 17:39:43 5: espeasy_8: GetCookies is looking for Cookies
2020.09.23 17:39:43 5: espeasy_8: ExtractSid called, context reading, num 0
2020.09.23 17:39:43 4: espeasy_8: no header to look for redirects
2020.09.23 17:39:43 5: espeasy_8: Read callback sets LAST_REQUEST to update
2020.09.23 17:39:43 5: espeasy_8: CheckAuth decided no authentication required


Mit der vorherigen Version (98_HTTPMOD.pm 21141 2020-02-07 19:36:06) klappt alles wunderbar.

guhu

.. mal eine Frage zu HTTPMOD, die ich durch Suche nicht beantworten konnte:
kann man die Elemente eine Arrays filtern anhand eines Wertes? Beispiel: aus folgendem Array nur diejenigen, die 29 Jahre sind:
[
  {
    "name": "Molecule Man",
    "age": 29,
    "secretIdentity": "Dan Jukes",
    "powers": [
      "Radiation resistance",
      "Turning tiny",
      "Radiation blast"
    ]
  },
  {
    "name": "Madame Uppercut",
    "age": 39,
    "secretIdentity": "Jane Wilson",
    "powers": [
      "Million tonne punch",
      "Damage resistance",
      "Superhuman reflexes"
    ]
  }
]
FHEM 5.9 auf Synology DS918+ (in Docker), HM-CFG-USB2 mit hmlan, HM-CC-RT-DN, HM-SEC-SC-2, nanoCUL,a-culfw,deCONZ,Brennenstuhl-Steckdosen,-FB
Module:ENIGMA2,SONOS,FRITZBOX,FB_CALLLIST,WDT_TIMER,VCONTROL300,WITHINGS

StefanStrobel

Hallo Mitch und Hugo,

könntet Ihr Eure Konfiguration für das HTTPMOD-Device posten?
Ich würde den Fehler gerne Fixen, allerdings vermute ich, dass es schon am Request liegt, der verschickt wird und da bräuchte ich mehr Informationen ...

Gruss / Thanx
    Stefan

StefanStrobel

Hallo Guhu,

so spontan fällt mir kein wirklich eleganter Weg ein, ein Array in HTTPMOD zu filtern.
Du könntest sicher mit einer etwas komplexeren Regex arbeiten, dann hast Du aber kein JSON-Parsing mehr.
Oder Du klinkst eine eigene Parse-Funktion in Perl ein.
Oder Du lässt HTTPMOD alles parsen und filterst die Readings später.

Gruss
   Stefan

amenomade

#909
Zitat von: guhu am 23 September 2020, 18:31:59
.. mal eine Frage zu HTTPMOD, die ich durch Suche nicht beantworten konnte:
kann man die Elemente eine Arrays filtern anhand eines Wertes? Beispiel: aus folgendem Array nur diejenigen, die 29 Jahre sind:
[
  {
    "name": "Molecule Man",
    "age": 29,
    "secretIdentity": "Dan Jukes",
    "powers": [
      "Radiation resistance",
      "Turning tiny",
      "Radiation blast"
    ]
  },
  {
    "name": "Madame Uppercut",
    "age": 39,
    "secretIdentity": "Jane Wilson",
    "powers": [
      "Million tonne punch",
      "Damage resistance",
      "Superhuman reflexes"
    ]
  }
]

Mit HTTPMOD muss man wahrscheinlich mit readingXXRegex arbeiten, aber das sollte mit JsonMod relativ einfach sein. Etwas wie
multi(jsonPath("\$[?(\@.age == 29)].name")
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Mitch

Zitat von: StefanStrobel am 23 September 2020, 18:42:11
Hallo Mitch und Hugo,

könntet Ihr Eure Konfiguration für das HTTPMOD-Device posten?
Ich würde den Fehler gerne Fixen, allerdings vermute ich, dass es schon am Request liegt, der verschickt wird und da bräuchte ich mehr Informationen ...

Gruss / Thanx
    Stefan

defmod go_eCharger HTTPMOD http://192.168.0.81/status 60
attr go_eCharger userattr device_timeout set01IMap set01Name set01URL set02IMap set02Name set02URL
attr go_eCharger DbLogInclude Charge_Netto,CostPerDay,CostTotal,Leistung_gesamt,nrg_0,Charge_Last,Charge_Cost,day,nrg_4,nrg_7,nrg_12
attr go_eCharger alias e-goCharger Mobil
attr go_eCharger comment CostPerDay, CostTotal {ReadingsVal($name,"eto","")* 0.0292}, Cost_ID1 {ReadingsVal($name,"eca","")* 0.0292}, Cost_ID2 {ReadingsVal($name,"ecr","")* 0.0292}, Leistung_gesamt {ReadingsNum("go_eCharger","nrg_11","")*10}, summe monotonic {ReadingsNum($name,"eto",0)/10}, Charge_Already {ReadingsNum($name,"eto",0) / 10 - ReadingsNum($name,"Charge_Start",0)}, Reichweite {ReadingsVal($name,"Charge_Already","")*5.56}
attr go_eCharger extractAllJSON 1
attr go_eCharger group Outlander
attr go_eCharger icon eco34
attr go_eCharger room Outlander
attr go_eCharger set01IMap 0:off, 1:on
attr go_eCharger set01Name Ladung
attr go_eCharger set01URL http://192.168.0.81:80/mqtt?payload=alw=$val
attr go_eCharger sortby 1
attr go_eCharger stateFormat {\
my $state = lc ReadingsVal($name, "car", "1");;\
my $devStateIcon = 'eco20.svg';;\
\
if ($state eq "2")\
{\
$devStateIcon = 'eco25.svg';;\
}\
\
if ($state eq "3")\
{\
$devStateIcon = 'eco26.svg';;\
}\
            \
if ($state eq "4")\
{\
$devStateIcon = 'eco24.svg';;\
}\
\
"<div><img width='32px' height='32px' src='/fhem/images/fhemSVG/" . $devStateIcon . "'>" . sprintf(\
        "&nbsp;;&nbsp;;%s - %s<br/>%s<br/>Strom: %d A - aktuell: %d A, %.1f kW<br/>Ladung Total: %.1f kWh/%.2f € - Ladung ID1: %.1f kWh/%.2f €, ID2: %.1f kWh/%.2f €<br/><br/>Bereits geladen: %.1f kWh entspricht ca. %s km<br/>Letzte Ladung: %.1f kWh/%.2f € - Netto: %.1f kWh<br/><br/>Temperatur: %d °C<br>Firmwareversion: %s %s",\
ReadingsVal($name,"car",0)==1?"Ladestation bereit, kein Fahrzeug":\
ReadingsVal($name,"car",0)==2?"Fahrzeug lädt":\
ReadingsVal($name,"car",0)==3?"Warte auf Fahrzeug":\
ReadingsVal($name,"car",0)==4?"Ladung beendet, Fahrzeug noch verbunden":"unknown",\
ReadingsVal($name,"alw",0)==1?"Ladung freigegeben":\
ReadingsVal($name,"alw",0)==0?"Ladung nicht freigegeben":"",\
ReadingsVal($name,"err",0)==1?"Fehler RCCB (Fehlerstromschutzschalter)":\
ReadingsVal($name,"err",0)==3?"Fehler PHASE (Phasenstörung)":\
ReadingsVal($name,"err",0)==8?"Fehler NO_GROUND (Erdungserkennung)":\
ReadingsVal($name,"err",0)==10?"Fehler INTERNAL (sonstiges)":"",\
ReadingsVal($name,"amp",0),\
ReadingsVal($name,"nrg_4",0)/10,\
ReadingsVal($name,"nrg_7",0)/10,\
ReadingsVal($name,"eto",0)/10,\
ReadingsVal($name,"CostTotal",0),\
ReadingsVal($name,"eca",0)/10,\
ReadingsVal($name,"Cost_ID1",0),\
ReadingsVal($name,"ecr",0)/10,\
ReadingsVal($name,"Cost_ID2",0),\
ReadingsVal($name,"Charge_Already",0),\
ReadingsVal($name,"Reichweite",0),\
ReadingsVal($name,"Charge_Last",0),\
ReadingsVal($name,"Charge_Cost",0),\
ReadingsVal($name,"Charge_Netto",0),\
ReadingsVal($name,"tmp",0),\
ReadingsVal($name,"fwv",0),\
ReadingsVal($name,"upd",0)==1?" - Update verfügbar!":"",\
)}
attr go_eCharger userReadings Leistung_gesamt {ReadingsNum("go_eCharger","nrg_11","-1")*10}, CostTotal {ReadingsNum("go_eCharger","eto","")* 0.0292}, Cost_ID1 {ReadingsNum("go_eCharger","eca","")* 0.0292}, Cost_ID2 {ReadingsNum("go_eCharger","ecr","")* 0.0292}, summe monotonic {ReadingsNum("go_eCharger","eto",0)/10}, Charge_Already {ReadingsNum("go_eCharger","eto",0) / 10 - ReadingsNum("go_eCharger","Charge_Start",0)}, Reichweite {ReadingsNum("go_eCharger","Charge_Already","")*5.56}
attr go_eCharger verbose 0
attr go_eCharger webCmd Ladung
FHEM im Proxmox Container

Hugo Becker

...und hier meine Konfig:

defmod espeasy_8 HTTPMOD http://192.168.100.71/json 300
attr espeasy_8 userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex
attr espeasy_8 cmdIcon reread:icoUpdate
attr espeasy_8 devStateStyle style=font-weight:bold;;;;font-size:16px;;;;color:yellow
attr espeasy_8 enableControlSet 1
attr espeasy_8 enableCookies 1
attr espeasy_8 icon espeasy
attr espeasy_8 reading01Name hostname
attr espeasy_8 reading01Regex "Hostname":"([0-9\-]+)
attr espeasy_8 reading02Name ip_config
attr espeasy_8 reading02Regex "IP Config":"([a-zA-Z]+)
attr espeasy_8 reading03Name ip_address
attr espeasy_8 reading03Regex "IP Address":"([0-9\.]+)
attr espeasy_8 reading04Name ip_subnet
attr espeasy_8 reading04Regex "IP Subnet":"([0-9\.]+)
attr espeasy_8 reading05Name gateway
attr espeasy_8 reading05Regex "Gateway":"([0-9\.]+)
attr espeasy_8 reading06Name ssid
attr espeasy_8 reading06Regex "SSID":"([a-zA-Z0-9\_\-\.]+)
attr espeasy_8 reading07Name rssi
attr espeasy_8 reading07Regex "RSSI":([0-9\-\+\.]+)
attr espeasy_8 reading08Name mac_address
attr espeasy_8 reading08Regex "STA MAC":"([a-zA-Z0-9\:]+)
attr espeasy_8 showBody 1
attr espeasy_8 stateFormat Hostname: &nbsp;; &nbsp;; &nbsp;; &nbsp;; &nbsp;; &nbsp;; &nbsp;; <font size='2' color='orange'>hostname<br>\
<font size='3' color='yellow'>IP:&nbsp;; <font size='2' color='orange'>ip_address (ip_config)<br>\
<font size='3' color='yellow'>Subnet:&nbsp;; &nbsp;; &nbsp;; <font size='2' color='orange'>ip_subnet<br>\
<font size='3' color='yellow'>Gateway: <font size='2' color='orange'>gateway<br>\
<font size='3' color='yellow'>MAC: &nbsp;; <font size='2' color='orange'>mac_address<br>\
<font size='3' color='yellow'>WLAN:&nbsp;; <font size='2' color='orange'>ssid (rssi dB)<br>\
<br>\
<font size='2' color='lightgrey'> lastAkt
attr espeasy_8 timeout 15
attr espeasy_8 userReadings lastAkt { ReadingsTimestamp("espeasy_8","hostname",0) }
attr espeasy_8 webCmd reread

rx

Ich habe einen ähnlichen Fehler, Aufruf mit Curl oder via netcat funktioniert. Der Aufruf via HTTPMOD gibt einen NGINX-Returncode 499 zurück. Aus dem Logfile:


2020.09.24 00:15:00.060 4: foo2: GetUpdate called (update)
2020.09.24 00:15:00.060 4: foo2: UpdateTimer called from HTTPMOD::GetUpdate with cmd next sets timer to call update function in 6.0 sec at 2020-09-24 00:15:06, interval 6
2020.09.24 00:15:00.061 5: foo2: AddToQueue adds type update to URL http://192.168.179.222/fhem/test.php, no data, no headers, retry 0, initial queue len: 0
2020.09.24 00:15:00.061 5: foo2: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.09.24 00:15:00.062 4: foo2: HandleSendQueue sends update with timeout 2 to http://192.168.179.222/fhem/test.php, No Data, No Header
2020.09.24 00:15:00.062 5: HttpUtils url=http://192.168.179.222/fhem/test.php
2020.09.24 00:15:00.062 4: IP: 192.168.179.222 -> 192.168.179.222
2020.09.24 00:15:00.064 5: HttpUtils request header:
GET /fhem/test.php HTTP/1.0
Host: 192.168.179.222
User-Agent: fhem
Accept-Encoding: gzip,deflate

2020.09.24 00:15:00.068 3: foo2: Read callback: Error: http://192.168.179.222/fhem/test.php: empty answer received
2020.09.24 00:15:00.068 4: foo2: Read callback: request type was update retry 0, no headers, no body
2020.09.24 00:15:00.068 5: foo2: Read callback: body empty
2020.09.24 00:15:00.069 5: foo2: ExtractSid called, context reading, num 0
2020.09.24 00:15:00.069 5: foo2: Read callback sets LAST_REQUEST to update
2020.09.24 00:15:00.069 5: foo2: CheckAuth decided no authentication required
Server started with 1333 defined entities (fhem.pl:27302/2023-03-05 perl:5.028001 os:linux user:root pid:29591)

StefanStrobel

Ich habe vorerst die alte Version wieder eingecheckt bis ich das Problem gefunden habe.

Gruss
   Stefan

amenomade

Mit der (ex-)neuen Version scheint auch "sid01IgnoreRedirects 1" ignoriert zu werden.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus