FHEM Forum

FHEM => Automatisierung => Thema gestartet von: CarlosTT am 18 Juni 2018, 12:14:32

Titel: [gelöst]watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: CarlosTT am 18 Juni 2018, 12:14:32
Hallo,
ich versuche einen watchdog aufzusetzen, um mitzubekommen, wenn die Fritzbox die IP-Connectivity verliert. Dafür werte ich das reading box_ipExtern aus.

Der Trigger über RE1 (siehe code) funktioniert,

defmod IpConnectionLost watchdog FritzBox.box_ipExtern:.- 00:02 FritzBox.box_ipExtern:.\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b setstate IpConnection defined;; set IpConnect lost;; {my $timestamp = sprintf("%02d.%02d.%04d %s IP Connectivity Fritzbox unterbrochen", $mday, $month, $year, $hms);;;;  DebianMail('carlos@t-online.de','FHEM Info: IP Connect lost',$timestamp)}


aber die zweite Expression (mit einem separaten watchdog)

RE2
FritzBox.box_ipExtern:.\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b


löst nicht aus.

Werden die Platzhalter nicht ausgewertet?
Wenn ich konkrete IP-Adressen (z.B .217.* ) einsetze, dann wird der watchdog auch getriggered.
Irgendeine Idee?
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: Otto123 am 18 Juni 2018, 13:47:43
Hi,

ich habe eine umfangreiche Diskussion dazu gefunden :)
https://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp

Die Frage ist: muss man es so genau machen? Reicht es nicht wenn man weiß die Verbindung ist weg und eben wieder da? Ansonsten liefert der dritte Treffer von der Suche nach box_ipExtern ein ähnliches Thema.

Gruß Otto
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: rudolfkoenig am 18 Juni 2018, 14:44:01
ZitatWerden die Platzhalter nicht ausgewertet?
Was genau meinst du mit Platzhalter?
watchdog prueft ^$RE1$ oder ^$RE2$, je nach internen Status.
Was genau wolltest du mit \b erreichen?
Bist du sicher, dass bei den Regexps der erste Punkt (.) notwendig ist?
Kannst du bitte die Events zeigen?
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: CarlosTT am 18 Juni 2018, 16:57:10
Ich meinte die reguläre expression für die Auslösung (bzw. im Codebeispiel für die Rücksetzung des watchdog).

Events sehen so aus:


2018-06-18_08:02:06 FritzBox box_ipExtern: 217.245.141.14
2018-06-18_11:47:06 FritzBox box_ipExtern: -
2018-06-18_11:52:06 FritzBox box_ipExtern: 217.245.134.82


Es würde auch ein Status der IP-Verbindung reichen, hab ich aber in den readings nicht gefunden.
Wenn ich auf .217 trigger, funktioniert es.
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: CarlosTT am 18 Juni 2018, 17:16:35
Zitat von: Otto123 am 18 Juni 2018, 13:47:43
Hi,

ich habe eine umfangreiche Diskussion dazu gefunden :)

Gruß Otto
Danke - aus den unterschiedlichen Diskussionen zur Validierung von IP-Adressen hab ich auch die regexp (überprüft mit einem Online-Tool). Nur scheinbar passt es nicht.
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: Otto123 am 18 Juni 2018, 21:03:46
Zitat von: CarlosTT am 18 Juni 2018, 16:57:10
Es würde auch ein Status der IP-Verbindung reichen, hab ich aber in den readings nicht gefunden.
Ich habe das so gemacht:attr FB7412 userReadings online {(ReadingsVal($name,"box_ipExtern", "") eq "-") ? 0:1}, onlineB {ReadingsVal($name,"box_ipExtern", "") ne "-"}
https://forum.fhem.de/index.php/topic,87081.msg795212.html#msg795212
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: CarlosTT am 18 Juni 2018, 21:41:04
Ok, sollte in Verbindung mit einem watchdog dann ja tun.
Probier ich aus.
Danke!
Titel: Antw:watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: rudolfkoenig am 19 Juni 2018, 09:07:29
Ich habs versucht nachzustellen, und ich sehe keine Probleme. Siehe den angehaengten Protokoll:

# Vorbereitung
fhem> define FritzBox dummy
fhem> attr FritzBox setList box_ipExtern:
fhem> attr FritzBox readingList box_ipExtern:
fhem> defmod IpConnectionLost watchdog FritzBox.box_ipExtern:.- 00:00:15 FritzBox.box_ipExtern:.\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b trigger FritzBox huhu
fhem> list IpConnectionLost STATE
IpConnectionLost         defined
fhem> info timer

# Test ausloesen
fhem> set FritzBox box_ipExtern: -
2018-06-19 09:00:58 dummy FritzBox box_ipExtern: -
fhem> list IpConnectionLost STATE
IpConnectionLost         Next: 09:01:13
# ... 15s warten...
2018-06-19 09:01:13 dummy FritzBox huhu
fhem> list IpConnectionLost STATE
IpConnectionLost         triggered

# Test nicht ausloesen
fhem> setstate IpConnectionLost defined
fhem> set FritzBox box_ipExtern: -
2018-06-19 09:02:38 dummy FritzBox box_ipExtern: -
fhem> list IpConnectionLost STATE
IpConnectionLost         Next: 09:02:53
fhem> set FritzBox box_ipExtern: 128.1.1.1
2018-06-19 09:02:48 dummy FritzBox box_ipExtern: 128.1.1.1
fhem> list IpConnectionLost STATE
IpConnectionLost         defined
Titel: [gelöst]watchdog: Gültige IP-Adresse der Fritzbox abfragen
Beitrag von: CarlosTT am 23 Juni 2018, 15:52:51
Danke,
hab's zuerst sicherheitshalber auch mit einem dummy getestet, danach mit der FritzBox: jetzt funktioniert auch die reguläre expression mit einer gültigen IP-Adresse.

Auch die Möglichkeit mit einem user Reading kann man so auswerten.
Hab nur die Erklärung, daß es mit der  event-on-change Reading Einstellung zusammenhing.

Die eigentliche Idee, die FritzBox für eine Minute stromlos zu schalten, läßt sich allerdings so einfach dann doch nicht umsetzen ... der HMLAN hat dann leider auch keine Verbindung zum NAS mehr. Somit kann ich zwar über den Funkaktor ausschalten, aber nicht mehr ein.

Bin gerade fündig geworden, über die internen Register und simuliertem Short press läßt sich ein Funkaktor auch ohne Zentrale für x Sekunden ausschalten - bin noch am testen.