iRobot Roomba

Подключите iRobot робот-пылесос Roomba для ioBroker

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

Подключите свой робот-пылесос iRobot Roomba к ioBroker.

Основано на библиотеке dorita980 https://github.com/karlvr/dorita980#readme

Трэвис CI

Оглавление

  1. Список изменений
  2. Лицензия

Функции

Данный адаптер обладает следующими функциями:

  • Отправка команд (start ,stop ,resume ,pause ,dock ) к вашему роботу-пылесосу Roomba
  • Получение информации о состоянии устройства , например, заряд батареи, подключение к док-станции, заполненность/вставка в корзину (полный список см. в разделе «Каналы и состояния »).
  • Получите конфигурацию устройства , например, настройки параметров, сети или расписания (полный список см. в разделе «Каналы и состояния »).
  • Получите статистику устройства , такую как общее количество миссий, время работы на док-станции и т. д. (полный список см. в разделе «Каналы и состояния »).
  • Получите информацию о текущей задаче (во время уборки вашего робота-пылесоса Roomba), такую как время начала и окончания, общее время работы, площадь уборки и т. д. (только для поддерживаемых моделей Roomba; см. раздел «Поддерживаемые модели Roomba / Версии прошивки» ).
  • Построение карты на основе полученных данных миссии (только для поддерживаемых моделей Roomba).
  • Веб-интерфейс , отображающий статус и карту текущих, а также предыдущих/архивных миссий:Интерфейс Roomba

Установка

Для отображения карт маршрутов робота-пылесоса Roomba компоненту ioBroker.roomba требуется canvas . ioBroker попытается установить эту зависимость при установке ioBroker.roomba.

Однако, скорее всего, вам потребуется установить зависимые пакеты для canvas (и сам canvas) с помощью следующей команды:

Linux

sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

Кроме того, выполните следующую команду в каталоге ioBroker.roomba (/opt/iobroker/node_modules/iobroker.roomba ):

sudo npm install canvas --unsafe-perm=true

Windows

  1. Убедитесь, что у вас естьnode-gyp установлен через

    npm install -g node-gyp
    
  2. Убедитесь, что у вас установлены необходимые компоненты сборки (build essentials) через...

    npm install --global --production windows-build-tools
    
  3. Скачайте GTK 2 (для Win32 или Win64 ) и распакуйте его (например, в архив).C:\path\to\GTK2 )

  4. Бегать

    node-gyp rebuild --GTK_Root=C:\path\to\GTK2
    
  5. Установите Canvas из папки iobroker.roomba.

    cd C:\path\to\iobroker\node_modules\iobroker.roomba
    npm install canvas
    

Подробности см. на странице https://github.com/Automattic/node-canvas/wiki/Installation:-Windows .

Инструкции по установке

Автоматическая настройка

Для автоматической настройки ioBroker.roomba следуйте инструкциям в административной панели ioBroker.roomba.

ВНИМАНИЕ : Учетные данные для аутентификации не совпадают с теми, которые вы используете в мобильном приложении!

  1. Убедитесь, что адаптер ioBroker.roomba запущен.
  2. Убедитесь, что ваш робот находится на домашней базе и включен (горит зеленый индикатор).
  3. Затем нажмите и удерживайте кнопку HOME на вашем роботе, пока он не воспроизведет серию звуковых сигналов (примерно 2 секунды).
  4. Отпустите кнопку, и ваш робот начнет мигать индикатором Wi-Fi.
  5. Затем вернитесь сюда и нажмите кнопку, чтобы получить IP-адрес и учетные данные.

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

Ручная настройка

Для ручной настройки см. https://github.com/karlvr/dorita980#how-to-get-your-usernameblid-and-password .

Поддерживаемые модели Roomba / Версии прошивки

Поддерживаемые версии прошивки

Версия программного обеспеченияИнформация о прошивкеПоддерживается
v1.4Примечания к выпуску#c5f015 поддерживается (#c5f015 (включая карту)
v2.4.6-xПримечания к выпуску#c5f015 поддерживается (#c5f015 (включая карту)
v3.2.xxПримечания к выпуску#c5f015 поддерживается (#f03c15 (Карта отсутствует)

Поддерживаемые модели роботов-пылесосов Roomba

СерияМодели (неполные)Версия программного обеспеченияИнформация о прошивкеПоддерживается
Робот-пылесос Roomba® 6xx605, 606, 612, 616, 671, 676, 680, 696v3.2.40Примечания к выпуску(вероятно)
Робот-пылесос Roomba® 6xx675, 690v3.2.40Примечания к выпуску#c5f015 поддерживается (#f03c15 (Карта отсутствует)
Робот-пылесос Roomba® 6xx692v3.5.62Примечания к выпуску#c5f015 поддерживается (#f03c15 (Карта отсутствует)
Робот-пылесос Roomba® 7xx774, 785,-#f03c15 Данная модель не поддерживает подключение к Wi-Fi, поэтому не имеет соответствующей поддержки.
Робот-пылесос Roomba® 8xx880, 886, 891, 896-Примечания к выпуску(вероятно)
Робот-пылесос Roomba® 8xx895v3.2.10 / 40 / 69Примечания к выпуску#c5f015 поддерживается (#f03c15 (Карта отсутствует)
Робот-пылесос Roomba® 9xx965, 981-Примечания к выпуску(вероятно)
Робот-пылесос Roomba® 9xx960 , 966 , 980v2.4.6-3Примечания к выпуску#c5f015 Поддерживается (включая карту)
Roomba® ii7 (7150) , i7+ (7550)v1.4Примечания к выпуску#c5f015 Поддерживается (включая карту)
Робот-пылесос Roomba® e5е5v3.4.42Примечания к выпуску#c5f015 поддерживается (#f03c15 (Карта отсутствует)
Робот-пылесос Roomba®S9+v3.2.4Примечания к выпуску#c5f015 Поддерживается (включая карту)

Пожалуйста, помогите нам определить поддерживаемые устройства и сообщите мне через форму заявки , поддерживается ли ваша модель Roomba!

Каналы и штаты

После успешной настройки будут созданы следующие каналы и состояния:

КаналПапкаСостояниеОписание
уборка--Команды и информация, касающиеся процесса уборки.
уборкапоследний-Последние команды, отправленные роботу
уборкапоследнийкомандаПоследняя команда, отправленная роботу
уборкапоследнийметка времениОтметка времени отправки последней команды
уборкапоследнийдата и времяДата и время отправки последней команды
уборкапоследнийинициаторИнициатор последнего приказа
уборкапоследнийциклЦикл
уборкапоследнийфазаФаза
уборкапоследнийошибкаУказывает на ошибку во время последней миссии.
уборкарасписание-Информация о расписании
уборкарасписаниециклЦикл расписания (с воскресенья по субботу)
уборкарасписаниечасыВремя начала цикла (с воскресенья по субботу)
уборкарасписаниеминутМинуты до начала цикла (с воскресенья по субботу)
уборка-докОтправьте робота на док-станцию.
уборка-паузаПриостановить текущий процесс очистки
уборка-резюмеВозобновить текущий процесс уборки
уборка-начинатьНачать процесс очистки
уборка-останавливатьсяОстановить текущий процесс очистки
устройство--Информация об устройстве
устройствосеть-Информация о сети
устройствосетьdhcpУкажите, активирован ли DHCP.
устройствосетьмаршрутизаторMAC-адрес маршрутизатора
устройствосетьIPIP-адрес
устройствосетьподсетьАдрес подсети
устройствосетьшлюзАдрес шлюза
устройствосетьdns1Основной DNS-адрес
устройствосетьdns2Вторичный DNS-адрес
устройствопредпочтения-Настройте параметры
устройствопредпочтенияbinPauseНЕИЗВЕСТНЫЙ
устройствопредпочтенияcarpetBoostAutoАвтоматический режим: Робот-пылесос Roomba автоматически увеличит мощность всасывания для глубокой очистки ковров.
устройствопредпочтенияcarpetBoostHighРежим повышенной производительности: Roomba всегда увеличивает мощность всасывания для максимальной эффективности уборки на всех типах напольных покрытий.
устройствопредпочтенияэкоЗарядНЕИЗВЕСТНЫЙ
устройствопредпочтенияnoAutoPassesОдин проход: Roomba обработает все участки за один проход.
устройствопредпочтениянетPPНЕИЗВЕСТНЫЙ
устройствопредпочтениятолько открытыйНЕИЗВЕСТНЫЙ
устройствопредпочтенияschedHoldНЕИЗВЕСТНЫЙ
устройствопредпочтениядва проходаРобот-пылесос Roomba повторно обработает все участки. Это может быть полезно в домах с домашними животными или для периодической генеральной уборки.
устройствоверсии-Информация о версии
устройствоверсииhardwareRevОбновление оборудования
устройствоверсииТип батареиТип батареи
устройствоверсииsoundVerНЕИЗВЕСТНЫЙ
устройствоверсииuiSwVerНЕИЗВЕСТНЫЙ
устройствоверсииnavSwVerНЕИЗВЕСТНЫЙ
устройствоверсииwifiSwVerНЕИЗВЕСТНЫЙ
устройствоверсиимобильностьВерНЕИЗВЕСТНЫЙ
устройствоверсиизагрузчикВерВерсия загрузчика
устройствоверсииumiVerНЕИЗВЕСТНЫЙ
устройствоверсииsoftwareVerВерсия программного обеспечения
устройство-_rawDataИсходные данные о предпочтениях в формате JSON.
устройство-макMAC-адрес робота
устройство-имяНазвание робота
устройство-типТип робота
штаты--Информация о состоянии
штаты-_подключеноСостояние соединения
штаты-батареяУровень заряда батареи робота
штаты-binFullУкажите, заполнен ли контейнер.
штаты-binInsertedУкажите, вставлен ли контейнер.
штаты-пристыкованныйУкажите, подключен ли робот к док-станции.
штаты-сигналУровень сигнала
штаты-статусТекущее состояние робота
статистика--Статистическая информация
статистикамиссии-Статистика миссии
статистикамиссиинеуспешныйКоличество неудачных работ по уборке
статистикамиссиипреуспеватьКоличество успешно выполненных работ по уборке
статистикамиссииобщийКоличество заказов на уборку
статистикавремя-Статистика времени
статистикавремяavgMinНЕИЗВЕСТНЫЙ
статистикавремяhOnDockНЕИЗВЕСТНЫЙ
статистикавремяnAvailНЕИЗВЕСТНЫЙ
статистикавремяestCapНЕИЗВЕСТНЫЙ
статистикавремяnLithChrgНЕИЗВЕСТНЫЙ
статистикавремяnNimhChrgНЕИЗВЕСТНЫЙ
статистикавремяnDocksНЕИЗВЕСТНЫЙ
--refreshedDateTimeДата и время последнего обновления
--обновленнаяВременная меткаОтметка времени последнего обновления

Описание предпочтений (неполное)

При вызове будет получена следующая полезная нагрузка.getPreferences() (см. https://github.com/karlvr/dorita980#getpreferences ):

ОбъектИндексТипОписаниеioBroker State
netinfo-объектИнформация о сетевом подключении робота-пылесоса Roomba.-
netinfo.dhcpлогическийУкажите, активирован ли DHCP.device.network.dhcp
netinfo.addrIPIP-адресустройство.сеть.ip
netinfo.маскаIPАдрес подсетиустройство.сеть.подсеть
netinfo.gwIPАдрес шлюзаустройство.сеть.шлюз
netinfo.dns1IPОсновной DNS-адресdevice.network.dns1
netinfo.dns2IPВторичный DNS-адресdevice.network.dns2
netinfo.bssidмакMAC-адрес маршрутизатораустройство.сеть.маршрутизатор
netinfo.секцелое числоНеизвестный(не нанесено на карту)
wifistat-объектНеизвестный-
wifistat.Wi-Fiцелое числоНеизвестный(не нанесено на карту)
wifistat.uapлогическийНеизвестный(не нанесено на карту)
wifistat.облакоцелое числоНеизвестный(не нанесено на карту)
wlcfg-объектНеизвестный-
wlcfg.секцелое числоНеизвестный(не нанесено на карту)
wlcfg.ssidнитьНеизвестный(не нанесено на карту)
мак-макMAC-адрес робота-пылесоса Roomba-
страна-нитьНеизвестный-
cloudEnv-нитьНеизвестный-
svcEndpoints.svcDeplIdнитьНеизвестный-
mapUploadAllowed-логическийНеизвестный-
смещение местного времени-целое числоНеизвестный-
...-......-

Пожалуйста, помогите нам с описанием настроек. Если вы знаете значение настроек, помеченных как «неизвестно» в таблице, сообщите мне об этом через форму запроса !

Интеграция системы «Умный дом» / Alexa с использованием ioBroker.javascript

Отправьте карту через Telegram, когда миссия будет завершена.

Для этого необходимо установить адаптер ioBroker ioBroker.telegram ( https://github.com/ioBroker/ioBroker.telegram ).

Создайте скрипт в папке "common" файла ioBroker.javascript и добавьте к нему следующий обработчик событий:

var _fs = require('fs');

/*
 * MISSION END: Send map
 * 
 */
var message = "%device.name% finished at %missions.current.endedDateTime% cleaning %missions.current.sqm% sqm in %missions.current.runtime% seconds (%missions.current.error% errors).";
var ns = 'roomba.0';
var imagePath = 'tmp/';

on({id: ns + '.missions.current.ended', change: 'any'}, function(obj)
{
    if (!obj.state || !obj.state.val) return;
    
    // replace variables with state values
    var pos, variable, state, value;
    while (message.indexOf('%') > -1)
    {
        pos = message.indexOf('%');
        variable = message.substring(pos, message.indexOf('%', pos+1)+1);
        state = getState(ns + '.' + variable.replace(/%/g, ''));
        
        if (state !== null && state.val !== null)
            value = state.val
        else
        {
            log('State ' + variable.replace(/%/g, '') + ' not found!', 'warn');
            value =  '';
        }

        if (typeof value === "boolean") value = value === true ? 'with' : 'no';
        message = message.replace(RegExp(variable, 'gi'), value);
    }
    
    // console
    log(message);
    
    // get image
    var img = getState(ns + '.missions.current.mapImage').val;

    if (img !== null && img.indexOf('data:image/png;base64,') > -1)
    {
        _fs.writeFile(imagePath + 'image.png', img.replace(/^data:image\/png;base64,/, ''), 'base64', function(err)
        {
            if (err !== null)
                log(err.message, 'warn');
            else
                sendTo('telegram', {text: imagePath + 'image.png', message: message});
        });
    }
});

04.05.2019 исправлена ошибка, препятствовавшая отправке карты.

Вы можете отредактировать переменную.message Вы можете использовать любые уведомления, которые хотите получать вместе с картой.%name-of-state% для получения значения состояния в дереве объектов ioBroker.roomba.

Кредиты

неофициальный API

Спасибо @koalazak за неофициальную библиотеку (SDK) для iRobot Roomba 980 на Node.js.

Иконки

Иконки созданы Иконница от www.flaticon.com лицензировано компанией CC 3.0 BY

Changelog

WORK IN PROGRESS

  • (copilot) Adapter requires node.js >= 22 now
  • (iobroker-bot) Adapter requires node.js >= 20 now.
  • (copilot) Adapter requires admin >= 7.7.22 now
  • (copilot) Adapter requires js-controller >= 6.0.11 now
  • (copilot) Adapter requires admin >= 7.6.17 now

1.3.0 (2024-04-26)

  • (mcm1957) Adapter requires node.js >= 18 and js-controller >= 5 now
  • (mcm1957) Dependencies have been updated

1.2.2 (2023-09-03)

  • (mcm1957) some dependencies have been upgraded
  • (TheRealArthurDent) Background color of the adapter settings page has been removed to make it useable in dark mode.

1.2.1 (2023-08-09)

  • (mcm1957) dorita980 dependency has been upgraded
  • (mcm1957) some other dependencies have been upgraded
  • (mcm1957) Adapter now requires node 16 or newer and js-controller 4.0.24 or newer

1.2.0 (2023-08-09)

  • (TheRealArthurDent) dorita980 has been updated (see PR #144)
  • (mcm1957) Release script has been updated
  • (mcm1957) Several issues reported by adapter checker have been fixed

1.1.4 (2021-07-19)

  • (Apollon77) Adjust some types to prevent js-controller 3.3 warnings
  • (thost96) fix hanging state loading in frontend
  • (thost96) fixed link in canvas warning

1.1.1 (2020-02-16)

  • (Zefau) moved development to Community Repository

1.1.0 (2020-02-06)

  • (Zefau) added support to change schedule (see #36)
  • (Zefau) fixed bug with state commands.last.dateTime having incorrect value NaN
  • (Zefau) fixed error message shown when robot is on a mission but map is not given

1.1.0 (2020-02-06)

  • (Zefau) acknowledged support for S9+ (see #34)

1.0.7 (2019-09-03)

  • (Zefau) fixed bugs occurring when Roomba is on a mission
  • (Zefau) added additional debug logging

1.0.6 (2019-08-19)

  • (Zefau) added loading screen to web interface

1.0.5 (2019-08-18)

  • (Zefau) fixed failing secure connection
  • (Zefau) fixed broken credential retrieval
  • (Zefau) fixed broken refresh

1.0.4 (2019-08-15)

  • (Zefau) fixed password retrieval
  • (Zefau) fixed German translations
  • (Zefau) added donations button
  • (Zefau) updated dorita980 dependency to v3.1.3
  • (Zefau) updated canvas dependency to v2.6.0

1.0.3 (2019-07-23)

  • (Zefau) fixed bug uncaught exception: Cannot read property 'x' of undefined

1.0.2 (2019-07-20)

  • (Zefau) reworked placing home icon (#23)
  • (Zefau) updated dependencies to fix security vulnerabilities in depending packages

1.0.1 (2019-05-15)

  • (Zefau) fixed display error in Chrome (#19)
  • (@Apollon77) updated testing for Node.js v12 (#18)
  • (Zefau) updated dependencies

1.0.0 (2019-05-04)

  • (zefau) No changes, only bump to stable release

0.5.0 (2019-04-21)

  • (zefau) Added command buttons to map page / web interface (#17)
  • (zefau) Removed button to end mission manually missions.current._endMission
  • (zefau) Run stop command in the background when dock command is received (#14)
  • (zefau) Added Web Adapter as dependency

0.4.5 (2019-03-20)

  • Zefau) Refactored retrieval of preferences and added debug mode

0.4.4 (2019-03-15)

  • (@Apollon77) Core Files/Testing Update and introduce adapter-core (#8)

0.4.3 (2019-02-10)

  • (zefau) Improved compatibility for series 600

0.4.2 (2019-02-09)

  • (zefau) Bug fixing

0.4.1 (2019-02-03)

  • (zefau) Support for Compact Mode
  • (zefau) Bug fixing

0.4.0 (2019-01-08)

  • (zefau) Support for e5 and 600 series (due to support by dorita980)

0.3.0 (2019-01-06)

  • (zefau) Image / Map of the current cleaning mission will be created
  • (zefau) Removed encryption of password

0.2.3 (2018-12-03)

  • (zefau) Fixed an issue encrypting the password when entered by user (no automated retrieval)

0.2.2 (2018-12-02)

  • (zefau) Password will now be stored encrypted

Note: If you are coming from an earlier version, you have to (1) empty your settings, (2) save, (3) restart the adapter and (4) enter / fetch credentials again (duo to the fact that password will be stored encrypted now)

0.2.1 (2018-11-25)

  • (zefau) Fixed / improved automatically retrieving of authentication credentials

0.2.0 (2018-11-18)

  • (zefau) improved admin interface to automatically retrieve authentication credentials

0.1.0 (2018-11-04)

  • (zefau) initial version

License

The MIT License (MIT)

Copyright (c) 2023-2026 iobroker-community-adapters iobroker-community-adapters@gmx.de
Copyright (c) 2018-2020 Zefau zefau@mailbox.org

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.