Mein Projekt CaSSAndRA zur Steuerung des Ardumowers

Wieder ein Feedback:

Die Begeisterung ebbt nicht ab!

CaSSAndRA habe ich bisher allerdings nur dazu eingesetzt, Teile von Einzelkarten mähen zu lassen, da diese nicht vollständig gemäht werden konnten. Umbaumaßnahmen im Garten standen im Konflikt zum Mähen der ganzen Fläche. Hier kam die Lasso-Auswahl zum Einsatz, so dass zumindest große Teile trotzdem gemäht werden konnten, ohne über Sunray temporäre Exclusionen anlegen und Karten neu berechnen zu müssen.
CaSSAndRA hat hier auf jeden Fall eine Stärke ausgespielt.

Beim Erstzeinsatz des Ardumower im vergangenen Jahr, habe ich eine Gesamtkarte angelegt und den Rover immer mit dem Mähen des gesamten Grundstücks beauftragt. Wenn man hier Prioritäten für Einzelabschnitte setzen möchte, dann kommt man schnell an seine Grenzen.
Mit CaSSAndRA und der Zonenauswahl wird diese Lücke geschlossen, vorausgesetzt die Auswahl von Teilbereichen kann gespeichert und mit Namen versehen werden.

In der Praxis habe ich noch zu große Probleme beim Dauereinsatz. Der frisch aufgesetzte RPi 2 Zero, auf dem CaSSAndRA als Service läuft, ist nach einer unbekannten Zeit (24h+) nicht mehr erreichbar. Bisher habe ich noch keine Untersuchungen angestellt, ob der Dienst den Rechner in die Knie zwingt oder ob es andere Gründe gibt. Demnächst wechsle ich auf einen RPi 3 oder 4, um hier Vergleiche anstellen zu können.

Ich kann mir vorstellen, CaSSAndRA auf einem RPi im Ardumower mitfahren zu lassen. (Hat schon jemand einen RPi 4 im Ardumower mit Strom versorgt oder Erfahrungen mit der Wärmeentwicklung gemacht?)
Woran hakt es, dass der RPi den ESP32 ersetzt? Der ESP32 stellt doch nur WLAN und Bluetooth zur Verfügung, was nur für die Sunray-App relevant ist. Wenn der RPi mit CaSSAndRA über UART direkt mit dem M4 oder DUE kommuniziert, dann wäre der ESP32 obsolet oder läuft Sunray auf Fehler, wenn der ESP32 fehlt?

Hier fände ich auch den Ansatz bei der Weiterentwicklung sinnvoll. Wenn CaSSAndRA noch MQTT bedient und Sunray mehr Schnittstellen für Software wie CaSSAndRA bereitstellt, dann könnten die Entwicklungen fokussierter laufen.

Weiter so @EinEinfach. (y)

Wenn ich persönlich noch etliche Baustellen abgearbeitet habe, kann ich mir sogar Zuarbeiten vorstellen.

Viele Grüße
Oliver
 
Zuletzt bearbeitet:
Ich habe versucht, einen docker Container auf Basis von Python 3.11:slim mit cassandra zu bauen. Das Starten im Container klappt nicht mit folgendem Fehler:

Traceback (most recent call last):
File "/volume1/docker/cassandra/CaSSAndRA/app.py", line 20, in <module>
from src.components import ids, navbar, offcanvas, modalremotecontrol, modalinfo
File "/volume1/docker/cassandra/CaSSAndRA/src/components/offcanvas.py", line 4, in <module>
from . import joystick, ids
File "/volume1/docker/cassandra/CaSSAndRA/src/components/joystick.py", line 7, in <module>
from src.backend.data.roverdata import robot
File "/volume1/docker/cassandra/CaSSAndRA/src/backend/data/roverdata.py", line 12, in <module>
@dataclass
^^^^^^^^^
File "/usr/local/lib/python3.11/dataclasses.py", line 1223, in dataclass
return wrap(cls)
^^^^^^^^^
File "/usr/local/lib/python3.11/dataclasses.py", line 1213, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dataclasses.py", line 958, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dataclasses.py", line 815, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'pandas.core.frame.DataFrame'> for field last_cmd is not allowed: use default_factory

Mache ich was falsch oder das Tool?

Ergänzung: Beim Installieren der requirements kam das hier als Warnung:

WARNING: Missing build requirements in pyproject.toml for Shapely==1.8.4 from https://files.pythonhosted.org/pack...4c016162a4532c998a7fe6bc/Shapely-1.8.4.tar.gz (from -r requirements.txt (line 26)).
WARNING: The project does not specify a build backend, and pip cannot fall back to setuptools without 'wheel'.
Hebt man pip im Container auf die aktuelle Version, erledigt sich Fehler 2.
 
Zuletzt bearbeitet:
Mit CaSSAndRA und der Zonenauswahl wird diese Lücke geschlossen, vorausgesetzt die Auswahl von Teilbereichen kann gespeichert und mit Namen versehen werden.
Wird mit dem Taskplanner möglich sein
Ich kann mir vorstellen, CaSSAndRA auf einem RPi im Ardumower mitfahren zu lassen. (Hat schon jemand einen RPi 4 im Ardumower mit Strom versorgt oder Erfahrungen mit der Wärmeentwicklung gemacht?)
Wenn das Teil mal wieder günstiger zu haben ist, probiere ich damit auch ein wenig rum
Woran hakt es, dass der RPi den ESP32 ersetzt? Der ESP32 stellt doch nur WLAN und Bluetooth zur Verfügung, was nur für die Sunray-App relevant ist. Wenn der RPi mit CaSSAndRA über UART direkt mit dem M4 oder DUE kommuniziert, dann wäre der ESP32 obsolet oder läuft Sunray auf Fehler, wenn der ESP32 fehlt?
muss nur einer machen, mache ich irgendwann mal.
Nein Sunray braucht keinen ESP32 zum laufen
Hier fände ich auch den Ansatz bei der Weiterentwicklung sinnvoll. Wenn CaSSAndRA noch MQTT bedient und Sunray mehr Schnittstellen für Software wie CaSSAndRA bereitstellt, dann könnten die Entwicklungen fokussierter laufen.
so ist der Plan, Cassandra ersetzt den ESP32 vollumfänglich und noch mehr
 
Welches Betriebssystem hast du? Beim Raspian gab es Probleme mit der Pandas Bibliothek

Welche Python Version ist installiert?
 
Keine Ahnung muss am Docker liegen, irgendwas ist anders in der Umgebung. Ich hatte schon testweise CaSSAndRA im LXC Container vom Proxmox laufen, da geht es einwandfrei. Muss ich mir anschauen.

Wie funktioniert es in der Dockerumgebung? Wenn du Container startest, startet auch die Anwendung? Kann man die Anwendung auch separat im Terminal starten?
 
Könnte man. Ist aber der gleiche Aufruf. Ich sehe mir das noch genauer an. Glaube nicht, dass es am Docker liegt. Die Fehlermeldung deutet laut Google ja auf was anderes hin.
 
Zur Info: Es läuft erstmal prima im Docker-Container, wenn man NICHT Python 3.11 verwendet. Ich habe nun noch nichts damit gemacht und der Container muss sicher noch optimiert werden, aber grundsätzlich klappt es erstmal.
 
Zur Info: Es läuft erstmal prima im Docker-Container, wenn man NICHT Python 3.11 verwendet. Ich habe nun noch nichts damit gemacht und der Container muss sicher noch optimiert werden, aber grundsätzlich klappt es erstmal.
Oh, das klingt ja super. Genau das wollte ich mir auch im Docker basteln. (bin in dem Gebiet aber nicht so der Pro)
Kannst du mir deinen Container evtl. exportieren, und zum Download anbieten?

LG
 
Oh, das klingt ja super. Genau das wollte ich mir auch im Docker basteln. (bin in dem Gebiet aber nicht so der Pro)
Kannst du mir deinen Container evtl. exportieren, und zum Download anbieten?

LG
Aktuell läuft es nur ohne config. Ich bastel noch daran rum. Wenn es gut läuft, sage ich Bescheid. Aktuell ist das noch sehr gefrickelt und kann keine Verbindung zum Mäher aufnehmen.
 
Aktuell läuft es nur ohne config. Ich bastel noch daran rum. Wenn es gut läuft, sage ich Bescheid. Aktuell ist das noch sehr gefrickelt und kann keine Verbindung zum Mäher aufnehmen

top, dann melde dich wenn du das am laufen hast. Vielleicht hat hier ja auch noch der ein oder andere daran Interesse.
Raspis sind ja im Moment nicht zu bezahlen. Mit Docker ist man nicht so Hardwaregebunden
 
@EinEifnach Wo speichert das Tool die Settings bzw. was macht es genau, wenn es heißt "Save and reboot"? Was bedeutet dieser Reboot? Wenn es keinen Service gibt (im Docker nicht nötig), dann findet offenbar weder das Speichern, noch der "Reboot" statt.

Verbleiben die Settings unter /src/data?

Wenn ich im Vorhinein bestimme (direkt im JSON), dass die Settings sein sollen: HTTP, IP: 10.x.x.x, Passwort: yyyyyyyy, übernimmt er davon beim Start nur die IP im Frontend, nicht die Einstellung HTTP und auch nicht das PW. Die Verbindung klappt dann auch nicht. Was meinst du, woran das liegt?
 
Oben