Anthbot Genie

Неофициальный облачный адаптер для управления газонокосилками Anthbot Genie и опроса состояния

Текущий релиз
0.1.13
Разработчик
reloxx13
Лицензия
MIT
Logo

Неофициальный адаптер ioBroker для роботизированных газонокосилок Anthbot Genie , ориентированный на подробную телеметрию, диагностику и управление газонокосилками Genie 600/1000/3000/5000 и более новыми моделями M5/M9.

Адаптер подключается к облачной учетной записи Anthbot, обнаруживает подключенные газонокосилки, считывает теневые данные из облака и IoT, а также предоставляет в ioBroker обширное дерево состояний, содержащее информацию о статусе, настройках, командах для газонокосилок, данных о зонах, расходных материалах, местоположении, диагностике и необработанных данных для устранения неполадок.

Он предназначен для пользователей, которым требуется больше, чем просто просмотр информации о состоянии устройства в режиме онлайн/заряда батареи/статуса: состояние RTK и базовой станции, сведения о прошивке и OTA-обновлениях, информация о сети и SIM-карте, данные GPS и координаты местоположения, временные метки жизненного цикла карты, сведения об ошибках газонокосилки, сроки службы расходных материалов, настройки дождя, метаданные зон и записываемые элементы управления скашиванием доступны в виде состояний ioBroker.

Этот адаптер доступен в ioBroker.latest Репозиторий. Пожалуйста, оставляйте отзывы и результаты тестирования в теме на форуме ioBroker .

Пример использования ioBroker Blockly с условиями для автоматизации газонокосилки можно найти в примере автоматизации Blockly .

Функции

  • Вход в облако Anthbot с зашифрованным хранением паролей в собственной конфигурации ioBroker.
  • Автоматическое обнаружение газонокосилок, привязанных к настроенной учетной записи Anthbot.
  • Поиск региона и конечной точки IoT для каждой газонокосилки
  • Автоматическое обновление временных учетных данных IoT после AWS IoT403 ответы
  • Опрос представителей теневой экономики в сфере собственности и услуг
  • Подробная информация о состоянии подключения, состоянии сети, состоянии батареи, состоянии газонокосилки, состоянии зарядки, времени кошения, площади кошения, общем времени кошения/площади, состоянии карты, состоянии задачи картирования, ошибках, активном режиме кошения, точечном кошении и количестве зон.
  • Диагностические состояния для RTK-установки, базовой станции RTK, предупреждений о перемещении антенны, версий прошивки, хода OTA-обновления, Wi-Fi, сотовой связи, SIM-карты, Bluetooth, флагов камеры/карты, системы предотвращения столкновений, флагов безопасности, системных временных меток и данных об ошибках газонокосилки, хранящихся в облаке.
  • Информация о местоположении для GPS-координат, предотвращающих потерю, и локального положения газонокосилки.
  • Срок службы расходных материалов и кнопки сброса для зарядного порта, камер и лезвий.
  • Настраиваемые параметры управления для кошения по всей карте, зонального кошения, высоты среза, громкости голоса, пользовательского направления кошения, обхода препятствий, настроек на случай дождя и кошения вблизи зарядной станции.
  • Команды управления для полного скашивания, остановки, возврата на зарядную станцию, паузы при возврате на зарядную станцию, сброса травы, режима обслуживания дисков, скашивания краев, скашивания возле зарядной станции, точечного скашивания, обновления, ручного зонирования и автоматического зонирования.
  • Метаданные зон, созданные вручную и автоматически, представлены в формате JSON, включая активные идентификаторы зон, созданных вручную.
  • Состояния изображения карты в формате PNG (только для чтения) для исходной карты, маски скошенной области RTK и исторической траектории скашивания.
  • Исходные теневые свойства, теневые сервисы, преобразования кодов событий Anthbot и полезные нагрузки определений областей для устранения неполадок и автоматизированной отладки.

Требования

  • ioBroker с js-контроллером>= 6.0.11
  • администратор ioBroker>= 7.6.20
  • Node.js>= 22
  • Учетная запись Anthbot, содержащая как минимум одну привязанную газонокосилку Genie.
  • Доступ в Интернет с хоста ioBroker к облаку Anthbot и конечной точке AWS IoT.

Установка

Адаптер доступен в ioBroker.latest репозиторий, который можно установить из интерфейса адаптера ioBroker или из командной строки.

Администратор ioBroker

Еслиlatest Если репозиторий еще не активен, откройте административную панель ioBroker, перейдите в «Настройки» -> «Репозитории» , выберите или включите его.latest и обновите список адаптеров.

Затем откройте окно адаптера и найдите...anthbot-genie и установите адаптер изlatest репозиторий.

CLI

Установка:

iobroker repo set latest
iobroker update
iobroker add anthbot-genie

или явно с указанием версии:

iobroker add anthbot-genie@0.1.13

Поддерживаемые устройства

  • Genie 600
  • Джин 1000
  • Genie 3000
  • Genie 5000
  • М5
  • М9

Другие модели Anthbot могут по-прежнему работать, если они предоставляют ту же структуру облачных и теневых данных, но они пока не указаны и не задокументированы здесь явно.

Разработка

  • npm install Устанавливает зависимости среды выполнения и разработки.
  • npm run lint Проверяет стиль кода с помощью ESLint.
  • npm run lint:fix Применяет автоматически исправляемые изменения ESLint.
  • npm run check Выполняет проверку синтаксиса TypeScript и Node.js для точки входа адаптера, модулей разделенной библиотеки и тестовых файлов.
  • npm run test:js Выполняет модульные тесты.
  • npm run test:package Выполняет тесты проверки пакета.
  • npm run test:integration запускает интеграционные тесты.
  • npm run test пробегиcheck модульные тесты и проверка пакетов.
  • npm run check:repo запускает средство проверки репозитория ioBroker.
  • npm run translate запускает рабочий процесс преобразования адаптера ioBroker adapter-dev.
  • npm run release Создаёт новый релиз пакета ioBroker.

Переводы

  • Переводы Admin/JSON Config доступны в режиме реального времени.admin/i18n/<lang>.json .
  • Перевод имен объектов бэкенда/среды выполнения доступен вi18n/<lang>.json .
  • После добавления или удаления переводимых строк обновите исходные файлы на английском языке и запустите программу.npm run translate таким образом, будущие синхронизации Weblate и adapter-dev будут оставаться согласованными.

Конфигурация

Откройте конфигурацию экземпляра адаптера в административной панели ioBroker и установите следующие параметры:

ПараметрОписаниеПо умолчанию
Имя пользователя аккаунта AnthbotИмя пользователя или адрес электронной почты учетной записи Anthbotпустой
пароль от аккаунта AnthbotПароль от учетной записи Anthbot хранится в зашифрованном виде на сервере ioBroker.пустой
код городаНапример, телефонный или банковский код города.49 для Германии49
хост APIХост API облака Anthbotapi.anthbot.com
Интервал опроса в секундахИнтервал опроса данных о работе газонокосилки. Адаптер устанавливает интервал не менее 10 секунд.60
Загрузка карты (высокая загрузка ЦП)Загрузите и визуализируйте исходную карту, RTK-маску и историческую траекторию скашивания.false
Создание карты с путями (ещё более высокая загрузка ЦП)Загрузите и отобразите исторический маршрут скашивания травы на карте. Требуется загрузка карты.false
Язык описания ошибкиЯзык, используемый для описания ошибок в облаке Anthbot.English

Если какой-либо из параметров карты отключен, адаптер прекращает запрашивать или отображать данные карты, оставляя существующие значения состояния карты без изменений.

После сохранения конфигурации запустите или перезапустите экземпляр адаптера.

Штаты

Адаптер создает отдельное дерево устройств для каждого серийного номера газонокосилки. Если Anthbot когда-либо вернет серийный номер с символами, небезопасными для идентификаторов объектов ioBroker, адаптер нормализует только эти символы, сохраняя при этом исходный серийный номер в собственных метаданных объекта устройства:

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

Информация

СостояниеТипОписание
info.connectionлогическийСостояние глобального облачного подключения адаптера
<serial>.info.aliasнитьПсевдоним газонокосилки от Anthbot
<serial>.info.modelнитьМодель/категория газонокосилки
<serial>.info.regionнитьРегион Anthbot/AWS IoT
<serial>.info.endpointнитьIoT-терминал используется для теневого доступа
<serial>.info.onlineлогическийСостояние газонокосилки, отображаемое в режиме онлайн.
<serial>.info.chargingлогическийЗаряжается ли газонокосилка в данный момент
<serial>.info.lastServiceCommandнитьПоследнее зарегистрированное служебное командование
<serial>.info.lastPollнитьISO-метка времени последнего успешного опроса

Метрики

СостояниеТипЕдиницаОписание
<serial>.metrics.batteryLevelчисло%Уровень заряда батареи
<serial>.metrics.status.mowerнитьНормализованное состояние газонокосилки
<serial>.metrics.status.robotRawнитьНеобработанное состояние робота
<serial>.metrics.status.modeRawнитьСыройmode.value статус, сообщаемый моделями M5/M9
<serial>.metrics.mowing.timeчислоsУказанное время кошения
<serial>.metrics.mowing.areaчислоm2Сообщенная площадь скашивания
<serial>.metrics.mowing.totalTimeчислоsОбщее время кошения, указанное моделями M5/M9
<serial>.metrics.mowing.totalAreaчислоm2Общая площадь скашивания, отображаемая моделями M5/M9.
<serial>.metrics.mowing.borderActiveлогическийактивно ведется работа по покосу травы вдоль границы.
<serial>.metrics.mowing.nearChargerActiveлогическийАктивна функция кошения травы рядом с зарядной станцией.
<serial>.metrics.mowing.fullYardActiveлогическийСтрижка всего газона в режиме реального времени
<serial>.metrics.pointMowing.activeлогическийТочечное скашивание активно
<serial>.metrics.pointMowing.xчислоПоследняя точка кошения, координата X
<serial>.metrics.pointMowing.yчислоПоследняя точка скашивания, координата Y
<serial>.metrics.zones.manualCountчислоКоличество зон ручного управления
<serial>.metrics.zones.autoCountчислоКоличество автоматических зон
<serial>.metrics.map.totalAreaчислоm2Общая картографированная площадь
<serial>.metrics.map.statusнитьИсходный статус карты
<serial>.metrics.map.mappingTaskStateнитьСостояние задачи сопоставления, сообщаемое моделями M5/M9
<serial>.metrics.error.codeчислоКод ошибки последней газонокосилки
<serial>.metrics.error.descriptionнитьУдобочитаемое описание ошибки из кэшированного списка кодов событий Anthbot, если таковое известно.
<serial>.metrics.error.activeлогическийАктивна ли ненулевая ошибка газонокосилки?

Адаптер сохраняет одно и то же дерево состояний для всех поддерживаемых моделей газонокосилок. На моделях, которые не предоставляют поля полезной нагрузки, специфичные для M5/M9, состоянияmetrics.status.modeRaw ,metrics.mowing.totalTime ,metrics.mowing.totalArea , иmetrics.map.mappingTaskState создаются, но остаются пустыми илиnull .

Изображения карт

СостояниеТипОписание
<serial>.map.imageнитьКарта навигации в исходном виде в формате PNG (URI данных)
<serial>.map.imageWithRtkMaskнитьВстроенная навигационная карта с использованием Anthbotrtk_mask_map в виде URI данных PNG
<serial>.map.imageWithMowedPathнитьКарта навигации с загруженными историческими данными о траектории скашивания в формате PNG (URI данных).
<serial>.map.mowedPathнитьJSON-массив с точными историческими точками пути, использованными дляmap.imageWithMowedPath

Три состояния изображения доступны только для чтения и используютmedia.image роль.map.mowedPath Состояние доступно только для чтения и используетjson роль. Адаптер загружает Anthbot.multi_maps файл карты, выдержкиmaps/remote_map_navi.map и отображает исходный растр с использованием совместимой с приложением палитры освещения.map.image содержит только карту;map.imageWithRtkMask добавляет полныйmaps/rtk_mask_map Растровое изображение скошенной площади;map.imageWithMowedPath запросыreq_history_mapping_path , загрузкиpath_<SN>.txt , отображает исторический маршрут синим цветом и добавляет текущую позу газонокосилки в виде желтой иконки робота, а также встроенный маркер зарядного устройства под ней.map.mowedPath Содержит те же точки пути JSON, что и этот PNG-файл.x иy Значения используют исходные сантиметровые координаты исторического маршрута; разделите их на100 для преобразования их в локальные метры карты, используемые для состояний положения. Встроенные ресурсы приложения ориентированы таким образом, что передняя часть газонокосилки направлена вниз, и поворачиваются с помощьюlocation.pose.yaw - 90° (например, реальное отклонение примерно на 100 градусов)-16° указывает на переднюю правую сторону); сгенерированный резервный вариант использует ту же ориентацию. Маркер зарядного устройства и только для чтения.location.charger.x /location.charger.y Штаты считываются изcharger_point вmaps/remote_map.json Координаты штата указаны в метрах. Оба наложенных изображения отображают настроенные запрещенные зоны красным цветом. Историческое изображение никогда не возвращается к короткоживущему режиму.curpath Состояния изображений и пути обновляются при изменении идентификатора карты, метки времени, истории пути, положения газонокосилки или точки зарядки. Отсутствие или некорректность данных карты приводит к тому, что состояния остаются пустыми, пока адаптер продолжает опрос.

Эти два параметра карты намеренно управляют разными видами работ:

  • fetchMap = false : не запрашивается путь к архиву карты, растровому изображению, PNG-файлу или истории изменений. Существующие значения координат карты и зарядного устройства остаются неизменными, поэтому ранее сгенерированные координаты карты и зарядного устройства могут отображаться, но не обновляются.
  • fetchMap = true иgenerateMapWithPaths = false Обновлены исходная карта и состояние RTK-маски. Исторический путь не запрашивается, иmap.imageWithMowedPath иmap.mowedPath остаются без изменений. Использоватьmap.image илиmap.imageWithRtkMask для отображения карты с меньшим потреблением ресурсов процессора.
  • Обе настройкиtrue : все три состояния изображения иmap.mowedPath генерируются состояния;map.imageWithMowedPath Содержит исторический маршрут и текущую иконку робота.

VIS: карта со встроенным значком робота

Используйте этот прямой путь, если включены обе настройки карты. Привяжите виджет изображения VIS к<serial>.map.imageWithMowedPath Адаптер уже отображает исторический путь и иконку робота в текущей позе. Второй виджет иконки VIS не требуется. Сохраняйте контейнер изображения с исходным соотношением сторон PNG.404:488 ).

ВИС: карта с отдельным значком наложения

Используйте этот путь с меньшей загрузкой ЦП, когдаfetchMap = true иgenerateMapWithPaths = false Привяжите виджет изображения к<serial>.map.image или<serial>.map.imageWithRtkMask Затем разместите прозрачный виджет значка абсолютно над ним. Привяжите или вычислите его положение на основе этого значения.<serial>.location.pose.x и<serial>.location.pose.y Эти значения указаны в метрах; метаданные карты содержат начало координат и разрешение. Разместите оба виджета в одном и том же относительно расположенном контейнере и используйте одинаковое соотношение сторон.404:488 ), в противном случаеobject-fit: contain может добавить черные полосы по бокам и сместить наложенную иконку. ЕслиfetchMap = false Изображение на карте может по-прежнему отображать старое состояние, но ни сама карта, ни ее отдельное положение в наложении не обновляются адаптером.

После развертывания системы преобразования измерителя положения в измерение состояния,location.pose.x иlocation.pose.y Это метры. Преобразуйте их в пиксели карты, используя значения заголовка карты из...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)`;

Для текущего снимка,pose.x = 0.094 иpose.y = 0.356 Разместите значок примерно в пикселях.(309, 289) , илиleft: 76.5% иtop: 59.2% . ОпределятьposeYaw от<serial>.location.pose.yaw ; с иконкой, расположенной спереди вниз, применитьposeYaw - 90 так что происходит вращательное движение в реальном времени.-16 Направляет переднюю часть вправо. В настоящее время адаптер не публикует ширину карты, высоту, разрешение или начало координат в качестве состояний, поэтому эти значения необходимо обновлять при создании новой карты газонокосилкой; не смешивайте пиксели массива карты с координатами газонокосилки в метрах.

Рыскание: происхождение и расчет

<serial>.location.pose.yaw Это обозначение головки косилки, указанное Anthbot как...pose.yaw Значение выражено в градусах и не переводится из миллиметров. Адаптер осуществляет только преобразование.pose.x иpose.y От миллиметров до метров; угол рыскания передается без изменений. X/Y описывают положение косилки, поэтому угол рыскания нельзя рассчитывать только на основе текущего положения.

Для отдельного значка VIS, на исходном изображении которого передняя часть газонокосилки направлена вниз, рассчитайте поворот изображения с фиксированным значением.90° компенсировать:

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

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

Он-90° Параметр offset выравнивает соглашение об отображении заголовков Anthbot с основным элементом. Та же формула используется для встроенной иконки карты и ее резервного варианта. Примеры:yaw = 90° результаты в Поворот изображения (спереди вниз), при этом значение в реальном времениyaw = -16° результаты в-106° (эквивалентно254° ) и направляет переднюю часть вправо. Если рыскание недоступно, оставьте объект в его стандартной ориентации — передней частью вниз.

Источник иконки робота

Проверенный пакет приложений Anthbot содержит локальные ресурсы для отображения маркеров на карте, включая Genie.pic_device_map актив, варианты S2/S3/M9Pro, специфичные для конкретной модели, иview_map_battery_position Маркер зарядного устройства. Это упакованные файлы пользовательского интерфейса, выбранные приложением; полезная нагрузка облака/API и загруженный архив карты не предоставляют многоразовый URL-адрес значка или состояние значка. Адаптер упаковывает соответствующие ресурсы маркеров, полученные из приложения, для известных моделей и использует собственный автономный маркер робота, если какой-либо ресурс отсутствует, нечитаем или модель неизвестна. Адаптер не зависит от установленного приложения.

Расположение

СостояниеТипОписание
<serial>.location.gps.latitudeчислоОпределение широты по GPS на основе данных о местоположении с защитой от потери.
<serial>.location.gps.longitudeчислоОпределение долготы по GPS на основе данных о местоположении с защитой от потери.
<serial>.location.pose.xчислоМестоположение косилки: позиция X в метрах
<serial>.location.pose.yчислоМестоположение косилки: Y-образная позиция в метрах
<serial>.location.pose.yawчислоПоложение местной газонокосилки, угол поворота
<serial>.location.pose.typeнитьСообщенный тип позы
<serial>.location.charger.xчислоКоординаты зарядного устройства X в метрах взяты из исходных метаданных карты.
<serial>.location.charger.yчислоКоординаты зарядного устройства по оси Y в метрах взяты из исходных метаданных карты.

Диагностика

Онdiagnostics Канал предоставляет данные для устранения неполадок, доступные только для чтения, полученные из тени газонокосилки, включая состояние RTK, состояние базовой станции RTK, флаги камеры/карты/сети, предотвращение столкновений, версии прошивки, ход обновления OTA, сведения о Wi-Fi/SIM-карте, временные метки и следующую встречу. На моделях M5/M9 адаптер также отображаетnet_config.* ,mode.value ,error.value ,map.map_area ,mapping_task.state ,mowing_time.value , иmowing_area.value в существующее дерево состояний ioBroker, где значения совпадают.

Расходные материалы

СостояниеТипЕдиницаОписание
<serial>.consumable.chargingPort.lifeчисло%Срок службы зарядного порта
<serial>.consumable.chargingPort.resetлогическийСбросить срок службы зарядного порта
<serial>.consumable.cameras.lifeчисло%Срок службы камер
<serial>.consumable.cameras.resetлогическийСбросить срок службы камер
<serial>.consumable.blades.lifeчисло%Срок службы лезвий
<serial>.consumable.blades.resetлогическийСбросить срок службы лезвий

Газонокосилка принимает команды сброса расходных материалов только тогда, когда соответствующий ресурс расходных материалов равен 5% или ниже.

Элементы управления

Записываемые состояния управления обновляют настройки газонокосилки через теневой сервис Anthbot IoT. Адаптер обрабатывает кодирование полезной нагрузки теневого сервиса, специфичное для каждой модели, внутри себя, поэтому одни и те же состояния управления ioBroker могут использоваться для всех поддерживаемых моделей газонокосилок.

СостояниеТипДиапазонОписание
<serial>.controls.fullMapMowing.mowHeightчисло30..70 mm шаг 5 ммУстановить высоту среза по всей карте
<serial>.controls.fullMapMowing.includeEdgeTrimmingлогическийtrue /falseВключите обрезку краев в процесс кошения по всей карте.
<serial>.controls.fullMapMowing.customMowingDirectionчисло0..180 degЗадайте пользовательское направление скашивания на всей карте
<serial>.controls.fullMapMowing.customMowingDirectionEnabledлогическийtrue /falseВключить или отключить возможность настройки направления скашивания на всей карте
<serial>.controls.zoneMowing.mowHeightчисло30..70 mm шаг 5 ммУстановите высоту скашивания в зоне скашивания.
<serial>.controls.zoneMowing.mowCountчисло1..3Заданные проходы для скашивания в заданной зоне
<serial>.controls.zoneMowing.customMowingDirectionчисло0..180 degУстановить направление скашивания в зоне
<serial>.controls.zoneMowing.customMowingDirectionEnabledлогическийtrue /falseВключить или отключить направление скашивания в зоне
<serial>.controls.zoneMowing.obstacleAvoidanceEnabledлогическийtrue /falseВключить или отключить предотвращение столкновений в зоне
<serial>.controls.zoneMowing.obstacleAvoidanceLevelчисло0..2Установить уровень обхода препятствий в зоне
<serial>.controls.voiceVolumeчисло0..100 %Установить громкость голоса
<serial>.controls.rain.perceptionEnabledлогическийtrue /falseВключить или отключить отображение дождя
<serial>.controls.rain.continueTimeHoursчисло0..8 hПродолжительность дождя в часах
<serial>.controls.nearChargerMowing.enabledлогическийtrue /falseВключить или отключить кошение травы рядом с зарядной станцией.
<serial>.controls.nearChargerMowing.mowHeightчисло30..70 mm шаг 5 ммУстановите высоту скашивания для кошения рядом с накопительной площадкой.
<serial>.controls.nearChargerMowing.mowCountчисло1..3Расположите косильные полосы рядом с зарядной площадкой.
<serial>.controls.nearChargerMowing.obstacleAvoidanceEnabledлогическийtrue/falseВключить или отключить функцию предотвращения столкновений с препятствиями вблизи зарядной станции.
<serial>.controls.nearChargerMowing.obstacleAvoidanceLevelчисло0..2Установите уровень обхода препятствий рядом с зарядной станцией.

Команды

Состояния команд доступны для записи. Состояния кнопок сбрасываются.false После выполнения команды зоны ее состояние сбрасывается до пустой строки. Кнопки сброса расходуемых ресурсов отображаются в разделеconsumable .

СостояниеТипОписание
<serial>.commands.device.findлогическийНайдите робота
<serial>.commands.device.refreshлогическийЗапросить все характеристики газонокосилки и обновить данные по штатам.
<serial>.commands.device.cancelRtkAntennaMovedлогическийОтменить предупреждение о перемещении RTK-антенны
<serial>.commands.docking.startReturnлогическийВернитесь к зарядной станции
<serial>.commands.docking.pauseReturnлогическийПауза, возврат к зарядной станции
<serial>.commands.maintenance.startGrassDumpлогическийНачало сброса травы
<serial>.commands.maintenance.startDiskMaintenanceлогическийЗапуск режима обслуживания диска
<serial>.commands.mowing.startFullMapлогическийНачать кошение по всей карте
<serial>.commands.mowing.startZoneнитьНачните косить одну или несколько зон вручную.
<serial>.commands.mowing.startAutoZoneнитьНачать покос одной или нескольких автоматических зон
<serial>.commands.mowing.startPointнитьНачните кошение с точкиx,y или {"x":123,"y":456}
<serial>.commands.mowing.startEdgeлогическийНачните косить по краям.
<serial>.commands.mowing.startNearChargerлогическийНачинайте косить рядом с зарядной площадкой.
<serial>.commands.mowing.pauseлогическийПриостановить кошение
<serial>.commands.mowing.resumeлогическийВозобновить покос травы
<serial>.commands.mowing.stopлогическийПрекратите все работы по уходу за газонокосилкой.
<serial>.commands.mowing.endлогическийЗавершение скашивания
<serial>.commands.mowing.stopPointлогическийОстановить покос в точке остановки

Наличиеcommands.maintenance.startDiskMaintenance ,commands.maintenance.startGrassDump ,commands.mowing.startEdge ,commands.mowing.startNearCharger , иcommands.mowing.startPoint Это может зависеть от модели газонокосилки, прошивки, текущего режима работы газонокосилки и данных карты/краев.

Зоны

СостояниеТипОписание
<serial>.zones.manual.listстрока JSONИзвестные ручные/пользовательские зоны
<serial>.zones.manual.activeIdsстрока JSONВ настоящее время активны идентификаторы зон, созданные вручную.
<serial>.zones.autoListстрока JSONИзвестные автоматические/региональные зоны

Исходные данные

СостояниеТипОписание
<serial>.raw.shadow.propertyстрока JSONИсходные свойства теневой полезной нагрузки
<serial>.raw.shadow.serviceстрока JSONНеобработанная теневая полезная нагрузка сервиса
<serial>.raw.shadow.event-codeстрока JSONКэшированная полезная нагрузка для преобразования кода события Anthbot, используемая для описания ошибок.
<serial>.raw.areaDefinitionстрока JSONПолезная нагрузка с определением исходной области

Зональная стрижка газонов

Адаптер обеспечивает доступ к ручным/настраиваемым зонам косилки в следующих местах:

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

В этом штате содержится JSON-массив с известными зонами. Используйте его.id или точноname Из этого списка начнём косить.

Запишите выделенный фрагмент в:

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

Допустимые значения:

  • одна зона по идентификатору:3
  • одна зона по названию:Front yard
  • несколько зон в виде идентификаторов или названий, разделенных запятыми:3,5,Back yard
  • несколько зон в виде JSON-массива:[3,5,"Back yard"]

После успешной записи адаптер отправляетcustom_area_mow_start с соответствующими идентификаторами зон, заданными вручную, и очищенными зонами.commands.mowing.startZone снова.

Автоматические зоны работают аналогичным образом:

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

Для автоматических зон адаптер преобразует выбранные идентификаторы или имена зон в координаты зоны и отправляет их.region_mow_start .

Поиск неисправностей

Адаптер не подключается

  • Проверьте имя пользователя, пароль и код города.
  • Убедитесь, что газонокосилка отображается в приложении Anthbot с той же учетной записью.
  • Повысьте уровень логирования адаптера доdebug и перезапустить экземпляр.
  • Проверятьanthbot-genie.<instance>.info.connection .

Объекты газонокосилки не создаются.

  • В учетной записи Anthbot должна быть как минимум одна подключенная газонокосилка.
  • Проверьте журнал адаптера на наличиеNo Anthbot devices found for this account .
  • Убедитесь, что хост ioBroker имеет доступ к интернету.

Команды не работают

  • Сначала проверьте, работает ли опрос состояния.
  • Убедитесь, что целевой штат соответствует правильному серийному номеру газонокосилки.
  • Для команд зон сравните записанное значение с идентификаторами и именами вzones.manual.list илиzones.autoList .
  • Адаптер автоматически обновляет временные учетные данные IoT один раз после завершения операции AWS IoT.403 Если после этой повторной попытки команды по-прежнему не выполняются, проверьте журнал адаптера на наличие ошибок, связанных с полезной нагрузкой или состоянием газонокосилки, характерных для данной модели.
  • Проверятьraw.shadow.service а также журнал адаптера для проверки ошибок команд.

Кредиты

Особая благодарность проектам сообщества Anthbot Genie, которые значительно упростили понимание облачных потоков и сопоставления команд Anthbot:

Особая благодарность @Riza-Aslan за исследования поддержки M5/M9 и работу по сопоставлению полезной нагрузки, которые легли в основу этого обновления адаптера.

Этот адаптер ioBroker — независимый проект, но он основан на исследованиях и идеях реализации общедоступных API, полученных в ходе работы сообщества.

Юридическое уведомление

Данный проект является неофициальным и не связан с компанией Anthbot, не поддерживается ею, не спонсируется ею и не одобрен ею.

Названия, товарные знаки и логотипы Anthbot и Genie принадлежат их соответствующим владельцам. Подробности см. в файле NOTICE.md .

Более старые записи в журнале изменений архивируются в файле CHANGELOG_OLD.md.

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.