ArduMower ESP Firmware mit MQTT, HomeAssistant und Prometheus

Sehr interessant.

Hast Du dazu auch ein .bin File zum direkten Upload im Webinterface?
Und wahrscheinlich überflüssige Frage, aber der PS5 Controlller sollte auch funktionieren, oder?

Besten Dank für Deine Mühe!
Maigold
 
Hab mal die .bin unter dem Tag v1.2.0-build.1 auf Github bereitgestellt. Zu PS5 Controller kann ich leider nichts sagen, in der verwendeten Lib. finde ich leider auch keine Hinweise dazu. Einfach mal ausprobieren :).
 
Sorry, die .bin gibt einen Fehler beim Update aus und das Board hängt sich auf.

Ich nutze die Arduino IDE, wie kriege ich Deine Version drauf? Das modem_install Sketch installiert mir die Standardversion von Felix.
Stehe auf dem Schlauch, bin aber neugierig ;-)
 
@tim deine Modem läuft bei mir soweit echt super. Was mir allerdings aufgefallen ist:
Wenn der Mäher bei mir einen Error auswirft, lasse ich mir ja per iobroker eine Push schicken.
Diese wird aber immer erst ausgelöst, wenn ich auf dem Handy die Ardumower App (Evothings Viever) öffne und mich verbinde.
Die Statusmeldungen werden komischerweise korrekt gesendet, sobald sie getriggert werden.
Kann das jemand so bestätigen?
 
Sorry, die .bin gibt einen Fehler beim Update aus und das Board hängt sich auf.

Ich nutze die Arduino IDE, wie kriege ich Deine Version drauf? Das modem_install Sketch installiert mir die Standardversion von Felix.
Stehe auf dem Schlauch, bin aber neugierig ;-)
Kannst du sonnst immer Updates über die UI durchführen? Bei mir funktioniert es eigentlich ganz gut. Mal anderen Browser ausprobiert?

Ich habe modem_install.ino nicht an meine Repository-Fork angepasst, da mein Fork hoffentlich in Timos Repo aufgenommen wird. Hab schon ein Pull-Request erstellt.
Du kannst aber in modem_install.ino die Zeile
Code:
#define GITHUB_REPO_URL     "https://github.com/timotto/ardumower-modem"
durch folgende ersetzen
Code:
#define GITHUB_REPO_URL     "https://github.com/Zwer2k/ardumower-modem"
dann sollte es damit auch funktionieren.
 
Meine Compiler-Einstellungen waren nicht ganz richtig und hatten zu Tims Einstellungen nicht gepasst, daher lies sich die .bin Datei per Weboberfläche hochladen. Jetzt sollte es gehen. Bitte noch einmal testen.
 
Ich bin ja jetzt ein bissle angefixt. Ein PS4 Controller besitze ich leider nicht. Ich habe einen Steam Controller rumliegen. Diesen kann man auch per Bluetooth verbinden. Ich habe jetzt noch nicht weiter recherchiert. Hat jemand vielleicht eine Ahnung, ob man den auch wie den PS4 Controller gekoppelt bekommt?
 
Ich bin ja jetzt ein bissle angefixt. Ein PS4 Controller besitze ich leider nicht. Ich habe einen Steam Controller rumliegen. Diesen kann man auch per Bluetooth verbinden. Ich habe jetzt noch nicht weiter recherchiert. Hat jemand vielleicht eine Ahnung, ob man den auch wie den PS4 Controller gekoppelt bekommt?
Grundsätzlich sollte es gehen, hier steuert jemand seine Lego-Modelle über ESP32 mit einem Steam-Controller. Ich habe leider keinen Steam-Controller, kann daher nicht wirklich unterstützen.
 
Zuletzt bearbeitet:
Hallo zusammen.
Ich wollte mir für meinen Ardumower eine Minimalsteuerung bauen, damit auch meine Frau das Teil bedienen kann. Hierzu habe ich einen ESP32 mit Touch 2.4Zoll verbunden und TinyMQTT installiert. Das Teil läuft als Broker und gleichzeitig als MQTT-Client. Per Touch Tasten kann ich dann Stopp, Start, Dock, Off und Reboot absetzen.
Nun zum Problem.
Ich bekomme zwar das Auslösen der Funktionen per MQTT an den Ardumower gesendet, aber Daten vom Ardumower erhalte ich keine. Ich habe auch schon mit Mosquitto Broker und MQTT Explorer versucht, aber die Richtung Ardumower-Sunray Richtung MQTT Client funktioniert nicht. Mit der esp32_ble Firmware aus Sunray funktioniert Stop, Start, Dock, Off und Reboot, es werden auch die Befehle AT+S AT+V AT+T per Uart2 vom esp32_ble automatisch an das M4 ausgegeben, aber es kommt nichts vom M4 zurück.
Firmware ist Sunray 1.0.288, habe aber auch schon mit älteren Versionen gestestet mit selben Ergebnis.
Mit der esp32_ble aus Sunray kann ich den Mower schalten, allerdings wird mit MQTT die Sunray App V1.0.159 extrem träge, die Motoren reagieren erst mit mehreren Sekunden Verzögerung auf das Bedienkreuz. Daten vom M4 kommen keine per MQTT an den Broker.

Mit dem ArduMower Modem von TIM habe ich auch Probleme. Hier ist die App Bedienung normal, dafür sind die Befehle an den Ardumower per MQTT extrem Verzögert bzw. ich muss diese zig mal abschicken, bis was beim Mower ankommt.
Daten vom Mower kommen auch keine an den Broker zurück, es werden aber auch keine AT+V AT+T und AT+S Befehle vom ArduMower Modem per UART 2 an das M4 abgesetzt. Ist das normal? Mein Broker funktioniert schnell und problemlos wenn ich diesen mit dem MQTT Explorer teste. Auch die Tastenbefehle vom integrierten Client im Broker werden ohne Verzögerung richtig vom MQTT Explorer erkannt.
Ich teste jetzt seit Montag tagäglich und langsam habe ich keine Idee mehr, was ich noch versuchen könnte. Habe die ArduMower Modem Firmware im Original als .BIN aufgespielt und getestet und auch mit selber compilierter ArduMower Modem Firmware getestet.
Die Befehle von Start Stop und Dock haben sich scheinbar in Sunray geändert, aber das ist ja kein Problem, diese anzupassen.
Aber wieso sendet das ArduMower Modem keine AT-S/T/V Befehle an das M4? Diese werden doch benötigt, damit dieses den Status usw. ausgibt.
Für einen guten Tipp wäre ich sehr dankbar. Was kann ich noch versuchen bzw. wo ist mein Denkfehler?

Viele Grüsse
Holger
 
Werden die Werte in der Sunray App aktualisiert?
Hallo EinEinach,
vielen Dank für die schnelle Rückmeldung.
Wenn ich Start, Stop oder Dock per MQTT an den "esp32_ble" sende, werden diese in der App auch so angezeigt. Allerdings mit erheblicher Verzögerung bzw. erst nach mehrmaligem senden und die App wird extrem träge.
Mit dem ArduMower Modem funktioniert nur der Befehl Start und das auch nicht richtig. Der Mower piept nur kurz mehr passiert nicht. Allerdings passt der START-Befehl vom ArduMower Modem nicht mehr zur neuen Sunray zumindest ist in der aktuellen esp32_ble ein anderer AT+C Code eingetragen als im ArduMower Modem.

Aus esp32_ble (aktuell):
void mqtt_handle_command_start() {
String at = "AT+C,-1,1,0.1,100,0,-1,-1,1";
mower.sendCommand(at);
}
_______________________________________________________________

Aus ArduMower Modem mower_adapter.cpp:
bool MowerAdapter::start()
{
Log(DBG, "MowerAdapter::command::start");
return sendCommand("AT+C,-1,1,-1,-1,-1,-1,-1,-1");
}

bool MowerAdapter::stop()
{
Log(DBG, "MowerAdapter::command::stop");
return sendCommand("AT+C,-1,0,-1,-1,-1,-1,-1,-1");
}

bool MowerAdapter::dock()
{
Log(DBG, "MowerAdapter::command::start");
return sendCommand("AT+C,-1,4,-1,-1,-1,-1,-1,-1");
}

Ein anderes kleines Problem ist noch bei dock vorhanden, der code für Log sollte wohl command::dock und nicht command::start sein.

Das senden von Befehlen an das M4 ist ja auch gar nicht das eigentliche Problem, sondern ich bekomme vom M4 keinen Status oder sonstiges per MQTT zurück an den Client.

Gruß Holger
 
Na die App macht nicht anderes, als AT Befehle an die M4 zu senden. Daher meine Frage weeded AT+S Befehle der App vom M4 beantwortet? Einfach seriellen Monitor vom ESP32 starten und Sunray App starten. Dann siehst du im Monitor neue Client ID, zuerst wird versucht eine Antwort auf AT+V zu bekommen und dann bei Erfolg werden regelmäßig AT+S gesendet
 
Na die App macht nicht anderes, als AT Befehle an die M4 zu senden. Daher meine Frage weeded AT+S Befehle der App vom M4 beantwortet? Einfach seriellen Monitor vom ESP32 starten und Sunray App starten. Dann siehst du im Monitor neue Client ID, zuerst wird versucht eine Antwort auf AT+V zu bekommen und dann bei Erfolg werden regelmäßig AT+S gesendet
Hallo EinEinach,
jetzt habe ich verstanden, was ich testen soll.
Habe jetzt nochmals die "esp32_ble" aufgespielt, hier funktioniert auch die Debug-Ausgabe.
(Bei ArduMower Modem bekomme ich den Debug bisher nicht richtig ans laufen.)
Hier die Ausgabe von esp32_ble an Serial 0
Sobald die App mit dem ESP32 verbunden ist werden auch Daten in beide Richtungen kommuniziert.
10019 UART rx:AT+VERSION
10019 UART tx:+VERSION=ESP32 firmware V0.4.5,Bluetooth V4.0 LE
11111 UART rx:AT+NAMEArdumower
11111 UART tx:+NAME=Ardumower
11111 ping
12154 UART rx:AT+RESET
12154 UART tx:+RESET
13559 ping
[HTTPS:I] New connection. Socket FID=61
14615 UART rx:V,Sunray,1.0.288,1,110,Adafruit Grand Central M4,AM,XX,XX,1f:fa:af:92:53:35:35:33:34:20:20:20:ff:18:12:21,0x56
[HTTPS:I] Request: POST / (FID=61)
[HTTPS:I] New connection. Socket FID=63
16016 ping
HTTP rx:cvMuNR;SU

UART tx:
19001 ping
[HTTPS:I] Client closed connection, FID=63
[HTTPS:I] Client closed (FID=63, cstate=2)
[HTTPS:I] Connection closed. Socket FID=63
21447 UART rx:S,26.21,0.00,0.00,0.00,0,0,0,20.56,0,0.00,0.00,607400.06,0,0.03,0,0,0.00,0x7d
21447 ping
23896 ping
[HTTPS:I] Request: POST / (FID=61)
25960 ping
HTTP rx:cvMuNR;SU

Allerdings kann ich per MQTT zwar Befehle (mit Verzögerung) an das M4 senden und diese werden in der App auch erkannt, aber ich bekomme keine Daten vom ESP32 per MQTT an den Broker/Client gesendet. Die eine Richtung Client > Broker > esp32_ble > M4 funktioniert, die Richtung M4 > esp32_ble > broker > client aber leider nicht. Bis zum ESP32 kommen die Daten, sehe ich ja am Debug Serial 0 des ESP32 aber diese Daten werden irgend wie nicht per MQTT weiter verschickt. Auch mit dem MQTT Explorer empfange ich keine Daten auf /ardumower/Ardumower/ die Daten der Tasten vom Client Start Stop usw. kann ich aber unter /ardumower/Ardumower/command problemlos mit dem MQTT Explorer empfangen.

Wo liegt mein Denkfehler?

Gruß Holger
 
Oben