Sonntag, 2. Mai 2021

Gesundheit für den Saugroboter

Valetudo befreit den Roboter von der China Cloud. Ich wollte das schon lange mal probieren - ein Thread im FHEM Forum hat mich wieder getriggert.

Ich hatte kurz vorher die aktuelle Firmware mit dem mirobo Tool aufgespielt. Dazu habe ich meinen alten Artikel etwas aktualisiert. Das hat problemlos geklappt, leider konnte ich danach nicht noch einmal die gleiche Firmware Version mit integriertem Valetudo RE flashen. 

Offenbar verhindert die neuere Firmware das flashen über mirobo. Nach einem Werksreset kann man ohne Umstände die aktuelle Firmware mit integriertem Valetudo RE flashen. 

Installation

Die aktuelle Firmware des Roboters enthält kein wget, deshalb habe ich die Software heruntergeladen und per scp auf den Roboter kopiert:

wget https://github.com/rand256/valetudo/releases/download/0.10.5/valetudo-re_0.10.5_armhf.deb
scp valetudo-re_0.10.5_armhf.deb root@rockrobo:

Die Installation und der Neustart per ssh root@rockrobo war problemlos:

dpkg -i valetudo-re_0.10.5_armhf.deb
reboot

Genauso kann man jederzeit die valetudo Version aktualisieren.

Komplette Firmware flashen 

Wenn die vorhandene Firmware ein flashen zulässt, kann man die komplette Firmware mit valetudo flashen. Der Sauger muss in der Ladestation stehen!

Man kann auch ein Werkreset ausführen und die Firmware über das WLAN des Saugers flashen. Dazu muss sich der PC und der Sauger in unmittelbarer Nachbarschaft befinden!

Mit einem Raspberry Pi Zero kann man sich zunächst zum "normalen" WLAN verbinden und die Firmware Datei herunterladen. Dann die WLAN Verbindung zum zurückgesetzten Sauger herstellen und die Firmware flashen. Eine passende wpa_supplicant.conf muss man vorbereiten. Siehe Hinweise am Ende.

datei="NameDerFirmwareDatei"
wget https://vacuumz.info/download/gen1/$datei
#Verbindung mit dem WLAN des Saugers herstellen
wpa_cli -i wlan0 select_network ID

Man könnte den Token vom Sauger direkt in die Umgebungsvariable schicken.

mirobo discover --handshake true
# export MIROBO_TOKEN=$(mirobo discover --handshake true|grep -Po "(?<=b')\w*+(?=')")
export MIROBO_IP="192.168.8.1"
export MIROBO_TOKEN="Token 32 stellig"
mirobo update-firmware $datei


Verwendung

Nach diesem Setup funktioniert:

  • der Zugriff mit der Xiaomi Home oder Flole App erwartungsgemäß nicht mehr, 
  • der Zugriff mit FHEM nach wie vor.
  • die Steuerung über eine HTTP App auf dem Roboter.

Damit lässt sich der Roboter lokal steuern:

http://rockrobo

In den Settings kann man die Weboberfläche auf german stellen. Die Verwendung der Valetudo Web App ist intuitiv und sehr komfortabel!

Steuerung von unterwegs

Die Einrichtung des Telegram Bots zur Steuerung von Unterwegs war gut erklärt: 

  • Start in der Oberfläche des Roboters: Menu / Einstellungen / Telegram-Bot
  • den Telegram Bot mit dem BotFather im Dialog einrichten
  • API Token auf dem Roboter eintragen und Passwort vergeben
  • den Bot mit /setme Passwort am Roboter anmelden   

Einrichtung MQTT

Voraussetzung: MQTT2_SERVER in FHEM vorhanden, autocreate steht auf simpel
Im Webinterface valetudo/Einstellungen/MQTT Einstellungen
  • aktivieren
  • url eintragen in der Form: mqtt://Name/IPAdresse:1883
Ein MQTT2_DEVICE wird erstellt. Das AttrTemplate rockroboRE anwenden.

Features/Hinweise

Eine Liste der Features von Valetudo RE findet man hier. Diese lassen sich natürlich auch über MQTT verwenden! Die MQTT Topics sind hier beschrieben und entwickeln sich offenbar ständig. Meine Highlights:
  • Zielpunkte und Zonen in valetudo anlegen und per MQTT verwenden, ohne umzurechnen.
    • nach der Reinigung kann ein Zwischenstop am Mülleimer erfolgen.
  • Zonen als Liste übergeben: Bad,Eingang,Schlafzimmer
  • Die Entnahme des dustbin wird gemeldet und kann ausgewertet werden. 
    • Nach Entleerung Fahrt zur Ladestation fortsetzen. 
  • Den Sauger mit der Valetudo App von Punkt zu Punkt schicken und parallel in der Karte auch die Spots und Zonen festlegen. 
  • Die aktuelle Karte speichern und falls die verloren geht, wieder laden 
    • set sauger map store Name 
    • set sauger map load Name
Die Zeitangaben in den MQTT Readings sind in Millisekunden! So kann man die Zeit in lesbarer Form anzeigen.
{localtime(ReadingsNum((devspec2array('a:model=roborockRE'))[0],'last_loaded_map_date',0)/1000)}

Die Daten von valetudo werden in der Struktur /mnt/data/valetudo abgelegt. Nach einem Werksreset wäre das Einrichten der Spots, Zone und Kartendaten nur mit Aufwand wiederherstellbar. Man sollte diese Daten sichern. Erstmal als Idee: tar -czf rockrobo.tar.gz /mnt/data/valetudo und dann über scp auf den Backupserver schaffen.

Mehrere WLAN's in der Datei wpa_supplicant.conf

Die Datei kann man einfach mit dem Editor editieren und erweitern. Jedes Netzwerk kommt in einen separaten Abschnitt: {network ...}

Die vorhanden, definierten Wlan's kann man sich anzeigen lassen:

wpa_cli -i wlan0 list_networks

Dabei steht in der ersten Spalte eine ID (fortlaufende Nummer), diese ID verwendet man zur Umschaltung:

wpa_cli -i wlan0 select_network 2

Achtung: Das Programm akzeptiert auch einen String als ID Parameter, dieser wird aber durch 0 ersetzt!

Nachtrag Oktober 2022

Mittlerweile setze ich valetudoRE nicht mehr ein. Ich bin der Meinung Original valetudo wird solider entwickelt. Will man die aktuelle valetudo Version ausprobieren, kann man einfach valetudoRE beenden und die neue Version interaktiv starten.

wget https://github.com/Hypfer/Valetudo/releases/latest/download/valetudo-armv7 -O valetudo
service valetudo stop
./valetudo


ToDo

Code


1 Kommentar:

  1. Sehr interessanter Beitrag! Allerdings wird das nichts daran ändern, dass bei uns vor allem die Katze mit dem Saugroboter herumfährt haha. Danke für den informativen Artikel!
    Liebe Grüße
    Dennis

    AntwortenLöschen