Skip to content

Instantly share code, notes, and snippets.

@diggit
Last active December 29, 2025 15:15
Show Gist options
  • Select an option

  • Save diggit/0b332f3bf897bbf114779cfb0044d7d5 to your computer and use it in GitHub Desktop.

Select an option

Save diggit/0b332f3bf897bbf114779cfb0044d7d5 to your computer and use it in GitHub Desktop.
valetudo update script
#!/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