Hallo,
folgende Problematik beschäftigt mich gerade. Ich lese via HTTPMOD das Biowetter von Donnerwetter ein
define BIOWETTER HTTPMOD http://www.donnerwetter.de/biowetter/DE16656/freital-biowetter.html 7200
Die readings werden mit verschiedenen Regex gelesen wie zum Beispiel:
reading01Name Reaktionszeit
reading01Regex (?s)Reaktionszeit<\/td>.*?<strong>(sehr stark|stark|schwach|keine|)?<\/strong>
Das funktioniert soweit gut. Normalerweise steht da also im HTTP Quelltext soetwas:
Reaktionszeit</td> <td width="100" bgcolor="#DAC583"><font color="#008000"><strong>schwach</strong>
Das liefert dann das Reading [BIOWETTER:Reaktionszeit] --> schwach
Ein Problem gibt es aber mit dem Wert "keine". Dieser wird nicht als Text ausgegeben, sondern der HTML code ist dann
Reaktionszeit</td> <td width="100" bgcolor="#DAC583"><font color=""><strong></strong>
Hier wird das Reading logischerweise nicht gefunden, und wenn ich z.B. eine Pushover Ausgabe mit [BIOWETTER:Reaktionszeit] machen will, erscheint dann (und nur dann) der Quelltext in der Nachricht und nicht der Wert.
Ich weiss nicht genau, wie ich das mit einem Regex lösen kann. Faktisch würde mir schon reichen, wenn der regex nicht greift, dass das Reading mit einem Defaultwert belegt wird, damit ich es wenigstens ausgeben kann. Geht das? Wie muss man dazu den Reading-Filter verändern?
Danke.
Gruß
Thomas.
Habe soeben eine Lösung gefunden. Man muss den Wert in Perl auslesen. Dann zeigt er das leere Reading '' an.
define BioText at *06:01:00 \
set Pushover_Thomas msg title='Biowetter (TEST)' 'Migraene: {(ReadingsVal("BIOWETTER","Migraene",""))}\nKopfschmerzen: {(ReadingsVal("BIOWETTER","Kopfschmerzen",""))}\n\nWettertext: [BIOWETTER:Biotext]'