Hallo,
mein Router kann sich ab und an nicht mehr mit dem Internet verbinden und muss dann neu gestartet werden. Über das WLAN ist intern noch alles erreichbar, also auch die CCU, aber extern ist kein Netz vorhanden. Meine Idee ist nun, dies automatisiert zu erkennen und zu beheben.
Der Ansatz dazu: Es wird geprüft, ob bestimmte Server über Ping erreichbar sind. Wenn dies innerhalb von 2 Minuten nicht klappt, erhält die Router-Steckdose den Befehl "Aus" und nach 10 Sekunden den Befehl "An".
Ich habe nur leider gar keine Idee, wie man das realisieren kann. Könnt ihr helfen?
Danke, Henning
Steckdose schalten, wenn kein Internet mehr
Moderator: Co-Administratoren
-
- Beiträge: 2
- Registriert: 11.02.2018, 20:39
- eiGelbGeek
- Beiträge: 979
- Registriert: 24.07.2014, 17:46
- Wohnort: Ruhrpottrandgebiet
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 19 Mal
Re: Steckdose schalten, wenn kein Internet mehr
CUxD und ein kleines CCU Programm....
CUxD zum pingen von z.b. www.google.de
Wenn Ping Ein oder Aus (auf Aktualisierung) dann verzögert um 120 Sekunden Steckdose aus. und nach 130 Sekunden wieder ein...
Gesendet von iPhone mit Tapatalk
CUxD zum pingen von z.b. www.google.de
Wenn Ping Ein oder Aus (auf Aktualisierung) dann verzögert um 120 Sekunden Steckdose aus. und nach 130 Sekunden wieder ein...
Gesendet von iPhone mit Tapatalk
Nur weil es nicht geht, muss es nicht kaputt sein ^^
Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire
Apple for Work, Linux for Network, iOS for Mobility and still Windows for Solitaire
- Roland M.
- Beiträge: 9804
- Registriert: 08.12.2012, 15:53
- System: CCU
- Wohnort: Graz, Österreich
- Hat sich bedankt: 252 Mal
- Danksagung erhalten: 1381 Mal
Re: Steckdose schalten, wenn kein Internet mehr
Hallo Henning, willkommen im Forum!
Du suchst das AddOn CUxD!
Dort gibt es ein virtuelles Gerät, das nur pingt und einen Ausgang entsprechend "schaltet".
Bei mir schaut dann ein Programm zur Überwachung einer VPN-Verbindung beispielsweise so aus:
Roland
Du suchst das AddOn CUxD!
Dort gibt es ein virtuelles Gerät, das nur pingt und einen Ausgang entsprechend "schaltet".
Bei mir schaut dann ein Programm zur Überwachung einer VPN-Verbindung beispielsweise so aus:
Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
- Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
- Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
- Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
- Fehlermeldungen genau abschreiben, besser noch...
- Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
Re: Steckdose schalten, wenn kein Internet mehr
Moin!
Das Problem hatte ich seinerzeit auch, als in meinem Ferienhaus noch kein stabiles Internet vorhanden war und ich die CCU1 per Funk angebunden hatte. Wenn dann der Router verstarb, konnte ich die Bude nicht mehr vorheizen, bevor wir hinfuhren. Das war ausgesprochen ärgerlich. Mittlerweile habe ich 'ne Glasfussel am Standort und brauche keine Neustarts mehr. Deshalb habe ich die ganzen Programme dafür zwar aus der RaspberryMatic entfernt, aber noch aufbewahrt - vielleicht braucht man sowas mal wieder...
Ich versuche mal, alles notwendige hier zusammenzutragen. Sicherlich kann man das auch weniger aufgebohrt machen und Script-Füchse können das sicherlich auch deutlich schlanker umsetzen, aber ich bitte zu bedenken, dass das ganze vor ewigen Zeiten entstanden ist und damals schon auf einer CCU1 zuverlässig lief!
Benötigte Geräte:
Benötigte Variablen (ich hoffe, ich habe alle erwischt):
Router.CheckSteckdose
=====================
Wenn bei ansonsten ganz normaler Situation die Steckdose "Setckdose.Router" ausgeschaltet ist, wird sie eingeschaltet und eine Meldung gesendet.
Dann muss ein Stromausfall vorgelegen haben... Router.ConnectionAgain
======================
Wenn alle drei Pings erfolgreich und die Var "Router.Connection" = 0 (also auf "Connection weg"), dann Var "Router.Connection" auf 1 setzen,
Info senden, Var "Router.ResetCounter" auf 1 setzen und Zeitstempel in "Router.TimeConnection" packen Router.NeustartAlarm
====================
Wenn Var "Router.ResetSwitch" = 1 (also Kennzeichen "mach mal einen Neustart!" gesetzt) und die Verbindung weiterhin nicht vorhanden (weil "Router.Connection" = 0)
dann: Script ausführen, in dem zunächst der aktuelle Zeitpunkt gemerkt wird, dann die Var für die Anzahl der wöchentlichen Resets hochgesetzt wird.
Dann die Steckdose ausschalten, Var "Router.ResetSwitch" auf 0 setzen und nach 10 Sekunden die Steckdose neu starten. Router.NeustartWöchentlich
==========================
Jeden Donnerstag um 4:15 einfach mal prophylaktisch den Router neu starten... Router.NoConnection
===================
Die eigentlich wichtigste Routine: Wenn alle drei PINGs daneben gehen, dann wird "Router.ResetCounter" alle 5 Minuten um 1 hochgezählt und nach 5 Minuten wieder getestet, ob die Verbindung mittlerweile wieder da ist. Erst, wenn "Router.ResetCounter" 6 ist, wird das Kennzeichen "Router.ResetSwitch" auf 1 gesetzt und damit der Reset tatsächlich ausgelöst. Damit wird ein ständiger Neustart verhindert, weil der Router noch 30 Minuten die Chance hat, sich zu "berappeln". Erst, wenn nach 30 Minuten immer noch nichts geht, wird tatsächlich auf den Knopf gedrückt. Hier nochmal das Script als Text:
Router.Set.ResetsWeek.ToZero
============================
Setzt den Zähler für die Resets innerhalb einer Woche auf 0 Vielleicht hilft es ja Dir oder jemand anderem!?
Wenn noch was unklar ist, gerne fragen...
Grüße,
Martin
Das Problem hatte ich seinerzeit auch, als in meinem Ferienhaus noch kein stabiles Internet vorhanden war und ich die CCU1 per Funk angebunden hatte. Wenn dann der Router verstarb, konnte ich die Bude nicht mehr vorheizen, bevor wir hinfuhren. Das war ausgesprochen ärgerlich. Mittlerweile habe ich 'ne Glasfussel am Standort und brauche keine Neustarts mehr. Deshalb habe ich die ganzen Programme dafür zwar aus der RaspberryMatic entfernt, aber noch aufbewahrt - vielleicht braucht man sowas mal wieder...
Ich versuche mal, alles notwendige hier zusammenzutragen. Sicherlich kann man das auch weniger aufgebohrt machen und Script-Füchse können das sicherlich auch deutlich schlanker umsetzen, aber ich bitte zu bedenken, dass das ganze vor ewigen Zeiten entstanden ist und damals schon auf einer CCU1 zuverlässig lief!
Benötigte Geräte:
- - Schaltbare Steckdose "Steckdose.Router"
- Ping1, Ping2, Ping3 -> CUXD-Ping-Geräte, die alle 15 Minuten einen DNS von der Telekom, einen DNS von Google und einen DNS vom eigene Provider abfragen
Benötigte Variablen (ich hoffe, ich habe alle erwischt):
- - Router.Steckdose.Status Boolean "normal"/ "" Aktueller Status der Steckdose
- Router.Connection Boolean 0 / 1 Verbindung da oder nicht
- Router.ResetCounter Zahl Zähler für die Verbindungsabbrüche. Erst bei 5 Versuchen wird neu gestartet
- Router.TimeConnection String Zeitstempel letzter korrekter Verbindungsaufbau nach Unterbrechung
- Router.ResetSwitch Boolean 0 / 1 Es wird ein Reset durchgeführt (=1), sonst 0
- Router.LastReset Zeichenkette Zeitstempel letzter Reset
- Router.ResetsWeek Zahl Anzahl Resets in der Woche
- Router.TimeNoConnection Zeichenkette Zeitstempel der Uhrzeit des Verbindungsausfalls
- CurrentTimeStamp Zeichenkette zum zwischendurch "Aktuelle Uhrzeit merken"
Router.CheckSteckdose
=====================
Wenn bei ansonsten ganz normaler Situation die Steckdose "Setckdose.Router" ausgeschaltet ist, wird sie eingeschaltet und eine Meldung gesendet.
Dann muss ein Stromausfall vorgelegen haben... Router.ConnectionAgain
======================
Wenn alle drei Pings erfolgreich und die Var "Router.Connection" = 0 (also auf "Connection weg"), dann Var "Router.Connection" auf 1 setzen,
Info senden, Var "Router.ResetCounter" auf 1 setzen und Zeitstempel in "Router.TimeConnection" packen Router.NeustartAlarm
====================
Wenn Var "Router.ResetSwitch" = 1 (also Kennzeichen "mach mal einen Neustart!" gesetzt) und die Verbindung weiterhin nicht vorhanden (weil "Router.Connection" = 0)
dann: Script ausführen, in dem zunächst der aktuelle Zeitpunkt gemerkt wird, dann die Var für die Anzahl der wöchentlichen Resets hochgesetzt wird.
Dann die Steckdose ausschalten, Var "Router.ResetSwitch" auf 0 setzen und nach 10 Sekunden die Steckdose neu starten. Router.NeustartWöchentlich
==========================
Jeden Donnerstag um 4:15 einfach mal prophylaktisch den Router neu starten... Router.NoConnection
===================
Die eigentlich wichtigste Routine: Wenn alle drei PINGs daneben gehen, dann wird "Router.ResetCounter" alle 5 Minuten um 1 hochgezählt und nach 5 Minuten wieder getestet, ob die Verbindung mittlerweile wieder da ist. Erst, wenn "Router.ResetCounter" 6 ist, wird das Kennzeichen "Router.ResetSwitch" auf 1 gesetzt und damit der Reset tatsächlich ausgelöst. Damit wird ein ständiger Neustart verhindert, weil der Router noch 30 Minuten die Chance hat, sich zu "berappeln". Erst, wenn nach 30 Minuten immer noch nichts geht, wird tatsächlich auf den Knopf gedrückt. Hier nochmal das Script als Text:
Code: Alles auswählen
! Akt. Zeit speichern in "Router.TimeNoConnection"
string timestampString = system.Date("%d.%m.%Y - %H:%M:%S");
string CurrTimeString1 = dom.GetObject("Router.TimeNoConnection");
CurrTimeString1.State(timestampString);
! "TimeConnection" löschen
string CurrTimeString2 = dom.GetObject("Router.TimeConnection");
CurrTimeString2.State("------");
! Akt. Zeit speichern in "CurrentTimeStamp"
integer timestamp = system.Date("%F %X").ToTime().ToInteger();
integer CurrTime = dom.GetObject("CurrentTimeStamp");
CurrTime.State(timestamp);
! Diff. aus LastReset - CurrTime berechnen
integer Reset = dom.GetObject("Router.LastReset");
integer CurrTime = dom.GetObject("CurrentTimeStamp");
integer Delta = dom.GetObject("Router.TimeSinceLastReset");
Delta.State(CurrTime.State() - Reset.State());
integer ResetItNow = dom.GetObject("Router.ResetSwitch");
integer Counter = dom.GetObject("Router.ResetCounter");
string InfoZeile = dom.GetObject("Info");
string text;
if (Delta.State() >= (300.00 * Counter.State()))
{
text = 300.00 * Counter.State();
InfoZeile.State("Letzte Wartezeit auf den Neustart: " # text # " Sekunden");
if (Counter.State() < 6.0)
{
Counter.State(Counter.State() + 1.0);
}
text = Counter.State() * 300.00;
InfoZeile.State("Neustart wird jetzt durchgefuehrt. Dann ggfls. nächster Neustart in weiteren " # text # " Sekunden");
ResetItNow.State(1);
}
else
{
ResetItNow.State(0);
}
============================
Setzt den Zähler für die Resets innerhalb einer Woche auf 0 Vielleicht hilft es ja Dir oder jemand anderem!?
Wenn noch was unklar ist, gerne fragen...
Grüße,
Martin
-
- Beiträge: 2
- Registriert: 11.02.2018, 20:39
Re: Steckdose schalten, wenn kein Internet mehr
Ganz herzlichen Dank erst einmal an alle, die mir mit den Antworten oben geholfen haben! Einiges ist noch sehr komplex für mich, das werde ich mir in den nächsten Tagen und Wochen erarbeiten. Tolles Forum!