Приобрёл себе помощника для поддержания чистоты в доме. Удалось добавить основные статусы и команды управления роботом Ecovacs Deebot R98 в Majordomo. Должно работать и на других моделях производства компании Ecovacs. Важно, у меня Majordomo крутится на RaspberryPi соответственно все настройки интеграции выполняются на ней.
Поддерживаются функции:
1. Получение статусов работы пылесоса (статус зарядки, уровень батареи, статус уборки) в виде свойств объекта Majordomo
2. Управление пылесосом (автоматическая уборка, остановить уборку, отправить пылесос на зарядную станцию) в виде значения свойства command
Транспорт данных осуществляется через MQTT при помощи сервиса на RaspberryPi
Базовый скрипт на питоне: https://github.com/wpietri/sucks
MQTT шлюз: https://github.com/guillebot/openhab-sucks
Добавил пошаговое описание, что нужно делать для повторения результата.
СпойлерПоказать
Первым шагом нужно выполнить обновления пакетов на RaspberryPi, так как установка sucks падала с ошибкой пока этого не сделал:
sudo apt-get update
sudo apt-get upgrade
теперь можно устанавливать базовый скрипт:
pip3 install sucks
предполагается что третий питон у вас уже установлен
Далее необходим создать учётку и подключить робота в мобильном приложении по инструкции, которая шла в комплекте. После регистрации учётной записи запоминаем имейл и пароль.
Возвращаемся в RaspberryPi и выполняем конфигурацию sucks:
sucks login
в консоле появится запрос на ввод имейла, а потом и пароля от учётной записи. После будет запрошен код страны и континента, например ua страна Украина, континент Европа - eu.
На этом этапе можем протестировать управление пылесосом из консоли:
sucks clean 1 - отправит пылесос на автоматическую уборку в течении 60 секунд
sucks stop - остановит уборку
На этом конфигурация базового скрипта закончена. Переходим к настройке MQTT шлюза.
Устанавливаем mqtt-клиента, через которого будем отправлять на MQTT-сервер данные и принимать команды:
pip3 install paho-mqtt python-etcd
После этого клонируем ветку https://github.com/guillebot/openhab-sucks
git clone https://github.com/guillebot/openhab-sucks
Получаем папку с проектом openhab-sucks, в которой нас интересует только скрипт из папке scripts/ecovacs-mqtt-gateway.py
вносим в него изменения на строке
mqttclient.connect("192.168.1.2", port=8884, keepalive=60,bind_address="")
заменяем на
mqttclient.username_pw_set("Vip", "")
mqttclient.connect("192.168.1.200", port=1883, keepalive=60,bind_address="")
где первая строка содержит логин и пароль к MQTT серверу
вторая строка содержит адрес и порт MQTT сервера
сохраняем и выходим.
теперь необходимо скопировать это скрипт например в папку /home/pi/ecovacs-mqtt/ecovacs-mqtt-gateway.py
и создать сервис для его запуска по адресу: /lib/systemd/system/ecovacs-mqtt-gateway.service
следующего содержания:
[Unit]
Description=Ecovacs MQTT Gateway
Requires=network.target
[Service]
Type=simple
Restart=on-failure
User=pi
Group=dialout
#WorkingDirectory=/home/pi/ecovacs-mqtt
ExecStart=/usr/bin/python3 /home/pi/ecovacs-mqtt/ecovacs-mqtt-gateway.py
[Install]
WantedBy=multi-user.target
далее запускаем сервис:
sudo systemctl daemon-reload
sudo systemctl enable ecovacs-mqtt-gateway.service
sudo systemctl start ecovacs-mqtt-gateway.service
Также можем убедится что он успешно запустился в статусе Active(running):
sudo systemctl status ecovacs-mqtt-gateway.service
Далее переходим в Majordomo и в модуле MQTT, который уже должен быть настроен на ваш MQTT сервер, подписываемся на ещё одну тему
ecovacs/#
Это позволит получать все данные о пылесосе и передавать в него команды.
sudo apt-get update
sudo apt-get upgrade
теперь можно устанавливать базовый скрипт:
pip3 install sucks
предполагается что третий питон у вас уже установлен
Далее необходим создать учётку и подключить робота в мобильном приложении по инструкции, которая шла в комплекте. После регистрации учётной записи запоминаем имейл и пароль.
Возвращаемся в RaspberryPi и выполняем конфигурацию sucks:
sucks login
в консоле появится запрос на ввод имейла, а потом и пароля от учётной записи. После будет запрошен код страны и континента, например ua страна Украина, континент Европа - eu.
На этом этапе можем протестировать управление пылесосом из консоли:
sucks clean 1 - отправит пылесос на автоматическую уборку в течении 60 секунд
sucks stop - остановит уборку
На этом конфигурация базового скрипта закончена. Переходим к настройке MQTT шлюза.
Устанавливаем mqtt-клиента, через которого будем отправлять на MQTT-сервер данные и принимать команды:
pip3 install paho-mqtt python-etcd
После этого клонируем ветку https://github.com/guillebot/openhab-sucks
git clone https://github.com/guillebot/openhab-sucks
Получаем папку с проектом openhab-sucks, в которой нас интересует только скрипт из папке scripts/ecovacs-mqtt-gateway.py
вносим в него изменения на строке
mqttclient.connect("192.168.1.2", port=8884, keepalive=60,bind_address="")
заменяем на
mqttclient.username_pw_set("Vip", "")
mqttclient.connect("192.168.1.200", port=1883, keepalive=60,bind_address="")
где первая строка содержит логин и пароль к MQTT серверу
вторая строка содержит адрес и порт MQTT сервера
сохраняем и выходим.
теперь необходимо скопировать это скрипт например в папку /home/pi/ecovacs-mqtt/ecovacs-mqtt-gateway.py
и создать сервис для его запуска по адресу: /lib/systemd/system/ecovacs-mqtt-gateway.service
следующего содержания:
[Unit]
Description=Ecovacs MQTT Gateway
Requires=network.target
[Service]
Type=simple
Restart=on-failure
User=pi
Group=dialout
#WorkingDirectory=/home/pi/ecovacs-mqtt
ExecStart=/usr/bin/python3 /home/pi/ecovacs-mqtt/ecovacs-mqtt-gateway.py
[Install]
WantedBy=multi-user.target
далее запускаем сервис:
sudo systemctl daemon-reload
sudo systemctl enable ecovacs-mqtt-gateway.service
sudo systemctl start ecovacs-mqtt-gateway.service
Также можем убедится что он успешно запустился в статусе Active(running):
sudo systemctl status ecovacs-mqtt-gateway.service
Далее переходим в Majordomo и в модуле MQTT, который уже должен быть настроен на ваш MQTT сервер, подписываемся на ещё одну тему
ecovacs/#
Это позволит получать все данные о пылесосе и передавать в него команды.