Mein Projekt CaSSAndRA zur Steuerung des Ardumowers

Sollte themanfrommoon eine Anleitung (für die Landwirtschaft ;-) zur Implementierung von CASSANDRA auf dem ALFRED hinbekommen
...is schon fast fertig. Allerdings auf einem separaten RaspberryPi.
Ehrlich gesagt finde ich, dass CaSSAndRA einen eigenen Forumsbereich verdient hat. Da würde ich die Anleitung dann gerne als separates Thema posten. (mache ich auch so, kommt heute noch, kann man ja auch später verschieben)
 
Da muß ich Dich enttäuschen. Neben themanfrommoon bin ich auch so einer. Ich habe mir extra einen ALFRED gekauft und keinen ARDUMOWER, weil man da bis auf das Einrichten der Umgebung (WLAN, Karten, ...) eben nichts von Linux oder Interrupt-Programmierung etc. verstehen muß.

Warum holst du dir nicht einen Mäher von der Stange? Es gibt mittlerweile genug RTK Mäher, die dann angeblich Plug and Play sind. Es gibt, dann andere Foren, wo man seinen Unmut aussprechen kann…

Ich sage mal so, die alle ersten Alfreds die als fertig Geräte verkauft worden, diese Leute kann ich verstehen, es kam definitiv falsch rüber… man erwartet hier ein Plug and Play… was Alfred nie war, einige von euch sind unbeabsichtigt in die Bastelcommunity geraten, ohne wirklich das zu wollen.
Aber mittlerweile, wenn man sich einen Alfred Bausatz kauft muss man auch Lust dazu haben die Materie zu erforschen, ansonsten hat man sich fads falsche Produkt entschieden. Wer denkt, dass mit zusammenstecken es getan ist… na wie soll ich das nett ausdrücken… wird teueres Lehrgeld bezahlen müssen
 
Okay, wer keine Ahnung hat was eine SD Karte ist, wo die hingehört und was man damit macht, wer noch nie eine Konfigurationsdatei editiert hat, der ist hier falsch.
Aber um hier zu bestehen muss man kein Linux Crack sein, es geht auch ohne. Ich tippel schon ein paar Jahre in Linux Systemen rum, aber ich bin weit weg von Fortgeschritten. "cd" kenne ich noch aus DOS 6.2 Zeiten, so ungefähr 30 Jahre ist das her. In DOS kannte ich mich aus. In Linux.....naja die einfachsten Basics, ja. Aber wenn was nicht klappt, dann bin ich doof :cool:
Warum ich mich für Alfred entschieden habe? Weil das der beste Mähroboter wird! Warum? Weil es kein Konsumerprodukt ist, bei dem die Entwicklung abgeschlossen ist. Ich bin davon überzeugt, dass die Steuerung immer weiter entwickelt wird und immer mehr Features haben wird als alle anderen Mähroboter zusammen. Und weil Alfred für mich schon letztes Jahr funktioniert hat.
Ich würde Alfred wieder kaufen. Das liegt aber auch in meiner DNA, ich bin sicherlich keine reiner Konsumer, sondern bin schon bastelwillig.
Ich weiss nicht, was ich ohne Alfred gemacht hätte. Der Ardumower ist keine Option für mich, ich finde ihn hässlich und ein 360° Bumper ist für mich ein absolutes Must Have. Meiner Meinung ist ist die Hardware vom Ardumower, Antriebsmotoren und Mähmotoren gut, von den Motortreiber hat man leider viel schlechtes gelesen, aber daran wird gearbeitet, die CPU finde ich veraltet, da denke ich ist Linux schon besser....aber das Gehäuse geht für mich leider gar nicht. Was bei Alfred notgedrungen leider nicht optimal zu sein scheint ist, der BananaPi. Das wäre wohl besser ein RaspberryPi, weil der Raspberry Kernel besser gepflegt ist und eine deutlich größere Community hat, aber da kenne ich mich wieder nicht aus.
Alfred ist für MICH der perfekte Mäher, und der wird auch noch besser, davon bin ich absolut überzeugt!

Beste Grüße,
Chris
 
Warum holst du dir nicht einen Mäher von der Stange? Es gibt mittlerweile genug RTK Mäher, die dann angeblich Plug and Play sind. Es gibt, dann andere Foren, wo man seinen Unmut aussprechen kann…

Ich sage mal so, die alle ersten Alfreds die als fertig Geräte verkauft worden, diese Leute kann ich verstehen, es kam definitiv falsch rüber… man erwartet hier ein Plug and Play… was Alfred nie war, einige von euch sind unbeabsichtigt in die Bastelcommunity geraten, ohne wirklich das zu wollen.
Aber mittlerweile, wenn man sich einen Alfred Bausatz kauft muss man auch Lust dazu haben die Materie zu erforschen, ansonsten hat man sich fads falsche Produkt entschieden. Wer denkt, dass mit zusammenstecken es getan ist… na wie soll ich das nett ausdrücken… wird teueres Lehrgeld bezahlen müssen
Zunächst eine kleine Klarstellung: ich habe keinen Unmut geäußert, sondern lediglich meine Meinung (und meinen Background) kundgetan. Sollte da etwas falsch rüber gekommen sein, dann tut es mir leid. Ich bin hier im Forum auch ganz zufrieden und lese gerne und intensiv mit, welche Probleme so auftreten und behandelt werden. Leider kann ich - außer Testen und auf Bugs/Ungereimtheiten hinweisen - nichts beitragen.

Dein Hinweis auf "RTK Mäher von der Stange" ist durchaus berechtigt und trifft in meinem Fall genau den Kern. Ich habe mir nämlich ALFRED schon Anfang Mai 2022 bewußt als "RTK Mäher von der Stange" (zwar noch im Prototype-Stadium, aber passend für meine Bedürfnisse und mit weiteren geplanten SW-Entwicklungsstufen) nach einigen Telefonaten mit Marotronics gekauft. Ich war also sicherlich mit einer der ersten, die den fertig zusammengebauten ALFRED erworben haben und war auch von den anfänglichen Lieferproblemen betroffen (Lieferung erst Ende Juli 2022). In meinem Garten läuft ALFRED seit 01.08.2022. Den "Bausatz ALFRED", den man jetzt kaufen kann, hätte ich nicht erworben.
 
....ich gebe zu, ich habe keine Ahnung!

In der Anleitung zu CaSSAndRA steht als erstes, dass man sich per MQTT, HTTP oder UART verbinden soll.
...was nimmt man wann?
...welche Vor- und Nachteile gibt es?
...was ist die beste, schnellste, sicherste Variante?
...was nehme ich bei Alfred, wenn CaSSAndRA auf einem externen RaspBerryPi und was nehme ich wenn CaSSAndRA auf dem internen BananaPi läuft?

Mein Alfred fährt gerade draußen von Sunray gesteuert rum.

Kann ich CaSSAndRA trotzdem testen, oder zu welchen Fehlern führt das?

Beste Grüße,
Chris
 
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.
Siehe ersten Post
 
....ähh ja.... ganz so einfach ist es leider nicht.
UART ist also seriell, das geht dann nur mit dem originalen Ardumower vermute ich mal (Alfred fährt ja auch einen Einplatinencomputer durch die Gegend spazieren, aber das ist dann nicht gemeint?)
MQTT habe ich (mosquitto auf einem anderen RaspberryPi, aber der ist nur mit datenlogging und shelly Steuerung beschäftigt) Wie MQTT in Verbindung mit Alfred funktioniert, keine Ahnung, da bin ich noch nicht)

Also wahrscheinlich HTTP für meinen Alfred?!

Mein Alfred fährt gerade draußen von Sunray gesteuert rum.
Kann ich CaSSAndRA trotzdem testen, oder zu welchen Fehlern führt das?

Beste Grüße,
Chris
 
Okay, fange ich mal an mit den Sachen die mir so auffallen, und die man verbessern könnte:

In Sunray habe ich alle 10 Kartenslots in Benutzung, und alle sind benannt:
1688824234240.png

Wenn ich die in CaSSAndRA importiere, sieht das so aus:
1688824280103.png

Da fallen mir zwei Sachen auf, die man verbessern könnte:
1. Da kommt der Programmierer durch, die Zahlen fangen bei "0" an :D. Aber es sieht einfach besser aus, wenn die Zahlen mit "1" anfangen. Man spricht ja sicherlich von "Karte 1" und nicht von "Karte 0"
2. Wäre es natürlich cool, wenn auch die Namen angezeigt werden

Beste Grüße,
Chris
 
Hmmm, irgendwie will das nicht?!
Ich habe aus Sunray meine Karten in ein .txt file exportiert.
In CaSSAndRA gehe ich auf "Mapping" wähle bei "upload sunray file" eine Karte aus und klicke auf "save imported perimeter".
Dann gebe ich der Karte ihren alten Namen in Sunray: "Garten mit Exklusionen editiert Hasenberg" und klicke auf OK.

Der Perimeter wird auch angezeigt:
1688825283566.png

...aber sonst geht nichts?!
Ich sehe "Please save first" ......aber wie/wo? Ich dachte ich hätte sie gerade gespeichert.
Unter "Saved perimeters" kann ich auch keine Karte auswählen?!
Ich habe es auch mit kürzeren Kartennamen versucht, nur "Garten" oder nur "1".
Leider funktioniert das nicht.

Ich habe allerdings noch keine Verbindung eingerichtet....oder liegt das daran?

Beste Grüße,
Chris
 
So jetzt erinnern wir uns wieder an die Linux Kenntnisse.
Starten putty und verbinden uns mit raspberry und dann geben das ein
journalctl -u cassandra -f
Jetzt sehen wir Haufen Ausgaben von Cassandra. Jetzt probieren wir noch mal die Karte zu speichern und beobachten im putty was Cassandra von sich gibt. Die Ausgabe rauskopieren und hier posten. Die Ausgabe von journalctl beenden wir wieder ctrl+C
 
Zuletzt bearbeitet:
...mein Festnetzinternet ist leider gerade tot. Aber mit umschalten auf einen Hotspot gehts...

Code:
pi@raspberrypi:~ $ journalctl -u cassandra -f
-- Journal begins at Wed 2023-05-03 05:11:24 CEST. --
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 INFO Backend: Try initial HTTP request
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 DEBUG Calced checksumme: 0x16
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7fa4e73ca0>, 'Connection to 192.168.1.1 timed out. (connect timeout=2)'))
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 INFO Backend: Try initial HTTP request
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG Calced checksumme: 0x16
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
^C
pi@raspberrypi:~ $

Mehr kommt da leider nicht, auch nicht bei einem zweiten Versuch!
 
Zuletzt bearbeitet:
Sieht gut aus, jetzt brauche ich den Moment wo du auf speichern deückst. Verbindung zum Rover brauchst du dafür nicht
 
Das ist alles was da kommt. Ich habe schon aif speichern gedrückt

Ich bin mir nicht sicher, ob du es richtig machst. Ich fand es am Anfang auch etwas verwirrend. Du lädst die Sunray Datei rein - lädst dann eine MAP (0-9) aus dem SUnray File und du musst die dann in Cassandra speichern mit einem Namen. Bin mir gerade unsicher, ob man vorher noch einen neuen Permiter vom Scratch erzeugen musste.
 
Dann erstmal speichern und danach den journalctl anstatt von -f mit -e aufrufen. Und die letzten Einträge rauskopieren, du kannst mit Pfeilen nach oben scrollen, irgendwo muss da was mit speichern kommen
 
Code:
pi@raspberrypi:~ $ journalctl -u cassandra -e
Jul 08 17:00:39 raspberrypi python3[637]: 2023-07-08 17:00:39 INFO Backend: Try initial HTTP request
Jul 08 17:00:39 raspberrypi python3[637]: 2023-07-08 17:00:39 INFO Backend: Try initial HTTP request
Jul 08 17:00:39 raspberrypi python3[637]: 2023-07-08 17:00:39 DEBUG Calced checksumme: 0x16
Jul 08 17:00:39 raspberrypi python3[637]: 2023-07-08 17:00:39 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:39 raspberrypi python3[637]: 2023-07-08 17:00:39 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:41 raspberrypi python3[637]: 2023-07-08 17:00:41 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:41 raspberrypi python3[637]: 2023-07-08 17:00:41 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:41 raspberrypi python3[637]: 2023-07-08 17:00:41 INFO Backend: Try initial HTTP request
Jul 08 17:00:41 raspberrypi python3[637]: 2023-07-08 17:00:41 DEBUG Calced checksumme: 0x16
Jul 08 17:00:41 raspberrypi python3[637]: 2023-07-08 17:00:41 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:41 raspberrypi python3[637]: 2023-07-08 17:00:41 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:43 raspberrypi python3[637]: 2023-07-08 17:00:43 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:43 raspberrypi python3[637]: 2023-07-08 17:00:43 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:44 raspberrypi python3[637]: 2023-07-08 17:00:44 INFO Backend: Try initial HTTP request
Jul 08 17:00:44 raspberrypi python3[637]: 2023-07-08 17:00:44 DEBUG Calced checksumme: 0x16
Jul 08 17:00:44 raspberrypi python3[637]: 2023-07-08 17:00:44 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:44 raspberrypi python3[637]: 2023-07-08 17:00:44 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:46 raspberrypi python3[637]: 2023-07-08 17:00:46 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:46 raspberrypi python3[637]: 2023-07-08 17:00:46 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:46 raspberrypi python3[637]: 2023-07-08 17:00:46 INFO Backend: Try initial HTTP request
Jul 08 17:00:46 raspberrypi python3[637]: 2023-07-08 17:00:46 DEBUG Calced checksumme: 0x16
Jul 08 17:00:46 raspberrypi python3[637]: 2023-07-08 17:00:46 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:46 raspberrypi python3[637]: 2023-07-08 17:00:46 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:48 raspberrypi python3[637]: 2023-07-08 17:00:48 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:48 raspberrypi python3[637]: 2023-07-08 17:00:48 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:49 raspberrypi python3[637]: 2023-07-08 17:00:49 INFO Backend: Try initial HTTP request
Jul 08 17:00:49 raspberrypi python3[637]: 2023-07-08 17:00:49 DEBUG Calced checksumme: 0x16
Jul 08 17:00:49 raspberrypi python3[637]: 2023-07-08 17:00:49 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:49 raspberrypi python3[637]: 2023-07-08 17:00:49 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:51 raspberrypi python3[637]: 2023-07-08 17:00:51 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:51 raspberrypi python3[637]: 2023-07-08 17:00:51 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:51 raspberrypi python3[637]: 2023-07-08 17:00:51 INFO Backend: Try initial HTTP request
Jul 08 17:00:51 raspberrypi python3[637]: 2023-07-08 17:00:51 DEBUG Calced checksumme: 0x16
Jul 08 17:00:51 raspberrypi python3[637]: 2023-07-08 17:00:51 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:51 raspberrypi python3[637]: 2023-07-08 17:00:51 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:53 raspberrypi python3[637]: 2023-07-08 17:00:53 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:53 raspberrypi python3[637]: 2023-07-08 17:00:53 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:53 raspberrypi python3[637]: 2023-07-08 17:00:53 INFO Backend: Try initial HTTP request
Jul 08 17:00:53 raspberrypi python3[637]: 2023-07-08 17:00:53 DEBUG Calced checksumme: 0x16
Jul 08 17:00:53 raspberrypi python3[637]: 2023-07-08 17:00:53 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:53 raspberrypi python3[637]: 2023-07-08 17:00:53 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:55 raspberrypi python3[637]: 2023-07-08 17:00:55 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:55 raspberrypi python3[637]: 2023-07-08 17:00:55 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 INFO Backend: Try initial HTTP request
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 DEBUG Calced checksumme: 0x16
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:56 raspberrypi python3[637]: 2023-07-08 17:00:56 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 WARNING Backend: HTTP-Connection to the rover lost or not possible. Trying to reconnect
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG HTTPConnectionPool(host='192.168.1.1', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connec>
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 INFO Backend: Try initial HTTP request
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG Calced checksumme: 0x16
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG Data to be send: AT+V,0x16
Jul 08 17:00:58 raspberrypi python3[637]: 2023-07-08 17:00:58 DEBUG Starting new HTTP connection (1): 192.168.1.1:80
 
Ich kann keine Karte speichern und auch nicht die HTTP Verbindung speichern.

Mir kommt es so vor als hätte ich kein Schreibrecht dazu?!
 
Mit welchem User lässt Du CaSSAndRA laufen?
pi? Oder was hast Du da angelegt?
Du solltest den gesamten CaSSAndRA-Verzeichnisbaum mit chown dem User zuordnen und am Besten noch ein chmod 777 darauf geben.

Ggf. hat Dein Prozess keine Schreibrechte auf src/data

Bspw., wenn Du im Installationsordner von CaSSAndRA bist mit:
chmod -R 777 CaSSAndRA/
 
Moin,

Standard: pi

Code:
pi@raspberrypi:~/CaSSAndRA $ chmod -R 777 CaSSAndRA/
chmod: changing permissions of 'CaSSAndRA/': Operation not permitted
chmod: changing permissions of 'CaSSAndRA/src': Operation not permitted
chmod: changing permissions of 'CaSSAndRA/src/data': Operation not permitted
chmod: changing permissions of 'CaSSAndRA/src/data/map': Operation not permitted

Ging nicht, ich habe dann folgendes gemacht:
Code:
pi@raspberrypi:~/CaSSAndRA $ sudo chmod -R 777 CaSSAndRA/
pi@raspberrypi:~/CaSSAndRA $

Das hat er genommen.
 
Oben