HTTPMOD "leeres" Reading

Begonnen von Ampheus, 29 März 2017, 17:52:22

Vorheriges Thema - Nächstes Thema

Ampheus

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.

Ampheus

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]'