Anthbot Genie

Inoffizieller Cloud-Adapter für Statusabfrage und Steuerung von Anthbot Genie

Aktueller Release
0.1.13
Entwickler
reloxx13
Lizenz
MIT
Logo

Inoffizieller ioBroker-Adapter für Anthbot Genie Mähroboter , mit Fokus auf detaillierte Genie-Telemetrie, Diagnose und Mähersteuerung für die Modelle Genie 600/1000/3000/5000 und die neueren Modelle M5/M9.

Der Adapter verbindet sich mit dem Anthbot-Cloud-Konto, erkennt gebundene Mäher, liest Cloud- und IoT-Schattendaten und stellt einen umfassenden Zustandsbaum für Status, Einstellungen, Mäherbefehle, Zonendaten, Verbrauchsmaterialien, Standort, Diagnosedaten und Rohdaten zur Fehlerbehebung in ioBroker bereit.

Es richtet sich an Benutzer, die mehr als eine einfache Online-/Akku-/Statusanzeige wünschen: RTK- und Basisstationsstatus, Firmware- und OTA-Details, Netzwerk- und SIM-Informationen, GPS- und Positionsdaten, Kartenlebenszyklus-Zeitstempel, Mäherfehlerdetails, Lebensdauer von Verbrauchsmaterialien, Regeneinstellungen, Zonenmetadaten und beschreibbare Mähsteuerungen werden als ioBroker-Zustände bereitgestellt.

Dieser Adapter ist im ioBroker verfügbar.latest Repository. Bitte berichten Sie über Feedback und Testergebnisse im ioBroker-Forum .

Ein Beispiel für einen ioBroker Blockly mit Bedingungen für die Mähautomatisierung finden Sie im Blockly-Automatisierungsbeispiel .

Merkmale

  • Anthbot-Cloud-Login mit verschlüsselter Passwortspeicherung in der nativen ioBroker-Konfiguration
  • Automatische Erkennung von Rasenmähern, die mit dem konfigurierten Anthbot-Konto verbunden sind.
  • Regions- und IoT-Endpunktsuche pro Mäher
  • Automatische Aktualisierung temporärer IoT-Anmeldeinformationen nach AWS IoT403 Antworten
  • Umfrage zu Immobilien und Dienstleistungsschatten
  • Detaillierte Statusangaben für Verbindung, Online-Status, Akku, Mäherstatus, Ladestatus, Mähzeit, Mähfläche, Gesamtmähzeit/-fläche, Kartenstatus, Kartierungsstatus, Fehler, aktiver Mähmodus, Punktmähen und Zonenanzahl
  • Diagnosestatus für RTK-Fix, RTK-Basisstation, Warnungen zu bewegten Antennen, Firmware-Versionen, OTA-Fortschritt, WLAN, Mobilfunk, SIM, Bluetooth, Kamera-/Karten-Flags, Hindernisvermeidung, Sicherheitsflags, Systemzeitstempel und cloudbasierte Mäherfehlerdaten
  • Standortzustände für Anti-Verlust-GPS-Koordinaten und lokale Mäherposition
  • Verbrauchsmaterialien, Lebensdauerstatus und Reset-Tasten für Ladeanschluss, Kameras und Rotorblätter
  • Beschreibbare Steuerungszustände für das Mähen der gesamten Karte, das Mähen von Zonen, die Schnitthöhe, die Sprachlautstärke, die benutzerdefinierte Mährichtung, die Hindernisvermeidung, die Regeneinstellungen und das Mähen in der Nähe der Ladestation.
  • Befehlszustände für Vollmähen, Stopp, Rückkehr zur Ladestation, Pause mit Rückkehr zur Ladestation, Grasauswurf, Scheibenwartungsmodus, Kantenmähen, Mähen in der Nähe des Ladeplatzes, Punktmähen, Aktualisieren, manuelles Zonenmähen und automatisches Zonenmähen
  • Manuelle und automatische Zonenmetadaten als JSON-Zustände, einschließlich aktiver manueller Zonen-IDs
  • Schreibgeschützte PNG-Kartenbilder enthalten Angaben zur nativen Karte, zur RTK-Mähflächenmaske und zum historischen Mähpfad.
  • Rohdaten von Eigenschaftsschatten, Dienstschatten, Anthbot-Ereigniscode-Übersetzungen und Bereichsdefinitions-Payloads zur Fehlerbehebung und zum Debuggen der Automatisierung

Anforderungen

  • ioBroker mit js-Controller>= 6.0.11
  • ioBroker-Administrator>= 7.6.20
  • Node.js>= 22
  • Anthbot-Konto mit mindestens einem gebundenen Genie-Rasenmäher
  • Internetzugang vom ioBroker-Host zur Anthbot-Cloud und zum AWS IoT-Endpunkt

Installation

Der Adapter ist im ioBroker verfügbar.latest Das Repository kann über die ioBroker-Adapteransicht oder über die Befehlszeilenschnittstelle (CLI) installiert werden.

ioBroker-Administrator

Wenn dielatest Das Repository ist noch nicht aktiv. Öffnen Sie ioBroker Admin, gehen Sie zu Einstellungen -> Repositories und wählen Sie diese aus oder aktivieren Sie sie.latest und aktualisieren Sie die Adapterliste.

Öffnen Sie anschließend die Adapteransicht und suchen Sie nachanthbot-genie und installieren Sie den Adapter von derlatest Repository.

CLI

Installation mit:

iobroker repo set latest
iobroker update
iobroker add anthbot-genie

oder explizit mit einer Versionsangabe:

iobroker add anthbot-genie@0.1.13

Unterstützte Geräte

  • Genie 600
  • Genie 1000
  • Genie 3000
  • Genie 5000
  • M5
  • M9

Andere Anthbot-Modelle funktionieren möglicherweise auch, wenn sie die gleiche Cloud- und Shadow-Payload-Struktur verwenden, sind hier aber noch nicht explizit abgebildet oder dokumentiert.

Entwicklung

  • npm install Installiert Laufzeit- und Entwicklungsabhängigkeiten.
  • npm run lint Überprüft den Codestil mit ESLint.
  • npm run lint:fix Wendet automatisch behebbare ESLint-Änderungen an.
  • npm run check Führt TypeScript- und Node.js-Syntaxprüfungen für den Adapter-Einstiegspunkt, die aufgeteilten Bibliotheksmodule und die Testdateien durch.
  • npm run test:js führt Unit-Tests aus.
  • npm run test:package führt Paketvalidierungstests durch.
  • npm run test:integration führt Integrationstests durch.
  • npm run test Läufecheck , Unit-Tests und Paketvalidierung.
  • npm run check:repo führt den ioBroker-Repository-Checker aus.
  • npm run translate Führt den ioBroker adapter-dev Übersetzungsworkflow aus.
  • npm run release erstellt eine neue ioBroker-Paketversion.

Übersetzungen

  • Admin/JSON-Konfigurationsübersetzungen befinden sich inadmin/i18n/<lang>.json Die
  • Backend-/Laufzeit-Objektnamenübersetzungen befinden sich ini18n/<lang>.json Die
  • Nach dem Hinzufügen oder Entfernen übersetzbarer Zeichenketten aktualisieren Sie die englischen Quelldateien und führen Sie das Programm aus.npm run translate So bleiben zukünftige Synchronisierungen von Weblate und adapter-dev aufeinander abgestimmt.

Konfiguration

Öffnen Sie die Adapterinstanzkonfiguration in ioBroker Admin und stellen Sie Folgendes ein:

EinstellungBeschreibungStandard
Anthbot-KontobenutzernameBenutzername oder E-Mail-Adresse des Anthbot-Kontosleer
Anthbot-KontopasswortDas Anthbot-Kontopasswort wird verschlüsselt von ioBroker gespeichert.leer
VorwahlTelefon- oder Kontovorwahl, zum Beispiel49 für Deutschland49
API-HostAnthbot Cloud-API-Hostapi.anthbot.com
Abfrageintervall in SekundenAbfrageintervall für Mähwerksdaten. Der Adapter erzwingt ein Intervall von mindestens 10 Sekunden.60
Karte abrufen (hohe CPU-Auslastung)Laden Sie die native Karte, die RTK-Maske und den historischen Mähpfad herunter und rendern Sie ihn.false
Karte mit Pfaden generieren (noch höhere CPU-Auslastung)Laden Sie den historischen Mähpfad herunter und stellen Sie ihn in der Kartenabbildung dar. Dies erfordert das Abrufen der Karte.false
FehlerbeschreibungsspracheSprache, die für Anthbot-Cloud-Fehlerbeschreibungen verwendet wirdEnglish

Wenn eine der beiden Kartenoptionen deaktiviert ist, stellt der Adapter die Anforderung und Darstellung dieser Kartendaten ein und lässt die vorhandenen Kartenstatuswerte unverändert.

Nach dem Speichern der Konfiguration starten oder starten Sie die Adapterinstanz neu.

Staaten

Der Adapter erstellt für jede Rasenmäher-Seriennummer einen Gerätebaum. Falls Anthbot jemals eine Seriennummer mit Zeichen zurückgibt, die für ioBroker-Objekt-IDs unsicher sind, normalisiert der Adapter nur diese Zeichen, während die ursprüngliche Seriennummer in den nativen Metadaten des Geräteobjekts erhalten bleibt:

anthbot-genie.<instance>.<serial>.*

Info

ZustandTypBeschreibung
info.connectionboolescher WertGlobaler Adapter-Cloud-Verbindungsstatus
<serial>.info.aliasZeichenketteMower-Alias von Anthbot
<serial>.info.modelZeichenketteRasenmähermodell/Kategorie
<serial>.info.regionZeichenketteAnthbot/AWS IoT-Region
<serial>.info.endpointZeichenketteIoT-Endpunkt für Schattenzugriffe
<serial>.info.onlineboolescher WertOnline-Statusmeldung des Rasenmähers
<serial>.info.chargingboolescher WertOb der Rasenmäher gerade lädt
<serial>.info.lastServiceCommandZeichenketteLetzter gemeldeter Dienstbefehl
<serial>.info.lastPollZeichenketteISO-Zeitstempel der letzten erfolgreichen Umfrage

Kennzahlen

ZustandTypEinheitBeschreibung
<serial>.metrics.batteryLevelNummer%Batteriestand
<serial>.metrics.status.mowerZeichenketteNormalisierter Mäherstatus
<serial>.metrics.status.robotRawZeichenketteRohroboterstatus
<serial>.metrics.status.modeRawZeichenketteRohmode.value Statusmeldungen der Modelle M5/M9
<serial>.metrics.mowing.timeNummersGemeldete Mähzeit
<serial>.metrics.mowing.areaNummerm2Gemeldete Mähfläche
<serial>.metrics.mowing.totalTimeNummersDie gesamte Mähzeit wurde von den Modellen M5/M9 gemeldet.
<serial>.metrics.mowing.totalAreaNummerm2Die von den Modellen M5/M9 gemeldete Gesamtmähfläche
<serial>.metrics.mowing.borderActiveboolescher WertRandmähen aktiv
<serial>.metrics.mowing.nearChargerActiveboolescher WertMähen in der Nähe des Ladegeräts aktiv
<serial>.metrics.mowing.fullYardActiveboolescher WertVolles Rasenmähen aktiv
<serial>.metrics.pointMowing.activeboolescher WertPunktmähen aktiv
<serial>.metrics.pointMowing.xNummerLetzter Mähpunkt X-Koordinate
<serial>.metrics.pointMowing.yNummerLetzter Mähpunkt Y-Koordinate
<serial>.metrics.zones.manualCountNummerAnzahl der manuellen Zonen
<serial>.metrics.zones.autoCountNummerAnzahl der automatischen Zonen
<serial>.metrics.map.totalAreaNummerm2Gesamtfläche
<serial>.metrics.map.statusZeichenketteRohkartenstatus
<serial>.metrics.map.mappingTaskStateZeichenketteAufgabenstatus für die Kartierung, gemeldet von M5/M9-Modellen
<serial>.metrics.error.codeNummerLetzter Mäher-Fehlercode
<serial>.metrics.error.descriptionZeichenketteEine für Menschen lesbare Fehlerbeschreibung aus der zwischengespeicherten Anthbot-Ereigniscodeliste, sofern bekannt
<serial>.metrics.error.activeboolescher WertOb ein Mäherfehler ungleich Null aktiv ist

Der Adapter behält für alle unterstützten Mähermodelle denselben Zustandsbaum bei. Bei Modellen, die die M5/M9-spezifischen Nutzdatenfelder nicht bereitstellen, werden die Zuständemetrics.status.modeRaw ,metrics.mowing.totalTime ,metrics.mowing.totalArea , Undmetrics.map.mappingTaskState werden zwar erstellt, bleiben aber leer odernull Die

Kartenbilder

ZustandTypBeschreibung
<serial>.map.imageZeichenketteNative Navigationskarte als PNG-Daten-URI
<serial>.map.imageWithRtkMaskZeichenketteNative Navigationskarte mit Anthbot'srtk_mask_map als PNG-Daten-URI
<serial>.map.imageWithMowedPathZeichenketteNative Navigationskarte mit dem heruntergeladenen historischen Mähpfad als PNG-Daten-URI
<serial>.map.mowedPathZeichenketteJSON-Array mit den exakten historischen Pfadpunkten, die fürmap.imageWithMowedPath

Die drei Bildzustände sind schreibgeschützt und verwenden diemedia.image Rolle. Diemap.mowedPath Der Zustand ist schreibgeschützt und verwendet diejson Rolle. Der Adapter lädt Anthbots herunter.multi_maps Kartendatei, Auszügemaps/remote_map_navi.map und rendert das native Raster mit der app-kompatiblen Lichtpalette.map.image enthält nur die Karte;map.imageWithRtkMask fügt das vollständige hinzumaps/rtk_mask_map Raster der gemähten Fläche;map.imageWithMowedPath Anfragenreq_history_mapping_path , Downloadspath_<SN>.txt Der historische Verlauf wird blau dargestellt, und die aktuelle Mäherposition wird als gelbes Robotersymbol sowie die darunterliegende Markierung für das native Ladegerät hinzugefügt.map.mowedPath enthält dieselben JSON-Pfadpunkte, die auch von dieser PNG-Datei verwendet werden.x Undy Die Werte verwenden die nativen Zentimeterkoordinaten des historischen Pfades; dividieren Sie sie durch100 um sie in die von den Pose-Zuständen verwendeten lokalen Kartenmeter umzurechnen. Die mitgelieferten App-Assets sind so ausgerichtet, dass die Vorderseite des Mähers nach unten zeigt, und werden mithilfe vonlocation.pose.yaw - 90° (zum Beispiel eine Gierenbewegung von etwa-16° zeigt vorne rechts an; der generierte Fallback verwendet dieselbe Ausrichtung. Die Lademarkierung und das schreibgeschütztelocation.charger.x /location.charger.y Die Staaten werden gelesen voncharger_point Inmaps/remote_map.json Die Koordinaten des Zustands werden in Metern angezeigt. Beide Overlay-Bilder stellen konfigurierte Sperrzonen rot dar. Das historische Bild greift nie auf die kurzlebige Version zurück.curpath Die Bilder und der Pfadstatus werden aktualisiert, wenn sich die Kartenidentität, der Zeitstempel, der Verlauf, die Position des Mähers oder der Ladepunkt ändern. Fehlende oder ungültige Kartendaten führen dazu, dass die Statuswerte leer bleiben, während der Adapter weiterhin Daten abfragt.

Die beiden Karteneinstellungen steuern bewusst unterschiedliche Funktionen:

  • fetchMap = false Es wird kein Kartenarchiv, Raster, PNG oder Verlaufspfad angefordert. Die bestehenden Werte der Karten- und Ladestationskoordinaten bleiben unverändert, sodass eine zuvor generierte Karte und Ladestationsposition weiterhin angezeigt werden können, jedoch nicht aktualisiert werden.
  • fetchMap = true UndgenerateMapWithPaths = false Die nativen Karten- und RTK-Maskenzustände werden aktualisiert. Der historische Pfad wird nicht angefordert.map.imageWithMowedPath Undmap.mowedPath bleiben unverändert.map.image odermap.imageWithRtkMask für die Kartenansicht mit geringerer CPU-Auslastung.
  • Beide Einstellungentrue : alle drei Bildzustände und diemap.mowedPath Zustände werden generiert;map.imageWithMowedPath enthält den historischen Pfad und das aktuelle Robotersymbol.

VIS: Karte mit integriertem Robotersymbol

Verwenden Sie diesen direkten Pfad, wenn beide Karteneinstellungen aktiviert sind. Binden Sie das VIS-Bild-Widget an<serial>.map.imageWithMowedPath Der Adapter zeichnet bereits den historischen Pfad und das Robotersymbol in der aktuellen Position. Es wird kein zweites VIS-Symbol-Widget benötigt. Behalten Sie das native Seitenverhältnis des PNG-Bildcontainers bei.404:488 ).

VIS: Karte mit separatem Overlay-Symbol

Verwenden Sie diesen Pfad mit geringerer CPU-Auslastung, wennfetchMap = true UndgenerateMapWithPaths = false Binden Sie das Bild-Widget an<serial>.map.image oder<serial>.map.imageWithRtkMask Platzieren Sie anschließend ein transparentes Symbol-Widget absolut darüber. Binden oder berechnen Sie dessen Position anhand dessen.<serial>.location.pose.x Und<serial>.location.pose.y Diese Werte sind in Metern angegeben; die Kartenmetadaten liefern den Ursprung und die Auflösung. Platzieren Sie beide Widgets im selben, relativ positionierten Container und verwenden Sie dasselbe Seitenverhältnis (404:488 ), ansonstenobject-fit: contain kann Letterboxing einführen und das Overlay-Symbol verschieben. WennfetchMap = false Das Kartenbild zeigt möglicherweise noch einen alten Zustand an, aber weder die Karte noch ihre separate Overlay-Position werden vom Adapter aktualisiert.

Nach der Implementierung der Positions-Zustands-Anzeige,location.pose.x Undlocation.pose.y sind Meter. Konvertieren Sie sie mithilfe der Kartenkopfdaten in Kartenpixel.maps/remote_map.json :

const map = {
    width: 404,
    height: 488,
    resolution: 0.05,
    xMin: -15.353175,
    yMin: -9.549684,
};

const pixelX = (poseX - map.xMin) / map.resolution;
const pixelY = map.height - 1 - (poseY - map.yMin) / map.resolution;
const poseYaw = Number(poseYawState); // <serial>.location.pose.yaw

icon.style.left = `${(pixelX / map.width) * 100}%`;
icon.style.top = `${(pixelY / map.height) * 100}%`;
icon.style.transform = `translate(-50%, -50%) rotate(${poseYaw - 90}deg)`;

Für die aktuelle Momentaufnahmepose.x = 0.094 Undpose.y = 0.356 Platzieren Sie das Symbol ungefähr bei Pixel(309, 289) , oderleft: 76.5% Undtop: 59.2% . DefinierenposeYaw aus<serial>.location.pose.yaw ; mit einem Symbol, das nach unten zeigt, anwendenposeYaw - 90 also ein lebendes Gieren um-16 Die Vorderseite zeigt nach rechts. Der Adapter veröffentlicht derzeit weder Kartenbreite, -höhe, -auflösung noch -ursprung als Zustände. Daher müssen diese Werte aktualisiert werden, wenn der Mäher eine neue Karte erstellt. Kartenpixel dürfen nicht mit den Meterkoordinaten des Mähers vermischt werden.

Gierwinkel: Ursprung und Berechnung

<serial>.location.pose.yaw ist die von Anthbot gemeldete Mährichtung alspose.yaw Es wird in Grad angegeben und nicht von Millimetern umgerechnet. Der Adapter wandelt nur um.pose.x Undpose.y von Millimetern in Meter; der Gierwinkel wird unverändert weitergegeben. X/Y beschreiben die Position des Mähers, daher darf der Gierwinkel nicht allein aus der aktuellen Position berechnet werden.

Für ein separates VIS-Symbol, dessen Quellbild die Vorderseite des Mähers nach unten zeigt, berechnen Sie die Bildrotation mit einem festen Wert.90° Versatz:

const yawDeg = Number(yawState); // <serial>.location.pose.yaw
const iconRotationDeg = yawDeg - 90;

icon.style.transform = `translate(-50%, -50%) rotate(${iconRotationDeg}deg)`;

Der-90° Der Offset richtet die Überschriftenkonvention von Anthbot an der Vorderseite des Kartenelements aus. Dieselbe Formel wird für das integrierte Kartensymbol und dessen generierte Ausweichoption verwendet. Beispiele:yaw = 90° führt zu Bilddrehung (Vorderseite nach unten), während der Live-Wertyaw = -16° führt zu-106° (entspricht254° ) und richtet die Vorderseite nach rechts aus. Falls die Gierachse nicht verfügbar ist, behält das Objekt seine standardmäßige Ausrichtung mit der Vorderseite nach unten bei.

Quelle des Robotersymbols

Das untersuchte Anthbot-App-Bundle enthält lokale Kartenmarkierungsressourcen, einschließlich des Genie.pic_device_map Asset, modellspezifische S2/S3/M9Pro-Varianten und dieview_map_battery_position Lademarkierung. Hierbei handelt es sich um von der App ausgewählte, verpackte UI-Dateien. Die Cloud-/API-Nutzdaten und das heruntergeladene Kartenarchiv liefern keine wiederverwendbare Symbol-URL oder Symbolstatusinformationen. Der Adapter verpackt die passenden, von der App generierten Markierungselemente für bekannte Modelle und verwendet ein eigenes, in sich geschlossenes Roboter-Markierungselement, falls ein Element fehlt, nicht lesbar ist oder das Modell unbekannt ist. Der Adapter ist unabhängig von der Installation der App.

Standort

ZustandTypBeschreibung
<serial>.location.gps.latitudeNummerGPS-Breitengrad aus Anti-Verlust-Positionsdaten
<serial>.location.gps.longitudeNummerGPS-Längengrad aus Anti-Verlust-Positionsdaten
<serial>.location.pose.xNummerLokaler Rasenmäher positioniert X in Metern
<serial>.location.pose.yNummerLokaler Rasenmäher positioniert sich Y in Metern
<serial>.location.pose.yawNummerLokaler Rasenmäher positioniert sich Gier
<serial>.location.pose.typeZeichenketteGemeldeter Haltungstyp
<serial>.location.charger.xNummerKoordinaten von Ladegerät X in Metern aus den nativen Kartenmetadaten
<serial>.location.charger.yNummerLadepunkt Y-Koordinate in Metern aus den nativen Kartenmetadaten

Diagnostik

Derdiagnostics Der Kanal stellt schreibgeschützte Fehlerbehebungsdaten bereit, die aus dem Mähwerksschatten abgeleitet werden, darunter RTK-Status, RTK-Basisstatus, Kamera-/Karten-/Netzwerk-Flags, Hindernisvermeidung, Firmware-Versionen, OTA-Fortschritt, WLAN-/SIM-Details, Zeitstempel und der nächste Termin. Bei den Modellen M5/M9 kartiert der Adapter auchnet_config.* ,mode.value ,error.value ,map.map_area ,mapping_task.state ,mowing_time.value , Undmowing_area.value in den bestehenden ioBroker-Zustandsbaum, wo die Bedeutungen übereinstimmen.

Verbrauchsmaterial

ZustandTypEinheitBeschreibung
<serial>.consumable.chargingPort.lifeNummer%Lebensdauer des Ladeanschlusses
<serial>.consumable.chargingPort.resetboolescher WertLebensdauer des Ladeanschlusses zurücksetzen
<serial>.consumable.cameras.lifeNummer%Lebensdauer der Kameras
<serial>.consumable.cameras.resetboolescher WertLebensdauer der Kameras zurücksetzen
<serial>.consumable.blades.lifeNummer%Lebensdauer der Klingen
<serial>.consumable.blades.resetboolescher WertLebensdauer der Klingen zurücksetzen

Der Rasenmäher akzeptiert nur dann Befehle zum Zurücksetzen der Verbrauchsmaterialien, wenn der entsprechende Lebensdauerwert bei oder unter 5 % liegt.

Bedienelemente

Schreibbare Steuerungszustände aktualisieren die Mähereinstellungen über den Anthbot IoT-Dienstschatten. Der Adapter übernimmt die modellspezifische Kodierung der Schattennutzlast intern, sodass dieselben ioBroker-Steuerungszustände für alle unterstützten Mähermodelle verwendet werden können.

ZustandTypReichweiteBeschreibung
<serial>.controls.fullMapMowing.mowHeightNummer30..70 mm , 5 mm SchritteSchnitthöhe für die gesamte Karte festlegen
<serial>.controls.fullMapMowing.includeEdgeTrimmingboolescher Werttrue /falseBeziehen Sie das Kantenschneiden in die Mähung der gesamten Fläche ein.
<serial>.controls.fullMapMowing.customMowingDirectionNummer0..180 degBenutzerdefinierte Mährichtung für die gesamte Karte festlegen
<serial>.controls.fullMapMowing.customMowingDirectionEnabledboolescher Werttrue /falseBenutzerdefinierte Mährichtung für die gesamte Karte aktivieren oder deaktivieren
<serial>.controls.zoneMowing.mowHeightNummer30..70 mm , 5 mm SchritteZonenmähschnitthöhe einstellen
<serial>.controls.zoneMowing.mowCountNummer1..3Zonenmähvorgänge einstellen
<serial>.controls.zoneMowing.customMowingDirectionNummer0..180 degZonenmährichtung einstellen
<serial>.controls.zoneMowing.customMowingDirectionEnabledboolescher Werttrue /falseZonenmährichtung aktivieren oder deaktivieren
<serial>.controls.zoneMowing.obstacleAvoidanceEnabledboolescher Werttrue /falseZonen-Hindernisvermeidung aktivieren oder deaktivieren
<serial>.controls.zoneMowing.obstacleAvoidanceLevelNummer0..2Zonen-Hindernisvermeidungsniveau festlegen
<serial>.controls.voiceVolumeNummer0..100 %Sprachlautstärke einstellen
<serial>.controls.rain.perceptionEnabledboolescher Werttrue /falseRegenwahrnehmung aktivieren oder deaktivieren
<serial>.controls.rain.continueTimeHoursNummer0..8 hRegendauer in Stunden einstellen
<serial>.controls.nearChargerMowing.enabledboolescher Werttrue /falseMähen in der Nähe der Ladesäule aktivieren oder deaktivieren
<serial>.controls.nearChargerMowing.mowHeightNummer30..70 mm , 5 mm SchritteStellen Sie die Schnitthöhe für das Mähen in der Nähe der Ladesäule ein.
<serial>.controls.nearChargerMowing.mowCountNummer1..3Mähvorgänge in der Nähe des Ladeplatzes einstellen
<serial>.controls.nearChargerMowing.obstacleAvoidanceEnabledboolescher Werttrue/falseHindernisvermeidung in der Nähe der Ladesäule aktivieren oder deaktivieren
<serial>.controls.nearChargerMowing.obstacleAvoidanceLevelNummer0..2Hindernisvermeidungsstufe in der Nähe des Ladeplatzes einstellen

Befehle

Befehlszustände sind beschreibbar. Schaltflächenzustände werden zurückgesetzt.false Nach der Ausführung werden die Zonenbefehlszustände nach der Ausführung auf eine leere Zeichenkette zurückgesetzt. Verbrauchsmaterial-Reset-Tasten sind darunter zugänglich.consumable Die

ZustandTypBeschreibung
<serial>.commands.device.findboolescher WertFinde den Roboter
<serial>.commands.device.refreshboolescher WertAlle Mähereigenschaften anfordern und Status aktualisieren
<serial>.commands.device.cancelRtkAntennaMovedboolescher WertWarnung „RTK-Antenne bewegt“ abbrechen
<serial>.commands.docking.startReturnboolescher WertZur Ladestation zurückkehren
<serial>.commands.docking.pauseReturnboolescher WertPause, zurück zur Ladestation
<serial>.commands.maintenance.startGrassDumpboolescher WertGrasablagerung beginnen
<serial>.commands.maintenance.startDiskMaintenanceboolescher WertFestplattenwartungsmodus starten
<serial>.commands.mowing.startFullMapboolescher WertStarten Sie die Mähung der gesamten Karte.
<serial>.commands.mowing.startZoneZeichenketteBeginnen Sie mit dem Mähen einer oder mehrerer manueller Zonen
<serial>.commands.mowing.startAutoZoneZeichenketteStarten Sie das Mähen einer oder mehrerer automatischer Zonen.
<serial>.commands.mowing.startPointZeichenketteMähen mit Startpunktx,y oder {"x":123,"y":456}
<serial>.commands.mowing.startEdgeboolescher WertKantenmähen beginnen
<serial>.commands.mowing.startNearChargerboolescher WertBeginnen Sie mit dem Mähen in der Nähe des Ladeplatzes.
<serial>.commands.mowing.pauseboolescher WertMähen pausieren
<serial>.commands.mowing.resumeboolescher WertMähen fortsetzen
<serial>.commands.mowing.stopboolescher WertAlle Mäharbeiten einstellen
<serial>.commands.mowing.endboolescher WertMähen am Ende
<serial>.commands.mowing.stopPointboolescher WertStopppunktmähen

Verfügbarkeit voncommands.maintenance.startDiskMaintenance ,commands.maintenance.startGrassDump ,commands.mowing.startEdge ,commands.mowing.startNearCharger , Undcommands.mowing.startPoint kann vom Mähermodell, der Firmware, dem aktuellen Mähmodus und den Karten-/Randdaten abhängen.

Zonen

ZustandTypBeschreibung
<serial>.zones.manual.listJSON-ZeichenketteBekannte manuelle/benutzerdefinierte Zonen
<serial>.zones.manual.activeIdsJSON-ZeichenketteAktuell aktive manuelle Zonen-IDs
<serial>.zones.autoListJSON-ZeichenketteBekannte automatische/regionale Zonen

Rohdaten

ZustandTypBeschreibung
<serial>.raw.shadow.propertyJSON-ZeichenketteRohdaten des Schatten-Nutzlast
<serial>.raw.shadow.serviceJSON-ZeichenketteRohdienst-Schattennutzlast
<serial>.raw.shadow.event-codeJSON-ZeichenketteZwischengespeicherte Anthbot-Ereigniscode-Übersetzungsnutzlast, die für Fehlerbeschreibungen verwendet wird
<serial>.raw.areaDefinitionJSON-ZeichenketteRohbereichsdefinition Nutzlast

Zonenmähen

Der Adapter legt die manuellen/benutzerdefinierten Zonen des Rasenmähers in folgenden Bereichen frei:

<instance>.<serial>.zones.manual.list

Dieser Status enthält ein JSON-Array mit bekannten Zonen. Verwenden Sie dasid oder das genauename Beginnen Sie mit dem Mähen anhand dieser Liste.

Schreiben Sie die Auswahl an:

<instance>.<serial>.commands.mowing.startZone

Zulässige Werte:

  • eine Zone nach ID:3
  • eine Zone nach Namen:Front yard
  • mehrere Zonen als durch Kommas getrennte IDs oder Namen:3,5,Back yard
  • mehrere Zonen als JSON-Array:[3,5,"Back yard"]

Nach einem erfolgreichen Schreibvorgang sendet der Adaptercustom_area_mow_start mit den übereinstimmenden manuellen Zonen-IDs und Löschungencommands.mowing.startZone wieder.

Automatische Zonen funktionieren auf ähnliche Weise:

<instance>.<serial>.zones.autoList
<instance>.<serial>.commands.mowing.startAutoZone

Bei automatischen Zonen löst der Adapter die ausgewählten Zonen-IDs oder -Namen in die Zonenkoordinaten auf und sendet sie.region_mow_start Die

Fehlerbehebung

Der Adapter verbindet sich nicht.

  • Bitte überprüfen Sie Benutzername, Passwort und Vorwahl.
  • Vergewissern Sie sich, dass der Rasenmäher in der Anthbot-App mit demselben Konto sichtbar ist.
  • Erhöhen Sie den Protokollierungsgrad des Adapters aufdebug und die Instanz neu starten.
  • Überprüfenanthbot-genie.<instance>.info.connection Die

Es werden keine Mäherobjekte erstellt.

  • Das Anthbot-Konto muss mindestens einen gebundenen Rasenmäher haben.
  • Überprüfen Sie das Adapterprotokoll aufNo Anthbot devices found for this account Die
  • Überprüfen Sie, ob der ioBroker-Host über einen Internetzugang verfügt.

Befehle funktionieren nicht

  • Prüfen Sie zunächst, ob die Statusabfrage funktioniert.
  • Prüfen Sie, ob der Zielzustand unter der richtigen Rasenmäher-Seriennummer liegt.
  • Vergleichen Sie bei Zonenbefehlen den geschriebenen Wert mit den IDs und Namen inzones.manual.list oderzones.autoList Die
  • Der Adapter aktualisiert die temporären IoT-Anmeldeinformationen nach jedem AWS IoT-Vorgang automatisch.403 Falls die Befehle auch nach diesem Wiederholungsversuch noch fehlschlagen, überprüfen Sie das Adapterprotokoll auf modellspezifische Nutzlast- oder Mähwerkszustandsfehler.
  • Überprüfenraw.shadow.service und das Adapterprotokoll für Befehlsfehler.

Credits

Ein besonderer Dank gilt den Anthbot Genie-Community-Projekten, die den Anthbot-Cloud-Workflow und die Befehlszuordnung wesentlich verständlicher gemacht haben:

Besonderer Dank gilt @Riza-Aslan für die Forschungsarbeit zur Unterstützung von M5/M9 und die Nutzlastzuordnungsarbeit, die dieses Adapter-Update ermöglicht haben.

Dieser ioBroker-Adapter ist ein unabhängiges Projekt, baut aber auf öffentlichen API-Forschungs- und Implementierungsideen aus der Community-Arbeit auf.

Rechtlicher Hinweis

Dieses Projekt ist inoffiziell und steht in keiner Verbindung zu Anthbot, wird weder von Anthbot unterstützt, gesponsert noch genehmigt.

Die Namen, Marken und Logos von Anthbot und Genie gehören ihren jeweiligen Eigentümern. Weitere Informationen finden Sie in der Datei NOTICE.md .

Ältere Changelog-Einträge sind in CHANGELOG_OLD.md archiviert.

Changelog

WORK IN PROGRESS

  • Add separate read-only PNG map image states for the native map, RTK mowed-area mask, and downloaded historical mowing path.
  • Add an opt-in Admin checkbox for map downloads and rendering because map generation can use significant CPU.
  • Add a second opt-in Admin checkbox for historical path rendering because it uses additional CPU and cloud requests.
  • Expose local mower pose X/Y states in metres for direct map positioning.
  • Expose charger point X/Y states in metres from the native map metadata.
  • Expose the historical mowing path used by the PNG as a JSON state.
  • Rotate the integrated robot map icon according to the mower pose yaw.
  • Render the native charger marker from the map metadata below the mower icon.

0.1.13 (2026-06-08)

  • Add M5/M9 payload parity for status, battery, error, network, RTK, map, and total mowing metrics while keeping the existing ioBroker state tree stable.
  • Refresh temporary IoT credentials once on AWS IoT 403 responses and retry the failed shadow read or command publish automatically.
  • Refactor the large adapter sources into focused CommonJS modules for Anthbot cloud/shadow clients, payload helpers, adapter object definitions, state derivation, and command handling without changing state IDs or command payload behavior.
  • Expand npm run check so syntax validation covers the split lib/anthbot, lib/adapter, and unit test files through the dedicated syntax-check helper.

0.1.12 (2026-06-06)

  • (reloxx13) FIXED: Create the global info channel and correct the mower status role so the adapter object structure passes ioBroker review checks.

0.1.11 (2026-06-06)

  • Refresh existing mower device/channel/state objects with extendObjectAsync so updated runtime i18n names are applied to already-created objects, not only new ones.

0.1.10 (2026-06-06)

  • Align ioBroker object metadata with the repository object-structure checker by creating the global info channel, correcting the mower status role, and emitting full recommended i18n keys for object names.
  • Keep admin translations in the repository-checker-friendly admin/i18n/<lang>.json layout and load backend/runtime object-name translations from root i18n/<lang>.json files via adapter-core I18n.

0.1.9 (2026-06-06)

  • Drop the temporary --legacy-peer-deps GitHub Actions install override now that the lockfile supports plain npm ci again.
  • Re-enable ESLint in the GitHub Actions quick-check job and align the local lint config with the checked JavaScript codebase.
  • Clean up repository metadata so local repochecker no longer reports actionable findings.

License

MIT License

Copyright (c) 2026 reloxx13

See LICENSE for details.