Autor Thema: Neue Version von HTTPMOD mit neuen Features zum Testen  (Gelesen 40406 mal)

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #330 am: 15 Februar 2017, 20:52:06 »
Nicht 2 Readings, eher 2 Device mit jeweils 100 Readings.
Meine eigentliche Frage ist aber inzwischen geklärt - pro Get nur ein Regex. Hätte ja auch sein können, dass ich nur falsch gelesen habe und das doch irgendwie geht.
...aber pro Regex sind mehrere Fundstellen möglich, siehe mein Beispiel oben.
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #331 am: 15 Februar 2017, 21:35:50 »
Nachtrag:
Sowas wie dies würde RAUMSOLLTEMP. HK1 und RAUMSOLLTEMP. HK2
jeweils in ein Reading übernehmen...
Ist doch genau das, was du suchst, oder?

attr TEST get21URL http://2.2.2.2/XXXX
attr TEST get21 Poll 1
attr TEST get21Regex RAUMSOLLTEMP. HK1\p{Any}*?value">([\d,.]+)\p{Any}*?HK2\p{Any}*?value">([\d,.]+)
attr TEST get21_1Name SollHK1
attr TEST get21_2Name SollHK2

Ich habe meinen Regex-Tester  mit dem in den Internals angezeigten String getestet, was dort auch funktioniert aber in fhem dann kein Ergebnis bringt.
attr ISGweb get10Regex RAUMSOLLTEMP\. HK1[^0-9]+([0-9,]+).+RAUMSOLLTEMP\. HK2[^0-9]+([0-9,]+)
Deinen Vorschlag habe ich wie folgt übernommen, obwohl mein Regex-Test damit nicht klar gekommen ist:
attr ISGweb get10Name ISGweb_10
attr ISGweb get10Poll 1
attr ISGweb get10URL http://192.168.0.134/?s=1,0
attr ISGweb get10CheckAllReadings 1
attr ISGweb get10Regex RAUMSOLLTEMP. HK1\p{Any}*?value">([\d,.]+)\p{Any}*?HK2\p{Any}*?value">([\d,.]+)
attr ISGweb get10_1Name SollHK1
attr ISGweb get10_2Name SollHK2

mit folgenden 2 Fehlermeldungen:
ISGweb: unknown attribute get10_1Name. Type 'attr ISGweb ?' for a detailed list.
ISGweb: unknown attribute get10_2Name. Type 'attr ISGweb ?' for a detailed list.
entspricht ja auch nicht der Doku
(get|set|reading)[0-9]+Regex
Folgende 2 Readings wurden wie in der Doku beschrieben erstellt:
ISGweb_10-1
ISGweb_10-2

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #332 am: 16 Februar 2017, 08:48:52 »
mit folgenden 2 Fehlermeldungen:
ISGweb: unknown attribute get10_1Name. Type 'attr ISGweb ?' for a detailed list.
ISGweb: unknown attribute get10_2Name. Type 'attr ISGweb ?' for a detailed list.
entspricht ja auch nicht der Doku
(get|set|reading)[0-9]+Regex

Ändere _ in - und es funktioniert.
Anbei ein funktionierendes Beispiel:

define xx HTTPMOD http://www.google.com 600
attr xx userattr get21-1Name get21-2Name get21Name get21Regex get21URL
attr xx get21-1Name Name1Version
attr xx get21-2Name Name2DEB
attr xx get21Name getName
attr xx get21Regex as of ([\d-\s]+)\p{Any}*?href\p{Any}*?href="([^"]+)
attr xx get21URL https://fhem.de/fhem.html
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #333 am: 16 Februar 2017, 10:10:37 »
Vielen Dank!
Hast Du auch noch eine gute Seite zum Testen der Regex inklusive {Any} bzw. wie kommst Du auf die Regex?

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #334 am: 16 Februar 2017, 10:20:29 »
die schreibe ich mittlerweile aus dem Kopf...
\p{Any} ist wie . jedoch mit zeilenwechsel.

wenn du
...RegOp=s
setzt, matched . auch auf newlines.

du könntest due den regexbuddy kaufen... sehr schönes programm.
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #335 am: 17 Februar 2017, 15:08:51 »
die schreibe ich mittlerweile aus dem Kopf...
\p{Any} ist wie . jedoch mit zeilenwechsel.

wenn du
...RegOp=s
setzt, matched . auch auf newlines.

du könntest due den regexbuddy kaufen... sehr schönes programm.

Wenn Du die aus dem Kopf so schnell hinbekommst, kannst Du mir dann bitte mit folgenden Regex unter die Arme greien?

Problem 1 ist ein optionales Vorzeichen:
<tr class="odd">
  <td class="key">TEMP1</td>
  <td class="value">-12,3 °C</td>
</tr>
<tr class="odd">
  <td class="key">TEMP2</td>
  <td class="value">45,6 °C</td>
</tr>
<tr class="even">
  <td class="key round-leftbottom">TEMP3</td>
  <td class="value round-rightbottom">-32,1 °C</td>
</tr>
<tr class="even">
  <td class="key round-leftbottom">TEMP4</td>
  <td class="value round-rightbottom">65,4 °C</td>
</tr>

so klappt es leider nicht, mein Problem sind die möglichen Minus vorher:
TEMP1[^0-9]+([-0-9,]+)
TEMP2[^0-9]+([-0-9,]+)
TEMP3[^0-9]+([-0-9,]+)
TEMP4[^0-9]+([-0-9,]+)

Problem 2 ist, dass ich gerne 2 Regex verketten möchte um 1.179 zu erhalten:
<div class="fuel-price-type"><span>Diesel</span><span class="mtsk-label"> MTS-K Preis </span></div> <div class="price-box"> <div class="price-input" ng-class="{'price-dirty': dirty}"> <span ng-click="minus()" class="decrease-price">-</span><span class="price-field"><span ng-bind="display_preis">1.17 </span> <sup ng-bind="suffix">9</sup></span><span ng-click="plus()" class="increase-price">+</span> </div>
<span>Diesel</span>[^0-9]+([0-9\.]+)
suffix[^0-9]+([0-9\.]+)

Danke
Manfred

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #336 am: 17 Februar 2017, 15:24:21 »
Für einen Kaffe, mach ich viel ;-)

Einfach kopieren und den Namen für temp1-4 anpassen
TEMP3\p{Any}+?>([-\d,]+)
Das zweite schau ich mir noch an
Mit einer Gruppe fällt mir nichts ein, aber so bekommst du es in zwei gruppen
Diesel.*?">([\d\.]+)(?:.*?suffix">)(\d+)
« Letzte Änderung: 17 Februar 2017, 15:51:05 von JoeALLb »
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #337 am: 20 Februar 2017, 20:49:42 »
Für einen Kaffe, mach ich viel ;-)

Einfach kopieren und den Namen für temp1-4 anpassen
TEMP3\p{Any}+?>([-\d,]+)
Das zweite schau ich mir noch an
Mit einer Gruppe fällt mir nichts ein, aber so bekommst du es in zwei gruppen
Diesel.*?">([\d\.]+)(?:.*?suffix">)(\d+)

Der Regex funktioniert, vielen Dank. Ich bin durch die Tipps schon viel weiter gekommen und würde den Kaffe daher nur zu gern spendieren. Ich habe mich jedoch nochmal in den Regex verrannt, vielleicht hast Du aber erneut aus dem Kopf eine schnelle Lösung.



MaxAge scheint nicht mit timestamp-on-change reading zu funktionieren. Außerdem sind derzeit 49 Seiten in einem Device geplant, da sich der Zielserver mit parallelen Zugriffen immer wieder aufhängt und so das MaxAge wahrscheinlich nicht ganz unproblematisch funktioniert. Zum Glück kann man aber für 2 Regex das gleiche reading als Ziel angeben und so hoffentlich das MaxAge durch 2 Regex ersetzen und so den Wert zusammen mit dem Rest aktualisieren was für meinen Fall sinnvoll ist.

Problem:
Die Seiten lassen sich über die Überschrift identifizieren. Einige der Seiten zeigen Schalter als SCHLÜSSELWÖRTER an, falls die Schalter an sind, ansonsten nichts. Ich würde die SCHLÜSSELWÖRTER gerne mit 1 (vorhanden) bzw. 0 (nicht vorhanden) als reading bekommen.

Beispielseite (identifiziert durch TEXT1 vor dem SCHLÜSSELWORT und bei Bedarf TEXT2 nach dem SCHLÜSSELWORT:
beliebig > Überschrift > beliebig > SCHLÜSSELWORT1 > beliebig > Endetag > beliebig > konstante_Zahl_mit_0_und_1 > beliebig
der Positiv-Check funktionert:
Überschrift.+SCHLÜSSELWORT1.+Endetag.+([1])
den Negativ-Check bekomme ich aber auf Grund der beliebigen Texte vorher und nachher nicht hin, da es dadurch ja immer ein passendes Ergebnis gibt:
Überschrift.+(?!SCHLÜSSELWORT1).+Endetag.+([0])
und noch eine Frage zum obigen Beispiel:
Kann ich z.B. das Endetag direkt in 0/1 umwandeln oder bin ich auf die passende Zahl nach dem Endetag bzw. getMap angewiesen?

Danke
Manfred


Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1056
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #338 am: 20 Februar 2017, 21:13:40 »
Sorry Manfred,
vielleicht liegt es an der Uhrzeit, aber ich erkenne die Frage in deinem Text nicht.

Prinzipiell trifft dieser negativtext schon und funktioniert somit auch, in welchem Beispiel funktioniert er denn nicht korrekt?
Schick mir doch ein paar (vll. sogar mehrere Texte die es zu matchen gibt, dann kann man den regex "stabiler" bauen als wenn man ihn nur auf einen Text prüft.
Also Posiviv und Negativbeispiele...
« Letzte Änderung: 20 Februar 2017, 21:21:07 von JoeALLb »
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #339 am: 22 Februar 2017, 22:09:30 »
Durch mein vieles Testen ist das userattr des device inzwischen sehr lang geworden, da beim Löschen von Attributen das userattr nicht mit bereinigt wird.
Wie bereinige ich das userattr am einfachsten?

Offline StefanStrobel

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 796
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #340 am: 22 Februar 2017, 22:53:10 »
Einfach löschen. Das Modul erzeugt die Einträge automatisch.

Gruss
   Stefan

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #341 am: 22 Februar 2017, 22:57:47 »
Einfach löschen. Das Modul erzeugt die Einträge automatisch.

Gruss
   Stefan

Danke für die schnelle Antwort, Löschen habe ich mich nicht getraut.

Manfred

Offline peterk_de

  • Sr. Member
  • ****
  • Beiträge: 642
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #342 am: 22 Februar 2017, 23:04:27 »
Hallo zusammen,

ich wollte mir die Messwerte  von einer nahgelegenen offiziellen  Luftüberwachungs-Station in FHEM holen. Die haben eine App (Lüsa), und Wireshark brachte folgende URL hervor:

http://www.mu.sachsen-anhalt.de/lau/luesa/tmp/LUESA-APP-json.txt

Nett. Nun wollte ich mir das mit HTTPMOD vornehmen und meine Messstation rauspopeln, allerdings komm ich mit den vorhandenen JSON-Filtern da nicht weit. Mit Regexen schon gar nicht (wobei, naja, auf jeden fall wäre das übel ;)) Ist irgendwie sowas wie JSONPath in Planung? Sonst muss ich mir da selbst mal was bauen...
Intel NUC5i5 -> Proxmox -> Ubuntu 16.04 LTS
IOdevs: 2x Homematic, CUL868, HarmonyHub
Frontends: 3x TabletUI Android-Tablets mit AMAD+FullyBrowser, Homebridge/Siri
Aktoren/Sensoren: 86x Homematic, 15x WMBUS/Techem, 7x WiFi, 5x BLE, 2x BT, Geofencing
FHEM2FHEM-Roomnodes: 5x Raspi, 1x Cubietruck

Offline StefanStrobel

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 796
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #343 am: 23 Februar 2017, 21:39:13 »
Hallo,

Bisher hatte ich keine Pläne JSONPath einzubauen, aber vermutlich wäre es kein großer Aufwand und ähnlich wie XPath zu machen.
Du kannst es gerne mal ausprobieren und einen Patch als Vorschlag posten.

Gruss
   Stefan

Offline ares

  • Full Member
  • ***
  • Beiträge: 109
  • Es gibt keine Cloud, nur die Computer anderer!
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #344 am: 01 März 2017, 13:02:52 »
Ich benötige "set[0-9]+IMap" mit einem Komma, bekomme die Syntax aber nicht ganz auf die Reihe.

ohne Komma im Pfad funktioniert es
attr MyDevive set01IMap /?s=1:path_1,  /?s=4:path_2mit Komma splittet er leider ungewollt
attr MyDevive set01IMap /?s=1,2,3:path_1,  /?s=4,5,6:path_2
Kann mir bitte jemand unter die Arme greifen oder bestätigen dass dies aktuell nicht möglich ist?

Danke
Manfred

 

decade-submarginal