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?
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
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?
(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?
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?
Ad 1: nochmal: kein Automatismus.Ad 2.: nein, bin nicht der Maintainer des Moduls.
Und warum nicht einfach
attr httpmod_finanzen_.* reading01Regex (\d+\.\d+\,\d+).*<span>PKT<\/span
und Schluß?
Alle auf einmal geändert.