[Erledigt] HTTPMOD Anzahl der Treffer zählen

Begonnen von LuBeDa, 26 August 2017, 16:05:14

Vorheriges Thema - Nächstes Thema

LuBeDa

Hallo,
ich möchte über FHEM automatisch das EPG meines Receivers nach bestimmten Sendungen durchsuchen. Das Durchsuchen mit z.B:

get EPG_SEARCH query Wilsberg funktioniert und ich bekomme alle Ergebnisse in einem "Treffer" Reading:


HTTPMOD EPG_SEARCH Treffer-1: Wilsberg
HTTPMOD EPG_SEARCH Treffer-2: Wilsberg
HTTPMOD EPG_SEARCH Treffer-3: Wilsberg
HTTPMOD EPG_SEARCH Treffer-4: Wilsberg
HTTPMOD EPG_SEARCH Treffer-5: Wilsberg
HTTPMOD EPG_SEARCH Treffer-6: Wilsberg


Ich möchte aber eigentlich nur die Anzahl der Treffer also "6" oder noch besser "Wilsberg (6)" als Reading haben.

Kann man das irgendwie mit REGEX abbilden?

Hier meine Geräte Definition:
defmod EPG_SEARCH HTTPMOD http://vuduo2/web/epgsearch?search=$val&bRef=1:7:1:0:0:0:0:0:0:0:FROM%20BOUQUET%20%22userbouquet.favourites.tv%22%20ORDER%20BY%20bouquet
attr EPG_SEARCH userattr get01Name reading01Name reading01RegOpt reading01Regex
attr EPG_SEARCH DbLogExclude .*
attr EPG_SEARCH get01Name query
attr EPG_SEARCH reading01Name Treffer
attr EPG_SEARCH reading01RegOpt g
attr EPG_SEARCH reading01Regex <e2eventtitle>([^>]*)<\/e2eventtitle>


Ludger

amenomade

Bitte ein "list EPG_SEARCH" und die Log mit verbose 5 auf dem HTTPMOD liefern. Hier hat man nicht mal das HTML/XML/Json von der Antwort. Wie kann man regex analysieren/aufbauen?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

LuBeDa

Beim Aufbereiten der Daten für die Antwort ist mir klar geworden dass sich HTTPMOD für meine Anwendung gar nicht lohnt, weil zu komplex.

Ich werde wohl eine 99_myUtils.pm Routine dafür schreiben.

Danke

amenomade

#3
Dann pass auf, die Funktion HttpUtils_NonblockingGet zu nutzen, wie HTTPMOD macht. Ein blocking Call mit qx(curl) o.ä kann dein ganzes FHEM still legen, so lange dein Receiver nicht geantwortet hat.

Hinweise hier: https://wiki.fhem.de/wiki/Blocking_Call

EDIT: Ein HTTPMOD mit einfacher Benutzung wie die Abholung von ein paar Werte ist ganz einfach. Man muss nur die richtige regexp finden.
define epg HTTMOD <url> <interval>
attr epg reading01Name name
attr epg reading01Regex <regex>
und es ist schon erledigt. Mit einer perl Routine wirst Du so wie so die HTML Antwort parsen müssen...

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus