Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Der Mähroboter Gardena bzw. Automower wurde ja schon vor Jahren analysiert und die HEXADEZIMAL Befehle, die wir zum steuern benötigen wurden im Mikrocontroller Forum hinterlegt. Stichwort "Robomower_V0.8.pdf"

Link zum Thread: https://www.mikrocontroller.net/topic/304526#5651411

Einkaufliste:

1x WEMOS D1 Mini PRO oder einen WEMOS D1 Mini Link1 Link2

 1x MMI Stecker 2x4P Link

1x Flachbandkabel 8P Link

1.) ESP8266 SKETCH AUFSPIELEN:

Dem ESP8266 müssen wir erstmal einen Sketch aufspielen damit dieser als Bridge (Kommunikationsmodul zwischen dem Mähroboter und Loxone) dient.

Hierzu einfach dieses Tutorial befolgen: https://www.instructables.com/id/Serial-Port-Over-WiFi/

Danach stellt ihr in der Einrichtung den ESPs so ein dass er sich in eurem Heimnetzwerk einwählt. Vorrausetzung ist natürlich dass Ihr WLAN im Garten habt wo er mähen soll!

Am besten vergebt ihr eine Feste IP Adresse, ann muss der DHCP Server nicht solange eine neue IP vergeben.

Das könnt ihr mit diesen Codezeilen im Sketch realisieren:

//set fix IP ADDRESS

  IPAddress ip(192, 168, 2, 155);

  IPAddress gateway(192, 168, 2, 1);

  IPAddress subnet(255, 255, 255, 0);

  IPAddress dns(192, 168, 2, 1);

  WiFi.config(ip, dns, gateway, subnet);

 

Alternativ kann man sich auch eine HTML Seite Bauen und die Befehle einzeln ausführen bzw. anders implementieren. Da ich Loxone am Start habe mache ich es über diesen weg.

2.) ESP8266 EINBAUEN:

Besten Dank an das Mikrocontroller Forum Thread: https://www.mikrocontroller.net/topic/382764

Das sieht dann Eingebaut so aus:


3.) EINBINDUNG IN LOXONE:

Einen virtuellen Ausgang anlegen: Und die IP Adresse eures ESPs eingeben.

Für jeden der Befehle die verwendet werden sollen je einen "Vituellen Ausgang Befehl":

CONNECT Einstellungen:

Syntax:

/snd? = Sendet die Hex Daten an den Mähroboter (POST)

/rec? = Empfängt die Antwort des Mähroboter (GET)

Wir speichern den Antwortstring welcher über "GET" ermittelt wird im Miniserver indem wir "http Antwort speichern"  befüllen.

Pfadà  /user/common/answer.xml

Die Datei answer.xml wird automatisch vom Miniserver erstellt. Brauch also nicht zuvor erstellt zu werden.

Datei kann via FTP abgefragt werden, z.B. mit Filezilla

PIN SENDEN Einstellungen:


STATUS abfragen Einstellungen:

MODE HOME Einstellungen:

MODE AUTO Einstellungen:


MODE STOP Einstellungen:

MODE MANUAL Einstellungen:

Um die Antworten auszulesen legen wir die Anzahl der "Virtueller http Eingang" an die wir benötigen:

Abfrage der Datei "answer.xml" mit der Antwort des, PIN senden, Modi (auto,home) Wechsel:

Syntax der URL:

http://BenutzernameMiniserver:PASSWORTMiniserver@192.168.2.111/dev/fsget/user/common/answer.xml

In der Datei answer.xml ist immer die letzte Antwort enthalten, sprich sie wird immer wieder überschrieben sobald wir eine Abfrage machen!

 Hierzu dann der:


VI Befehlskennung --> OK\h 

(d.h. Interpretiere die letzten 4 Stellen des Hexadezimal Wertes und gebe diesen als Dezimal aus. Das macht die Loxone Logik so, warum das so ist kann ich nicht sagen laut Support ist dass immer so!)

In der answer.xml ist dann einer der HEX Antwortstrings vorhanden:

Für CONNECT senden (angenommen) = es kommt nur "OK" zurück --> in HEX nicht definiert => entspricht "0" DEZIMAL

Für PIN senden (angenommen) = OK020d020000d203 --> d203 HEX => entspricht 53763 DEZIMAL

Für HOME/AUTO/MAN setzen = OK020f03000000e703 --> e703 HEX => entspricht 59139 DEZIMAL

 

Der nächste "Virtueller http Eingang":


VI Befehlskennung --> OK02131a000\1 

(d.h. Interpretiere die Ziffer oder den Buchstaben der nach " OK02131a000" (nur EINE Stelle). Diese Zahl oder dieser Buchstabe wird dann als ASCII Zeichen interpretiert und in DEZIMAL angezeigt. Das  macht die Loxone Logik so, warum das so ist kann ich nicht sagen laut Support ist dass immer so!)

In der status.xml ist dann einer dieser Antworten vorhanden:

 

 

 

Für den Status PARKEN = OK02131a000100050100000000000000c43a785c00005d0800bd010000004b0302131a000100050100000000000000c93a785c00005d0800bd01000000ae03

Wir lesen ja nur den einen Wert aus nach dem " OK02131a000" in diesem Fall also die Zahl 1

--> Zahl 1 im ASCII => entspricht 49 DEZIMAL

 

Für den Status MÄHER AKTIV = OK02131a000200050100000000000000c43a785c00005d0800bd010000004b0302131a000100050100000000000000c93a785c00005d0800bd01000000ae03

Wir lesen ja nur den einen Wert aus nach dem " OK02131a000" in diesem Fall also die Zahl 2

--> Zahl 2 im ASCII => entspricht 50 DEZIMAL

Für den Status LADEN = OK02131a000400050100000000000000c43a785c00005d0800bd010000004b0302131a000100050100000000000000c93a785c00005d0800bd01000000ae03

Wir lesen ja nur den einen Wert aus nach dem " OK02131a000" in diesem Fall also die Zahl 4

--> Zahl 4 im ASCII => entspricht 52 DEZIMAL

Für den Status MÄHER SUCHT = OK02131a000500050100000000000000c43a785c00005d0800bd010000004b0302131a000100050100000000000000c93a785c00005d0800bd01000000ae03

Wir lesen ja nur den einen Wert aus nach dem " OK02131a000" in diesem Fall also die Zahl 5

--> Zahl 5 im ASCII => entspricht 53 DEZIMAL

 

Für den Status FEHLER = OK02131a000700050100000000000000c43a785c00005d0800bd010000004b0302131a000100050100000000000000c93a785c00005d0800bd01000000ae03

Wir lesen ja nur den einen Wert aus nach dem " OK02131a000" in diesem Fall also die Zahl 7

--> Zahl 7 im ASCII => entspricht 55 DEZIMAL


3.) FESTELEGEN WAS MAN ABBILDEN MÖCHTE:

Roboter Verhalten:

Wenn das Mähzeitfenster nur 5 Min beträgt z.B. 07:00-07:05 mäht er 5 Min und kehrt in die Ladestation zurück.

Während er Mäht können die Modi gewechselt werden und er über nimmt diese sofort.

Man kann z.B. während er Mäht HOME setzen dann bewegt er sich Richtung Ladestation, wenn ich aber dann den Modus auf MAN oder AUTO setze mäht er wieder.

Wenn man STOP gesetzt hat und dann möchte das er wieder mäht dann einfach auf MAN setzen und wieder auf AUTO.

 

Use-Cases:

1.) STATUS permanent alle 3 Min. Abfragen

2.) Wenn es anfängt zu regnen à HOME SETZEN

                à sobald er in der Ladestation ist (Befehlskennung STATUS) sofort AUTO SETZEN

                à er startet dann wieder sobald er vollgeladen ist und das Zeitfenster stimmt (Timer)

3.)  Er müsste um 7 Uhr starten aber es regnet: Der Mäher sollte in der Ladestation verbleiben!

                --> Steckdose Ladestation ausschalten! Mäher startet dann wenn das Netzteil wieder an ist
                und er voll geladen ist und der Timer (das Zeitfenster) passt.


Loxone Config hierzu:

MAEROB.Loxone

Bilder zur Konfig und Visu:


Erklärung zur MAEROB.Loxone Konfig / Erklärung der Logik:

Für jeden VQ habe ich einen Taster für die Visu angelegt. Kann nach belieben entfernt werden.

Die Merker sind nur zum Traking gedacht damit man das in der Config ersehen kann.

VI "REGEN":

Gibt einen Dauer Impuls aus bei Regen

Tastschalter "HOME":

Sendet den Befehl HOME, damit der Mäher in die Ladestation fährt bei Regen.

Schaltuhr "Mähzeitbeginn laut Timer":

Hier hinterlegen wir die Zeiten laut Timer1 im Mähroboter. Alternativ Timer im Mähroboter aus 00:00-23:59 stellen.

AQ = Schaltet die Ladestation des Mähroboter ein

Qon = geht auf Verzögerte Impulse "Maerob AUF" und "30 Sek."

Verzögerter Impuls "Maerob AUF:

Schaltet die Mähroboeter Garage (Rolladen AUF)

Einschaltverzögerung 600 Sek.:

Parameter T = 600 Sek (10 Min.)

Wird benötigt wenn es regnet, dann hat der Mäher 10 Min. Zeit um den Weg in die Ladestation zu finden bis die Ladestation der Strom abgeschaltet wird. Würde das vorher passieren bleibt der Mäher irgendwo stehen bzw. würde der R Eingang von der Schaltuhr direkt angesprochen werden würde der Mäher den Weg zur Ladestation nicht mehr finden.

Einschaltverzögerung 30 Sek.:

Gibt den Befehl "CONNECT" nach 30 Sek. Ab. Verbindung mit dem ESP (Mähroboter)

Einschaltverzögerung 15 Sek.:

Gibt den Befehl "PIN SENDEN" nach 15 Sek. Ab. (Muss nicht gemacht werden)

Gibt den Befehl "STATUS" nach 15 Sek. Ab. Initial Abfrage Status.

Einschaltverzögerung 180 Sek.:

Gibt den Befehl "STATUS" nach 180 Sek. Ab. Regelmäßige Status Abfrage

Und ist Verbunden mit dem Monoflop, sodass alle 180 Sekunden der Status abgefragt wird.


Monoflop 3 Min. Status Abfrage:

Tr = Q von der Einschaltverzögerung "180 Sek."

R = Eingang vom Status Baustein "Status B Tasten". Das hat den Sinn dass wenn der Mähroboter den Status "Laden" hat die Abfrage nicht mehr stattfindet, sonst würde diese ewig im 3 Minuten Intervall weiterlaufen.

Status Baustein "Status für B Tasten":

AI1 =  VI der status.xml. Die Abfrage des Status wird hier alle 10 Sek. Hinterlegt. Intervall kann angepasst werden.

Den Status Baustein dann noch wie folgt befüllen:

AI1 == 49 →  Parken

AI1 == 50 → Mäher Aktiv

AI1 == 52 →  Laden à WICHTIG "Statuswert" = 52

AI1 == 53 →  Mäher sucht

AI1 == 55 →  Fehler

 Ausgang AQ geht an einen "Gleich" Baustein welcher mit einer Constanten den Wert vergleicht:

"Gleich" Baustein

Vergelicht ob der Wert 52 anliegt. Ist dies der Fall dann geht ein Dauerimpuls auf:

-  die Einschaltverzögerung "Maerob ZU" damit die Garage (Rolladen runterfährt)

- auf R vom Monoflop "3Min." damit die Statusabfrage unterbrochen wird

- und  WICHTIG setzt den STATUS des Mähroboters auf AUTO. Das ist wichtig weil falls der Mähroboter über den VI REGEN den Befehl bekommen hat er soll "HOME" fahren sprich in die Ladestation, würde er dann immer in diesem Modus verweilen. Wir wollen aber dass er wieder automatisch im Zeitfenster der Schaltuhr "Mähzeitbeginn laut Timer" mäht. Der Befehl Auto kann auch zu Mähzeitbeginn gesendet werden, er würde dann sobald er voll geladen ist mit dem mähen starten, aber ich halte die Logik für besser.

 

Status Baustein "Status für A Tasten":

AI1 =  VI der answer.xml. Die Abfrage des Status wird hier alle 10 Sek. Hinterlegt. Intervall kann angepasst werden.

Den Status Baustein dann noch wie folgt befüllen:

 

AI1 == 53763 →  PIN OK

AI1 == 59139 → MODI WECHSEL OK

AI1 == OK →  CONNECT OK

 

 

EINE SACHE FEHLT MIR NOCH:

Aktuell würde der Mäher wenn es bevor er losfährt bereits regnet und der Intervall des "600Sek. Einschaltverzögrerung" nicht auf der Schaltuhr greift, theoretisch direkt losfahren und der Befehl HOME kommt erst gar nicht zum Mähroboter an.


  • Keine Stichwörter