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?
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
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?
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.
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.
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
Ok, sollte in Verbindung mit einem watchdog dann ja tun.
Probier ich aus.
Danke!
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
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.