Mein Projekt CaSSAndRA zur Steuerung des Ardumowers

Mit dem Zustand angedockt ist sowieso falsch anzunehmen, dass die Position des Mähers der aktueller Startpunkt ist. Eigentlich im Zustand angedockt ist die Startposition der erste Andockpunkt, das wird das Problem lösen und sogar noch alles etwas optimieren
 
Aber mit Cassandra wird doch auch eine neue Karte hochgeladen, will dann der Mäher an komplett falscher Stelle starten?
Schon die Berechnung der Mähbahnen funktioniert nicht so, wie gedacht. Die Bahnen liegen dann oft neben dem Perimeter..komplett versetzt. Die Mäherposition wird dann beim Hochladen korrigiert, das nutzt der Berechnung der Mähbahnen aber nichts.

Das kann man leicht testen. Eine Karte erstellen, die ein eigenes, virtuelles Dock hat. Den Mäher da fahren lassen, dann die andere Karte wählen und man sieht, was passiert.
 
@EinEinfach:
Ich versuche gerade eine Anleitung für Anfänger für ein CaSSAndRA Update zu erstellen, und scheitere leider.
Den ersten Schritt habe ich noch hinbekommen
1. sichert euren /src/data Ordner
Das denke ich müsste so gehen:
Code:
mkdir /tmp/CaSSAndRA
cp -ar /home/pi/CaSSAndRA/CaSSAndRA/src/data /tmp/CaSSAndRA
Aber dann "2. Clont erneut die Repository und ersetzt alle Dateien und Ordner in eurem Produktivverzeichnis durch die neuen heruntergeladenen Dateien."
Versuche ich mit
Code:
git clone https://github.com/EinEinfach/CaSSAndRA
Fehlermeldung: fatal: destination path 'CaSSAndRA' already exists and is not an empty directory.

Aus dem Skype Channel kam der Tipp, dass es folgendermaßen gehen müsste, ohne vorher die Daten zu sichern:
Code:
cd /home/pi/CaSSAndRA
git pull
Soweit ich das beurteilen kann funktioniert das und hat auch keine Daten übergebügelt.

Kannst du das so bestätigen? (Dann wäre das Update ja noch viel einfacher)

Danke und beste Grüße,
Chris
 
Nicht alle nutzen git und es ist schon vorgekommen, dass ich Dateien in /src/data geändert habe, keine Ahnung was dann passiert.

Aber solange man git nutzt und ich nichts an /src/data ändere müsste git pull einfachere Updatemöglichkeit sein
 
Aus dem Skype Channel kam der Tipp, dass es folgendermaßen gehen müsste, ohne vorher die Daten zu sichern:
Code:
cd /home/pi/CaSSAndRA
git pull
Soweit ich das beurteilen kann funktioniert das und hat auch keine Daten übergebügelt.

Kannst du das so bestätigen? (Dann wäre das Update ja noch viel einfacher)
Nicht ganz:
In diesem Fall wurde nichts an den Datenfiles geändert. Folglich wurde auch nichts an diesen geändert.
Sollte künftig etwas an den Datenfiles geändert werden, kann es zu Konflikten kommen. Dann muss man sich schon mit Git auskennen, um diese korrekt zu lösen.
Da Du versuchtest über einen bereits bestehenden Git-Clone überzuclonen, würde ich mal sagen, dass es bei Dir nicht der Fall ist.

Die von EinEinfach beschriebene Methode ist die sichere Variante, die auch jemand hinbekommen sollte, der sich nicht mit Repositories befassen möchte:
1. Sicherung der Datenfiles (damit nichts verloren gehen kann)
2. Hole den aktuellen Abzug aus dem Repository
3. Entpacke diesen und kopiere den gesamten Ordner anstelle des bisherigen
4. Eigene Daten wieder einstellen
 
1. Sicherung der Datenfiles (damit nichts verloren gehen kann)
2. Hole den aktuellen Abzug aus dem Repository
3. Entpacke diesen und kopiere den gesamten Ordner anstelle des bisherigen
4. Eigene Daten wieder einstellen
Ja, wie das in DOS und Windows geht ist klar, ich suche jetzt zu den vier Zeilen die passenden Linux Befehle für Putty.
Ich habe damit schon angefangen, siehe https://forum.ardumower.de/threads/cassandra-update-anleitung-für-anfänger-😁.25232/#post-61414
...da suche ich jetzt schon ne Stunde...
...ich bin zu doof für den copy Befehl
cp -ar /home/pi/CaSSAndRA/CaSSAndRA/src/data /tmp/CaSSAndRA (das funktioniert, im Ordner /tmp/CaSSAndRA/data liegen die Daten und Unterordner)
cp -ar /tmp/CaSSAndRA /home/pi/CaSSAndRA/CaSSAndRA/src/data (das tut aber nicht was ich will, das erstellt zu viele Unterordner. Ich hasse Linux. /home/pi/CaSSAndRA/CaSSAndRA/src/CaSSAndRA/data ...wie kommt der auf sonen Sch..ss?)
 
Zuletzt bearbeitet:
Die User-Config sollte geschützt werden. Dafür gibt es ja gängige Praktiken. Insbesondere ist es wichtig, dass man eine einmal festgelegte Konfiguration in Sachen Datentypen, Bezeichnungen und möglichen Werten nur noch in Notfällen anpasst.

Ergänzung: Wird Cassandra so erfolgreich, wie ich denke, dann kommt man um einen zentralen Update-Mechanimus wohl nicht drumherum ;)
 
@EinEinfach:
Ich versuche gerade eine Anleitung für Anfänger für ein CaSSAndRA Update zu erstellen, und scheitere leider.
Den ersten Schritt habe ich noch hinbekommen
1. sichert euren /src/data Ordner
Das denke ich müsste so gehen:
Code:
mkdir /tmp/CaSSAndRA
cp -ar /home/pi/CaSSAndRA/CaSSAndRA/src/data /tmp/CaSSAndRA
Aber dann "2. Clont erneut die Repository und ersetzt alle Dateien und Ordner in eurem Produktivverzeichnis durch die neuen heruntergeladenen Dateien."
Versuche ich mit
Code:
git clone https://github.com/EinEinfach/CaSSAndRA
Fehlermeldung: fatal: destination path 'CaSSAndRA' already exists and is not an empty directory.
Sie sollten den Ordner vor Git umbenennen:
mv /home/pi/CaSSAndRA /home/pi/CaSSAndRAbackup
Dann können Sie Git Clone ohne Probleme durchführen. Und dann stellen Sie den DATA-Pfad wieder her.

Aus dem Skype Channel kam der Tipp, dass es folgendermaßen gehen müsste, ohne vorher die Daten zu sichern:
Code:
cd /home/pi/CaSSAndRA
git pull
Soweit ich das beurteilen kann funktioniert das und hat auch keine Daten übergebügelt.

Kannst du das so bestätigen? (Dann wäre das Update ja noch viel einfacher)

Danke und beste Grüße,
Chris
 
So aktualisieren Sie mit einem kleinen Befehl unter Linux:
Wir würden eine Datei update.sh erstellen
Wir erteilen ihm Ausführungsberechtigungen mit
chmod +x update.sh
Dateiinhalt:
#!/bin/bash
cp -r ~/CaSSAndRA/CaSSAndRA/src/data/ ~/CaSSAndRA_data_backup/
cd ~/CaSSAndRA
git pull
cp -r ~/CaSSAndRA_data_backup/* ~/CaSSAndRA/CaSSAndRA/src/data/
rm -r ~/CaSSAndRA_data_backup/
cp ~/CaSSAndRA/bugfix_dash_daq_min/dash_daq.min.js ~/CaSSAndRA/lib/python3.10/site-packages/dash_daq/dash_daq.min.js
Hinweis: Die letzte Zeile kann je nach Linux-Distribution variieren.
und schließlich führen wir es aus mit:

Es könnte ein Cron-Task ausgeführt werden, der das Repository bei Bedarf jeden Tag aktualisiert.
 
Was looking at doing something similar my only thoughts as to where you are is that CaSSAndRA needs (I think) to be stopped at the beginning of the script and and restarted after the update which is what I was doing

#!/bin/bash
# Script to update CaSSAndRA
# needs to have sudo power to stop and restart so sudo password is needed
# Assume script is run from home directory
cd
echo "Pleae enter your sudo password"
read PASS
echo "$PASS" | sudo -S systemctl stop cassandra
mkdir -p CaSSAndRA_BU
cp -R CaSSAndRA/CaSSAndRA/src/data CaSSAndRA_BU/

# Do update stuff

echo "$PW" | sudo -S systemctl start cassandra
exit 0

Probably make Linux purists spin in their graves but it seems to work :)
 
Was looking at doing something similar my only thoughts as to where you are is that CaSSAndRA needs (I think) to be stopped at the beginning of the script and and restarted after the update which is what I was doing

#!/bin/bash
# Script to update CaSSAndRA
# needs to have sudo power to stop and restart so sudo password is needed
# Assume script is run from home directory
cd
echo "Pleae enter your sudo password"
read PASS
echo "$PASS" | sudo -S systemctl stop cassandra
mkdir -p CaSSAndRA_BU
cp -R CaSSAndRA/CaSSAndRA/src/data CaSSAndRA_BU/

# Do update stuff

echo "$PW" | sudo -S systemctl start cassandra
exit 0

Probably make Linux purists spin in their graves but it seems to work :)

Das ist eine gute Idee. Ich verwende regelmäßig Linux und werde nicht rot wegen dem, was Sie sagen.
Was ich nicht verstehe, ist, warum Sie „sudo“ benötigen, um CaSSAndRA zu verwenden. Ich verwende den normalen Benutzer und habe keine Berechtigungen, um das Programm auszuführen:

1689171956271.png

Ein Beispiel für eine Crontab (/etc/crontab):
55 23 * * * senil /home/senil//update.sh &

Vielleicht sollte das Skript geändert werden, um den Prozess zu stoppen, denn wenn ich versuche, die Dateien manuell zu überschreiben, sehe ich, dass es in einigen Dateien einen Fehler gibt und die Anwendung keinen Segmentfehler mehr ausgibt.

Mit der Ausführung von
Das Schlimme ist, dass ja

#!/bin/bash
# Stop CaSSAndRA
killall -u senil python3
cp -r ~/CaSSAndRA/CaSSAndRA/src/data/ ~/CaSSAndRA_data_backup/
cd ~/CaSSAndRA
git pull
cp -r ~/CaSSAndRA_data_backup/* ~/CaSSAndRA/CaSSAndRA/src/data/
rm -r ~/CaSSAndRA_data_backup/
cp ~/CaSSAndRA/bugfix_dash_daq_min/dash_daq.min.js ~/CaSSAndRA/lib/python3.10/site-packages/dash_daq/dash_daq.min.js
# Start CaSSAndRA
python -m venv /home/senil/CaSSAndRA/
. /home/senil/CaSSAndRA/bin/activate
cd /home/senil/CaSSAndRA/CaSSAndRA
python3 app.py

Wo du senil eingibst, solltest du wohl "pi" oder den gewünschten Benutzer eingeben.
 
Zuletzt bearbeitet:
That's a good idea. I use Linux regularly and I don't blush at what you say.
What I don't understand is why you need "sudo" to use CaSSAndRA. I'm using the normal user and I don't have permissions to run the program:

Anhang anzeigen 6819

An example of a crontab (/etc/crontab):


Maybe the script should be modified to stop the process because when I try to overwrite the files manually I see that there is an error in some files and the application no longer throws a segment error.

With the execution of

The bad thing is that yes



Where you type senile, you should probably type "pi" or whatever user you want.
 
Yes @senil doing it your way and starting the python app with a user crontab will avoid the need to use sudo. With my setup I run CaSSAndRA as a daemon service and start/stop it via systemctl hence the need for elevated permissions. There are indeed many ways to skin the proverbial cat within Linux.
 
So... die unzähligen Stunden mit dem Pathplanner sind erstmal Geschichte. Der verbesserte Planner ist online und hoffentlich jetzt deutlich smarter... bzw. auch ohne Fehler bei komplexen Karten (schöne Grüße an Micka41)

Ich hoffe da lässt jetzt keiner eine Bombe hier platzen, da ich langsam keine Lust auf das Ding habe. Wenn jetzt keine Fehler diesbezüglich gemeldet werden, fange ich mit dem Taskplanner an... Also soll ich einen Projekt in GitHub anlegen... oder einfach losprogrammieren...
Fortsetzung dieser Verbesserung.
Ist hierfür ein Internetzugang des Computers erforderlich?
Es wäre interessant, es ohne Zugang nutzen zu können, da nicht alle Menschen an abgelegenen Orten Zugang haben.
Auf jeden Fall erscheint es mir eine gute Idee, diese Arbeit an andere Plattformen oder Dienste zu delegieren.
 
Zuletzt bearbeitet:
Muss Alfred eingeschaltet sein, damit die Einstellungen akzeptiert werden?
Muss nicht
Auf dem Button steht "Save and reboot". Was wird rebootet?
Der Backend-Server, Frontend läuft weiter
keine Statusupdate
Dann klicke ich wieder auf Settings -> Connection: Alle Einstellungen weg?!
die Einstellungen sind nicht weg, die werden bloß nicht angezeigt

Am besten du startest Terminal und gibst journalctl -u cassandra -f ein und schaust parallel was Cassandra von sich gibt, wenn du versuchst dich zu verbinden
 
Oben