Problema

Durante la reparación de un nuevo departamento, regresé al departamento en el que no había vivido durante 10 años y decidí practicar la disciplina "Smart Home" para equipar un nuevo departamento de manera competente. El equipo en este apartamento tampoco es el más inteligente ni el más nuevo, ya que fue producido hace ~ 10 años. Sobre todo en el departamento me molestó la abundancia de controles remotos infrarrojos, se perdieron y cargaron al cerebro con la selección del correcto. Hasta hace poco, se decidió hacer una gran cantidad de botones no utilizados en los controles remotos. Y las consolas no son estéticas ni higiénicas, algunas son angulares, otras con bordes redondeados, los botones se vuelven amarillos y los restos de la vida de los habitantes se acumulan en ellos, lo que forma una "biocenosis de subbotones". Como resultado, una docena de controles remotos están esparcidos por la casa con un montón de botones innecesarios, para operaciones simples tuve que buscar dos o tres piezas, su mirada rasca mis ojos,Quería un control de voz táctil y de moda cómodo.
, . . xiaomi Xiaomi universal IR remotecontroller Xiaomi Mi Smart Home Magic Cube, Xiaomi smart home gateway 2

, , IR , — ZigBee . , , .
, , xiaomi, , Mi Home “”. , , . , . , , ( ) Mi Home 10 5 , 30 10 , , , 1 , . , ...
El problema de China no viene solo, excepto que los frenos se han convertido en la incapacidad de atornillar un cubo inteligente al control de sonido.
El cubo está controlado por gestos:- Agitar
- Moverse en un avión
- Gire 90/180 grados alrededor del eje horizontal
- Rotar alrededor de un eje vertical
- Y etc...

— , , , , , 90 — 10 , 45 — 5 . , — ZigBee, - , 3 .
Home Assistant, , , Xiaomi , ZigBee . Security token IR , Mi Home . xiaomi gateway , UART RX/TX Home Assistant.
El Home Assistant en sí mismo debe iniciarse en algún lugar, Synology DS718 + se presentó bajo esta tarea, que se utilizó como centro de medios DLNA y descarga de torrents. Este dispositivo puede ejecutar contenedores Docker, y un contenedor con Home Assistant se enrolla fácilmente en él. Home Assistant es genial, pero a diferencia de Mi Home, debes escribir toda la elegancia de una casa con bolígrafos en yaml. Habiendo dominado el DSL entendí Home Assistant y escupí desde otra herramienta de programación que no requiere conocimiento del PL, pude preparar una muleta de la forma deseada.
Código de automatización:- id: volumen_up
alias: Subir volumen
desencadenar:
- event_data:
tipo_acción: rotar
entity_id: binary_sensor.cube_0000000103ec74
event_type: xiaomi_aqara.cube_action
plataforma: evento
condición:
condición: plantilla
value_template: "{{trigger.event.data.action_value> 0}}"
acción:
- plantilla_servicio: "script.bbk_vol_up _ {{(trigger.event.data.action_value / 3) | int}}"
Esta automatización capta el evento de rotación en el sentido de las agujas del reloj y llama a un script en cuyo nombre se sustituye el número de señales de aumento de sonido que debe enviar el emisor de infrarrojos. Como probablemente haya adivinado, cada esquina de la rotación requiere su propio script, se llamó copiar y pegar para crearlos, y me dio 20 scripts como estos:
bbk_vol_up_10:
secuencia:
- datos:
mando:
- bbk_vol_up
delay_secs: 0.04
num_repeats: 10
entity_id: remote.xiaomi_miio_192_168_2_62
servicio: remote.send_command
La configuración del emisor con señales interceptadas desde los altavoces del control remoto se ve así:remoto:
- plataforma: xiaomi_miio
host: 192.168.2.62
token: 392cbed325e862ffff983c4575b7a6f2
comandos:
bbk_power:
comando: raw: nE5m0wlk0msxmEsmszmEsm0wAHKaABkAoQAcAL1MZtOQEFmM3ARMCHwCymM2m4ENgXEAioHlgy + AwoL3gvYAh4L0gGGEBYLCAL0BR4CHhU4A + wQ8TC
bbk_vol_up:
comando: raw: nMwmUwlk0mk1mEsms3ADKbABlM5hLJtMAD2ALKazkAdgAymM3AYMBApjNgKTmgGLABuBD4IaAEKA1YJrgyuBDwJvgZeEx4C / geHMZsA4YCDjxoAxo
bbk_vol_down:
comando: raw: nE5m0wlk0msxmEsmszmEsm0wAHKaABkAoQAcAL1MZtOQEFmM3ARMCHwIfAdQBFZuAQYFfAfuBCoHngveEx4C / gL + Cj4R2ANfLJqAYQUChU3MAA
¡Hurra! El sonido controla la rotación del cubo alrededor del eje vertical, y el televisor y los altavoces se encienden girando el cubo 90 grados alrededor del eje horizontal.Home Assistant , , Google Assistant Home Assistant, . GA , . , . Ethernet , , IP , IP — , . custom_component Home Assistant:
import logging
from homeassistant.helpers.entity import Entity
from pythonping import ping
logger = logging.getLogger(__name__)
def setup_platform(hass, config, add_entities, discovery_info=None):
entities = []
for name, ip in config['hosts'].items():
entities.append(IPSensor(name, ip))
add_entities(entities)
class IPSensor(Entity):
def __init__(self, name, ip):
self._name = name
self._ip = ip
self._state = None
self._is_on = None
@property
def name(self):
return self._name
@property
def state(self):
return self._state
@property
def state_attributes(self):
return {'ip_address': self._ip}
@property
def device_class(self):
return 'connectivity'
@property
def is_on(self):
return self._is_on
def update(self):
result = ping(self._ip, count=1, timeout=0.1)
self._is_on = result.success()
self._state = 'on' if result.success() else ‘off'
Luego conecte el emisor de infrarrojos con el sensor al interruptor de esta manera:cambiar:
- plataforma: plantilla
interruptores:
toshiba_tv:
value_template: "{{is_state ('binary_sensor.toshiba_tv', 'on')}}"
encender:
servicio: script.toshiba_power
apagar:
servicio: script.toshiba_power
Y ese cambio comenzó a mostrarse en Google Home y a controlarse desde la voz.PD Ejercicio con una casa inteligente fue exitoso, fue a comprar nuevos dispositivos!PPS Un centro ZigBee ahora por alguna razón ilumina el pasillo ...Era

Se ha convertido
