Hauptmenü

Regex Optionen

Begonnen von LotharRappsilber, 06 November 2023, 12:18:27

Vorheriges Thema - Nächstes Thema

LotharRappsilber

Hallo zusammen,

verstehe leider die Optionen von Regex nicht. Ich möchte aus einer Webseite IPv6 und IPv4 rausholen. Mein Code, der sicher falsch ist, da er nicht funktioniert. Brauche Hilfe.

define IP HTTPMOD https://www.wieistmeineip.de/ipv6-test/ 300
setuuid IP 6548ae69-f33f-9284-8080-72ceb1d34bbc6494
attr IP alias IP
attr IP reading01Name IPv6
attr IP reading01Regex title"><strong>(\d+\:\d+)</strong></div>
attr IP reading02Name IPv4
attr IP reading02Regex ipv4-value">(\d+\.\d+)<\/span>
attr IP room IP
attr IP stateFormat IPv6, IPv4
attr IP timeout 5

Danke für die Hilfe!!!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

defmod test HTTPMOD https://www.wieistmeineip.de/ipv6-test/
attr test reading01Name ipv4
attr test reading01Regex lautet[\s\S]+>(\d+\.\d+\.\d+\.\d+)
attr test reading02Name ipv6
attr test reading02Regex lautet[\s\S]+>([0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+)

Für ipv6 konnte ich das nicht testen, in der Antwort, die mein FHEM bekommt, sind keine Werte für ipv6 enthalten, weder hier lokal, noch auf einem externen Server.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Danke für deine Hilfe, aber ich mache bestimmt noch etwas fasch, denn es funktioniert leider nicht. Mein Code:


define IP HTTPMOD https://www.wieistmeineip.de/ipv6-test/ 300
setuuid IP 6548ae69-f33f-9284-8080-72ceb1d34bbc6494
attr IP alias IP
attr IP reading01Name IPv6
attr IP reading01Regex title"><strong>[\s\S]+>([0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+)</strong></div>
attr IP reading02Name IPv4
attr IP reading02Regex ipv4-value">[\s\S]+>(\d+\.\d+\.\d+\.\d+)<\/span>
attr IP room IP
attr IP stateFormat IPv6, IPv4
attr IP timeout 5
attr IP userReadings holeInOne {ReadingsVal($NAME,"IPv6","")." ".ReadingsVal($NAME,"IPv4","")}
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Zitat von: LotharRappsilber am 06 November 2023, 13:18:14aber ich mache bestimmt noch etwas fasch, denn es funktioniert leider nicht.

Ja, Du doktorst immer noch an Deinem nicht funktionierenden Code rum, anstatt mein Beispiel als Basis zu verwenden. Mein Beispiel liefert zumindest für ipv4 korrekte Werte.

Außerdem wäre interessant zu sehen, was denn bei Dir als Ergebnis kommt. "funktioniert nicht" ist als Fehlerbeschreibung wenig hilfreich.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

IPv4 funktioniert, an IPv6 arbeite ich noch! Verstehe den Code trotzdem nicht, da nach keinem String gesucht wird wie in meinem vorigem Code.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Jetzt kann ich bestimmt gleich auch noch was lernen...

Zitat von: LotharRappsilber am 06 November 2023, 13:36:03da nach keinem String gesucht wird

reading01Regex lautet[\s\S]+>(\d+\.\d+\.\d+\.\d+)
Was ist denn "lautet" sonst, wenn es kein String ist?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: LotharRappsilber am 06 November 2023, 13:36:03an IPv6 arbeite ich noch

Schau doch im HTTPMOD device mal im Inhalt des body, ob da überhaupt eine IPv6 auftaucht, bei mir ist der Wert nicht vorhanden. Auf der Webseite sehe ich aber eine IPv6.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Beim Inhalt der Seite taucht natürlich ipv6 auf.

<div id="ipv6" class="ip">
  <div>Ihre IP-Adresse lautet:</div>
  <div class="title"><strong>2a00:6020:b304:f700:5015:754c:62f6:52bc</strong></div>
</div>

FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

LotharRappsilber

Hier der Code für die externe ipv6:

  var wimip = wimip || [];
  wimip.ip = "2a00:6020:b304:f700:5015:754c:62f6:52bc";

FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Woher kopierst Du den HTML Code?
Aus dem Seitenquelltext im Browser oder aus dem body im HTTPMOD device?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Aus dem Seitenquelltext!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Das dachte ich mir. Deshalb hatte ich ja schon vor fast einer Stunde geschrieben:

Zitat von: betateilchen am 06 November 2023, 13:43:37Schau doch im HTTPMOD device mal im Inhalt des body, ob da überhaupt eine IPv6 auftaucht, bei mir ist der Wert nicht vorhanden. Auf der Webseite sehe ich aber eine IPv6.

Aber Du machst halt lieber Deinen eigenen Stiefel...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Ich dachte ich muss immer nach einem String suchen, wie soll das auch anders sein?
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

LotharRappsilber

Trotz das ich meinen Code abgeändert habe, geht es nicht. Nicht mal ipv6 wird bei den Readings angezeigt.

attr IP reading02Name IPv6
attr IP reading02Regex wimip.ip = "[\s\S]+>([0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+:[0-9a-fA-F]+)";

Bitte nochmals um Hilfe!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

KernSani

@Lothar, du bist irgendwie sehr spärlich mit deinen Informationen.
Nimm dir doch mal die response aus dem HTTPMOD Device, wie von betateilchen beschrieben, geh damit auf regex101.com und probiere die IP6-Adresse zu extrahieren. Wenn dir das nicht gelingt, poste die den HTTPMOD body und deinen besten deinen "nahe dran" Versuch.
Grüße,
Oli 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...