Mein Projekt CaSSAndRA zur Steuerung des Ardumowers

Hallo Alexander,

Wow, was du da geschaffen hast! Ich bin begeistert!

Puhhhh, nun musste ich doch mal alles durchlesen, weil das Thema ja immer interessanter wird. (ich hatte es vorher noch nicht mitverfolgt)


Ich habe einen Raspberry Pi 3 im Keller laufen (da läuft ein volkszähler mit 256 GB SSD, der rund 100 Kanäle loggt:rolleyes:)
Ich habe auch einen MQTT broker mosquitto
Ich habe einen Alfred
Ich habe leider kein Docker laufen, daher möchte ich ungern meinen umfangreichen volkszähler versehentlich zerschießen.

Kann ich Cassandra auf Alfred laufen lassen, oder muss es ein externer RaspberryPi sein?
Scheint zu gehen, oder doch nicht?! Ich bin nicht ganz schlau draus geworden.

Du schriebst im Eröffnungspost "....die Liste mit den geplanten Features ist lang". Wo ist die Liste?
Zu Sunray hab ich im Forum schon ne Menge Verbesserungen vorgeschlagen. Einige (GoTo Button, Mährichtung) hast du schon umgesetzt. Ich würde gerne mal deine Liste gegen meine Liste legen, und schauen ob da schon alles drin ist ;)

Kannst du die aktuelle absolute GPS Position per MQTT ausgeben? (dann könnte man den Rover auf irgendeiner beliebigen Karte verfolgen)

Heatmaps wären noch interessant, genauso wie eine Obstacle map, die nach der Fahrt anzeigt, wo es Probleme gab.
Gerne auch so, dass man die Daten (es reichen vermutlich auch die Bilder) historisch abspeichert.
Cool wäre auch, wenn man die Heatmaps in die aktuelle Karte einblenden kann, so dass man sich das live anschauen kann.

Beste Grüße und weiterhin viel Erfolg!
Chris

Fan +1 :D
 
Die Liste ist in meinem Kopf, bin von Natur aus faul alles aufzuschreiben und vergesse dann wieder die Hälfte. Im ersten Post ist das definitiv nicht alles, nur eine Momentaufnahme zum Zeitpunkt, wo ich das geschrieben habe. Und solche Sachen wie heatmap ist definitiv auf to do Liste (in meinem Kopf) Ich schaffe nicht mal Readme auf GitHub aktuell zu halten geschweige von alles in Englisch zu ergänzen, da wäre Untersützung echt super. Generell, wenn ein native speaker mal die App nutzt, wäre super, wenn derjenige/diejenige meine Begrifflichkeiten dort verbessert. Mein English ist definitiv verbesserungsfähig

Täusch dich nicht von der Länge der Liste, wie gesagt nur mal schnell was zusammenfassend hingeschrieben. Z.B. complex task planner, da steckt ein Riesen Aufwand mit einer Menge schöner Features dahinter. Ich verspreche euch, wenn es fertig ist, sowas habt Ihr bei keinem kommerziellen Mäher gesehen (vllt zum Teil bei einem Saugroboter, aber nur zum Teil)

Und jetzt zu komplizierten Teil:
Ich habe einen Raspberry Pi 3 im Keller laufen (da läuft ein volkszähler mit 256 GB SSD, der rund 100 Kanäle loggt:rolleyes:)
Lass ihn laufen, ich weiß wieviel Aufwand das ist, sowas einzurichten, lieber nichts kaput machen
Ich habe leider kein Docker laufen, daher möchte ich ungern meinen umfangreichen volkszähler versehentlich zerschießen.
Kann ich verstehen, Backup üben ist auch nicht meine Lieblingsaufgabe
Kann ich Cassandra auf Alfred laufen lassen, oder muss es ein externer RaspberryPi sein?
Auf dem Alfred, haben wir vor ein paar Tagen festgestellt, läuft viel zu altes Betriebssystem. Ein update auf was neueres könnte es ermöglichen. Vielleicht könnte man das im Skype Channel ansprechen.
Es muss nicht zwingend ein Raspberry Pi sein, du kannst irgendeinen Rechner nehmen, der permanent am Netz hängt, sowie dein Volkszähler (Synolgy, sonstige Server). Ich empfehle persönlich einen Intel Nuc ans Netz zu hängen, dort als Betriebssystem Proxmox und für jede Anwendung einen eigenen LXC Container einrichten. Eine geniale Virtualisierungumgebung.
Kannst du die aktuelle absolute GPS Position per MQTT ausgeben? (dann könnte man den Rover auf irgendeiner beliebigen Karte verfolgen)
Das kann Alfred, soweit ich weiß heute schon over MQTT.
Das Problem ist Alfred MQTT und Ardumower MQTT sind untereinander nicht kompatibel. Alfred kann viel mehr publishen, aber dafür viel zu wenig subscriben. Das heißt, ich könnte viel mehr Daten lesen, aber ich könnte ihm keine Befehle erteilen, sowie: fahr nach da, oder mähe das. Der einzige Weg Alfred heute mit CaSSAndRA sprechen zu lassen ist over HTTP, Alfred hat dafür genug Power. Aber man verliert sehr viele Freiheitsgrade, wenn man diesen Weg nimmt (sowas wie heatmap wäre dann nicht mehr möglich). Grundsätzlich arbeite ich aktuell mit diesen Freiheitsgraden und habe schon vieles aus der Schnittstelle herausgeholt, damit bleibe ich mit der Anwendung für alle kompatibel und keine muss erstmal eine spezielle Sunray FW für seinen Rover bauen, bevor er die Anwendung nutzen kann.

Es wird einen Tag kommen, wo ich diese Trennung vornehmen muss, weil ich diese Freiheitsgrade für mich speziell haben will (z.B. Heatmap), davon bin ich aber mind. diesen Sommer noch entfernt und bisdahin hoffentlich können wir gemeinsam für den Rest über egal welche Wege auch immer eine Lösung erarbeiten.

Zum Schluss mal meine Meinung: Das Ziel muss sein CaSSAndRA in der Mower-Hardware laufen zu lassen. Ardumower(separater RPI), Alfred(Banana PI), dann hat man sehr viele Freiheitsgrade.

Gruß
Alexander
 
Zuletzt bearbeitet:
Wäre es möglich, die Mähgeschwindigkeit an den Grenzen seperat einzustellen? Ich fahre beim Mähen 0,5 m/s, auf den geraden Bahnen ist das OK, aber an den Grenzen wäre es sicher besser, wenn er langsamer fahren würde, er verhakt sich dort doch gelegentlich an irgendwelchem Gestrüpp oder Blumen.
Wenn es nicht geht, ist es auch kein Problem, dann lasse ich ihn eben generell langsamer fahren.
Mit Einschränkungen wäre es möglich. Man braucht permanenten Kontakt zu Sunray FW, im UART Mode überhaupt kein Problem.

Ich schreibe mal auf.

Gruß
 
Tja, der BananaPi im Alfred scheint sich als Fail herauszukristallisieren, aber wer hätte das in der Entwicklung ahnen können. Ich hoffe, dass man in der Zukunft mal irgendwann auf einen echten RaspberryPi umschwenkt, oder dass es umbaubar ist. Ich habe noch ein paar RPi 3 und 4 rumliegen und würde das sofort umbauen. CAD, 3D Drucken und Mechanik kann ich, aber Linux und Phython nicht wirklich...leider...aber man kann ja nicht alles können.

Ich hab aktuell nur den einen RPi3 mit dem Volkszähler 24/7 laufen.
Aber ich hätte noch 3 Synology NAS und ungefähr 3 RPi's rumliegen...mal schauen ob ich davon irgendwas aktiviere...

Auf jeden Fall: Sehr geiles Projekt!

Ich hab da ein paar Sachen im Sunray Unterforum letztes Jahr schon gepostet, die man natürlich auch mit CaSSAndRA umsetzen kann.

Beste Grüße,
Chris
 
Ich sag mal so, wenn du schon einen Raspberry einrichten können, dann kannst du auch CaSSAndRA einrichten. Du musst dazu kein Python können. Nur ein paar Befehle im Terminal ausführen
 
Ja das krieg ich schon hin, hab den Volkszähler ja auch hinbekommen.
Ein bißchen geht da schon. Hab vor 30 Jahren Basic programmiert, später Turbo Pascal, dann 20 Jahre nix, und seit ein paar Jahren C++ für ein paar ESPs.
Ein bißchen Linux geht auch.
CaSSAndRA krieg ich schon installiert, da hab ich keine Bedenken.
Nur wenn ich mir den Volkszähler zerschieße wäre ich wohl aufgeschmissen.
Da geht's dann darum irgendwas von einem Laufwerk woanders hin umzubiegen, Partitionen anders zuzuordnen und son Zeug...da bin ich raus
 
Python kannst du auch auf Windows ausführen, bei Linux ist das halt vorinstalliert. Installiere Python 3.10 dann die notwendigen Bibliotheken aus dem requirements.txt und dann sollte es auch auf Windows klappen
Bin fast am Ziel: Python 3.10 für Win10 installiert, die Schritte in der Readme ausgeführt: es werden auch die entsprechenden Libraries geladen und installiert. Beim Starten in windows CMD mit Admin Rights:

E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA>python3 app.py

gibts die Fehlermeldung Permission denied - muss ich irgendwo noch Pfade einstellen, etwas vergessen?

Besten Dank für einen kurzen Tipp

2023-06-21 19:12:29 ERROR Backend: Could not read rovercfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
2023-06-21 19:12:29 ERROR Backend: Could not read pathplannercfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
2023-06-21 19:12:29 ERROR Backend: Could not read pathplannercfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
2023-06-21 19:12:29 ERROR Backend: Could not read appcfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
Traceback (most recent call last):
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\app.py", line 25, in <module>
from src.components import ids, navbar, offcanvas, modalremotecontrol, modalinfo
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\components\offcanvas.py", line 7, in <module>
from . import joystick, ids
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\components\joystick.py", line 7, in <module>
from src.backend.data.roverdata import robot
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\backend\data\roverdata.py", line 16, in <module>
class Mower:
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\backend\data\roverdata.py", line 49, in Mower
rover_image: Image = Image.open(os.path.dirname(__file__).replace('/backend/data', '/assets/icons/'+appcfg.rover_picture+'rover0grad.png'))
File "C:\Users\GG\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PIL\Image.py", line 3236, in open
fp = builtins.open(filename, "rb")
PermissionError: [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
 
Scheint mir doch ein Windows Problem mit Permissions zu sein... Bin dabei es hoffentlich zu lösen... Seltsamerweise konnten die ganzen Module geladen und geschrieben werden, das Program scheint nicht berechtigt zu sein...
 
@EinEifnach ich habe nochmal zwei Fragen.

1.) cassandra fragt die ganze Zeit via HTTP den Status ab - auch wenn der Mäher gerade nicht arbeitet und kein Client connected ist. Das führt bei Alfred dazu, dass die CPU nie schlafen geht und die ganze Zeit 24/7 unnötig Strom verbraucht wird. Kann man das ggf. ändern, so dass nur angefragt wird, wenn auch ein Client verbunden ist?

2.) Wenn ich eine Mähfläche mit Cassandra mähe, mäht er gefühlt viel Dichter den Rand und landet gerne in den Blumen als bei Sunray - ist das eine Einstellung oder Zufall?
 
1.) cassandra fragt die ganze Zeit via HTTP den Status ab - auch wenn der Mäher gerade nicht arbeitet und kein Client connected ist. Das führt bei Alfred dazu, dass die CPU nie schlafen geht und die ganze Zeit 24/7 unnötig Strom verbraucht wird. Kann man das ggf. ändern, so dass nur angefragt wird, wenn auch ein Client verbunden ist?
Das musst du mir genau erklären. Banana Pi legt sich schlafen, wenn nichts gemacht wird? Und wird von der Sunray App aufgeweckt?
Oder machst du den Alfred nach dem Mähen aus und du möchtest deinen Server schlafen legen?
2.) Wenn ich eine Mähfläche mit Cassandra mähe, mäht er gefühlt viel Dichter den Rand und landet gerne in den Blumen als bei Sunray - ist das eine Einstellung oder Zufall?
Ist mir nicht aufgefallen, hast du die neueste Version am Laufen, mit dem neuen Cut Edge Planner? Evtl. habe ich da was falsch gemacht.

Wenn du mir einen Export aus der Sunray App (mit Mähwegen) zur Verfügung stellst und mir sagst welche Einstellungen hast du bei der Berechnung in CaSSAndRA vorgenommen, dann kann ich die Wege übereinander legen und schauen ob da eine Abweichung vorliegt.

Gruß
Alexander
 
zu 1.) nein Linux macht das automatisch. Wenn du weniger I/O Last und CPU Last verursachst wird die CPU heruntergetaktet - das passiert nun aber nicht weil dauerhaft Requests eintrudeln

zu 2.) OK das prüfe ich lieber vorher nochmal ganz genau ;-)
 
Ich habe es bisher so verstanden, dass die Infos von Cassandra eingesammelt werden um sie dann dem Client (Browder / Handy) zu präsentieren / anzuzeigen. Wenn dem so ist, würde es ja reichen die Infos nur einzuholen, wenn überhaupt ein Client mit Cassandra verbunden ist.

Sollte dem nicht so sein, dann wäre es evtl. super, wenn man die Abfragen beim Status: Idle und Charging reduziert?
 
Leider noch zwei Fragen:
1.) Der Mähwinkel wurde bei Sunray pro Karte gespeichert - geht das bei Cassandra auch?
2.) könnte man beim Auto Zoom oder Kartenausschnitt den Docking Path ignorieren - der ist bei mir weit weg von der Karte und damit muss ich immer erst zoomen bevor ich etwas erkennen kann
 
@EinEifnach bin ich bei der INstallation irgendwo falsch abgebogen?

Mein docker start sieht wie folgt aus:
```
# docker logs cassandra
2023-06-18 20:23:48 ERROR Backend: Could not read rovercfg.json. Missing datacfg.json
2023-06-18 20:23:48 DEBUG [Errno 2] No such file or directory: '/usr/src/cassandra/src/data/datacfg.json'
2023-06-18 20:23:48 DEBUG Found GEOS DLL: <CDLL '/usr/local/lib/python3.10/site-packages/Shapely.libs/libgeos_c-c8ec7514.so.1.16.1', handle 55b2b5346200 at 0x7f3920ee05b0>, using it.
2023-06-18 20:23:48 INFO Backend: Starting backend server
2023-06-18 20:23:48 DEBUG absolute_path: /usr/src/cassandra/src/backend
2023-06-18 20:23:48 INFO Backend: Read communication config file
2023-06-18 20:23:48 DEBUG Opening commcfg.json
2023-06-18 20:23:48 ERROR Backend: Failed to load communication config file. Missing file
2023-06-18 20:23:48 DEBUG [Errno 2] No such file or directory: '/usr/src/cassandra/src/data/datacfg.json'
2023-06-18 20:23:48 INFO Backend: Read map config file
2023-06-18 20:23:48 DEBUG Opening mapcfg.json
2023-06-18 20:23:48 ERROR Backend: Failed to load map config file. Missing file or invalid data.
2023-06-18 20:23:48 INFO Backend: Create mapcfg with default values: Mowoffset: 0.18; Mowangle: 0; Mowedge: Yes; Distance to border: 1; Pattern: lines
2023-06-18 20:23:48 INFO Backend: Positionmode: absolute, lon: 0.0, lat: 0.0
2023-06-18 20:23:48 DEBUG [Errno 2] No such file or directory: '/usr/src/cassandra/src/data/datacfg.json'
2023-06-18 20:23:48 DEBUG Values for mapcfg. mowoffset: 0.18 mowangle: 0 distance to border: 1 pattern: lines mowedge: yes
2023-06-18 20:23:48 INFO Backend: Read app config file
2023-06-18 20:23:48 DEBUG Opening appcfg.json
2023-06-18 20:23:48 ERROR Backend: Failed to load app config file. Missing file or invalid data.
2023-06-18 20:23:48 DEBUG [Errno 2] No such file or directory: '/usr/src/cassandra/src/data/datacfg.json'
2023-06-18 20:23:48 INFO Backend: Create appcfg with default values
2023-06-18 20:23:48 DEBUG Values for appcfg. datamaxage: 30 time until offline: 60 soc look up table: [{'V': 23.5, 'SoC': 0}, {'V': 28.0, 'SoC': 100}]
2023-06-18 20:23:48 INFO Backend: Read saved data
2023-06-18 20:23:48 WARNING Backend: Failed to load state data, create a default data frame
2023-06-18 20:23:48 WARNING Backend: Failed to load statistics data, create a default data frame
2023-06-18 20:23:48 WARNING Backend: Failed to load calced data from state, create a default data frame
2023-06-18 20:23:48 WARNING Backend: Failed to load calced data from stats, create a default data frame
2023-06-18 20:23:48 INFO Backend: Read map data file
2023-06-18 20:23:48 ERROR Backend: Could not read data from file. Missing tmp.json
2023-06-18 20:23:48 DEBUG [Errno 2] No such file or directory: '/usr/src/cassandra/src/data/map/tmp.json'
2023-06-18 20:23:48 ERROR Backend: Could not read perimeter from file. Missing datacfg.json
2023-06-18 20:23:48 DEBUG [Errno 2] No such file or directory: '/usr/src/cassandra/src/data/datacfg.json'
Traceback (most recent call last):
File "/usr/src/cassandra/app.py", line 77, in <module>
main()
File "/usr/src/cassandra/app.py", line 41, in main
backendserver.start()
File "/usr/src/cassandra/src/backend/backendserver.py", line 156, in start
if connect_data['USE'] == 'MQTT':
KeyError: 'USE'

```

Hallo Disaster123,

bin auch gerade dabei Cassandra zu testen - mangels PI aktuell (kommt sobald die Preise wieder sinken) versuche ich es aktuell mit Windows 10, Python3.10 installiert und mit Adminrights in CMD gestartet. Ich scheine ein ähnliches Problem wie Du zu haben. Konntest Du es im Docker lösen? Vielleicht hilft es ja auch bei Windows/Python?


E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA>python3 app.py

Nach starten gibts die Fehlermeldung Missing datacfg.json / Permission denied - ähnlich wie bei Dir.

Besten Dank für einen kurzen Tipp



2023-06-21 19:12:29 ERROR Backend: Could not read rovercfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
2023-06-21 19:12:29 ERROR Backend: Could not read pathplannercfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
2023-06-21 19:12:29 ERROR Backend: Could not read pathplannercfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
2023-06-21 19:12:29 ERROR Backend: Could not read appcfg.json. Missing datacfg.json
2023-06-21 19:12:29 DEBUG [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
Traceback (most recent call last):
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\app.py", line 25, in <module>
from src.components import ids, navbar, offcanvas, modalremotecontrol, modalinfo
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\components\offcanvas.py", line 7, in <module>
from . import joystick, ids
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\components\joystick.py", line 7, in <module>
from src.backend.data.roverdata import robot
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\backend\data\roverdata.py", line 16, in <module>
class Mower:
File "E:\Documents\Ardumower\Cassandra\CaSSAndRA-master\CaSSAndRA\src\backend\data\roverdata.py", line 49, in Mower
rover_image: Image = Image.open(os.path.dirname(__file__).replace('/backend/data', '/assets/icons/'+appcfg.rover_picture+'rover0grad.png'))
File "C:\Users\GG\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PIL\Image.py", line 3236, in open
fp = builtins.open(filename, "rb")
PermissionError: [Errno 13] Permission denied: 'E:\\Documents\\Ardumower\\Cassandra\\CaSSAndRA-master\\CaSSAndRA\\src\\backend\\data'
 
Ich tippe nein. Bei mir fehlten im docker die Dateien aus data weil der Pfad in docker via bind mount gesondert in den Container eingebunden wird.
 
Oben