FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Ralle am 30 April 2018, 18:04:33

Titel: Externe IP herausfinden und anzeigen
Beitrag von: Ralle am 30 April 2018, 18:04:33
Hallo zusammen,
würde gerne die Externe IP meines Routers im FTUI anzeigen.
Erste Ansätze dazu gibt es ja schon unter https://forum.fhem.de/index.php/topic,12918.0.html (https://forum.fhem.de/index.php/topic,12918.0.html)
Ob das noch funktioniert kann ich nicht mal sagen da mein Perl Wissen dafür einfach nicht ausreicht.
Ich habe auf der Kommandozeile mal versucht den Inhalt von Variablen auszugeben mit {print getip()} und {myutils_getip()}, was aber ziemlich sicher totaler Unfug ist?
Für den einen oder anderen Anfängertipp wäre ich dankbar.

Gruß
Ralf
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: mark79 am 30 April 2018, 18:16:21
Hallo,

vielleicht etwas überladen, aber das HOMEMODE Fhem Modul zeigt in den Readings die Public IP an.


Viele Grüße
Mark
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: CoolTux am 30 April 2018, 18:20:57
Hast du eine Fritzbox? Da kann man das Modul für verwenden.
Ansonsten kannst Du auch eine externe Seite mit HTTPMOD aufrufen myip oder so und die IP als Reading ablegen.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: amenomade am 30 April 2018, 18:28:27
defmod myIP HTTPMOD https://www.wieistmeineip.de/ 86400
attr myIP reading01Name IP
attr myIP reading01Regex (?s)Ihre IP-Adresse?.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Ralle am 30 April 2018, 18:38:07
Vielen Dank @amenomade
Das funktioniert  :)
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: gloob am 30 April 2018, 19:02:36
Vielen Dank dafür. Wäre ein Schöner Eintrag fürs Wiki. Ich hatte es bisher über eine eigenen Funktion in 99_myUtils.pm gelöst.

Wenn man das stateFormat noch setzt sieht es noch besser aus:

defmod myIP HTTPMOD https://www.wieistmeineip.de/ 86400
attr myIP userattr reading01Name reading01Regex
attr myIP reading01Name IP
attr myIP reading01Regex (?s)Ihre IP-Adresse?.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
attr myIP stateFormat IP
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: tik-tak-tok am 30 April 2018, 20:43:18
Danke gloob! ;-)

Kann mir jetzt noch jemand sagen, wie ein DOIF auszusehen hat, welches mir die neue IP per Telegram sendet?
Ich möchte also wirklich nur die (neue) IP gesendet haben, wenn diese sich geändert hat.

:-)

Besten Dank & lg,
Mike
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Wernieman am 30 April 2018, 20:47:17
Vergiss DOIF, das ist wirklich in dem Falle Oversize ....

ein "change on update" aufs Device setzen und ein passendes notify
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: connormcl am 30 April 2018, 21:02:14
Zitat von: gloob am 30 April 2018, 19:02:36
Vielen Dank dafür. Wäre ein Schöner Eintrag fürs Wiki. Ich hatte es bisher über eine eigenen Funktion in 99_myUtils.pm gelöst.

Wenn man das stateFormat noch setzt sieht es noch besser aus:

defmod myIP HTTPMOD https://www.wieistmeineip.de/ 86400
attr myIP userattr reading01Name reading01Regex
attr myIP reading01Name IP
attr myIP reading01Regex (?s)Ihre IP-Adresse?.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
attr myIP stateFormat IP


Betreibt ihr eure Server etwa noch mit ipv4 only? Was ist mit ipv6? bzw. man sollte heutzutage schon an beides denken...
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: amenomade am 30 April 2018, 21:07:07
Ich brauche meine externe IP Adresse nur für Alexa... und Alexa versteht noch keine IPv6. Prinzipiell kann man aber die HTTPMOD Lösung auch mit IPv6 nutzen. Man braucht nur eine Webseite, die IPv6 liefert. Dann hätte aber die IPv6 des Routers wenig Interesse.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Wuppi68 am 30 April 2018, 21:19:27
also IPv6 wird nicht genattet ... da kannst Du die lokale benutzen - aber Dein Router sollte diese sowieso nicht erreichbar machen ;-)
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: amenomade am 30 April 2018, 22:12:31
Genau. Wobei... dann sollte man tatsächlich die lokale aber nicht die Loopback Adresse ::1/128 nutzen ;)
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: connormcl am 30 April 2018, 22:19:58
Zitat von: Wuppi68 am 30 April 2018, 21:19:27
also IPv6 wird nicht genattet ... da kannst Du die lokale benutzen - aber Dein Router sollte diese sowieso nicht erreichbar machen ;-)

Wieso sollte ich meine ipv6 nicht erreichbar machen, wenn ich auf FHEM zugreifen möchte? (die lokale Firewall sollte dann natürlich entsprechend performen und ich geh dann VPN ins lokale Netz...)


Ausserdem habe ich die Anmerkung fallenlassen, weil https://www.wieistmeineip.de/ sehr wohl ipv6 reportet...genaugenommen beides...damit fällt der genannte Regex-Ausdruck dann auf die Nase, wenn man nur ipv6 oder beides verwendet.

Es gibt zwei Felder:

Ihre IP-Adresse lautet: ipv6
Ihre IPv4-Adresse lautet: ipv4
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: amenomade am 30 April 2018, 22:40:54
Zitat von: connormcl am 30 April 2018, 22:19:58
Es gibt zwei Felder:

Ihre IP-Adresse lautet: ipv6
Ihre IPv4-Adresse lautet: ipv4
Dann einfach davon 2 Readings machen.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Wuppi68 am 02 Mai 2018, 13:20:35
Zitat von: connormcl am 30 April 2018, 22:19:58
Wieso sollte ich meine ipv6 nicht erreichbar machen, wenn ich auf FHEM zugreifen möchte? (die lokale Firewall sollte dann natürlich entsprechend performen und ich geh dann VPN ins lokale Netz...)


Ausserdem habe ich die Anmerkung fallenlassen, weil https://www.wieistmeineip.de/ sehr wohl ipv6 reportet...genaugenommen beides...damit fällt der genannte Regex-Ausdruck dann auf die Nase, wenn man nur ipv6 oder beides verwendet.

Es gibt zwei Felder:

Ihre IP-Adresse lautet: ipv6
Ihre IPv4-Adresse lautet: ipv4

naja, machst Du VPN brauchst Du Deine externe IP nicht - Du bist ja Lokal in Deinem Netz unterwegs und dann interessiert Dich Deine externe IP nicht die Bohne ... und wenn Du dann Deine IPv6 Adresse brauchst, da gibt es genügend DDNS Tools, die Dir diese bei Deinem lokalen oder externen DNS entsprechend registrieren und den kannst Du dann bequem mit benutzen

aber back to Topic

IPv4 ist ja kein Problem entsprechend anzuzeigen (gibt es genügend Beispiele im Forum)
IPv6  interessiert nur die Routeradresse und der Präfix
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: binford6000 am 02 Mai 2018, 14:14:25
ZitatKann mir jetzt noch jemand sagen, wie ein DOIF auszusehen hat, welches mir die neue IP per Telegram sendet?
Ich möchte also wirklich nur die (neue) IP gesendet haben, wenn diese sich geändert hat.
Klaro:
defmod myIP_DOIF_1 DOIF ([myIP:"^IP:..*.*.*$"]) (set <Telegram-Device> msg Die neue externe IPv4-Adresse lautet: [myIP:IP])
attr myIP_DOIF_1 do always

Für die Zukunft: Das kannst Du auch selbst einfach erstellen indem Du dir im Eventmonitor die Events von myIP anschaust und dann auf "Create/Modify Device" klickst...  ;)
VG Sebastian
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: tik-tak-tok am 02 Mai 2018, 19:32:56
Hi Sebastian,

vielen Dank dafür! :-) Leider bekomme ich jetzt die IP immer zugesandt, obwohl diese sich nicht geändert hat. ;-)

Hast du dafür auch noch einen Tipp parat?

Danke & LG,
Mike
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: amenomade am 02 Mai 2018, 20:28:38
event-on-change-reading auf dem httpmod
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: binford6000 am 02 Mai 2018, 23:06:52
Zitat von: amenomade am 02 Mai 2018, 20:28:38
event-on-change-reading auf dem httpmod

Bin mal davon ausgegangen da es weiter oben ja bereits in der httpmod Definition stand [emoji6]
VG Sebastian


Gesendet von iPad mit Tapatalk
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: CatWeazle am 16 Mai 2020, 11:57:32
Hi Leutz,

ich habe leider momentan ein kleines DDNS Problem und würde gerne auf dieses hier beschriebene zurückgreifen.
Leider scheint es so nicht mehr zu funktionieren.
Suche den Fehler ?!?!?!?

Liegt es daran, dass "wieistmeineip" etwas am Inhalt ihrer Seite geändert haben?

Beste Grüße
Mike
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: MadMax-FHEM am 16 Mai 2020, 12:21:50
Kann keinen Fehler finden.

Habe eben das in diesem Thread gepostete HTTPMOD mit wieistmeineip ausprobiert: funktioniert...

Gruß, Joachim
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: CatWeazle am 16 Mai 2020, 12:58:52
Hallo Joachim,
ich habe jetzt die reading01Regex geänder, da sich der Text der Webseite scheinbar geändert hat.

in: (?s)Ihre IP-Adresse lautet:.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
alt: (?s)Ihre IP-Adresse?.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
so funktioniert es jetzt auch bei mir.

Frage dazu, wie kann man das Modul HTTPMOD dazu anstoßen, die Daten neu einzulesen?
Per FHEM per shutdown restart ist recht brutal :)
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: MadMax-FHEM am 16 Mai 2020, 13:08:06
Ich musste NICHTS ändern/anpassen...

Egal, wenn es läuft...

Du kannst ein reread auslösen...
...oder beim Define das Intervall angeben...

Wenn du reread NICHT hast, dann musst du das Attribut enableControlSet setzen...
...und wenn du das musst, dann ist dein fhem nicht so wirklich aktuell... ;)

(ist schon länger Standard, dass das aktiviert ist)

EDIT: statt shutdown restart geht auch "defmod" auf das Device, ist aber ähnlich "hart" ;)

Gruß, Joachim
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Wernieman am 16 Mai 2020, 14:09:10
Btw:
ich würde Dir empfehlen eine "bessere" Seite als http://wieistmeineip.de zu nehmen.

Vergleich mal den Output mit z.B.:
http://checkip.dyndns.com/
http://checkip.amazonaws.com/
http://icanhazip.com/   (Hinweis: Wenn die IPv4 haben willst, mußt Du mit IPv4 anfragen)
http://v4.ident.me/ (Für IPv6: http://v6.ident.me/)

Und noch viele andere (Google Hilft). wieistmeineip.de ist dagegen wie ein aufgeblähter Dinosaurier ....
Die Obengenannten Seiten werden z.B. in dyndsn-scripten verwenden und damit ist die Wahrscheinlichkeit des Ändern sehr gering ....
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 16 Mai 2020, 21:02:33
Hallo Mike,

so auf die Schnelle
{qx(wget -q -O - "http://checkip.dyndns.com/"|grep -o "[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}")}

Kann man sicher besser machen ;)

Ich weiß nicht wie Du die IP verwenden willst, Du kannst sie mit set magic - set (setreading) Device {Code von oben} irgendwo hin schreiben. Mit at notify der sonst was :)

Gruß Otto
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 14:57:10
Hallo zusammen,

ich wiederbelebe mal den Thread, da ich leider mit dem Auslesen meiner IPv6 Adresse nicht weiterkomme, und ich denke, dass es in diesem Thread gut als Ergänzung zu den IPv4 Adressen dienen kann.

Anbei meine Konfiguration von HTTPMOD:

defmod myIPv6 HTTPMOD http://v6.ident.me/ 86400
attr myIPv6 userattr reading01Name reading01Regex
attr myIPv6 reading01Name IP
attr myIPv6 reading01Regex (?<=<pre>)([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])
attr myIPv6 stateFormat IP


Mit dem Regex wird mit unter https://regex101.com/ auch das gewünschte Ergebnis ausgegeben, allerdings bekomme ich kein Reading angezeigt.
Kann mir ggf. jemand einen kleinen Wink geben, woran es liegen könnte?

Vielen Dank für eure Unterstützung und viele Grüße

Thorsten
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 18:43:25
Hallo Thorsten,

wenn Du einfach attr myIPv6 reading01Regex .*nimmst? Die Seite liefert doch einfach die IP? Ohne jedes HTML

Konnte es jetzt nur mit v4 testen, da bei mir derzeit v6 nicht geht  :(

Gruß Otto
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 19:48:09
Hallo Otto,

vielen Dank für Deine Rückmeldung. Dein Vorschlag erzeugt leider auch kein Reading.

ich habe mal Verbose 5 eingeschaltet und habe folgende Einträge bei deiner Lösung im Log:

2022.02.13 19:45:05.890 5: myIPv6: set called with reread
2022.02.13 19:45:05.891 5: myIPv6: GetUpdate called (reread)
2022.02.13 19:45:06.045 5: myIPv6: AddToQueue adds type update to URL http://v6.ident.me/, no data, no headers, retry 0, initial queue len: 0
2022.02.13 19:45:06.045 5: myIPv6: HandleSendQueue called, qlen = 1
2022.02.13 19:45:06.046 4: myIPv6: HandleSendQueue sends update with timeout 2 to http://v6.ident.me/, No Data, No Header
2022.02.13 19:45:06.047 5: HttpUtils url=http://v6.ident.me/
2022.02.13 19:45:06.052 4: HttpUtils: gethostbyname v6.ident.me failed
2022.02.13 19:45:06.052 3: myIPv6: Read callback: Error: gethostbyname v6.ident.me failed
2022.02.13 19:45:06.053 4: myIPv6: Read callback: request type was update retry 0, no headers, no body
2022.02.13 19:45:06.053 5: myIPv6: Read callback: body empty
2022.02.13 19:45:06.053 4: myIPv6: Read found no charset header (bodyDecode was set to auto)
2022.02.13 19:45:06.054 5: myIPv6: GetCookies is looking for Cookies
2022.02.13 19:45:06.054 5: myIPv6: ExtractSid called, context reading, num
2022.02.13 19:45:06.055 4: myIPv6: no header to look for redirects
2022.02.13 19:45:06.055 5: myIPv6: CheckAuth decided no authentication required


vielleicht gibt das ja noch einen Aufschluss.

Edith:

ich habe gerade noch auf www.wieistmeineip.de rumprobiert. Mit der Lösung hier aus dem Thread bekomme ich zwar die IPv4 Adresse ausgegeben, aber mit derm nachfolgenden Regex:

(?<=<span id="ipv6-value">)([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])

bekomme ich zwar auf https://regex101.com/ wieder die richtige Ausgabe, aber das Reading wird wieder nicht richtig befüllt.

Danke und Gruß

Thorsten
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 20:11:05
erzeugt denn einfach der Link im Browser eine Ausgabe?
https://v6.ident.me/
erzeugt v4 eine Ausgabe?
https://v4.ident.me/

Wenn v6 keine Ausgabe erzeugt hat dein Netzwerk keinen ipv6 Zugang zum Internet.

Hat denn Dein FHEM IPv6?
Funktioniert das in der FHEM Kommandozeile?
{qx(wget -q -O - https://v4.ident.me/)}
Gleiches für IPv6
{qx(wget -q -O - https://v6.ident.me/)}

Alles ist Plain Text keine RegExp nötig meine ich: https://api.ident.me/
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 20:16:19
Zitat von: Otto123 am 13 Februar 2022, 20:11:05
erzeugt denn einfach der Link im Browser eine Ausgabe?
https://v6.ident.me/
erzeugt v4 eine Ausgabe?
https://v4.ident.me/

Ja und Ja. In beiden Fällen gibt es die korrekte Ausgabe der IP.

Zitat von: Otto123 am 13 Februar 2022, 20:11:05
Hat denn Dein FHEM IPv6?
Funktioniert das in der FHEM Kommandozeile?
{qx(wget -q -O - https://v4.ident.me/)}
Gleiches für IPv6
{qx(wget -q -O - https://v6.ident.me/)}

Alles ist Plain Text keine RegExp nötig meine ich: https://api.ident.me/

wenn ich die beiden Befehle in FHEM absetze passiert nichts und es wird nichts angezeigt.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 20:19:06
Dann setz mal einen simplen wget Befehl auf der Linux Kommandozeile Deines FHEM ab.
wget -v https://v4.ident.me/
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 20:28:59
Zitat von: Otto123 am 13 Februar 2022, 20:19:06
Dann setz mal einen simplen wget Befehl auf der Linux Kommandozeile Deines FHEM ab.
wget -v https://v4.ident.me/

Da kommt dann:

--2022-02-13 20:24:12--  https://v4.ident.me/
Resolving v4.ident.me (v4.ident.me)... 176.58.123.25
Connecting to v4.ident.me (v4.ident.me)|176.58.123.25|:443... connected.
ERROR: The certificate of 'v4.ident.me' is not trusted.
ERROR: The certificate of 'v4.ident.me' has expired.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 20:32:32
Du hast ein altes OS? Da stimmen die ca-certificates nicht mehr oder ssl zu alt?
Kannst ja auf die Schnelle mal ohne s probieren (http), aber auf Dauer geht das nicht.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 20:41:14
Zitat von: Otto123 am 13 Februar 2022, 20:11:05
erzeugt denn einfach der Link im Browser eine Ausgabe?
https://v6.ident.me/
erzeugt v4 eine Ausgabe?
https://v4.ident.me/

Wenn v6 keine Ausgabe erzeugt hat dein Netzwerk keinen ipv6 Zugang zum Internet.

Hat denn Dein FHEM IPv6?
Funktioniert das in der FHEM Kommandozeile?
{qx(wget -q -O - https://v4.ident.me/)}
Gleiches für IPv6
{qx(wget -q -O - https://v6.ident.me/)}

Alles ist Plain Text keine RegExp nötig meine ich: https://api.ident.me/

ok, wenn ich die beiden Befehle mit http ausführe, bekomme ich auch eine Rückmeldung.
Nur hatte ich von vorn herein den HTTPMOD mit http://v6.ident.me/ konfiguriert  :-\
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 20:46:12
eine Rückmeldung. - bedeutet was? Doch einfach die IP Adresse oder?
Klappt denn mein Vorschlag für HTTPMOD bei Dir für IPv4?
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 20:59:46
mittlerweile liefert mein HTTPMOD Device was ich vorhin zum Test angelegt habe nur noch eine 1. Vielleicht ist HTTPMOD für diese Aufgabe nicht das Richtige?
Da die Seite Plaintext Text liefert kann man das ja anders lösen? Ich bin unsicher.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 21:01:06
Sorry
mit Rückmeldung meinte ich, wenn ich die beiden Befehle in der FHEM Kommandozeile ausführe, bekomme ich mit dem http-Aufruf auch die richtigen IP-Adressen ausgegeben.

attr myIPv4 reading01Regex .*
bei einem neu angelegten HTTPMOD
defmod myIPv4 HTTPMOD http://v4.ident.me/ 86400
attr myIPv4 userattr reading01Name reading01Regex
attr myIPv4 reading01Name IP
attr myIPv4 reading01Regex .*


gibt nur eine "1" aus
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 21:05:41
Zitat von: Otto123 am 13 Februar 2022, 20:59:46
mittlerweile liefert mein HTTPMOD Device was ich vorhin zum Test angelegt habe nur noch eine 1. Vielleicht ist HTTPMOD für diese Aufgabe nicht das Richtige?
Da die Siete Plaintext Text liefert kann man das ja anders lösen? Ich bin unsicher.
genau ;)

Einen anderen Weg hatte ich schon versucht, ist vielleicht untergegangen, da ich den Post nachträglich editiert hatte:

...ich habe gerade noch auf www.wieistmeineip.de rumprobiert. Mit der Lösung hier aus dem Thread bekomme ich zwar die IPv4 Adresse ausgegeben und mit dem nachfolgenden Regex:

(?<=<span id="ipv6-value">)([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])

bekomme ich zwar auf https://regex101.com/ wieder die richtige Ausgabe, aber das Reading im HTTPMOD wird wieder nicht richtig befüllt.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: KölnSolar am 13 Februar 2022, 21:50:04
wär eigentlich ein use case für meinen UPNPController. Der service WANIPConn1 eines (vermutlich jeden) Routers(hier: Fritte) liefert bei Änderungen die events
2022.02.13 21:26:36 5: UPNPController: Received event: by 192.x.y.z_49000_3-zz-zz-zs-WANIPConn1 UPnP::ControlPoint::Service=HASH(0x5836018) $VAR1 = 'PortMappingNumberOfEntries';
$VAR2 = '0';
$VAR3 = 'PossibleConnectionTypes';
$VAR4 = 'IP_Routed';
$VAR5 = 'ConnectionStatus';
$VAR6 = 'Connected';
$VAR7 = 'ExternalIPv6Address';
$VAR8 = '';
$VAR9 = 'ExternalIPAddress';
$VAR10 = a.b.c.d';

2022.02.13 21:26:36 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event PortMappingNumberOfEntries not yet implemented
2022.02.13 21:26:36 4: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event details: $VAR1 = '0';

2022.02.13 21:26:36 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event PossibleConnectionTypes not yet implemented
2022.02.13 21:26:36 4: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event details: $VAR1 = 'IP_Routed';

2022.02.13 21:26:36 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event ConnectionStatus not yet implemented
2022.02.13 21:26:36 4: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event details: $VAR1 = 'Connected';

2022.02.13 21:26:36 5: UPNPController: UPNP_Controller: empty event ExternalIPv6Address found
2022.02.13 21:26:36 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event ExternalIPv6Address not yet implemented
2022.02.13 21:26:36 4: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event details: $VAR1 = '';

2022.02.13 21:26:36 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event ExternalIPAddress not yet implemented
2022.02.13 21:26:36 4: UPNPController: UPNP_Controller: uniqueDeviceName 192.x.y.z_49000_3-zz-zz event details: $VAR1 = 'a.b.c.d';

Müsste nur noch einer ein client-Modul schreiben.  ;)
(wäre recht einfach in Anlehnung an meinen DLNAController)
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Otto123 am 13 Februar 2022, 22:28:28
spartanischer Ansatz:
mit einem at einmal am Tag:
setreading myip IPv4 {(qx(wget -q -O - https://v4.ident.me/))};setreading myip IPv6 {(qx(wget -q -O - https://v6.ident.me/))}
myip ist ein dummy oder jedes andere Device.

Aber Thorsten: Du musst Dich um dein https problem kümmern!
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Grafkox am 13 Februar 2022, 23:29:49
Danke Otto, das sollte klappen.
Und um das HTTPS Thema kümmere ich mich auch.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Wernieman am 14 Februar 2022, 08:13:48
Wobei mich imLog immer noch wundert:
2022.02.13 19:45:06.052 4: HttpUtils: gethostbyname v6.ident.me failed
Das heust eigentlich, das die Namensauflösung nicht funktioniert. Hast Du im FHEM DNS gesetzt?
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: no_Legend am 29 April 2022, 13:36:56
Hallo Zusammen,

kann mir jemand erklären, wie ich nun eine IPv4 Adresse Abfragen kann?

Danke und Grüße Robert
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: CQuadrat am 29 April 2022, 13:55:29
z.B. so:


define myIP HTTPMOD https://www.wieistmeineip.de/ 3600
attr myIP DbLogExclude .*
attr myIP enableControlSet 1
attr myIP reading01Name IP
attr myIP reading01Regex (?s)Ihre IP-Adresse?.*strong>([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
attr myIP stateFormat IP


Damit wird stündlich abgefragt.

Und mit set myIP reread lässt sich der Wert manuell aktualisieren.
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: DeeSPe am 29 April 2022, 14:20:26
Noch Resourcen schonender geht es so, da hier kein HTML Gerüst geladen wird, sondern nur die reine IP als Text:
define myIP HTTPMOD http://icanhazip.com/ 3600
attr myIP enableControlSet 1
attr myIP event-on-change-reading IP
attr myIP reading01Name IP
attr myIP reading01Regex (\d.*\d)\n
attr myIP stateFormat IP
attr myIP webCmd reread


Gruß
Dan
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: no_Legend am 29 April 2022, 14:24:35
Zitat von: DeeSPe am 29 April 2022, 14:20:26
Noch Resourcen schonender geht es so, da hier kein HTML Gerüst geladen wird, sondern nur die reine IP als Text:
define myIP HTTPMOD http://icanhazip.com/ 3600
attr myIP enableControlSet 1
attr myIP event-on-change-reading IP
attr myIP reading01Name IP
attr myIP reading01Regex (\d.*\d)\n
attr myIP stateFormat IP
attr myIP webCmd reread


Gruß
Dan

Danke funktioniert auf anhieb.

Danke und Grüße Robert
Titel: Antw:Externe IP herausfinden und anzeigen
Beitrag von: Wernieman am 29 April 2022, 16:24:37
Hätte da auch noch 2 Vorschläge
defmod Get_IP_1 HTTPMOD http://ip-api.com/json/?fields=status,reverse,isp,query 300
attr Get_IP_1 event-on-change-reading .*
attr Get_IP_1 extractAllJSON 1
attr Get_IP_1 room System
attr Get_IP_1 stateFormat query

Mit status,reverse,isp,query kann man auch die Parameter Angeben, reine IP währe nur query (Doku auf der Webside)

Alternativ von einem anderen Anbieter
defmod Get_IP_2 HTTPMOD http://checkip.dyndns.com/ 300
attr Get_IP_2 event-on-change-reading .*
attr Get_IP_2 reading01Name IP
attr Get_IP_2 reading01Regex Current IP Address: ([\d\.]+)
attr Get_IP_2 room System
attr Get_IP_2 stateFormat IP


Aber gibt bestimmt noch mehr .... und alle besser als https://www.wieistmeineip.de