Home Assistant

打造可识别静态人体的人体传感器——使用效果


以下方法经本人验证通过,环境如下:

群晖 DS918+ DSM 6.2.4

mosquitto version 2.0.11

Home Assistant 0.91.4


前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

在之前的文章中,我描述了自己是如何构思设计,选择硬件并编码实现的,这篇文件简要介绍下实际是如何使用的

先上效果

第一步:连接本地网络和MQTT服务

首先,最终的人体传感器如下图所示,是一个小方盒子,尺寸是45mm * 47mm * 36mm 。盒子的正面(传感器一方)有状态指示灯的位置,我做了个小小的LOGO。一边的侧面是电源接口及重置按钮。

人体存在传感器外壳设计

打造可识别静态人体的人体传感器——硬件部分

前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

第一步: 硬件准备

在上一篇文章打造可识别静态人体的人体传感器——方案设计中,对所需硬件进行了分析,最终结合软件需求,选择了如下硬件模块:

  • 主传感器使用一块存在感应的微波雷达模块
  • MCU选择了满足需求下尺寸较小的ESP-01S
  • 供电模块使用 MICRO USB母座 转DIP2.54mm直插模块
  • 重置按钮选用一个6*6*5mm的微动开关

先来个合影:

打造可识别静态人体的人体传感器——方案设计

前言:大部分人入门智能家居之处,最早接触的就是人体传感器,实现简单的如人来开灯,人走关灯的需求。我也不例外,家里各个房间布满了小米或绿米的人体传感器。

但市面上这类传感器因工作原理的原因,实际根本无法识别静态的人体。所以这类传感器只能叫人体移动传感器,算不上是真正意义上的人体存在传感器,导致在很多场景下具有天然的缺陷。

举例说明:人坐在书房看书,保持一段时间禁止后,就会被识别为无人状态,然后灯就关了!同理厕所蹲的时候也会有这种尴尬,人工智能变智障。

网上各种解决方案也有,但都治标不治本,不是我想要的完美方案。因此,我决定自己创造一个!

一: 人体存在感应技术选型

要做这个存在传感器,最最核心的,自然就是如何判断人体存在(含静止状态),经过研究后,决定选择毫米波雷达传感技术的芯片

二:通讯协议的选择

获取到人体存在的信息后,如何通知家庭的智能中枢,以实现和其他设备的联动呢,蓝牙?还是Zigbee?显然都不如物联网通用的MQTT协议更优,配合WIFI,无论是Homeassistant、Node-red还是其他软件,都可轻松实现接入。

三:供电方案

考虑到芯片耗电量,采用电池供电会导致待机不足。加上传感器一般都是固定位置,没有太强的移动需求,因此最后决定使用电子设备通用的直流5V供电,接口采用比较常见的MICRO USB。这样随便一个常规的充电头加一根充电线即可给设备供电。

在Home Assistant控制空调


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

绿米Aqara 空调伴侣(升级版)固件版本:1.4.1_159.0149

MuMu安卓模拟器MAC版:V1.9.3

米家APP安卓版:V5.4.54


前言:在上一篇 将绿米aqara-空调伴侣升级版网关添加到home-assistant 文章中,我们实现了将空调伴侣的网关添加到了Home Assistant,通过空调伴侣添加的设备可自动出现在Home Assistant中,但并没有实现使用Home Assisitant 控制空调伴侣连接的空调,本文就来实现它。

第一步:下载米家APP安卓版的V5.4.54版本

链接: https://pan.baidu.com/s/1hBYYFu87LClr70gNap9VGw 提取码: c597

第二步:获取米家万能遥控器的Token,方法如下:

将绿米Aqara 空调伴侣(升级版)网关添加到Home Assistant


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

绿米Aqara 空调伴侣(升级版)固件版本:1.4.1_159.0149

MuMu安卓模拟器MAC版:V1.9.3

米家APP安卓版:V5.4.54


第一步:下载米家APP安卓版的V5.4.54版本

链接: https://pan.baidu.com/s/1hBYYFu87LClr70gNap9VGw 提取码: c597

第二步:获取米家万能遥控器的key,方法如下:

将小度音箱添加到Home Assistant并使用百度TTS实现播音


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

小度智能音箱


前言:在一部分情景中,我的智能家居系统中需要一个语音通知功能。例如大门长期未关闭时候,系统能通过声音提醒我关闭大门。正好手上有一个小度智能音箱,它支持dlna,因此就使用它来作为整个家居系统中的”嘴巴”了。要实现此功能,还需要tts的支持,国内嘛,谷歌是用不了了,就用百度吧。

第一步:申请百度TTS服务

访问百度云网站 https://cloud.baidu.com (注册)登陆后,在产品服务中搜索语音,打开语音技术页面

Node-Red 利用米家智能插座实现充满电自动关闭电源


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

Node-RED V0.20.5

node-red-contrib-home-assistant-websocket 0.13.1

米家智能插座(Zigbee版),已接入Home Assistant

小度蓝牙音箱,已接入 Home Assistant

node-red-contrib-light-scheduler 0.0.15


前言:我经常在给相机充电的时候会搞忘记,往往会好几天才想起来去拔插头,正好有一个闲置的米家智能插座(Zigbee版),因此打算使用Node-Red来实现给设备充满电后自动关闭电源,并通过蓝牙音箱给出提示。

第一步:拖入节点

按下图所示,拖入poll state , swtch , delay,current state , call service,LS Filter, 及另一个 call service 节点,并依次将他们连接起来

Floorplan 中实现控制和显示的分离


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

Floorplan github2018-06-01版本

Inkscape 0.92.4 win64版本


前言: 在文章如何将Floorplan添加到Home Assistant页签如何替换Floorplan为自己的户型图 以及 将设备接入到Floorplan完成控制 三篇连续的文章中一步步的将一个阳台灯接入到Floorplan实现了控制。

某天我又觉得这样还不够完美(装逼),我想实现的是图形中有一个模拟的灯作为控制,而之前实现的部分透明效果作为背景展示,即同一个设备(阳台灯)对应了Floorplan上的两个组件。经过一番查阅,最后采用方法如下:

第一步: 配置 Home Assistant 的 configuration.yaml ,在Home Assistant中新增一个二元传感器,作为阳台灯的背景 。参考如下示例:

binary_sensor:
  - platform: template
    sensors:
      balcony_lights_b:
        device_class: light
        value_template: "{{is_state('light.balcony_lights', 'on')}}"
  • balcony_lights_b:给新增的传感器一个Entity id,这里我取为balcony_lights_b
  • value_template: 配置在什么时候本传感器状态显示为on,显然这个传感器是和阳台灯状态需要同步,因此设置为:{{is_state(‘light.balcony_lights’, ‘on’)}},即 light.balcony_lights (阳台灯的Entity id) 状态为on时,本传感器也为on,其余情况下本传感器状态为off

第二步: 编辑 floorplan.yaml,它与 configuration.yaml 位于同一目录。增加一组配置,用于灯光的背景显示,参考如下示例:

将小米米家花花草草监测仪添加到Home Assistant


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

花花草草监测仪

USB蓝牙4.0适配器

DS918+,DSM 6.2.2-24922


前言:我的Home Assistant 安装在群晖918+的Docker下,918+无自带蓝牙,而小米米家花花草草监测仪采用的是BT4.0 BLE蓝牙通信,因此自购了一个usb蓝牙4.0的适配器插在918+的usb接口上

第一步:获取花花草草监测仪的蓝牙MAC地址

以管理员身份打开群晖的控制面板,在”无线”里打开”蓝牙”页签 ,若适配器正常,系统则会扫描周边的蓝牙设备

将花花草草监测仪靠近蓝牙适配器,扫描到后,会显示设备名称为Flower care,同时显示了蓝牙MAC地址,如下图所示。将地址记录下来

Node-Red 设置变量控制设备开启次数


以下方法经本人验证通过,环境如下:

Home Assistant 0.91.4

Node-RED V0.20.5

node-red-contrib-home-assistant-websocket 0.13.1

相关设备已接入Home Assistant


前言:我有一株漂亮的茉莉花,某一次出远门,为了照顾它,我用闲置的鱼缸、一个小水泵和一截水管组成了一个简易的灌溉系统。同时,将水泵连接在一个智能插座上,这样我就可以使用手机远程的控制它完成浇水。但为了浇透,我需要远程打开水泵运行1分钟,然后关闭约5分钟,待水向下完全渗透后再次打开水泵运行1分钟。是的,这很麻烦,所以有这这篇文章

第一步:实现自动关闭功能

首先我们要实现的是当发现智能插座(水泵)打开后,等待1分钟,自动关闭它

按下图所示,拖入events: state , delay及 call service节点,并依次将他们连接起来