Hallo zusammen,
ich möchte gerne mit OpenHab meine Internetverbindung überwachen und im Fehlerfall per schaltbarer Steckdose das Modem einmal aus und nach 10 Sekunden wieder einschalten.
Habt ihr eine Idee wie ich das realisieren kann?
Viele Grüße
Sascha
Status der Internetverbindung
- udo1toni
- Beiträge: 15243
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Status der Internetverbindung
Du kannst dafür das Network Binding nutzen und eine externe IP anpingen. Es bietet sich an, dazu eines der Gateways zu nutzen, die Dein Provider Dir zuweist (kannst Du über einen Trace Befehl herausfinden). Wenn Du ein Gerät gefunden hast, welches pingbar ist, legst Du ein Thing an, welches regelmäßig ein Ping anfordert (meinetwegen alle 60 Sekunden) und wenn dieses auf OFF springt, löst Du eine Rule aus, die den Reset ausführt. Z.B. so:
Je nach verwendetem Modem gibt es evtl. auch eine bessere Möglichkeit, den Zustand zu erfassen. Ich habe z.B. ein Vigor 165 und betreibe es als reines Modem vor einer OpnSense. Ich habe zusätzlich zum PPPoE noch eine WAN-DMZ eingerichtet, über welche ich die Weboberfläche des Modems erreichen kann. Zusätzlich habe ich eine Portfreigabe eingerichtet, so dass das Vigor sein Syslog an einen Syslog Server senden kann. Der Syslog Server ist fester Bestandteil jeder GNU/Linux Distribution und muss nur aktiviert werden. Fortan werden alle empfangenen Logs in einem extra Verzeichnis für den Host abgelegt.
Auf dem Rechner, auf dem der Syslog Server läuft, habe ich noch ein Python Script als Service laufen, welches das Syslog vom Modem überwacht und bei ankommenden Logs diese unverzüglich per MQTT versendet.
Ab dieser Stelle ist es nur noch eine Fingerübung
Lohn der Arbeit: Ich kann meinem Provider jeden Verbindungsabbruch nachweisen, mitsamt ausgehandelter Geschwindigkeiten
Ich habe Super Vectoring mit nominell 250/40 MBit/s, wobei ich im Schnitt etwa 205/42 MBit/s erreiche, was top ist. Leider habe ich aber auch Tage, an denen ich bis zu 25 Verbindungsabbrüche habe, und mit VoIP als einzige Telefonverbindung ist das völlig inakzeptabel...
Nun ja, Glasfaser ist bestellt und wird hoffentlich noch dieses Jahr ausgebaut...
(ganz am Rande... vorher hatte ich 100/40, da gab es auch schon die gleichen Probleme, und selbst als es noch DSL mit 16/(ähh... 1,5?) war, war die Verbindung immer mal wieder gestört. Aber damals lief Telefon noch über ISDN und war nur zweimal mit betroffen, und bei der ISDN-Störung kam die Telekom innerhalb eines Arbeitstages und reparierte den Anschluss...)
Code: Alles auswählen
rule "Reset Modem"
when
Item InternetPing changed from ON to OFF
then
if(tModemReset !== null) // Rule wurde doppelt getriggert,
return; // also Abbruch
tModemReset = createTimer(now,[
if(ModemPower.state == OFF) {
ModemPower.sendCommand(ON)
tModemReset = null
} else {
ModemPower.sendCommand(OFF)
tModemReset.reschedule(now.plusSeconds(10))
}
])
end
Auf dem Rechner, auf dem der Syslog Server läuft, habe ich noch ein Python Script als Service laufen, welches das Syslog vom Modem überwacht und bei ankommenden Logs diese unverzüglich per MQTT versendet.
Ab dieser Stelle ist es nur noch eine Fingerübung

Lohn der Arbeit: Ich kann meinem Provider jeden Verbindungsabbruch nachweisen, mitsamt ausgehandelter Geschwindigkeiten

Nun ja, Glasfaser ist bestellt und wird hoffentlich noch dieses Jahr ausgebaut...
(ganz am Rande... vorher hatte ich 100/40, da gab es auch schon die gleichen Probleme, und selbst als es noch DSL mit 16/(ähh... 1,5?) war, war die Verbindung immer mal wieder gestört. Aber damals lief Telefon noch über ISDN und war nur zweimal mit betroffen, und bei der ISDN-Störung kam die Telekom innerhalb eines Arbeitstages und reparierte den Anschluss...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet