Turn off the MUDI

Hello everyone,

I would like to shut down my MUDI :slight_smile:

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.

Does anyone have any ideas?

Thanks.

This command which probably is you want to shutoff the Mudi:
ubus call mcu cmd_json {\"poweroff\":\"1\"}

Use your imagination to write your own scripts, because this is a personalized configuration. :wink:

2 Likes

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

1 Like