[Gelöst] Probleme mit Zeilenumbrüchen bei HTTPMOD

Begonnen von tobox, 19 März 2018, 11:36:17

Vorheriges Thema - Nächstes Thema

tobox

Um die Tintenstände meines Druckers auszulesen, habe ich per HTTPMOD die Statusseite abgeholt, und kann die Farben auch problemlos damit parsen. Das Problem ist, dass ich zum Unterscheiden von Dokumenten-Schwarz und Foto-Schwarz über mehrere Zeilen hinweg prüfen muss, und dass klappt mit meinen Regex einfach nicht. Sobald ich am Zeilenende abprüfe, kommt "ExtractReading schwarz did not match".

So sieht der relevante Teil der Webseite aus:

<div class='tank'>
<img class='color' src='../../IMAGE/Ink_K.PNG' height='46' style=''>
</div>
<div class='clrname'>BK</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_C.PNG' height='50' style=''>
</div>
<div class='clrname'>C</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_Y.PNG' height='50' style=''>
</div>
<div class='clrname'>Y</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_M.PNG' height='50' style=''>
</div>
<div class='clrname'>M</div>
</li><!--
--><li class='tank'>
<div class='tank'>
<img class='color' src='../../IMAGE/Ink_K.PNG' height='50' style=''>
</div>
<div class='clrname'>PBK</div>
</li>
</ul></div>


Das hier ist mein HTTPMOD bisher, Cyan Magenta und Yellow funktionieren, aber die beiden Schwarz leider nicht (also reading01Regex und reading05Regex)

define Drucker_Tintenstaende HTTPMOD http://192.168.207.59/PRESENTATION/ADVANCED/INFO_PRTINFO/TOP 60
attr Drucker_Tintenstaende userattr reading01Name reading01OExpr reading01Regex reading02Name reading02OExpr reading02Regex reading03Name reading03OExpr reading03Regex reading04Name reading04OExpr reading04Regex reading05Name reading05OExpr reading05Regex
attr Drucker_Tintenstaende DbLogExclude .*:0
attr Drucker_Tintenstaende DbLogInclude (Uptime_h):0
attr Drucker_Tintenstaende alias Tintenstände
attr Drucker_Tintenstaende reading01Name schwarz
attr Drucker_Tintenstaende reading01OExpr $val * 2
attr Drucker_Tintenstaende reading01Regex Ink_K.PNG..height..(\d+)..style.{20,80}>BK
attr Drucker_Tintenstaende reading02Name cyan
attr Drucker_Tintenstaende reading02OExpr $val * 2
attr Drucker_Tintenstaende reading02Regex Ink_C.PNG..height..(\d+)..style
attr Drucker_Tintenstaende reading03Name gelb
attr Drucker_Tintenstaende reading03OExpr $val * 2
attr Drucker_Tintenstaende reading03Regex Ink_Y.PNG..height..(\d+)..style
attr Drucker_Tintenstaende reading04Name magenta
attr Drucker_Tintenstaende reading04OExpr $val * 2
attr Drucker_Tintenstaende reading04Regex Ink_M.PNG..height..(\d+)..style
attr Drucker_Tintenstaende reading05Name fotoschwarz
attr Drucker_Tintenstaende reading05OExpr $val * 2
attr Drucker_Tintenstaende reading05Regex Ink_K.PNG..height..(\d+)..style.{20,150}clrname..PBK
attr Drucker_Tintenstaende room Büro
attr Drucker_Tintenstaende stateFormat Schwarz: schwarz% Cyan: cyan% Magenta: magenta% Gelb: gelb% Fotoschwarz: fotoschwarz%


Gibt es irgendeinen Trick,  wie man die Regexe dazu bekommt, Zeilenumbrüche einfach zu ignorieren?

Folgender Regex funktioniert laut http://chris.photobooks.com/regex/, in FHEM matcht er aber leider nicht :-(

Ink_K.PNG..height..(\d+)..style....\n.*\n.*clrname..BK

frank

füge am anfang der regex "(?s)" ein, ohne anführungszeichen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

tobox

Vielen Dank, da wäre ich nie drauf gekommen (bzw. das hätte ich nie in der Doku gefunden).

Stichwort ist "dot matches newline", da der Punkt in manchen Implementationen mit newline matched, in anderen wiederum nicht.

KernSani

Wenn das Problem damit gelöst ist, bitte noch [Gelöst] vor das Subject des ersten Posts schreiben. Danke :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...