Hallo Zusammen,
wie der Betreff schon sagt: Wie bringe ich dem PI bei, wenn das LAN weg ist (Stromausfall) automatisch meinen Huawei Surfstick (E3372) fürs versenden von fhem Meldungen (per email) zu nutzen?
Mein PI läuft im Falle von Netzausfall über einen Akku weiter. Wenn der Strom weg ist, ist logischerweise auch die LAN Verbindung weg + Internet.
Das kann ich ja sehr leicht per ping in regelmäßigen Abständen abfragen. Aber wie bringe ich den PI dann dazu, die Mobilfunkverbindung aufzubauen und dann später auch wieder zu trennen?
Gruß
Jens
Überraschend gibt es dazu realtiv wenig im Internet - oder ich habe nicht richtig gesucht..
Man findet relativ viel bezüglich installation des 3g/4g-USB-Modems, aber nicht den Failover-Falles - insbesondere der automatische Wechsel von LAN auf das USB Modem.
Du könntest noch nach Load-Balancing oder Bonding suchen, dies würde aber bedeuten, dass der Internetstick permanent online ist.
Über die allbekannte Suchmaschine habe ich sowas finden können (teilw. schon sehr alt):
https://www.raspberrypi.org/forums/viewtopic.php?t=164663
https://www.raspberrypi.org/forums/viewtopic.php?t=190620
https://github.com/adrianmihalko/rpiltehotspot/
http://my-techno-arena.blogspot.com/2015/09/raspberry-pi2-as-router-with-network.html
https://www.jethrocarr.com/2017/07/23/failberrypi-diverse-carrier-links-for-your-home-data-center/
https://community.ui.com/questions/LTE-USB-modem-as-WAN2-failover-with-Raspberry-Pi/bbceb481-c9fa-4f32-a89a-a9b92455cb01
Schade, dass deine Fritte nicht teil des Notstroms ist - die kann das wohl automatisch (https://avm.de/service/fritzbox/fritzbox-7590/wissensdatenbank/publication/show/76_FRITZ-Box-fur-Internetzugang-uber-Mobilfunk-LTE-UMTS-einrichten/).
Zitat von: yersinia am 24 Juli 2019, 14:22:33
Überraschend gibt es dazu realtiv wenig im Internet - oder ich habe nicht richtig gesucht..
Ich habe dazu auch nicht viel gefunden. Ans laufen habe ich den Stick gebracht und konnte auch ins Netz damit bzw SMS verschicken.
Ich werden mir jetzt einen E8372 besorgen, der fungiert gleichzeitig als WIFI Router.
Da muß ich dem PI nur irgendwie beibringen, auf das WLAN des E8272 zu schalten sobald LAN weg ist und wieder zurück.
Er soll ja nicht dauernd online über den LTE/WIFI Router sein, sondern nur im Falle wenn LAN nicht da ist.
Da finde ich aber bisher auch nichts entsprechendes.
Gruß
Jens
ifconfig wlan0 up
Evtl. mit sudo...
Und ausschalten wieder mit:
ifconfig wlan0 down
Evtl. heißen die Schnittstellen (ab Stretch) auch anders, dann vorher das herausfinden oder die "simple" Namensgebung von Netzwerken reaktivieren ;)
Gruß, Joachim
@MadMax-FHEM: das wäre in der Tat auch der Weg für das USB Modem. Es stellt sich allerdings die Frage, wie der RasPi selbstständig die Verbindung wechselt. Also wenn eth0 keine Verbindung mehr hat, dann wechsel auf wlan0 bzw usbirgendwas (für das Modem). Wenn Verbindung wieder da, wechsel zurück.
Das könnte man dann mit einem Script lösen, denke ich. Aber dafür fehlen mir die Kenntnisse.
Möglicherweise könnte man das auch basierend auf die USV Einschaltung machen (der RasPI müsste ja auch das Signal zum shutdown bekommen, wenn Stromzufuhr weg).
Zitat von: Jens_B am 24 Juli 2019, 16:01:45
Ans laufen habe ich den Stick gebracht und konnte auch ins Netz damit bzw SMS verschicken.
Versuche den Stick mal als Modem zu konfigurieren (-> usb-modeswitch), dann stellt dieser auch eine Internetverbindung her. SMS verschicken und Internetverbindung sind mMn zwei verschiedene Sachen (kann aber auch irren).
Wenn du mal weißt wie es läuft und wie (per Linux Console) umgeschalten werden kann...
...wobei wenn es so ist wie beschrieben: Verbindung via WLAN, dann sollten die genannten Befehle ja passen...
...ansonsten halt nennen was geht...
Kriegt man dann schon hin...
Man kann auch ein Presence auf z.B. google.de machen und bei "absent" umschalten...
Oder USV...
Oder...
Oder...
Gruß, Joachim
Wie ich per bash prüfe ob der PI noch ne Verbindung habe bekomme ich ja in etwa so hin:
#!/bin/bash
# The IP for the server you wish to ping (8.8.8.8 is a public Google DNS server)
SERVER=192.168.178.1
# Only send 5 pings, sending output to /dev/null
ping -c5 ${SERVER} > /dev/null
# If the return code from ping ($?) is not 0 (meaning there was an error)
if [ $? != 0 ]
then
echo "Start the wireless interface"
echo "$(date): No Ethernet connection, starting wlan0" >> /var/log/checkwifi.log
ifup wlan0
else
ifdown wlan0
echo "$(date): connection ok" >> /var/log/checkwifi.log
fi
ZitatMöglicherweise könnte man das auch basierend auf die USV Einschaltung machen (der RasPI müsste ja auch das Signal zum shutdown bekommen, wenn Stromzufuhr weg).
Da der PI mit dem Akku ca.4 Stunden läuft, habe ich das Script für diesen Fall noch nicht gebastelt. Hätte also erstmal keine Priorität.
Ich werde mich damit wohl mit dem Ganzen noch mal intensiver befassen, wenn es nicht so warm ist ;-)
Dann kannst du entweder alles in dem Script machen und das bei Boot starten...
...es geht auch ein Presence-Device in fhem und dann bei "absent" nur ein Script zu rufen (oder direkt den "shell-Befehl") welches dann die Umschaltung macht...
Aber stimmt, erst mal etwas Abkühlung... ;)
Gruß, Joachim
Zitat von: MadMax-FHEM am 25 Juli 2019, 13:23:52
Dann kannst du entweder alles in dem Script machen und das bei Boot starten...
...es geht auch ein Presence-Device in fhem und dann bei "absent" nur ein Script zu rufen (oder direkt den "shell-Befehl") welches dann die Umschaltung macht...
Aber stimmt, erst mal etwas Abkühlung... ;)
Gruß, Joachim
Prsence device lan-pin hab ich mir erstellt.. Ich denke ich könnte es dann so laufen lassen, das über notify von fhem aus (bei "absent") ein bashscript aufgerufen wird was das WLAN interface startet und bei "present" wieder beendet... So könnte es klappen.
Allerdings hab ich gerad auf dem PI noch ein anderes Problem, ich bekomme das WLAN interface nicht an den Start...
Ich habe im wpa_supplicant alles eingetragen... Aber er verbindet sich partout nicht... auch das werde ich noch rausbekommen...
was spricht dagegen, den watchdog des raspi zu benutzen? Der kann u.a. auch einzelne Schnittstellen überwachen und im Fehlerfall Skripte starten.
eigentlich nix... ganz ehrlich... ich habe mich mit dem watchdog noch nicht befaßt.
Muß der erst aktiviert/installier werden? Wie spreche ich ihn an?
Ich hatte das bisher immer so interpretiert, das man damit im Falle eines Fehlers nur einen reboot auslösen kann...
Edit: Also gut mal eben schnell
apt-get install watchdog gemacht -...
die config Datei unter "/etc/watchdog.conf"
folgendermaßen eingerichtet:
interface = eth0
# timeout [sec] until reboot
retry-timeout = 60
# an internet or local address to test, for example 192.168.0.1
ping = 192.168.178.1
# interval [sec] of testing the connectivity
interval = 15
Jetzt würde der PI also neu booten, wenn er keinen Ping mehr von 192.168.178.1 bekommt, das ist ja aber nicht das gewollte verhalten.
Zitat von: Jens_B am 25 Juli 2019, 15:52:32
Ich hatte das bisher immer so interpretiert, das man damit im Falle eines Fehlers nur einen reboot auslösen kann...
...
Jetzt würde der PI also neu booten, wenn er keinen Ping mehr von 192.168.178.1 bekommt, das ist ja aber nicht das gewollte verhalten.
Du solltest nicht interpretieren, sondern die ganze Dokumentation zum Watchdog lesen (es ist wirklich nicht viel zu lesen...), da lässt sich noch mehr konfigurieren, als ein simpler reboot.
https://linux.die.net/man/5/watchdog.conf
Die relevanten Stichworte sind "test-directory" "test-binary" "repair-binary"
Es gibt hier im Forum auch irgendwo schon Beispiel-Scripte.
Zitat von: betateilchen am 25 Juli 2019, 17:54:47
Du solltest nicht interpretieren, sondern die ganze Dokumentation zum Watchdog lesen (es ist wirklich nicht viel zu lesen...), da lässt sich noch mehr konfigurieren, als ein simpler reboot.
https://linux.die.net/man/5/watchdog.conf
Die relevanten Stichworte sind "test-directory" "test-binary" "repair-binary"
Es gibt hier im Forum auch irgendwo schon Beispiel-Scripte.
Wie gesagt, ich habe mich mit dem watchdog noch nicht ausführlich befasst. interpretiert in meinem Falle=verstehen... also einfach falsch verstanden...
interface = eth0
# execute binary in case of error
repair-binary = /usr/local/bin/wifi_start.sh
# an internet or local address to test, for example 192.168.0.1
ping = 192.168.178.1
# interval [sec] of testing the connectivity
interval = 15
würde jetzt also das wifi_start script ausführen (indem ich per shell das wifi starte).
Wenn das LAN jetzt wieder da ist, kann der watchdog aber nicht wieder zurückschalten?
Okay, wie gesagt ist mir jetzt schon zu warm... ;)
Naja, so ganz ist das immer noch nicht richtig.
Du solltest Dich entscheiden, ob Du das Interface überwachen willst ODER das ping Das Problem ist nämlich: sobald Dein raspberry auf Mobilfunk umschaltet, funktioniert das pingen einer lokalen IP ja sowieso nicht mehr und der watchdog würde sofort wieder ausgelöst.
In Deinem repair script musst Du die gesamte Logik unterbringen. Darin kannst Du prüfen, warum das script aufgerufen wurde, darin kannst Du z.B. auch per at (Achtung: Betriebssystem!) eine Minute später prüfen lassen, ob eth0 wieder verfügbar ist und dann wieder zurückschalten usw.
Zitat von: betateilchen am 26 Juli 2019, 12:36:13
Naja, so ganz ist das immer noch nicht richtig.
Du solltest Dich entscheiden, ob Du das Interface überwachen willst ODER das ping Das Problem ist nämlich: sobald Dein raspberry auf Mobilfunk umschaltet, funktioniert das pingen einer lokalen IP ja sowieso nicht mehr und der watchdog würde sofort wieder ausgelöst.
Das stimmt so nicht ganz ;-). Ich habe ja vor ein 2. WLAN zu nehmen, der Surfstick soll quasi ein mobiler LTE Router sein.
Außerdem soll der PING ja nur prüfen ob das lokale lan wieder da ist.... Wenn ja soll er WLAN abschalten. Wenn nein nicht...
Zitat
In Deinem repair script musst Du die gesamte Logik unterbringen. Darin kannst Du prüfen, warum das script aufgerufen wurde, darin kannst Du z.B. auch per at (Achtung: Betriebssystem!) eine Minute später prüfen lassen, ob eth0 wieder verfügbar ist und dann wieder zurückschalten usw.
Ich überlege einfach folgendes ohne watchdog oder so zu machen, einfach per cronjob dieses script hier alle x (2?) Minuten auszuführen:
#!/bin/bash
# The IP for the server you wish to ping (8.8.8.8 for i.e. is a public Google DNS server)
SERVER=192.168.178.1
# Only send 10 pings, sending output to /dev/null
ping -c10 ${SERVER} > /dev/null
# If the return code from ping ($?) is not 0 (meaning there was an error)
if [ $? != 0 ]
then
echo "Start the wireless interface"
echo "$(date): No network connection, starting wlan0" >> /var/log/checkwifi.log
sudo ifconfig wlan0 up
else
sudo ifconfig wlan0 down
echo "$(date): LAN connection ok" >> /var/log/checkwifi.log
fi
Zitat von: Jens_B am 27 Juli 2019, 11:54:31
Außerdem soll der PING ja nur prüfen ob das lokale lan wieder da ist.... Wenn ja soll er WLAN abschalten. Wenn nein nicht...
Du hast das Prinzip immer noch nicht verstanden. Die Prüfbedingungen in der watchdog.conf sind nicht "UND" sondern "ODER"
interface = eth0
ping = 192.168.178.1
bedeutet: der watchdog löst jedesmal dann aus, wenn entweder das eth0 nicht verfügbar ist ODER die Adresse 192.168.178.1 nicht angepingt werden kann.
Zitat von: Jens_B am 27 Juli 2019, 11:54:31
Ich überlege einfach folgendes ohne watchdog oder so zu machen, einfach per cronjob dieses script hier alle x (2?) Minuten auszuführen:
Herzlichen Glückwunsch, Du versuchst grade, die Funktionalität des watchdog nachzubauen...
*kopfschüttel*
Zitat von: betateilchen am 28 Juli 2019, 11:44:19
Du hast das Prinzip immer noch nicht verstanden. Die Prüfbedingungen in der watchdog.conf sind nicht "UND" sondern "ODER"
interface = eth0
ping = 192.168.178.1
bedeutet: der watchdog löst jedesmal dann aus, wenn entweder das eth0 nicht verfügbar ist ODER die Adresse 192.168.178.1 nicht angepingt werden kann.
Herzlichen Glückwunsch, Du versuchst grade, die Funktionalität des watchdog nachzubauen...
*kopfschüttel*
Ja sorry, ich habe das tatsächlich nicht verstanden... Deshalb eben für mich der "einfache" Weg über das bashscript....
Hallo zusammen,
falls es von Interesse sein sollte: Ich habe mit zwischenzeitlich einen E8372 Stick von Huawei besorgt.
Den an den Pi angestöpselt und er wurde sofort als Netzwerkschnittstelle "eth1" erkannt. Mein PI hat die IP 192.168.8.100 bekommen. (Das WLAN des Sticks benötige ich nicht).
Der PI behandelt den Stick wie eine zusätzliche Netzwerkkarte. Ausschalten kann man den Stick über
sudo ifconfig eth1 down
Eingeschaltet wird über:
sudo ifconfig eth1 up
.
Ich nutze jetzt ein kleines bashscript, welches alle 2 Minuten abfragt ob einer meiner Netzwerkswitche noch erreichbar ist. Wenn nicht wird eth1 eingeschaltet. Das ganze ist als cronjob realisiert.
#!/bin/bash
# checklan.sh
# The IPs of the servers you wish to ping
SERVER1=192.168.178.100
SERVER2=192.168.8.1
# Send 5 pings, sending output to /dev/null, saving in ERROR1 and ERROR2
ping -c5 ${SERVER1} > /dev/null
ERROR1=$?
ping -c5 ${SERVER2} > /dev/null
ERROR2=$?
# If the ERROR1 and ERROR2 is not 0 (meaning there was an error)
if [ $ERROR1 != 0 ] && [ $ERROR2 != 0 ]
then
echo "$(date): No network connection, starting UMTS" >> /var/log/checklan.log
sudo ifconfig eth1 up
elif [ $ERROR1 == 0 ] && [ $ERROR2 == 0 ]
then
sudo ifconfig eth1 down
echo "$(date): LAN connection ok" >> /var/log/checklan.log
else
echo "$(date): Network connection ok" > /dev/null
fi
exit
in fhem habe ich jetzt ein außerdem ein LAN Presence device auf die 192.168.178.100 eingerichtet, sobald das nicht mehr antwortet, wird eine Nachricht aus einen DOIF raus verschickt.
defmod LAN PRESENCE lan-ping 192.168.178.100 120
attr LAN room USV
defmod DI_SEND_MAIL_STROMAUSFALL DOIF ([LAN] eq "absent") (msg mail @Bewohner | Netzwerk ausgefallen | Netzwerk ausgefallen. Stromausfall? ) DOELSE (msg mail @Bewohner | Netzwerk wieder da | Netzwerk wieder da. Strom wieder da )
attr DI_SEND_MAIL_STROMAUSFALL room Sicherheit,USV
attr DI_SEND_MAIL_STROMAUSFALL wait 120
Das mag alles nicht perfekt und auch etwas umständlich sein, funktioniert aber für meine Zwecke.
gruß
Jens
Wenn das Mobilfunkt über einen dedizierten router erreichbar sein soll, brauchst Du doch WLAN2 (?) nicht hoch/runterfahren, sondern kannst einfach nur das "Standardgateway" ändern....
Hat den Vorteil, das man einigen Programmen auch dediziert ein Standardgateway mitgeben kann (z.B. ping!!) und Du damit auch im Normalfall die Existenz des Mobilfunkrouters und dessen Verbindung testen kannst. Auch ist dann noch Dein Heimnetz erreichbar, sofern nicht geroutet .....
Zitat von: Wernieman am 14 August 2019, 14:44:30
Wenn das Mobilfunkt über einen dedizierten router erreichbar sein soll, brauchst Du doch WLAN2 (?) nicht hoch/runterfahren, sondern kannst einfach nur das "Standardgateway" ändern....
Hat den Vorteil, das man einigen Programmen auch dediziert ein Standardgateway mitgeben kann (z.B. ping!!) und Du damit auch im Normalfall die Existenz des Mobilfunkrouters und dessen Verbindung testen kannst. Auch ist dann noch Dein Heimnetz erreichbar, sofern nicht geroutet .....
? Versteh ich jetzt nicht ganz. Mein Heimnetz ist ja im Falle eines Stromausfalls sowieso "weg". Ich schalte ja kein WLAN ein sondern nur den Stick der über eth1 angebunden ist.
WLAN des UMST Sticks ist aus.