Mein Projekt CaSSAndRA zur Steuerung des Ardumowers

EinEinfach

Well-known member
Hallo zusammen,

stört es euch auch, dass die Sunray App nicht auf dem Rover läuft? Dass Ihr nicht wisst welche Karte im Rover geladen ist? Dass Ihr umständlich die Geräte untereinander synchronisieren müsst, damit überall die aktuelle Karte/Aufgabe gespeichert ist?

Da ich nicht nur ein Gerät zum Bedienen des Rovers nutze, haben mich die oberen Punkte immer wieder gestört. Um wiederkehrende Sachen zu vereinfachen schreibt man bekannterweise diverse Skripte und lagert diese Aufgaben aus. So ging es bei mir los und wurde immer mehr. Mittlerweile sieht es sogar gut aus, dass ich es euch vorstellen kann.

CaSSAndRA (Cascaded Sunray Server And Rover Application) ist eine Server Anwendung, die in Python geschrieben ist und soll die Sunray FW unterstützen. Im ersten Schritt habe ich geplant, die Anwendung auf einem kleinen Rechner im Netzwerk laufen zu lassen, die dann über MQTT mit dem Rover kommuniziert. Mittlerweile läuft die Anwendung auf dem Paspberry Pi, der im Rover verbaut ist und dieser kommuniziert über UART mit dem AGM4 (DUE)

Das heißt (historisch gewachsen) kann die Anwendung über 3 Wege mit der Sunray FW kommunizieren:
1. HTTP (klassische Verbindung wie das die Sunray App tut), mit oder ohne „ENABLEPASS“. Für diejenigen, die keinen MQTT Server haben, keinen Raspberry Pi im Rover, oder einfach mal CaSSAndRA ausprobieren möchten. Evtl. geht es auch mit Alfred. Verbindung sehr selten von mir genutzt, also sehr wenig getestet.
2. MQTT, für diejenigen, die sowieso alles über MQTT machen. Lange bei mir im Einsatz gewesen.
3. UART, für diejenigen, die einen Einplatinencomputer durch die Gegend spazieren fahren und dieser über USB mit dem AGM oder DUE verbunden ist.

Nach der Installation kann UI über den Webbrowser eurer Wahl aufgerufen werden. Da die Daten auf dem Server (Radpberry Pi, oder sonstiger Computer in eurem Netzwerk) sind, entfällt die Synchronisierung zwischen den Geräten. Als Frontend arbeitet Dash und dieser bringt relativ mächtiges Plot Werkzeug Plotly mit sich.

Was kann CaSSAndRA? Aktuell nicht viel, aber was es kann, kann es schon ziemlich gut und die Liste mit den geplanten Features ist lang.

So sieht die Startseite aus:
photo1686830781.jpeg
Über die Buttons kann gewünschte Aktion gewählt werden und mit Play Button gestartet oder mit Stop Button gestoppt werden.
1. Häusschen -> ist selbsterklärend
2. Mähe alles. Mit der Aktion wird ein Vorschau des Musters erzeugt und angezeigt. Mit anschließenden drücken des Play Buttons startet die Routenberechnung, danach wird die Karte in den Mower geladen und dieser legt los.
3. Mähe ausgewählten Bereich. Mit der Aktion wird mitgeteilt, dass nur ausgewählter Bereich gemäht werden soll. Danach oben im Plot mit Lasso-Werkzeug oder Box-Select den Bereich auswählen und mit Play die Aktion starten, danach wird die Routenberechnung gestartet, die Karte in den Mower geladen und dieser legt wieder los.
4. Gehe zum Punkt. Aktion auswählen, einen beliebigen Punkt auf der Karte auswählen und mit Play die Aktion starten. Danach startet die Routenberechnung, die Karte wird in den Mower geladen. Der Mower fährt mit ausgeschaltetem Mähwerk zu dem Punkt. Ist ganz praktisch, man muss ihn nicht durch den Garten schleppen, wenn man das Ding irgendwo braucht.
5. Temporäre Einstellungen für kommenden Mähvorgang. Mähbreite, Mähwinkel, Muster(Linien, Karo, Kreise(sind noch nicht produktiv))
6. Aktion abbrechen

Ihr merkt schon, wie das ganze gedacht ist. Zu keinem Zeitpunkt sollen Mähwege irgendwo in irgendeiner Form gespeichert werden. Diese werden immer kurz vor dem Start berechnet und hochgeladen. Da in die Plannung auch die aktuelle Position des Mähers mit eingeht. Das ganze dauert nur wenige Sekunde (Das längste an der Geschichte ist die Berechnung des Musters)

photo1686899755.jpeg
Außerdem gibt es Remote Control mit diversen Aktionen(Aus, Reboot, GPS Reboot, Mähwerk an/aus, Setzen der Geschwindigkeit, Überspringe den aktuellen Zielpunkt)
Weitere Funktionen in Plannung

39787F0E-6AFC-475D-8E35-840DB147C0BA.png
Man kann sich auch ein Paar Messwerte anschauen.

Ausserdem schreibt der Server die Messwerte in mehrere Dateien weg. Haltetdauer ist auf 30 Tage begrenzt, wird aber konfigurierbar sein. Damit plane ich später eine Statistik Seite mit diversen Plots zu realisieren, was wie (Bar Chart, Pie Chart…) Gerne Vorschläge von euch, alles noch offen.

Hier noch ein paar Bilder, wie so ein selektirter Berech aussehen kann:
04D4C13B-8D3B-47D1-9D01-67E02947D141.png
photo1686830351.jpeg

Jetzt seid Ihr dran, habt Ihr Interesse an der App, dann fange ich langsam alles auzuräumen und anschließend den Code zu veröffentlichen.
Solltet Ihr kein Interesse haben, dann ist das auch Ok und ich konzentriere mich nur auf die Sachen, die ich brauche.

Edit (ein kurzes Vorstellungsvideo):

Edit 28.04.2023:
Der Code sowie die Installationsanleitung ist auf Github zu finden:
CaSSAndRA

An der Bedienungsanleitung arbeite ich noch, aber Ihr könnt schon mal schauen, ob bei euch die Installation klapt.

Edit 3.11.2023
Aktuelle Themen:
Planed Features:
  • Replace Mower sign through direction based picture
  • GPS based speed
  • Telegramm messages in case of error
  • Router Service to remove ESP32
  • Mapping
  • Complex taskplanner incl timecontrol (Define, save, combine, automaticly start different tasks)
  • Statistic page
  • Showing virtual obstacle (AT+S2)
  • Speed set point for transit and mow
  • Skip to nextpoint
  • Skip to progress
  • Heatmap (Wifi signal strength)
  • Different mow speeds for border cut an mow area
  • Turn map in defined angle for better using of box-select
  • Make points moveable in mapping section
  • Use mower size to improve planned route
  • Debug page with log informations and possibility to set every AT command (like in Arduino IDE)
  • Replace Zone Select Button through reload button. Zone Select should be just triggered by using Lasso or box select. Reload button will trigger path planning once again, it is useful if mow settings are changed but zone stays the same
Aktuelle Probleme:
  • Exclusion mowpath wird entweder unvollständig abgefahren oder verletzt die Grenze
  • Mögliche Beschädigung der messdateien beim stoppen des Services
  • Reset mow path after finish the task
  • Shutdown and Reset in UART mode not possible
  • Dead man switch in UART Mode
  • Server crashed in case of empty string in http mode
  • Not saved changes stays as message after saving perimeter
  • No warnings in case of the same map name when saving new map (save will be ignore)
  • App doesn’t work with python 3.11 due to changes in python dataclasses library
  • Mow speed didn’t save after changing in remote control
Pflege:
  • Umstellung auf Shapely V2.X
  • Umstellung auf Python dataclasses
Schöne Grüße
Alexander
 

Anhänge

  • FEC01511-DC58-4830-99AE-7096293A4581.png
    FEC01511-DC58-4830-99AE-7096293A4581.png
    354,9 KB · Aufrufe: 529
  • 407BF9E3-FCC1-4254-9D26-4F41B4B06314.png
    407BF9E3-FCC1-4254-9D26-4F41B4B06314.png
    348,2 KB · Aufrufe: 472
  • F0D41C72-91C8-4427-8036-591419BEF08E.png
    F0D41C72-91C8-4427-8036-591419BEF08E.png
    595,3 KB · Aufrufe: 475
  • photo1686060225(1).jpeg
    photo1686060225(1).jpeg
    48,3 KB · Aufrufe: 13
Zuletzt bearbeitet:
Hört sich interessant an, Firmware darüber online update bar?
Nein, definitiv nicht. Kommunikation erfolgt nur auf der Ebene was die Sunray FW hergibt.

Denkbar wäre eine Umsetzung wenn über UART kommuniziert wird, aber in der Konstellation kann man gleich Arduino IDE auf dem Raspberry laufen lassen und damit kann man auch updaten
 
Erst einmal: Super genial!
Zum einen natürlich Dein neuer Ansatz einer Bedienumsetzung zum anderen aber auch Dein Engagement, mal einen Code für eine Bedienung bereitzustellen, an dem die Community vielleicht gemeinsam weiterentwickeln und Ideen generieren kann.

Da ich eh gestern noch mal einen eingestaubten PI3 ausgegraben und neu aufgesetzt habe, um ihn mal in Muh mitfahren zu lassen, würde sich eine Testimplementierung auf jeden Fall lohnen. Wenn ich Dich richtig verstehe, meinst Du mit UART den normalen USB-Port des Adafruit Grand Central M4, den man für gewöhnlich aus dem Mäher herausführt. Man kann den Raspberry also auch erst einmal testweise außerhalb des Gehäuses einstecken und mitführen. Ich denke, bei einem Einbau ins Gehäuse müsste man sich Gedanken über eine externe WLAN-Antenne machen. Außerdem kann man auch so erst einmal noch den Laptop anstecken, wenn benötigt, ohne den Mäher jederzeit aufschrauben zu müssen.

Der einzige Nachteil dieser Umsetzung: Der Zugriff funktioniert nur, wo ausreichend WLAN ist. Aber ich kann mir gut vorstellen, dass sich die beiden Apps gut ergänzen können.
 
Wenn ich Dich richtig verstehe, meinst Du mit UART den normalen USB-Port des Adafruit Grand Central M4, den man für gewöhnlich aus dem Mäher herausführt.
Korrekt, theoretisch ist bei dieser Verbindung auch ein Sunray FW logging, was man standartmäßig in der Arduino IDE sieht, über den Browser möglich.
Der einzige Nachteil dieser Umsetzung: Der Zugriff funktioniert nur, wo ausreichend WLAN ist. Aber ich kann mir gut vorstellen, dass sich die beiden Apps gut ergänzen können.
Ja, steuern geht nur über WiFi. Egal für welchen Verbindungsweg man sich entscheidet

Ich habe dem ersten Post ein kleines Introvideo hinzugefügt. Ich denke dann kann man etwas besser verstehen wie die Bedienung funktioniert.

Gruß
Alexander
 
Hallo,
also ich habe auf jeden Fall Interesse daran, gibt es eine Zeitplanung in deiner App weil die mir im Moment am meisten fehlt ?
 
Kommt auf den Verbindungstyp an, wenn MQTT oder HTTP, dann läuft die Kommunikation über den ESP32. Gehst du auf die Lösung mit dem Raspberry Pi, dann braucht man theoretisch den ESP32 nicht mehr. Muss dir aber bewusst sein, dass du mit der Sunray App nicht mehr drauf kommst
 
!
Erst einmal: Super genial!
Zum einen natürlich Dein neuer Ansatz einer Bedienumsetzung zum anderen aber auch Dein Engagement, mal einen Code für eine Bedienung bereitzustellen, an dem die Community vielleicht gemeinsam weiterentwickeln und Ideen generieren kann.

Da ich eh gestern noch mal einen eingestaubten PI3 ausgegraben und neu aufgesetzt habe, um ihn mal in Muh mitfahren zu lassen, würde sich eine Testimplementierung auf jeden Fall lohnen. Wenn ich Dich richtig verstehe, meinst Du mit UART den normalen USB-Port des Adafruit Grand Central M4, den man für gewöhnlich aus dem Mäher herausführt. Man kann den Raspberry also auch erst einmal testweise außerhalb des Gehäuses einstecken und mitführen. Ich denke, bei einem Einbau ins Gehäuse müsste man sich Gedanken über eine externe WLAN-Antenne machen. Außerdem kann man auch so erst einmal noch den Laptop anstecken, wenn benötigt, ohne den Mäher jederzeit aufschrauben zu müssen.

Der einzige Nachteil dieser Umsetzung: Der Zugriff funktioniert nur, wo ausreichend WLAN ist. Aber ich kann mir gut vorstellen, dass sich die beiden Apps gut ergänzen können.
Using a raspberry PI connected on UART and locate inside mower case.
You have many option:
You can connect a Tactile screen on it and use the mower without WIFI (app is on the tactile screen)
You can use the PI as access point and phone connect directly to PI.
VNC over direct access point
Etc.....

It's what you can see in the AZURITBER WIKI
 
Eine sehr schöne Lösung. Eine tolle Leistung. (y) Ich bin interessiert.

Ich finde auch die verschiedenen Aufsetzpunkte sehr flexibel. Zum Testen kann man erst einmal über MQTT arbeiten, bevor man einen Raspberry in den Ardumower einbaut.

Reicht für den Einsatz ein Raspberry Pi Zero 2 W aus?

Viele Grüße
Oliver
 
Extrem cooler Ansatz und unglaublich, was du da alles schon umgesetzt hast. Das Projekt hat definitiv Potential und hat jetzt schon einen deutlichen Mehrwert ggü. der Original-App. Ich bin begeistert.
 
kann mich den Vorrednern nur anschließen, sehr Interessant und Hut ab was Du da schon gemacht hast!!! Hoffe auf eine baldige Testmöglichkeit :cool:
Kann man auch neue Mäh-Karten anlegen mit Cassandra?
 
bevor man einen Raspberry in den Ardumower einbaut.
Erste Tests mit Raspberry sind gar nicht so aufwändig.
Im Stand: PI anstelle des Laptops am rausgelegten USB-Port des Ardumowers anschließen und mit Spannung versorgen. Schon kann der PI per serieller Schnittstelle mit dem Adafruit kommunizieren.
Für Fahrtests bei Schönwetter: Spannungsversorgung des PI durch eine Powerbank. Alles etwas fixieren - Für einen Testlauf bspw. alles auf dem Heck rückstandsfrei wieder lösbar per Tesafilm.
So kann man recht einfach ein paar Tests per PI machen, ohne gleich alles intern fest verbauen, eine externe WLAN-Antennenlösung, die Spannungsversorgung lösen, ... zu müssen.

Mit einem PI zusätzlich am/im Mäher kann man auch noch einiges mehr machen, mit dem man auch schon spielen kann bis EinEinach seine Umsetzung veröffentlicht hat: FPV-WebCam, sozusagen eine Art OTA über diesen PI, während der Fahrt Einsicht in den seriellen Log, ... Bspw. hat Alexander auch ein paar nette Versuche beschrieben (Stichwort Heatmap und optische Rasenerkennung).

Natürlich warte ich auch gespannt auf die Umsetzung von @EinEinach. Aber lass Dich bloß nicht unter Druck setzen.
 
Reicht für den Einsatz ein Raspberry Pi Zero 2 W aus?
Läuft dort auch raspian? Wie ist dieser Ressourcentechnisch ausgelegt? Ich meine solange es ein Linux System ist und dort Python 3 drauf ist, kannst du alles nehmen. Wird halt bei diversen Berechnungen nicht so flott sein, aber so what… darum geht es nicht
 
Reicht für den Einsatz ein Raspberry Pi Zero 2 W aus?
Wenn Du ihn so und so hast: Probier es einfach. Ich habe gerade gesehen: Raspberries sind ja extrem teuer geworden. Vor paar Jahren hatte ich unsere noch für 30€ gekauft. Jetzt verstehe ich, weshalb die beim Alfred auf Banana PI gesetzt haben.
Wenn Du den neu kaufen willst, bedenke, dass der Zero nur 2 USB-Steckplätze hat. 1 Benötigst Du für die Kommunikation zum Adafruit/Arduino. Wenn Du WLAN nach außen legen willst, könntest Du hierfür schon den 2. mit einem WLAN-Stick belegen. Willst Du vielleicht noch eine WebCam anschließen, benötigst Du schon einen USB-Hub.
 
Oben