Ich habe soweit eine erste fertige lauffähige Version für IOBroker. Diese ist hier zu finden:
https://github.com/felixganzer/ardumower-modem im Unterordner iob. Des Weiteren ist ein skript für IOBroker zu finden. Dies dient aktuell dazu mittels Telegram Adapter den Ardumower zu steuern. Die Funktionen können natürlich auch von einer vis angesteuert werden.
Kurze Erklärungen für die einzelnen Bestandteile:
In dem Webserver des Ardumower Modems habe ich einen Schalter eingefügt, um die MQTT Datenpunkte zu aktivieren und deaktivieren.
Ich habe bei der MQTT Übertragung einen Unterpunkt iob hinzugefügt, welcher sich in Befehle (command) und Werte (stats) aufgegliedert. Stats stellt eine Aufgliederung der schon vorhandenen JSON dar. Dies wurde im ardumowerModem umgesetzt. Die Commands entsprechen den Reglern und Knöpfen in der Sunray App. Eine grobe Fehlerüberprüfung ist im Modem integriert und wirft nach jedem Command eine Meldung unter dem Datenpunkt Error aus. Reboot GPS, Reboot Robot und Switch-Off Robot fehlen noch.
Von Tim habe ich den zusätzlichen Datenpunkt Battery_Level übernommen, wo der Ladestand der Batterie in % berechnet wird. Empfand ich als eine sehr gute Idee.
Anhang anzeigen 4613
Weiter zum Skript:
Bis jetzt sind für mich persönlich 2 wichtige Features umgesetzt. Dazu muss man wissen, dass ich meine Mähkarte händisch erstellt habe und als mehrere aufeinanderfolgende Bereiche erstellt habe. Des Wegen kann das Skript Sektoren mähen. Dafür erstellt das Skript aktuell 2 weitere Datenpunkte. Der Name des Sektors und der relative Mähpunkt. Dies entspricht den relativen Wert in der SunrayApp. Diesen kann ich leider nicht aus dem Modem ziehen und man muss diesen selber berechnen.
Anhang anzeigen 4614
Im Skript werden globale Variablen definiert:
Javascript:
//##################################################################################################
// GLOBALE VARIABLEN
//##################################################################################################
const maxNumberMowPoints = 591;
const useTelegram = true; // bool set true to use Telegram for control
const useECharts = true; // bool set true to use plot diagram for battery current and voltage
const name_Ardumower = 'Sven';
const sector_Name = ['Alles' ,'Terrasse' ,'Teich','Schaukel' ,'Einfahrt' ,'Kanninchen'];
const sector_Start = [0 ,0 ,0.2 ,0.3 ,0.4 ,0.5 ];
const sector_Stop = [1 ,0.2 ,0.3 ,0.4 ,0.5 ,0.6 ];
Die Variable maxNumberMowPoints muss gesetzt werden um den relativen Wert zu berechnen. Der Perimeter wird nicht Berücksichtigt.
useTelegram aktivieren, wenn man das nutzen will.
useECharts wird noch implementiert und soll einige relevanten Daten eine Mähvorgangs tracken und als Diagramm nach dem Mähvorgang per Telegram senden. Die Werte werden bei jedem Mähvorgang resetet.
Name, damit Die Kommunikation über Telegram ein bissle persönlicher ist.
Als letztes die Sektoren: Die Start und Stop-Werte sind jeweils die relativen Mähpunkte. Der Name dient als Identifier.
Aktuell gibt es Funktionen für Start und Stop. Bei Start wird der "Progress auf den Startwert des Sektors gesetzt. Gestoppt wird automatisch, wenn der Stop-Progress überschritten wird. Ein Resume, welcher ein einfachen, mach los entspricht, wird ergänzt. Stop und Dock werden auch ergänzt, sowie alle anderen Commands.
Viel Spass beim Testen.
Wenn alles nach meinen Bedürfnissen funktioniert, werde ich auch eine zeitliche Steuerung implementieren.
Für Vorschläge und Anregungen bin ich offen.