Neue Version von HTTPMOD mit neuen Features zum Testen

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

Vorheriges Thema - Nächstes Thema

MiK77

Bei mir geht nach dem fhem-Update nun auch kein Befehl mehr über HTTPMOD an meine ESP8266 raus.

Welche Version wird denn im Moment ausgeliefert? Wie komme ich schnell wieder zu einer funktionierenden Version?


amenomade

Zitat von: MiK77 am 26 September 2020, 00:50:29
Bei mir geht nach dem fhem-Update nun auch kein Befehl mehr über HTTPMOD an meine ESP8266 raus.

Welche Version wird denn im Moment ausgeliefert? Wie komme ich schnell wieder zu einer funktionierenden Version?
Mit einem update, da Stefan die alte Version wieder eingecheckt hat
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MiK77

Durch das Update gerade kamen ja gerade erst die Probleme. Durch einen Reboot haben sie sich aber gerade gelöst. Sorry für die voreilige Nachfrage!

StefanStrobel

#918
Hallo,

hier wieder eine neue Version zum Testen.
Das Problem lag in der Übergabe der Optionen an HttpUtils.

Bei der Gelegenheit habe ich den Übergabe-Hash für die HttpUtils vom HTTPMOD-Device-Hash entkoppelt.
Das war eigentlich eine Altlast und schon lange nötig. Ich hoffe, dass dadurch keine neuen Probleme entstehen, wenn jemand in Expressions o.ä. auf Keys von $hash zugreift.
Falls doch, kann man den Übergabe-Hash von den HttpUtils jetzt als $hash->{HttpUtils} erreichen. Der Rückgabewert 'addr' von HttpUtils, der bei HTTPMOD bisher z.B. als $hash->{addr} erreichbar war, wäre jetzt $hash->{HttpUtils}{addr}.
Ich vermute aber, dass das sowieso niemand gemacht hat.

Bei der Gelegenheit habe ich auch andere Keys von $hash entfernt / unsichtbar gemacht, die vermutlich völlig überflüssig gespeichert wurden.
Solche Dinge wie $hash->{JSONEnabled}, $hash->{TimeAlign} o.ä. sind jetzt umbenannt und beginnen mit einem ".", also z.B. $hash->{.TimeAlign}.
Falls die doch jemand benötigt, kann ich sie auch wieder reinnehmen.

Das HTTPMOD-Modul gehört ins Unterverzeichnis FHEM, das zugehörige Utils-Modul nach lib/FHEM/HTTPMOD/

Gruss
    Stefan

EDIT 12.10.39: Anhang entfernt, neuere Version kommt später

Hugo Becker

Hallo Stefan,

kurzes Feedback: bei mir tritt der Fehler mit der "neuen Version zum Testen" nicht mehr auf.

Gruß Hugo

StefanStrobel

Hallo Hugo,

vielen Dank für Dein Feedback.
Ich würde dann demnächst die neue Version wieder einchecken und hoffen, dass es nicht noch mehr Probleme / Bugs gibt.
Die Änderungen waren in Summe dann doch umfangreich.

@amenomade: mir wäre wohler dabei wenn Du auch nochmal Deine Devices mit der neuen Version testen könntest, bevor ich es mit dem Einchecken wieder versuche :-)

Gruss / Thanx
    Stefan

amenomade

#921
Hallo Stefan

Werde ich auch machen, aber ich werde diese Woche wenig Zeit dafür haben. Ich hoffe bis Samstag.

Gruß

EDIT:
Zitatdas zugehörige Utils-Modul nach lib/FHEM/HTTPMOD/
. Dieses ist nicht angehängt. Hat es sich nicht geändert?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Ich weiss nicht mit dem Util Modul (hab die svn Version), aber dieses HTTPMOD funktionniert mit der svn Version von 98_HTTPMOD und mit der neuen nicht mehr:
defmod BusfahrPlan_ZOB HTTPMOD https://webapi.vvo-online.de/dm?format=json&mot=CityBus&mot=IntercityBus&stopid=33003371&limit=32 0
attr BusfahrPlan_ZOB userattr reading01AlwaysNum reading01AutoNumLen reading01JSON reading01Name reading01OExpr
attr BusfahrPlan_ZOB reading01AlwaysNum 1
attr BusfahrPlan_ZOB reading01AutoNumLen 2
attr BusfahrPlan_ZOB reading01JSON Departures_.*_ScheduledTime
attr BusfahrPlan_ZOB reading01Name Zeit
attr BusfahrPlan_ZOB reading01OExpr strftime("%H:%M",localtime(substr($val,6,10)))
attr BusfahrPlan_ZOB room HTTPMOD Tests
attr BusfahrPlan_ZOB verbose 5


Log:
2020.09.30 01:13:28 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4590.
2020.09.30 01:13:28 1: stacktrace:
2020.09.30 01:13:28 1:     main::__ANON__                      called by fhem.pl (4590)
2020.09.30 01:13:28 1:     main::AttrVal                       called by ./FHEM/98_HTTPMOD.pm (2522)
2020.09.30 01:13:28 1:     HTTPMOD::ReadyForSending            called by ./FHEM/98_HTTPMOD.pm (2579)
2020.09.30 01:13:28 1:     HTTPMOD::HandleSendQueue            called by ./FHEM/98_HTTPMOD.pm (2640)
2020.09.30 01:13:28 1:     HTTPMOD::AddToSendQueue             called by ./FHEM/98_HTTPMOD.pm (1338)
2020.09.30 01:13:28 1:     HTTPMOD::GetUpdate                  called by ./FHEM/98_HTTPMOD.pm (1131)
2020.09.30 01:13:28 1:     HTTPMOD::ControlSet                 called by ./FHEM/98_HTTPMOD.pm (1179)
2020.09.30 01:13:28 1:     HTTPMOD::SetFn                      called by fhem.pl (3812)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (1923)
2020.09.30 01:13:28 1:     main::DoSet                         called by fhem.pl (1955)
2020.09.30 01:13:28 1:     main::CommandSet                    called by fhem.pl (1255)
2020.09.30 01:13:28 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2715)
2020.09.30 01:13:28 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (984)
2020.09.30 01:13:28 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (592)
2020.09.30 01:13:28 1:     main::FW_Read                       called by fhem.pl (3817)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (763)
2020.09.30 01:13:28 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4590.
2020.09.30 01:13:28 1: stacktrace:
2020.09.30 01:13:28 1:     main::__ANON__                      called by fhem.pl (4590)
2020.09.30 01:13:28 1:     main::AttrVal                       called by ./FHEM/98_HTTPMOD.pm (2541)
2020.09.30 01:13:28 1:     HTTPMOD::ReadyForSending            called by ./FHEM/98_HTTPMOD.pm (2579)
2020.09.30 01:13:28 1:     HTTPMOD::HandleSendQueue            called by ./FHEM/98_HTTPMOD.pm (2640)
2020.09.30 01:13:28 1:     HTTPMOD::AddToSendQueue             called by ./FHEM/98_HTTPMOD.pm (1338)
2020.09.30 01:13:28 1:     HTTPMOD::GetUpdate                  called by ./FHEM/98_HTTPMOD.pm (1131)
2020.09.30 01:13:28 1:     HTTPMOD::ControlSet                 called by ./FHEM/98_HTTPMOD.pm (1179)
2020.09.30 01:13:28 1:     HTTPMOD::SetFn                      called by fhem.pl (3812)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (1923)
2020.09.30 01:13:28 1:     main::DoSet                         called by fhem.pl (1955)
2020.09.30 01:13:28 1:     main::CommandSet                    called by fhem.pl (1255)
2020.09.30 01:13:28 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2715)
2020.09.30 01:13:28 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (984)
2020.09.30 01:13:28 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (592)
2020.09.30 01:13:28 1:     main::FW_Read                       called by fhem.pl (3817)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (763)
2020.09.30 01:13:28 3: BusfahrPlan_ZOB: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 225 (before "\x{fc}d","Platform":...") at lib/FHEM/HTTPMOD/Utils.pm line 508.


Ich mache weitere Tests in der Woche noch.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ch.eick

Moin, ich habe da mal eine Frage.

In der get URL sind in meinem Fall zwei Parameter, gibt es da eine Möglichkeit diese, wie z.B. mit set Hint einzulesen?
Beim Hint schaffe ich es auch nur immer nur einen Parameter auszuwählen, gehen da auch zwei?
Momentan setze ich als workaround je ein reading und ersetze dieses dann. Hierbei kann ich jedoch auch nicht, wie beim Dummy ein reading selektierbar machen.


get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%


Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

StefanStrobel

Hallo Christian,

wie meinst Du das mit set Hint?
möchtest Du die zu ersetzenden Werte mit einem set-Befehl festlegen?
Dann würde ich das über Readings und mit setreading machen. Irgendwo müssen die Werte ja gespeichert sein.
Aber was meinst Du mit selektierbarem Reading?
Ich stehe da gerade auf dem Schlauch ;-)

Gruss
   Stefan

StefanStrobel

#925
Hallo,

sorry - beim letzten Posten der neuen Version hätte ich die Utils ebenfalls posten sollen.
Hier wieder eine neue Version. Ich habe inzwischen auch noch weitere Grundfunktionen aus HTTPMOD in die Utils verschoben, da ich die auch im Modbus-Modul verwende.

Gruss
   Stefan

EDIT 12.10.39: Anhang entfernt, neuere Version kommt später

ch.eick

#926
Zitat von: StefanStrobel am 10 Oktober 2020, 16:38:29
wie meinst Du das mit set Hint?
möchtest Du die zu ersetzenden Werte mit einem set-Befehl festlegen?
Dann würde ich das über Readings und mit setreading machen. Irgendwo müssen die Werte ja gespeichert sein.
Aber was meinst Du mit selektierbarem Reading?
Ich stehe da gerade auf dem Schlauch ;-)

Mit

set48Hint slider,4,1,15

bekomme ich einen Slider beim set Kommando, ich habe jedoch mehrere Werte für eine URL zu setzen.

Beim Dummy gibt es diese Möglichkeit, die ich mir beim HTTPMOD auch wünschen würde :-)

attr Pool readingList Pool_Button PowerLevelMinTime PowerLimitOn PowerLimitOff RunTimeMin RunTimePerDay RunTimePerDaySummer RunTimePerDayWinter SetCmdOff SetCmdOn TimeStartSummer TimeStartWinter TimeEnd
attr Pool setList Pool_Button:uzsuToggle,on,off PowerLevelMinTime:slider,30,30,300 PowerLimitOn:slider,500,100,1500 PowerLimitOff:slider,0,100,1000 RunTimeMin:slider,300,300,7200 RunTimePerDay:slider,900,300,64800 RunTimePerDaySummer:slider,900,300,7200 RunTimePerDayWinter:slider,3600,900,64800 SetCmdOff SetCmdOn TimeStartSummer:time TimeStartWinter:time TimeEnd:time


Dann steht alles in den readings, die ich dann mit "replacementMode reading" in der URL verwenden könnte.

Vielen Dank für Dein Gehör
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

StefanStrobel

Hallo Christian,

auch bei dem Dummy musst Du aber mehrfach einzeln einen Wert auswählen und auf "set" drücken oder?

Gruss
    Stefan

amenomade

Er möchtet mehrere Readings zuerst setzen, und die dann gleichzeitig (im gleichen HTTPMOD set) mit replacementMode reading nutzen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ch.eick

Zitat von: StefanStrobel am 11 Oktober 2020, 16:44:27
auch bei dem Dummy musst Du aber mehrfach einzeln einen Wert auswählen und auf "set" drücken oder?
Ja, jedoch kann ich so mit klicky klicky die Auswahl vorbereiten und dann eine Aktion durchführen.
Mehrere Selektierbare Werte in einer Reihe beim set Befehl wären natürlich die Krönung :-)

Momentan get ja schon eine Auswahl und ich müsste Jahr, Monat,Tag und Offset setzen
Also z.B. so

set01Hint select,1,1,10; open,close; select,2020,1,2030; select,01,1,12
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick