Perl-Code in httpmod einfügen

Begonnen von jannis, 25 März 2020, 13:56:10

Vorheriges Thema - Nächstes Thema

jannis

Bei httmod würde ich gerne Perl-Code nutzen:

Ich frage mit httpmod aktuelle Kurse von mehreren Aktien ab. Die Seite für die einzelnen Kurse ist vom html-Code jeweils gleich aufgebaut. Das heißt, das Regex für jeden Kurs ist gleich, siehe z.B. für BMW, Audi und Toyota.

attr httpmod_finanzen_BMW reading01Regex (\d+\.\d+\,\d+).*<span>PKT<\/span>
attr httpmod_finanzen_Audi reading01Regex (\d+\.\d+\,\d+).*<span>PKT<\/span>
attr httpmod_finanzen_toyota reading01Regex (\d+\.\d+\,\d+).*<span>PKT<\/span>


* die Regexe sind nicht das Problem ... die funktionieren.

Der html-code von Webseiten wird immer mal wieder verändert. Deshalb wäre es schön, wenn man das Regex in eine Perl-Funktion auslagern könnte, z.B. so:

1. Der Funktionsaufruf:
attr httpmod_finanzen_BMW reading01Regex { KursRegex() }
attr httpmod_finanzen_Audi reading01Regex { KursRegex() }
attr httpmod_finanzen_toyota reading01Regex { KursRegex() }


2. ... und die ausgelagerte Funktion:
sub KursRegex()
{
   return "(\d+\.\d+\,\d+).*<span>PKT<\/span>";
}


Funktioniert aber leider nicht. Wie könnte man es machen ... oder ist Perl-Code in einem reading01Regex  nicht vorgesehen? Wenn Perl-Code hier nicht geht ... gibt es dann einen "Fhem-Weg" zum Erfolg?
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

Beta-User

Zitat von: jannis am 25 März 2020, 13:56:10
Wenn Perl-Code hier nicht geht ... gibt es dann einen "Fhem-Weg" zum Erfolg?
Evtl. via attrTemplate: Da kannst du einen Master definieren und wendest das dann ggf. bei Änderungen dann einfach auf alle betreffenden HTTPMOD's an.

Kann das gerne auch in die allg. attrTemplate-file übernehmen, dann haben auch andere was davon...

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jannis

Zitat von: Beta-User am 25 März 2020, 14:36:04
Evtl. via attrTemplate: Da kannst du einen Master definieren und wendest das dann ggf. bei Änderungen dann einfach auf alle betreffenden HTTPMOD's an.

Heißt das, dass dann das spezielle Regex für das Rausfischen des aktuellen Aktienkurses in dem attrTemplate liegt? Und per fhem-update wird eine Änderung des Reges automatisch auf alle Kurse httpmod-Kurse angewendet?

Meine Sorge wäre, wenn ich das ernsthaft für die Überwachung von Kursen einsetze, dass im entscheidenden Augenblick das attrTemplatte nicht rechtzeitig geändert wird. Gäbe es außer dem attrTemplate auch noch eine weitere Möglichkeit, dass ich das Regex zentral selbst ändere?

Könnte man z.B. reading01Regex Perl-fähig machen?
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

Beta-User

(Was attrTemplate angeht:) Jein.

1. attrTemplate werden nur auf Useranforderung hin angewendet. Du müßtest dich so oder so also selbst kümmern!
2. Du kannst eigene attrTemplates anlegen. Dann hast du für dich lokal genau den gewünschten Effekt, oder etwa nicht?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jannis

Zitat von: Beta-User am 25 März 2020, 15:25:07
(Was attrTemplate angeht:) Jein.

1. attrTemplate werden nur auf Useranforderung hin angewendet. Du müßtest dich so oder so also selbst kümmern!
2. Du kannst eigene attrTemplates anlegen. Dann hast du für dich lokal genau den gewünschten Effekt, oder etwa nicht?

Ich kenne das Konzept von attrTemplate noch nicht so genau.
1. Würde eine spätere Veränderung des Regexes im Template automatisch auf alle entsprechenden Regexe in den Aktienkurse (die ich jeweils als eigenes httpmod) definiert habe Auswirkungen haben?
2. Könntest Du reading??Regex perl-fähig machen?
+ + + Gibt es eigentlich hier Smarthome-Enthusiasten aus + + +
Norddeutschland / Nordfriesland / Bredstedt / Husum oder Niebül?

Beta-User

Ad 1: nochmal: kein Automatismus.Ad 2.: nein, bin nicht der Maintainer des Moduls.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

amenomade

Und warum nicht einfach
attr httpmod_finanzen_.* reading01Regex (\d+\.\d+\,\d+).*<span>PKT<\/span und Schluß?
Alle auf einmal 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