Surfstick am PI /PI soll automatisch auf Mobilfunknetz schalten bei LAN Ausfall

Begonnen von Jens_B, 24 Juli 2019, 08:46:51

Vorheriges Thema - Nächstes Thema

Jens_B

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
RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

yersinia

Ü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.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Jens_B

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
RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

yersinia

@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).
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Jens_B

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 ;-)

RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Jens_B

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...

RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

betateilchen

was spricht dagegen, den watchdog des raspi zu benutzen? Der kann u.a. auch einzelne Schnittstellen überwachen und im Fehlerfall Skripte starten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jens_B

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.









RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jens_B

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... ;)

RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jens_B

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


RaspberryPi 4 (Raspian Buster)FHEM+Homebridge
HMLAN für Homematic
Z-Wave USB Stick
Shelly Devices
Fritz!Box 7590Ax