Mein Projekt CaSSAndRA zur Steuerung des Ardumowers

Den GPS Status und ggf. auch Robot Verbindungsstatus haben Sie bei openmower übrigens ganz schön gelöst - siehe Bilder
Der State wechselt auf rot und offline nach der in der App eingestellten Zeit, wenn Verbindung verloren wurde.
Dabei fällt mir ein, da ist noch was kaputt diesbezüglich, was ich noch reparieren muss. Aber theoretisch gibt es eine Rückmeldung
 
Der State wechselt auf rot und offline nach der in der App eingestellten Zeit, wenn Verbindung verloren wurde.
Dabei fällt mir ein, da ist noch was kaputt diesbezüglich, was ich noch reparieren muss. Aber theoretisch gibt es eine Rückmeldung
OK cool - ich meinte an dieser Stelle allerdings maßgeblich die kleinen Icons - dann hat man mehr Bildschirmfläche auf dem Handy. Aktuell sind die Boxen recht groß.
 
Habe gerade mal mqtt probieren wollen - aber alfred1/command scheint er gar nicht zu kennen? ALso die Sunray firmware. Er subscribed nur alfed1/cmd bei mir.
 
@EinEifnach ok sunray mit alfred hat ganz andere MQTT endpunkte als der ESP32... wer hat sich das ausgedacht?

Hier nur mal EIN beispiel:
```
$ git grep "mqttClient.subscribe" .
esp32_ble/mqtt.ino: mqttClient.subscribe(mqtt_topic("/command").c_str());
sunray/comm.cpp: mqttClient.subscribe(MQTT_TOPIC_PREFIX "/cmd");
```

bei alfed / unter linux heißt es cmd - bei ardumower command... und das zieht sich leider wie ein roter Pfaden durch mqtt...
 
ESP32 MQTT und Sunray MQTT ist nicht kompatibel untereinander.
Ich weiß gar nicht, ob Sunray FW die custom commands (publish message with AT string as payload) unterstützt
 
Schade - die Frage ist - lohnt sich das wenn ich das in Sunray implementiere für Linux oder unfug? Ich habe manchmal das Gefühlt mqtt funktioniert besser als http.
Definitiv, MQTT hatte ich als Schnittstelle lange im Einsatz, bevor ich auf serielle Verbindung gewechselt habe. Läuft alles deutlich stabiler. Die Steuerung über Joystick funktioniert richtig smooth. Und man ist nicht angewiesen auf den sehr langen Response der HTTP Anfrage zu warten. Es wird viel Kram auf den MQTT Server ausgelagert
 
OK so wie ich das sehe verwendest du folgende topics:
/command
/state
/stats
/online
/props

weitere? Muss ich mal gucken ob sich das lohnt oder nicht ;-) also http funktioniert. Es gibt leider kein einziges diese topics so beim alfed. Selbst stats ist ein ganzer baum und kein einzelner Wert - wie es scheinbar von Cassandra erwartet wird. Wäre möglich, dass man hier doch cassandra anpassen muss...
 
Gibt aber Nachteile, z.B. ich will demnächst temporäre obstacles ploten. Http geht out of the box, einfach AT+S2 absetzen. Für MQTT wiederum muss jemand den Topic implementieren, bevor es geht
 
Das stimmt - und ja das mit den obstacles wäre toll. Ich werde wohl erstmal bei http bleiben. An sich wäre es eh spannender den http server auf alfred seite als eigenen thread laufen zu lassen - damit der nicht ständig hängt... könnte das spannendere Thema sein als mqtt anzugleichen - vor allem weil das Breaking changes wären...
 
@EinEifnach Es gibt einen Bug, wenn man sunray neu startet. Der Encryption Key ändert sich dann und die Kommunikation klappt nicht mehr zwischen Robot und Cassandra.

Meldungen von Sunray:
```
Jun 19 11:39:44 bananapi start_sunray.sh[9618]: COMM CRC ERROR: Pc:b;?(@B
Jun 19 11:39:44 bananapi start_sunray.sh[9618]: [1B blob data]
Jun 19 11:39:46 bananapi start_sunray.sh[9618]: COMM CRC ERROR: Pc:b;?(@B
Jun 19 11:39:46 bananapi start_sunray.sh[9618]: [1B blob data]
```

Meldungen von Cassandra:
```
2023-06-19 11:40:55 INFO Backend: Performing get state http-request
2023-06-19 11:40:55 DEBUG Calced checksumme: 0x13
2023-06-19 11:40:55 DEBUG Encryption: true
2023-06-19 11:40:55 DEBUG Data to be send: Pc:b;?(@B
2023-06-19 11:40:55 DEBUG Starting new HTTP connection (1): 192.168.178.138:80
2023-06-19 11:40:55 DEBUG http://192.168.178.138:80 "POST / HTTP/1.1" 200 0
2023-06-19 11:40:55 DEBUG Status code: 200
2023-06-19 11:40:55 DEBUG Content:
2023-06-19 11:40:55 WARNING Backend: HTTP request for state delivered implausible string
2023-06-19 11:40:57 INFO Backend: Performing get state http-request
2023-06-19 11:40:57 DEBUG Calced checksumme: 0x13
2023-06-19 11:40:57 DEBUG Encryption: true
2023-06-19 11:40:57 DEBUG Data to be send: Pc:b;?(@B
2023-06-19 11:40:57 DEBUG Starting new HTTP connection (1): 192.168.178.138:80
2023-06-19 11:40:57 DEBUG http://192.168.178.138:80 "POST / HTTP/1.1" 200 0
2023-06-19 11:40:57 DEBUG Status code: 200
2023-06-19 11:40:57 DEBUG Content:
2023-06-19 11:40:57 WARNING Backend: HTTP request for state delivered implausible string
2023-06-19 11:40:59 INFO Backend: Performing get state http-request
2023-06-19 11:40:59 DEBUG Calced checksumme: 0x13
2023-06-19 11:40:59 DEBUG Encryption: true
2023-06-19 11:40:59 DEBUG Data to be send: Pc:b;?(@B
2023-06-19 11:40:59 DEBUG Starting new HTTP connection (1): 192.168.178.138:80
2023-06-19 11:40:59 DEBUG http://192.168.178.138:80 "POST / HTTP/1.1" 200 0
2023-06-19 11:40:59 DEBUG Status code: 200
2023-06-19 11:40:59 DEBUG Content:
2023-06-19 11:40:59 WARNING Backend: HTTP request for state delivered implausible string

```
 
Cassandra braucht einen Rechner wo es läuft, da Alfred aber sowieso einen Rechner durch die Gegend fährt, dachte ich es wäre am schlausten Cassandra mit auf dem Banana Pi zu installieren. Jetzt ist aber die Frage, wenn Cassandra auf dem gleichen Rechner läuft wie die Sunray FW, was wäre die schlauste Möglichkeit die beiden Dienste miteinander reden zu lassen. Hier fällt mir der Schubs in die richtige Richtung. Evtl ist schon die Lösung http zu nehmen und als IP 127.0.0.1 zu verwenden, so einfach? Oder gibt es noch was anderes?
Hello,
Maybe using the "Connecting using Unix Sockets" method?
It is usually a method used to connect to databases and other services. I don't know if it can be applied to this case.
 
@EinEifnach Es gibt einen Bug, wenn man sunray neu startet. Der Encryption Key ändert sich dann und die Kommunikation klappt nicht mehr zwischen Robot und Cassandra.
Es gibt eine neue Version online:
#Version:0.29.2 -> Bugfix reconnect failed after sunray fw reboot if encryption true

Sag Bescheid, ob es jetzt geht
 
Hello,
Maybe using the "Connecting using Unix Sockets" method?
It is usually a method used to connect to databases and other services. I don't know if it can be applied to this case.
yes, maybe is that the way. We found out yesterday the linux stretch on bannana pi is to old, or the python version is to old for dash. It is not on my topics anymore
 
Ich habe mir die comm.cpp vom Alfred angeschaut, scheint keine große Sache zu sein es CaSSAndRA kompatibel zu gestalten. Vielleicht bekomme ich mal wieder Lust auf C, und mache mal da was. Kann leider nicht testen, muss einer der Alfred User übernehmen
 
Ich habe mir die comm.cpp vom Alfred angeschaut, scheint keine große Sache zu sein es CaSSAndRA kompatibel zu gestalten. Vielleicht bekomme ich mal wieder Lust auf C, und mache mal da was. Kann leider nicht testen, muss einer der Alfred User übernehmen
Grundsätzlich total korrekt - aber es ändert die jetzige Struktur - und es gibt alfred user die auf die aktuelle Struktur aufbauen... ist die Frage ob es lohnt. alfred hat genug cpu power für http
 
Oben