Background:
When I come home and it’s in my backpack, all devices remain connected to the Wi-Fi. You can't turn off the MUDI via the website; it can only be done on the device, which is quite a shame.
But I would like to have an automatic shutdown when I come home.
Does anyone have an idea for this?
If the Wi-Fi "MY_HOME_WLAN" is reachable, then just shut down. As a script.
Here’s how I imagine it:
Step 1: Wi-Fi "MY_HOME_WLAN" is reachable
Step 2: Router uptime is greater than 60 minutes: yes
Step 3: shutdown
This way, you can still start the router at home if you need to make changes. Then you have 60 minutes to turn off the script.
Alternatively, it could be shut down remotely, if that’s possible.
For example, in SmartHome:
If 192.168.178.33 (IP it gets as a repeater) is reachable, then good night!
However, I would prefer the first version since I have LTE as my main internet.
Hello, thank you for that! Do you have also the Standby Command for me?
This is my Idea:
Router find Wifi at Home ... go off
Router find Wifi at work: Standby
#!/bin/sh
# Abbruch, wenn die Uptime weniger als 5 Minuten beträgt
UPTIME_SECONDS=$(cut -d' ' -f1 /proc/uptime | cut -d'.' -f1)
if [ "$UPTIME_SECONDS" -lt 300 ]; then
echo "Uptime ist kleiner als 5 Minuten. Skript wird abgebrochen."
exit 0
fi
# WLAN-Namen fuer Herunterfahren und Standby
SHUTDOWN_WLANS="Home"
STANDBY_WLANS="Work1 Work2"
ZEIT=1800
# Kombiniere die WLAN-Namen fuer die Schleife
for WIFI_NAME in $SHUTDOWN_WLANS $STANDBY_WLANS; do
LOG_FILE="/usr/share/wlan_shutdown/status_$WIFI_NAME.log"
WIFI_FOUND_FILE="/usr/share/wlan_shutdown/status_found_$WIFI_NAME.time"
# Prüfen, ob das WLAN in Reichweite ist
if iwinfo wlan0 scan | grep -q "$WIFI_NAME"; then
# WLAN gefunden
if [ ! -f "$WIFI_FOUND_FILE" ]; then
# WLAN wurde zum ersten Mal gefunden, Zeitstempel schreiben
date '+%Y-%m-%d %H:%M:%S' > "$LOG_FILE"
date '+%s' > "$WIFI_FOUND_FILE"
else
# WLAN wurde bereits gefunden, Zeit seit dem ersten Fund berechnen
FIRST_FOUND=$(cat "$WIFI_FOUND_FILE")
CURRENT_TIME=$(date '+%s')
ELAPSED_TIME=$((CURRENT_TIME - FIRST_FOUND))
if [ "$ELAPSED_TIME" -ge "$ZEIT" ]; then
# WLAN ist seit der Zeit in Reichweite
if echo "$SHUTDOWN_WLANS" | grep -qw "$WIFI_NAME"; then
# Bei den WLANs aus der Liste "SHUTDOWN_WLANS" herunterfahren
# Logdateien vor dem Herunterfahren loeschen
echo "Logdateien werden geloescht..."
rm "$LOG_FILE"
rm "$WIFI_FOUND_FILE"
echo "WLAN $WIFI_NAME seit der Zeit gefunden. System wird he runtergefahren."
ubus call mcu cmd_json {\"poweroff\":\"1\"}
elif echo "$STANDBY_WLANS" | grep -qw "$WIFI_NAME"; then
# Bei den WLANs aus der Liste "STANDBY_WLANS" in den Standby-Modus wechseln
rm "$LOG_FILE"
rm "$WIFI_FOUND_FILE"
echo "WLAN $WIFI_NAME seit der Zeit gefunden. System geht in den Standby Modus."
# Aktuell noch Power aus, da Befehl fuer Standby unbekannt
ubus call mcu cmd_json {\"poweroff\":\"1\"}
fi
fi
fi
else
# WLAN nicht in Reichweite
if [ -f "$WIFI_FOUND_FILE" ]; then
# WLAN ist verschwunden, Log-Dateien loeschen
rm "$LOG_FILE"
rm "$WIFI_FOUND_FILE"
fi
fi
done