Xiaomi Robot Vacuum en Domoticz

Responder
Avatar de Usuario
Campos
Site Admin
Mensajes: 31
Registrado: 03 May 2019, 20:27
Agradecido: 4 veces
Agradecimiento recibido: 2 veces

Xiaomi Robot Vacuum en Domoticz

Mensaje por Campos »

Imagen
He probado varias soluciones, en red, Linux, Backups, etc… 2 días perdidos y en el grupo de telegram me comentaron que instalara un MiHome inferior a la 5.0.29, un tal benito_kamela

Se necesita:
Ordenador con MiToolkit.1.6b.
Para esto, he utilizado Java 8.0.310.
Requisitos es no tener más versiones de java, solo la 8 que sea.
Móvil con MiHome 5.0.12.

Entonces, instalamos MiHome y configuramos el dispositivo.

Despues en el ordenador instalamos MiToolkit y ya nos dara el Token.

Antes del plugin de instalación, comprobar que python3. python3-dev, pip3, tener instalados los encabezados libffi y openssl y actualizar setuptools e instalar virtualenv:

Código: Seleccionar todo

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3 python3-dev python3-pip
sudo apt-get install libffi-dev libssl-dev
sudo pip3 install -U setuptools.
sudo pip3 install -U virtualenv.
Ahora instalamos el Plugin para Domoticz

Código: Seleccionar todo

cd domoticz/plugins
git clone https://github.com/mrin/domoticz-mirobot-plugin.git xiaomi-mirobot
cd xiaomi-mirobot
virtualenv -p python3 .env
source .env/bin/activate
# y tambien:
sudo pip3 install -r pip_req.txt
# o sudo pip3 install gevent msgpack-python python-miio==0.3.1 si da error
Editar miio_server.sh:

Código: Seleccionar todo

nano miio_server.sh
Escribir lo siguiente exceptuando "192.168.1.12 476e6b70343055483230644c53707a12" que hay que poner la ip y el token sacado antes

Código: Seleccionar todo

# 1. Check and update absolute path to miio_server.py
# 2. Update IP and TOKEN for robot
# 3. Optional. Change MIIO server host-port bindings if need it
# file miio_server.sh
DAEMON_USER=root
DAEMON=/home/pi/domoticz/plugins/xiaomi-mirobot/miio_server.py
DAEMON_ARGS="192.168.1.12 476e6b70343055483230644c53707a12"
DAEMON_ARGS="$DAEMON_ARGS --host 127.0.0.1 --port 22222"
2. Comprobamos la ruta a python3 “which python3”. Por defecto es “/usr/bin/python3”.
Si su ruta es diferente a la predeterminada, actualice “miio_server.py” escribiendo en la primera línea con:

Código: Seleccionar todo

#!/usr/bin/python3
Para ejecutar como servicio del sistema:

Código: Seleccionar todo

sudo chmod +x miio_server.py
sudo chmod +x miio_server.sh
# check your path here:
sudo ln -s /home/pi/domoticz/plugins/xiaomi-mirobot/miio_server.sh /etc/init.d/miio_server
# add to startup
sudo update-rc.d miio_server defaults
sudo systemctl daemon-reload
# if you want to remove from startup
sudo update-rc.d -f miio_server remove
Ejecutar script de prueba y servidor:

Código: Seleccionar todo

sudo service miio_server start
sudo chmod +x test.py
sudo ./test.py
# to stop miio server service
sudo service miio_server stop
También se puede ejecutar MIIO Server de forma manual y ver el resultado del registro:

Código: Seleccionar todo

sudo ./miio_server.py 192.168.1.12 476e6b70343055483230644c53707a12 --host 127.0.0.1 --port 22222
# then you can run test
sudo ./test.py
Si el servidor y la prueba están bien, es hora de reiniciar Domoticz:

Código: Seleccionar todo

sudo service domoticz.sh restart
Ahora comprobamos en harware que fuinciona:
Imagen

Instalacion de MiRobo

Esto es para hacer comprobaciones, y se instala de forma facil

Código: Seleccionar todo

sudo pip3 install python-mirobo
En caso de que obtenga un error similar al de ImportError: No module named 'packaging'la instalación, debe actualizar las herramientas pip y setup:

Código: Seleccionar todo

sudo pip3 install -U pip setuptools
sudo apt-get install python-construct
mirobo --ip 192.168.1.12 --token 476e6b70343055483230644c53707a12
Errores conocidos
Traceback (most recent call last):
File "./test.py", line 22, in <module>
client = socket.create_connection((args.host, args.port))
File "/usr/lib/python3.4/socket.py", line 509, in create_connection
raise err
File "/usr/lib/python3.4/socket.py", line 500, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused



Responder