Backup der gespeicherten Karte

  • Vielen Dank im Voraus für deine Mühen!:thumbup:

  • Thyraz hat hier ja eine sehr geile Backup/Restore Lösung über den smarthome-Ansatz vorgestellt. Da bei uns eine Vollautomatisierung daran scheitert, dass man den Roboter zwangsläufig die Treppen hoch- und runtertragen muss (es gibt weder einen Aufzug, noch einen für den Robbi modifizierten Treppenlift), habe ich mir eine einfache Karten-/Etagenauswahl für mein Android-phone gebastelt. Falls Interesse daran besteht, könnte ich davon ein kleines Howto zusammenklöppeln... ;)


    Gruß

    Toby

  • Das klingt toll. Da finden sich sicherlich User, die sofort JA sagen!

  • Na dann wollen wir mal...ich hoffe ich kriege das einigermaßen verständlich erklärt...


    Erstmal ein grober Überblick was später möglich ist:
    Mit der app SSH Button wird die gewünschte Karte/Etage ausgewählt:

    SSH-Button_Beispiel.jpg

    Der Roboter quitiert das erfolgreiche Laden mit dem Abspielen eines Soundfiles. In meine Fall "Erdgeschoss geladen, Untergeschoss geladen, aktuelle Karte wiederhergestellt" usw.

    Nachdem man jetzt kurz die Komplettreinigung gestartet hat, erscheint die neu geladene Karte in der Mi Home app.


    Was braucht man dafür?

    • SSH Zugang auf dem Roboter
    • Für jede Karte/Etage ein "Lade-Skript"
    • Für jede Karte/Etage müssen die 4 benötigten Kartendateien "last_map", "user_map0", "PersistData_1.data" und "PersistData_2.data" vorliegen
    • Die Soundfiles kann man mit diversen "Text-to-Speech"-Online-Tools generieren. Ich finde "Deutsch - Arabella" bei notevibes kommt der Roborock-Stimme schon relativ nah. Die mp3s müssen dann noch in .wav-Dateien umgewandelt werden.
    • Auf dem Roboter muss "aplay" aus den alsa-utils installiert sein. (apt install alsa-utils)

    Alles weitere werde ich am Beispiel meiner Bastelei erklären, hier kann (und muss?) jeder natürlich die Datei- und Pfadnamen seinen Bedürfnissen anpassen.

    Wir legen einen Ordner "/mnt/data/MapManagement" an. In diesem Order befinden sich

    • Unterordner für jede Karte/Etage (/mnt/data/MapManagement/EG, /mnt/data/MapManagement/UG usw.) in diese Unterordner kopieren wir die jeweiligen 4 Kartendateien
    • Ordner für die Soundfiles (/mnt/data/MapManagement/Sounds)
    • die Lade-Skripte
    • Textdatei "ActiveMap.txt"

    Bei mir sieht das dann so aus:

    Ordner.jpg


    In der "ActiveMap.txt" wird die gerade geladene/"aktive" Karte/Etage (EG, UG, EG-Wisch usw.) eingetragen, später wird das in jedem Skript automatisch geändert.

    Ganz wichtig: Egal was man manuell kopiert, der Eintrag in der ActiveMap.txt muss immer mit den Karten-Dateien in /mnt/data/rockrobo übereinstimmen, sonst werden nachher vom Skript Karten mit falschen Dateien überschrieben!

    Bei meiner Variante wird, vor dem laden der neuen Karte, jeweils die alte gerade aktive Karte bzw. deren Status abgespeichert, wer also immer dieselbe "alte" Karte (wegen Türproblemen o.ä.) laden will, muss dies dementsprechend abändern.

    Hier mein "EG-load.sh"-Skript als Beispiel mit Erläuterungen. Vorweg; ich bin absoluter Skript-Anfänger, dies sind quasi meine ersten "Gehversuche", die Dinger funktionieren aber ich bin mir ziemlich sicher, dass man das ganze eleganter, schöner, effizienter, höher, weiter, schneller umsetzen kann.


    Dementsprechend sieht mein "UG-load.sh"-Skript so aus:

    Falls mal eine Karte "zerschossen" wurde hier mein "MapRestore.sh"-Skript:

    Jetzt müssen wir nur noch die Daten in der SSH-Button-app eintragen:

    • Label: Erdgeschoss laden
    • Command: . /mnt/data/MapManagement/EG-load.sh
    • SSH hostname: <IP des Roboters>
    • SSH username: root
    • SSH password: <leer>
    • Use private key: <aktivieren>
    • Select Private key file: <SSH private Schlüsseldatei auswählen>
    • SSH port: 22

    Soweit erstmal...ich hoffe das war jetzt nicht zu kompliziert erklärt...bei Fragen natürlich bitte fragen... ;)


    Gruß

    Toby

  • Achso...kleiner Nachtrag: es sollte ja selbstverständlich sein, dass man die Karten NICHT während einer Reinigung lädt, sondern nur wenn der Roboter auf dem Dock steht oder auf Anweisung wartet. ;)

  • Sehr cool, vielen Dank, Toby!

  • Gibt es einen Experten, der mitteilen kann, ob und wie das ganze mit Tasker bzw. Alexa+IFTTT anstelle von SSH Button ginge? Das wäre dann für mich die Jakobs Krönung aller Lösung. :thumbup:

  • Hallo zusammen,


    mal eine Frage...es ist aber doch nur nötig die Karten zu sichern wenn ich Sperrzonen habe, oder?

    Ansonsten müsste ich um das mit den geschlossenen Türen zu umgehen doch nur dafür sorgen das die Karten jedes mal neu erstellt wird oder?


    Gruß

    Lars

  • Hi,


    ich habe alles nach der Anleitung zusammengebaut, per Konsole werden auch die Sounds abgespielt. Also stimmt der Zugriff soweit. Allerdings kann ich die Skripte nicht per SSH Button starten. Beim Klick erscheint der Fehler "Returncode was 127". Nehme ich den Punkt am Anfang des relativen Pfads weg, kommt "Returncode was 126".

    Die Skripte habe ich auch ausführbar gemacht:

    -rw-r--r-- 1 root root 2 Jun 18 02:26 ActiveMap.txt

    -rwxr-xr-x 1 root root 914 Jun 18 02:49 MapRestore.sh

    drwxr-xr-x 2 root root 4096 Jun 18 10:18 OG

    -rwxr-xr-x 1 root root 942 Jun 18 02:46 OG-load.sh

    drwxr-xr-x 2 root root 4096 Jun 18 10:56 Sounds

    drwxr-xr-x 2 root root 4096 Jun 18 10:18 UG

    -rwxr-xr-x 1 root root 942 Jun 18 02:46 UG-load.sh

    -rwxr-xr-x 1 root root 64 Jun 19 03:04 test.sh


    Hat jemand eine Ahnung woran es haken kann?

  • Hmmm...mit welchem Editor hast Du die Skripte erstellt? Nicht, dass sich da Windows Zeilenenden eingeschlichen haben...ansonsten würde ich mal zum testen in ssh-button einen anderen Befehl (z.B. aplay /mnt/data/MapManagement/Sounds/EG.wav) versuchen, um sicher zu gehen, dass es wirklich an den Skripten und nicht an was anderem liegt...


    Gruß

    Toby