Neue Version von HTTPMOD mit neuen Features zum Testen

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

Vorheriges Thema - Nächstes Thema

StefanStrobel

#75
Hallo Frank,

ich habe das mit der Regex-Option /g mal ausprobiert.
Anbei ein Zwischenstand, in dem es ein noch undokumentiertes Attribut (reading|get|set)[0-9]+RegOpt gibt.
Wenn Du das auf g setzt, dann erzeugt HTTPMOD für jeden Match ein eigenes Reading wobei der Name wie bei mehreren capture groups mit -Zahl ergänzt wird.

Schau doch mal ob das so für Dich funktionieren würde.

Gruss
   Stefan

EDIT 23.1.16: Die aktuellste Version ist wieder am ersten Post dieses Threads angehängt.

frank

#76
hallo stefan,

ZitatSchau doch mal ob das so für Dich funktionieren würde.
mit dem beispiel aus meinem post wurden alle erwarteten readings erzeugt. supi, danke.

kleiner schönheitsfehler:
im reading MATCHED_READINGS wird nur ein reading angezeigt. nämlich der teil des namens, der bei allen readings gemeinsam ist, also ohne zahl.

edit:
ausserdem wäre es schön, wenn die automatischen zahlen im readingnamen eine null vorangestellt hätten (oder auch mehrere), um eine bessere sortierung der readings zu bekommen.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

grooves

Zitat von: StefanStrobel am 19 Januar 2016, 23:40:12
Hallo Grooves,

Ich vermute das Problem liegt daran, dass Du noch die alte Syntax der Reading-Attribute verwendest.
(readingsNameXY statt reading01Name etc wie in der Doku und im Wiki beschrieben)
Poste doch mal einen Auszug aus dem Log mit Verbose 5.
Da sollte man sehen, was die MaxAge Funkktion macht.

Gruß
    Stefan

Hallo Stefan,

genau daran hat es gelegen, habe jetzt auf neues Format umgestellt
und es wird Replaced,

Besten Dank,
Micha

Bootscreen

#78
Zitat von: StefanStrobel am 21 Januar 2016, 17:19:37
Hallo Oliver,

hast Du schon von get... auf reading... umgestellt?
Die Meldung, die Dich stört, kommt dann wenn die Antwort auf einen Request nicht geparsed werden konnte bzw. keine Readings belegt werden konnten. Probiers doch mal ungefähr so:

Gruss
    Stefan

Habs umgestellt, dank dir =)

Nun hab ich seid gestern aber das Problem das ich mir das LogFile nicht mehr anschauen kann, ich hba nichts geändert aber jedesmal wenn ich versuche es aufzurufen bekomm ich den fehler Zeitüberschreitung.

Nachtrag:
Da es mich grad extrem gestört hat das ich nur einen Alias pro Device einrichten kann (Thermostatete beispielsweise sollen bei mir je anch Raum anders heißen, im Raum Wohnzimmer reicht es Thermostat, im Raum Heizung wo alle Thermostate liegen reicht das aber nicht, da soll es Wohnzimmer heißen), hab ich mich ein wenig umgeschaut und hab es für mich angepasst. Vllt willst du es, Stefan, ja offiziell übernehmen?
Änderungen:
Zeile 1516:
Alt: my $devName = AttrVal($d, "alias", $d);
Neu: my $devName = AttrVal($d, "alias_" . $FW_room, AttrVal($d, "alias", $d));

Damit kann man mit dem Attribut alias_<raumname> einen Alias pro Raum erstellen. Sollte dieser nicht gefunden werden, nimmt er den normalen Alias bzw. den Gerätenamen.

Bisher habe ich keine Fehler oder Nachteile durch die Änderungen gefunden, da ich aber kein "Profi" bin gebe ich kein Gewehr.

Vielleicht hilft es ja auch dem ein anderem
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

StefanStrobel

Hallo,

@Frank: ich habe in der neuen Version ein Attribut (reading|get|set)[0-9]*AutoNumLen zur Darstellung der Zahlen nach dem ReadingNamen mit führenden Nullen eingebaut. MATCHED_READINGS sollte jetzt auch die automatisch erzeugen Reading-Namen mit Zahlen enthalten und (reading|get|set)[0-9]+RegOpt erlaubt die Regex Option g um eine Regex mehrfach anzuwenden.

@Botscreen: Deine Änderung ist ausserhalb von HTTPMOD oder? da bin ich nicht zuständig ;-)

Hat eigentlich schon jemand enableCookies testen können? funktioniert das bei Euch?

Gruss
    Stefan

frank

Zitat@Frank: ich habe in der neuen Version ein Attribut (reading|get|set)[0-9]*AutoNumLen zur Darstellung der Zahlen nach dem ReadingNamen mit führenden Nullen eingebaut. MATCHED_READINGS sollte jetzt auch die automatisch erzeugen Reading-Namen mit Zahlen enthalten und (reading|get|set)[0-9]+RegOpt erlaubt die Regex Option g um eine Regex mehrfach anzuwenden.

perfekt, merci.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

hallo stefan,
es gibt doch noch eine kleinigkeit:

2016.01.23 14:12:48.462 1: PERL WARNING: Use of uninitialized value $error in string eq at ./FHEM/98_HTTPMOD.pm line 794.

mit den ersten versionen aus diesem thread gab es diesen fehler noch nicht. bei mir erst seit 2 tagen mit einführung der /g-option. ich habe aber auch nicht alle versionen probiert.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

StefanStrobel

Hallo Frank,

sollte jetzt behoben sein.
Ich habe auch noch eine neue Funktion eingebaut, die alte IDRegex Attribute in IdRegex umbenennt. Bei IdXPath und IDJSON ist das d auch klein ...

So langsam sollte ich wohl die neue Version auch mal einchecken.

Gruss
    Stefan

frank

#83
hallo stefan,

ZitatSo langsam sollte ich wohl die neue Version auch mal einchecken.
von mir aus sehr gerne.
die warnung ist auch weg.

edit:
vielleicht vor dem einchecken noch dieses problem beheben:
ab dem 4. reading kann ich das attr readingXXRegOpt=g nicht mehr setzen. es gibt die fehlermeldung:

eq3: unknown attribute reading04RegOpt. Type 'attr eq3 ?' for a detailed list.

Internals:
   .getList
   .setList
   .updateHintList 0
   BUSY       0
   DEF        http://www.eq-3.de/db_action/download_suche.php 86400
   Interval   86400
   LASTSEND   1453594502.80129
   MainURL    http://www.eq-3.de/db_action/download_suche.php
   NAME       eq3
   NR         558
   STATE      ???
   TRIGGERTIME 1453675899.45815
   TRIGGERTIME_FMT 2016-01-24 23:51:39
   TYPE       HTTPMOD
   addr       http://www.eq-3.de:80
   buf        HTTP/1.1 200 OK ....#gekürzt
   code       200
   conn
   data       suche_in=62&suchtext=&themenbereich_1=99
   displayurl http://www.eq-3.de/db_action/download_suche.php
   header
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK

Date: Sun, 24 Jan 2016 00:15:02 GMT

Content-Type: text/html

Connection: close

Server: Apache

Cache-Control: max-age=86400

Expires: Mon, 25 Jan 2016 00:15:02 GMT
   hu_blocking 0
   hu_filecount 5
   ignoreredirects 0
   loglevel   4
   path       /db_action/download_suche.php
   protocol   http
   redirects  0
   timeout    2
   url        http://www.eq-3.de/db_action/download_suche.php
   value      0
   QUEUE:
   Readings:
     2016-01-24 01:15:03   MATCHED_READINGS model-01 model-02 model-03 model-04 model-05 model-06 model-07 model-08 model-09 model-10 model-11 model-12 model-13 model-14 release-01 release-02 release-03 release-04 release-05 release-06 release-07 release-08 release-09 release-10 release-11 release-12 release-13 release-14 link-01 link-02 link-03 link-04 link-05 link-06 link-07 link-08 link-09 link-10 link-11 link-12 link-13 link-14 version
     2016-01-24 01:15:03   link-01         /Downloads/Software/Firmware/HM-LC-Dim1T-Pl-3_update_V2_9_0005_160113.tgz
     2016-01-24 01:15:03   link-02         /Downloads/Software/Firmware/HM-LC-Dim1L-Pl-3_update_V2_9_0007_160113.tgz
     2016-01-24 01:15:03   link-03         /Downloads/Software/Firmware/HM-LC-Dim1PWM-CV_update_V2_9_0005_160113.tgz
     2016-01-24 01:15:03   link-04         /Downloads/Software/Firmware/HM-LC-Dim1TPBU-FM_update_V2_9_0005_160113.tgz
     2016-01-24 01:15:03   link-05         /Downloads/Software/Firmware/hm-mod-re-8_update_V1_2_150911.tgz
     2016-01-24 01:15:03   link-06         /Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_3_002_150827.tgz
     2016-01-24 01:15:03   link-07         /Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_8_2_150713.tgz
     2016-01-24 01:15:03   link-08         /Downloads/Software/Firmware/HM-LC-Sw1PBU-FM_update_V2_8_2_150713.tgz
     2016-01-24 01:15:03   link-09         /Downloads/Software/Firmware/HM-Sen-MDIR-WM55_update_V1_1_2_150413.tgz
     2016-01-24 01:15:03   link-10         /Downloads/Software/Firmware/HM-ES-PMSw1-Pl_update_V2_5_0009_150217.tgz
     2016-01-24 01:15:03   link-11         /Downloads/Software/Firmware/hm_cc_rt_dn_update_V1_4_001_141020.tgz
     2016-01-24 01:15:03   link-12         /Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_2_001_141020.tgz
     2016-01-24 01:15:03   link-13         /Downloads/Software/Firmware/hm-sen-rd-o_update_V1_4_003_130930.tgz
     2016-01-24 01:15:03   link-14         /Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_3_0002_131204.tgz
     2016-01-24 01:15:03   model-01        HM-LC-Dim1T-Pl-3
     2016-01-24 01:15:03   model-02        HM-LC-Dim1L-Pl-3
     2016-01-24 01:15:03   model-03        HM-LC-Dim1PWM-CV
     2016-01-24 01:15:03   model-04        HM-LC-Dim1TPBU-FM
     2016-01-24 01:15:03   model-05        HM-MOD-Re-8
     2016-01-24 01:15:03   model-06        HM-TC-IT-WM-W-EU
     2016-01-24 01:15:03   model-07        HM-LC-Bl1PBU-FM
     2016-01-24 01:15:03   model-08        HM-LC-Sw1PBU-FM
     2016-01-24 01:15:03   model-09        HM-Sen-MDIR-WM-55
     2016-01-24 01:15:03   model-10        HM-ES-PMSw1-Pl
     2016-01-24 01:15:03   model-11        HM-CC-RT-DN
     2016-01-24 01:15:03   model-12        HM-TC-IT-WM-W-EU
     2016-01-24 01:15:03   model-13        HM-Sen-RD-O
     2016-01-24 01:15:03   model-14        HM-LC-BI1PBU-FM
     2016-01-24 01:15:03   release-01      13.01.2016
     2016-01-24 01:15:03   release-02      13.01.2016
     2016-01-24 01:15:03   release-03      13.01.2016
     2016-01-24 01:15:03   release-04      13.01.2016
     2016-01-24 01:15:03   release-05      11.09.2015
     2016-01-24 01:15:03   release-06      27.08.2015
     2016-01-24 01:15:03   release-07      12.08.2015
     2016-01-24 01:15:03   release-08      12.08.2015
     2016-01-24 01:15:03   release-09      14.04.2015
     2016-01-24 01:15:03   release-10      16.03.2015
     2016-01-24 01:15:03   release-11      20.10.2014
     2016-01-24 01:15:03   release-12      20.10.2014
     2016-01-24 01:15:03   release-13      18.09.2014
     2016-01-24 01:15:03   release-14      15.07.2014
     2016-01-24 01:15:03   version         2.9.5
   Request:
     data       suche_in=62&suchtext=&themenbereich_1=99
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.eq-3.de/db_action/download_suche.php
     value      0
   Defptr:
     Readingbase:
       link       reading
       link-01    reading
       link-02    reading
       link-03    reading
       link-04    reading
       link-05    reading
       link-06    reading
       link-07    reading
       link-08    reading
       link-09    reading
       link-10    reading
       link-11    reading
       link-12    reading
       link-13    reading
       link-14    reading
       model      reading
       model-01   reading
       model-02   reading
       model-03   reading
       model-04   reading
       model-05   reading
       model-06   reading
       model-07   reading
       model-08   reading
       model-09   reading
       model-10   reading
       model-11   reading
       model-12   reading
       model-13   reading
       model-14   reading
       model-15   reading
       model-16   reading
       release    reading
       release-01 reading
       release-02 reading
       release-03 reading
       release-04 reading
       release-05 reading
       release-06 reading
       release-07 reading
       release-08 reading
       release-09 reading
       release-10 reading
       release-11 reading
       release-12 reading
       release-13 reading
       release-14 reading
       release-15 reading
       release-16 reading
       version    reading
     Readingnum:
       link       03
       link-01    03
       link-02    03
       link-03    03
       link-04    03
       link-05    03
       link-06    03
       link-07    03
       link-08    03
       link-09    03
       link-10    03
       link-11    03
       link-12    03
       link-13    03
       link-14    03
       model      01
       model-01   01
       model-02   01
       model-03   01
       model-04   01
       model-05   01
       model-06   01
       model-07   01
       model-08   01
       model-09   01
       model-10   01
       model-11   01
       model-12   01
       model-13   01
       model-14   01
       model-15   01
       model-16   01
       release    02
       release-01 02
       release-02 02
       release-03 02
       release-04 02
       release-05 02
       release-06 02
       release-07 02
       release-08 02
       release-09 02
       release-10 02
       release-11 02
       release-12 02
       release-13 02
       release-14 02
       release-15 02
       release-16 02
       version    04
     Readingoutdated:
     Readingsubnum:
       link-01    -1
       link-02    -2
       link-03    -3
       link-04    -4
       link-05    -5
       link-06    -6
       link-07    -7
       link-08    -8
       link-09    -9
       link-10    -10
       link-11    -11
       link-12    -12
       link-13    -13
       link-14    -14
       model-01   -1
       model-02   -2
       model-03   -3
       model-04   -4
       model-05   -5
       model-06   -6
       model-07   -7
       model-08   -8
       model-09   -9
       model-10   -10
       model-11   -11
       model-12   -12
       model-13   -13
       model-14   -14
       model-15   -15
       model-16   -16
       release-01 -1
       release-02 -2
       release-03 -3
       release-04 -4
       release-05 -5
       release-06 -6
       release-07 -7
       release-08 -8
       release-09 -9
       release-10 -10
       release-11 -11
       release-12 -12
       release-13 -13
       release-14 -14
       release-15 -15
       release-16 -16
       version
   Sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   reading01AutoNumLen 2
   reading01Name model
   reading01RegOpt g
   reading01Regex (?s)<p.class=\"name\">(?=.*?datum.*?href=\"[^\.]+\.(?:tgz|(*SKIP)(*FAIL))\").*?Kurz.Bez.:.([a-zA-Z0-9\-]+)
   reading02AutoNumLen 2
   reading02Name release
   reading02RegOpt g
   reading02Regex (?s)<p.class=\"name\">(?=.*?datum.*?href=\"[^\.]+\.(?:tgz|(*SKIP)(*FAIL))\").*?datum..(\d\d\.\d\d\.\d\d\d\d)
   reading03AutoNumLen 2
   reading03Name link
   reading03RegOpt g
   reading03Regex href=\"(.*?\.tgz)
   reading04AutoNumLen 2
   reading04Name version
   reading04Regex (?s)<p.class=\"name\">(?=.*?datum.*?href=\"[^\.]+\.(?:tgz|(*SKIP)(*FAIL))\").*?Firmware.V([\d\.]+)
   requestData.* suche_in=62&suchtext=&themenbereich_1=99
   room       eq3
   showError  1
   showMatched 1
   userattr   enableControlSet event-on-change-reading reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex reading03AutoNumLen reading03Name reading03RegOpt reading03Regex reading04AutoNumLen reading04Name reading04Regex requestData.* showError showMatched


edit2: nach
1. fhem update => keine änderung,
2. device gelöscht, neu angelegt => verschlechterung, gar keine RegOpt mehr möglich
3. zeile 145 geändert => alle funktioniert bestens.

      "(reading|get|set)[0-9]+RegOpt " .

mein fhem/perl v5.12.2 mag wohl den zusatz ":g,s" nicht, warum auch immer.  :)


gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Bootscreen

Args, sorry Stefan. Vergiss was ich geschrieben hab. Hatte das mit FHEMWEB durcheinander gebracht ^^
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

StefanStrobel

Hallo Frank,

danke für den Hinweis. fhem.pl hat da ein Problem wenn man bei Regex-Attributen auch noch Infos für Fhemweb mit : anfügt.
Ich habe eine entsprechende Änderung vorgeschlagen.
Bei der Gelegenheit habe ich noch ein paar Kleinigkeiten an HTTPMOD optimiert. Das Anfügen der Attribute an userattr sollte jetzt etwas sinnvoller funktionieren.

Gruss
    Stefan

frank

Zitat von: StefanStrobel am 25 Januar 2016, 20:39:21
Hallo Frank,

danke für den Hinweis. fhem.pl hat da ein Problem wenn man bei Regex-Attributen auch noch Infos für Fhemweb mit : anfügt.
Ich habe eine entsprechende Änderung vorgeschlagen.

die eingecheckte änderung scheint zu funktionieren, denn das attr MaxAgeReplacementMode hatte die selben probleme, wie attr RegOpt. nun funktioniert es.

http://forum.fhem.de/index.php/topic,48150.msg398414.html#msg398414
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

SirUli

Hi Stefan,

habe mal wieder ein bisschen rumgespielt:
1. MaxAgeReplacementMode: Wäre super wenn man dort auch "reading" nehmen könnte, sodass ich den Wert auf ein anderes Reading setzen könnte. Anwendungsfall wäre die Anzeige von Straßenbahn-Abfahrtszeiten. Meist wird die "Live-Anzeige" mitgeliefert, jedoch ab und an eben nicht. Dann wäre es super, wenn ich das Reading auf die "Fahrplan-Zeit" setzen könnte
2. Bei reading[0-9]Map habe ich mit leerzeichen kein Glück - gibt es da einen Trick? Habe nun doppelte und einfache Anführungszeichen sowie ohne Anführungszeichen probiert - irgendwie mag es nicht ;) Vielleicht liegts auch an dem Komma. Ich habe solche Readings, die ich durch die zahlen 1,2,3 ersetzen möchte:
'AAA, BBB':1,'CCC, DDD':2,'EEE, FFF':3

Ansonsten bin ich sehr glücklich mit der neuen Version - echt super!

reibuehl

Ich versuche gerade per POST Daten eines Web-Services auszulesen. Allerdings scheine ich das Format des requestData Attributes nicht richtig hin zu bekommen. Ich möchte per POST den Parameter "guid" mit dem Wert "750d018a-e091-49ff-a860-5c1ef1e523e8" übergeben. Bisher habe ich

attr httpmodReq1 requestData {"guid" :"750d018a-e091-49ff-a860-5c1ef1e523e8"}

Das scheint aber nicht das richtige Format zu sein. Wie müsste ich so ein einfaches Key-Value Paar den angeben?

Gruß,
Reiner
Reiner.

StefanStrobel

Hallo,

@Uli:
die Kommas sind das Problem.
Ich schau mal ob ich das Parsen der Map-Attribute noch etwas verbessern kann.

@Reiner:
Das Format gibt Dein Server vor. Wie sieht der Request denn aus, wenn Du ihn regulär von einem Browser aus absetzt und mit einem Proxy mitschneidest?

Gruss
     Stefan