Last active
December 29, 2025 15:15
-
-
Save diggit/0b332f3bf897bbf114779cfb0044d7d5 to your computer and use it in GitHub Desktop.
valetudo update script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env fish | |
| set HOSTNAME "dreame_vacuum_r2416a.lan" | |
| set VALETUDO_ARCH "aarch64" | |
| set BASE_URL "https://github.com/Hypfer/Valetudo/releases/latest/download/" | |
| # set BASE_URL "https://github.com/Hypfer/Valetudo/releases/download/2025.12.0/" | |
| if ping -c 1 -W 1 "$HOSTNAME" >/dev/null | |
| echo "$HOSTNAME alive, good" | |
| else | |
| echo "$HOSTNAME offline" | |
| exit 1 | |
| end | |
| function get_remote_sha | |
| ssh -q root@"$HOSTNAME" "sha256sum /data/valetudo" | cut -d " " -f 1 | |
| end | |
| set CURRENT_SHA (get_remote_sha) | |
| if set -q CURRENT_SHA | |
| else | |
| echo "could not get current valetudo binary SHA" | |
| exit 1 | |
| end | |
| echo "current valetudo binary SHA: $CURRENT_SHA" | |
| set TMP (mktemp -d) | |
| echo "created $TMP" | |
| if set -q TMP | |
| else | |
| echo "could not get temporary directory" | |
| exit 1 | |
| end | |
| function cleanup | |
| cd "$TMP/.." | |
| rm -rf "$TMP" | |
| end | |
| cd "$TMP" | |
| echo "downloading manifest" | |
| curl -sOL "$BASE_URL/valetudo_release_manifest.json" | |
| set LATEST_SHA (jq -r ".\"sha256sums\".\"valetudo-$VALETUDO_ARCH\"" valetudo_release_manifest.json ) | |
| echo "latest sha: $LATEST_SHA" | |
| if [ "$CURRENT_SHA" = "$LATEST_SHA" ] | |
| echo "SHA match, no need to update!" | |
| cleanup | |
| exit 0 | |
| end | |
| echo "SHA mismatch, new version available! downloading" | |
| curl -sOL "$BASE_URL/valetudo-$VALETUDO_ARCH" | |
| echo "copying binary" | |
| scp -q -O "valetudo-$VALETUDO_ARCH" "root@$HOSTNAME:/data/valetudo_new" | |
| echo "stopping valetudo" | |
| ssh -q root@"$HOSTNAME" "killall valetudo" | |
| echo "replacing binary" | |
| ssh -q root@"$HOSTNAME" "mv /data/valetudo /data/valetudo_old; mv /data/valetudo_new /data/valetudo; chmod +x /data/valetudo" | |
| set (get_remote_sha) | |
| set NEW_SHA (get_remote_sha) | |
| if set -q NEW_SHA | |
| else | |
| echo "could not get current valetudo binary SHA" | |
| exit 1 | |
| end | |
| echo "updated valetudo binary SHA: $NEW_SHA" | |
| if [ "$NEW_SHA" = "$LATEST_SHA" ] | |
| echo "valetudo updated, rebooting vacuum!" | |
| ssh -q root@"$HOSTNAME" "reboot" | |
| cleanup | |
| exit 0 | |
| end | |
| echo "new valetudo binary SHA mismatch!" | |
| exit 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment