没有遥控器,但带有立方体的智能家居

问题



在维修新公寓的过程中,我回到了自己十年没有住过的公寓,并决定实行“智能家居”准则,以便熟练地装备新公寓。这间公寓的设备也不是最智能的,也不是最新的,因为它是10年前生产的。在公寓里,最重要的是我对大量的红外线遥控器感到不安,它们丢失了,使大脑选择了正确的遥控器。直到最近,人们才决定在遥控器上制作大量未使用的按钮。而且控制台既不美观也不卫生,有些是有角度的,有些边缘是圆形的,按钮变成黄色,居民生活的残余物堆积在控制台上,形成“亚按钮生物病”。结果,十几个遥控器散布在房子周围,上面有一堆不必要的按钮,为了简单操作,我不得不找两三个,它们的外观划伤了我的眼睛,我想要舒适的触觉和时尚的语音控制。



, . . 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 , . , ...


来自中国的麻烦并不仅仅存在,除了要摩擦的制动器已变得无法将智能立方体固定在声音控制装置上之外。


立方体由手势控制:

  • 摇动
  • 在飞机上移动
  • 绕水平轴旋转90/180度
  • 绕垂直轴旋转
  • 等等...



— , , , , , 90 — 10 , 45 — 5 . , — ZigBee, - , 3 .


Home Assistant, , , Xiaomi , ZigBee . Security token IR , Mi Home . xiaomi gateway , UART RX/TX Home Assistant.


Home Assistant本身需要在某个地方启动,Synology DS718 +在此任务下出现了,它被用作DLNA媒体中心和torrent下载。该设备能够运行Docker容器,带有Home Assistant的容器很容易被卷入其中。Home Assistant很酷,但是与Mi Home不同,您需要用Yaml笔书写房屋的所有智能。掌握了DSL理解的Home Assistant并从另一个不需要PL知识的编程工具吐痰之后,我设法制作了所需形状的拐杖。



自动化代码:
-ID:volume_up
  别名:调高音量
  触发:
  -event_data:
      action_type:旋转
      实体编号:binary_sensor.cube_0000000103ec74
    event_type:xiaomi_aqara.cube_action
    平台:事件
  健康)状况:
    条件:模板
    value_template:“ {{trigger.event.data.action_value> 0}}”
  行动:
  -service_template:“ script.bbk_vol_up _ {{(trigger.event.data.action_value / 3)| int}}”

该自动化功能捕获顺时针旋转事件并调用一个脚本,该脚本的名称替换了红外发射器应发送的声音增强信号的数量。您可能已经猜到了,旋转的每个角落都需要自己的脚本,调用了copy-paste来创建它们,它为我提供了20个这样的脚本:


bbk_vol_up_10:
  序列:
  -数据:
      命令:
      -bbk_vol_up
      delay_secs:0.04
      num_repeats:10
    实体编号:remote.xiaomi_miio_192_168_2_62
    服务:remote.send_command

从扬声器面板截获信号的发射器配置如下所示:
远程:
  -平台:xiaomi_miio
    主机:192.168.2.62
    令牌:392cbed325e862ffff983c4575b7a6f2
    命令:
      bbk_power:
        命令:原始:nE5m0wlk0msxmEsmszmEsm0wAHKaABkAoQAcAL1MZtOQEFmM3ARMCHwCymM2m4ENgXEAioHlgy + AwoL3gvYAh4L0gGGEBYLCAL0BR4CHhU4A + wQ8TC
      bbk_vol_up:
        命令:raw:nMwmUwlk0mk1mEsms3ADKbABlM5hLJtMAD2ALKazkAdgAymM3AYMBApjNgKTmgGLABuBD4IaAEKA1YJrgyuBDwJvgZeEx4C / geHMZsA4YCDJxoAxgxj
      bbk_vol_down:
        命令:原始:nE5m0wlk0msxmEsmszmEsm0wAHKaABkAoQAcAL1MZtOQEFmM3ARMCHwIfAdQBFZuAQYFfAfuBCoHngveEx4C / gL + Cj4R2ANfLJqAYQUChU3MAA



万岁!声音控制立方体绕垂直轴的旋转,并且通过将立方体绕水平轴旋转90度来打开电视和扬声器。

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'

然后将红外发射器与传感器连接到开关,如下所示:
开关:
  -平台:模板
    开关:
      toshiba_tv:
        value_template:“ {{is_state('binary_sensor.toshiba_tv','on')}}”
        打开:
          服务:script.toshiba_power
        关掉:
          服务:script.toshiba_power

这样的开关开始显示在Google Home中,并通过语音进行控制。

PS用智能家居进行锻炼很成功,去买了新设备!
PPS ZigBee集线器现在由于某种原因照亮了走廊...

它是




已经成为



All Articles