[Mr. Gardener MR1000] Anleitung - Bluetooth-Mähroboter in's Smart Home einbinden (Amazon Echo)

  • Moin moin,


    ich hatte schon länger das Bedürfnis, meinen MR 1000 von Mr. Gardener (also Grizzly und vielleicht auch einige Yardforce-Modelle ?) in das smarte Heim einzubinden.

    Dieses Wochenende hat's nun endlich geklappt und ich will euch nicht vorenthalten, wie das ganze funktioniert.


    Der Mäher wird von einer grauenhaften App per Bluetooth gesteuert. Mein Ziel war, dass ich nicht mehr auf die App angewiesen bin, sondern der Mäher in's Smart Home integriert wird.


    Benötigt wird dazu nur ein Raspberry Pi mit Raspbian - dieses verbindet sich per WLAN oder Ethernet mit dem heimischen Netzwerk. Die eingebaute Bluetooth-Schnittstelle des RasPi kommuniziert mit dem Mähroboter und steuert diesen. Bei mir befindet sich die Ladestation des Mähers unter dem Gartenhaus. Das Raspberry ist im Gartenhaus befestigt und könnte dort noch weitere Aufgaben übernehmen. Geplant ist z.B., dass ein Regensensor dem Mäher verbietet, bei Regen überhaupt rauszufahren. Auch möglich: Das Tor einer Mährobotergarage wird geöffnet, bevor der Mähroboter rausfährt. Der Fantasie sind hier wenig Grenzen gesetzt...


    Wie funktioniert das ganze?


    Als Softwarelösung kommt fauxmo zum Einsatz. Dieses Python-Script simuliert eine schaltbare Steckdose von Belkin und kann einfach in bestehende Smart Home-Systeme eingebunden werden. Bei mir momentan Amazon Echo / Alexa. Geplant ist noch eine Einbindung in openHAB. Für fauxmo gibt es ein Plugin, welches bei Schaltvorgängen jeweils ein Script startet.


    Die Befehle an sich werden mit der kleinen Software gatttool über die Bluetooth-Schnittstelle an den Mäher gesendet. Jeweils ein Einzeiler-Shellscript mit dem benötigten Kommando startet den Mäher oder schickt ihn nach Hause. Das nach Hause schicken funktioniert natürlich nur, wenn der Mäher in Funkreichweite des Raspberry ist.


    Einiges Kopfzerbrechen hat mich das BLE-Protokoll gekostet. Maximal 20 Bytes Nutzdaten können in einem Durchgang an den Mäher gesendet werden. Wird mehr gesendet, verwirft der Mäher die restlichen Pakete. Der Trick ist simpel: Erst 20 Bytes senden, gleich darauf den Rest (9 Bytes).


    Über ein Initscript soll die Bluetooth-Schnittstelle beim booten des Raspberrys gestartet werden, anschließend startet der fauxmo-Server und wartet auf Befehle.


    Voraussetzungen

    ---------------


    * Raspberry Pi 3 mit Raspbian

    * Python 3

    * Das bluez-Paket (enthält gatttool)

    * Amazon Echo

    * Ein Mähroboter...


    Installation

    Wir benötigen das bluez-Paket, um mit dem Mäher per Bluetooth kommunizieren zu können, weiterhin Python 3.

    Damit der Installationsaufwand entfällt, kann ich gerne ein Image meiner Installation zur Verfügung stellen. Hier müsste nur die Bluetooth-MAC eures Roboters eingetragen werden und das Gateway ist einsatzbereit...


    gatttool

    Der Mäher wird wie eingangs beschrieben über die Software gatttool mit Befehlen gefüttert. Die Kommandos (hier beispielsweise "Mäher starten" sehen folgendermaßen aus:


    Code
    1. sudo gatttool -b 34:81:F4:2A:EE:66 -m 160 -i hci0 --char-write-req -a 0x0052 -n 44594d0100000000000000000000000000000016
    2. sudo gatttool -b 34:81:F4:2A:EE:66 -m 160 -i hci0 --char-write-req -a 0x0052 -n 0601ff0a


    Erklärung: -b ist die Bluetooth-MAC des Mähers, -m die MTU, -i das Bluetooth-Interface, --char-write-req sendet an das Handle 0x0052 erst die ersten 20 Bytes des Kommandos, im zweiten Befehl dann den Rest.


    fauxmo


    Hier meine Fauxmo-Config:


    Man sieht gut, dass es für die emulierte WLAN-Steckdose ein on_cmd und ein off_cmd gibt. Bei jedem Schaltstatus startet fauxmo ein Shellscript mit den oben genannten Befehlen.


    ToDo

    Die App kann über einen Bluetooth-Befehl wohl ein Bytearray auslesen, in dem einige Zustandsinformationen des Mähers gespeichert sind (Status in der Station / auf dem Rasen, Akkuzustand,...).
    Das wäre noch interessant abzufragen. Weiterhin könnte man die Befehle "Mähe im Regen" und "Begrenzung verschneiden" wohl implementieren.


    Fauxmo kommuniziert momentan nur mit Amazon Echo. Ich habe noch keinen einfachen Weg ohne wüstes Gefrickel gefunden, fauxmo z.B. in OpenHab einzubinden. Hier wären dann die weiteren Informationen über den Mäher durchaus sinnvoll, wenn man sich diese bspw. in einem Dashboard anzeigen lassen möchte.


    Momentan scheitere ich noch daran, fauxmo per Initscript so zu starten, dass die Software erst läuft, wenn das Netzwerkinterface hochgefahren ist. Darf man halt das RasPi nicht vom Strom nehmen ;)


    Einige Hex-Befehle zur Mähersteuerung
    Man sieht an den Befehlen, dass hier sehr viel möglich ist, inklusive das Teil fernzusteuern ;) Alle Befehle habe ich nicht ausprobiert. Left, Right, Back, Start und Stop funktionieren aber :)



    Viele Grüße und frohes Mäherbasteln,
    merlin