homeassistant与传感器的应用,自动化创建

WARNING:

我就没想着截图,下面的说明里基本就没几张图片,但是我会尽量做到用文字描述清楚。请知悉。

2023-09-18更新 安装HAOS

https://www.home-assistant.io/installation/linux ←官方给的,直接做好的虚拟机镜像文件,按照说明安装即可。
更新:对,安好了,也成功出现homeassistant的命令行界面了。然后就是无穷无尽的8123端口等待中…去log查看当前状态,显示正在下载镜像…我去他的,google和百度这是个普遍情况,都说耐心的等十几个小时算了,初步怀疑和时区时钟有点关系,先不管了,挂一晚上再说。

Home Assistant简介

Home Assistant 是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。

Home Assistant 运行在 Python 3.5.3 及以上 环境下,一般来说,符合 Python 运行条件的系统皆可安装 Home Assistant(下称HA网关)。
用的HA版本

为什么用

我这里的需求是传感器和控制器,既能完成我需要的自动化控制,又能将这些数据按照我想要的方式传输到我的mqtt服务器中去做记录。(别问为什么不直接用nodered,没硬件,而且不会接入

这里因为是测试需要,就没有用闲置的硬件去搭建HA网关,直接购买了人家的成品。我需要使用sonoff传感器,绿米传感器和HA网关共同组建成一套自动化的控制,遥控器本来买的涂鸦的,结果接入发现了点问题,后来又申请购买了博联的RM4PRO遥控器。

开始进行配置

登录HA网关

因为我使用的是购买的硬件(不提供购买的信息,可以自行淘宝搜索,挺多的),所以直接省去了所有的环境搭建过程,只需要把HA网关通过网线接入路由器即可。通上网线后它会自动向路由器中申请它的域名与IP的对应,一般情况下只需要访问homeassistant.local:8123就可以登录其管理后台。(如果没法登录的话,就去路由器中查看一下设备的IP,然后IP:端口号登录吧)

进入后应该能看到提示创建账户的界面,基本全部保持默认选项即可。全部完成后我们会进入到主界面,就算完成了。
初步配置过的HA网关

传感器接入

要想在HA中接收传感器的数据,首要前提就是将传感器接入到HA中(默认配置下你可以认为就像上图中概览界面能够看到传感器,就为成功)。下面以我接入的两套为基准。

sonoff传感器接入

最开始我是想用sonoff网关进行集成接入的。因为最开始的时候饶了点弯子就没使用这个方案,当时使用的是zigbee2mqtt插件进行接入(真的不是因为懒,我觉得还挺好用的 )。那么接下来说一下zigbee2mqtt插件的设置。(下称z2m)

HA又没有zigbee协议的接收器,所以我们需要先为HA网关购买一个usb zigbee网关,将其连接至HA网关上。

安装zigbee2mqtt插件
  1. 打开HA网关主界面,左边列表中找到 配置 ,依次点击 加载项加载项商店 ,点击右上角的三个点,点击 仓库(Repo)
  2. 弹出对话框,将zigbee2mqtt的插件地址写入,添加。https://github.com/zigbee2mqtt/hassio-zigbee2mqtt(如果出现错误,就接着试.jpg)
  3. 添加成功后,将会在加载项商店中出现zigbee2mqtt的插件信息,点击 zigbee2mqtt 插件,安装。
  4. 安装成功后,自动进入到zigbee2mqtt的相关界面中,将自启动,守护,在侧边栏显示三个选项打开。
  5. 接下来需要对mqtt进行配置(下面以本地mqtt为例),回到homeassistant主界面,依次点击 配置加载项,找到Mosquitto broker,进去点击配置,在Logins选项卡中配置mqtt的账号密码,例如
- username: mqtt
  password: mqtt
  1. 保存后,回到信息选项卡中,也是将自启动,守护,在侧边栏显示三个选项打开。然后点击启动。至此本地mqtt已经配置完毕了。
  2. 接下来我们将mqtt添加到集成中,回到HA网关主界面,依次点击 配置设备与服务添加设备,出现的弹窗搜索“mqtt”。点击mqtt,输入服务器127.0.0.1,用户名密码都是刚才设置的mqtt,点击提交。
  3. 然后就可以正式开始配置zigbee2mqtt了。老样子,依次点击 配置加载项zigbee2mqtt, 配置选项卡
    mqtt 栏填写
    base_topic: zigbee2mqtt
    server: mqtt://x.x.x.x:1883
    user: mqtt
    password: mqtt
    
    serial栏填写
    port: /dev/ttyUSB0
    
    填写之后点击保存。然后回到信息界面,点击启动。
  4. 然后等一会吧。之后点击HA网关主界面中侧边栏的zigbee2mqtt,如果成功进入到界面中就完成了配置。右上方的国旗图标可以修改语言。
zigbee2mqtt插件接入sonoff传感器

再将z2m插件配置完毕后,就可以接入sonoff传感器了。

  1. 打开zigbee2mqtt选项卡,点击右上方的“允许添加新设备(所有)”
  2. 根据sonoff的各个传感器的说明书,去启动它的zigbee协议匹配(一般为长按reset后松开)。过一会应该就能看到z2m的界面中出现了传感器了。我们也可以点击这个设备右边的编辑按钮,更改它的名称方便我们辨认。
  3. 如果顺利的话,我们是可以在HA网关的概览中直接看到这个传感器相关的数据了。(这里有个坑,如果你使用的是别人公网上公开的mqtt服务器的话,很可能无法在概览中看到传感器,就等于没把传感器接入进来。猜测是因为公共服务期的topic太多了,检测出现了问题。)
  4. 如果你一定要使用公开的mqtt服务器,而且还没法自动识别,就只能手动的一个一个导入了。方法如下:
HA网关主界面侧边栏 File editor,找到`/config/configuration.yaml`文件,在其中写入规则,我下面以sonoff传感器的温湿度为例:
mqtt:
  sensor:
    - name: "温度"
      state_topic: "zigbee2mqtt/无线温度计1"
      unit_of_measurement: "°C"
      value_template: "{{ value_json.temperature }}"
    - name: "湿度"
      state_topic: "zigbee2mqtt/无线温度计1"
      unit_of_measurement: "%"
      value_template: "{{ value_json.humidity }}"
mqtt数据发送

传感器接入进来了,mqtt确实也接收到了sonoff传感器的json数据。但是我之后在添加绿米传感器的时候发现了问题,它看起来不太兼容z2m,测试下来发现经常数据缺失或者压根就没反应,并且已经确认传感器本身一直在正常工作。所以不是所有东西都适配z2m插件的。

绿米传感器接入

那好了,绿米传感器既然通过z2m接入会出现问题,那就只能选别的方式了。于是就只能试试绿米网关的集成了。这里用到了homekit的协议。

绿米传感器接入绿米网关

首先,得准备一台苹果手机或平板,之后我们需要用到它。(仅配置的时候使用,实际上运作不需要它)


我是用的是绿米的M2网关,按照绿米网关的说明把绿米传感器全部接入到网关中,并测试其可用性。

HA网关接入homekit

依次点击 配置设备与服务添加集成,出现的弹窗搜索“homekit”,选择homekit选项。之后大部分默认确定提交即可(建议在传感器选择里,把sensor和bianary_sensor选中一下)。添加成功集成后,在HA网关侧边栏的通知里我们应该能看到生成了一个二维码和代码,使用苹果设备,打开苹果家庭,添加配件,将HA网关一步一步添加到苹果家庭中。这个时候HA网关就有了homekit相关的信息配置了。

绿米网关和传感器接入homekit

如果网关和传感器你之前已经添加到homekit中了,请在苹果家庭中将其删除,或是在HA网关中彻底将传感器及网关的实例删除掉再添加,不然自动识别后会存在无法读取数据的问题。另外就是如果你的传感器或者网关是基于wifi的homekit设备,并且还没有添加过homekit,那也需要先添加一次再删除。

  1. 依次点击 配置设备与服务添加集成,出现的弹窗搜索“homekit”,选择“homekit控制器”选项。
  2. 弹窗选择对应的homekit设备,填写homekit pin,一般在要添加设备的标签上。

至此,如果一切顺利,你应该可以在HA网关的概览中看到绿米的传感器数据了。到这里,我拥有的所有传感器已经全部接入到了HA网关中。

博联遥控器配置

传感器数据有了,为了实现自动化控制,我们还需要一个控制端。我这里是为了控制电视的红外信号,以及窗户的射频信号而选用了博联的RM4PRO控制器。

博联遥控器了接入HA网关

这步很简单,还是添加集成那一套,搜索broadlink,正常添加即可。添加之后就能在概览中看到了。

红外或射频学习

我还没有学习怎么把博联app中的指令学习到HA中,下面仅说一下怎么手动配置。
学习指令
我们直接使用HA网关提供的工具进行学习。

  1. 点击HA网关侧边栏的 开发者选项, 进入服务选项卡。
  2. 服务: 搜索 “遥控:Learn Command”,并选中。(下面说的所有选项,如果使用,请在前面打对勾)
  3. 目标:+选择实体,里面选择上面我们添加的博联遥控器。
  4. Device:学习的设备名称,自定义。
  5. Command:学习的指令的名称,自定义。
  6. Command Type:遥控类型,ir为红外,rf为射频。
  7. Alternative:按钮存在两种状态需为true,如开关类按钮。
  8. Timeout:命令学习时间,用于防止接收错误射频而学习错误的指令,一般设置为5s。
  9. 上面的选项选择完毕之后,点击右下角调用服务,我们在通知里可以看到HA网关对于学习的提示,拿着遥控器按照流程学习就行了。
    10.学习之后我们可以去HA网关的文件中确认一下。 HA网关侧边栏Terminal,打开linux命令行,进入/config/.storage文件夹下,可以看到一个名称为“broadlink_remote_xxxxxxx_codes”的文件,里面存放的就是我们学习的指令码。

到这里就学完指令了。如果不放心可以使用服务:遥控:Send Command进行测试,方法差不多和学习一样,自己玩一下就会了。

自动化配置

至此,我们已经有了传感器和遥控器,并且他们都已经全部接入到了HA网关中。接下来有两种自动化实现的方式:

  1. HA提供的自动化功能
  2. node-red

还记得之前说的吗?所有的传感器我不仅需要自动化控制,还都需要接入到mqtt服务器中。但是绿米本身的传感器数据在绿米网关中正常,在z2m插件中有问题,所以才把绿米网关接入到了HA网关中。但是这么一来绿米传感器的数据就没法发送到mqtt中了。所以我最后还是去学习了node-red的使用方式,结果发现…这玩意是真特娘的好用啊

接下来转入nodered环节

node-red插件安装与配置

好巧啊,我买的这个HA网关已经帮我安好了,那我不客气了直接用。

nodered配置

我先说下,我还是这几天对着各种教程啃的,就只会点基本用法,各位大佬轻喷啊

nodered节点介绍
events:state  →用作传感器数据触发。因为接入HA后传感器的entity中只有字符串形式的单个值,可以以它作为触发器使用。

current state  →用于中途判断某传感器的当前状态。状态为HA中获取的该实体的最后一次数据。

switch  →用于流程的选择,可根据不同的输入执行不同的流程。没有output properties属性,不会对传入的值进行更改。

function  →执行函数语句,本质为JavaScript语法。可在里面对msg数据进行修改并传输至下一个节点。

delay  →用于延时触发。

mqtt out  →用于发布mqtt消息至mqtt服务器

mqtt in  →用于接收mqtt服务器的消息,一般作为触发器使用。

call service  →用于触发HA中的服务,比如我们之前设置的遥控器就可以在这里进行设置自动化触发。

debug  →一般用于调试,不用自己写function来看数据。

inject  →用于作为触发节点,可设置循环型触发。

time range →用于时间段筛选,以时间段分割出一天。时间段内为in,时间段外为off

LS filter →用于替换time range节点的,通过node-red-contrib-light-scheduler安装。可以一周为单位进行计划控制。

wait until →用于阻塞整个流程进行,直到wait until条件成立时才继续执行(里面的timeout我没弄懂,我本来以为是超过timeout就强制返回一个值并进行流程,实际上我只要设置了timeout,wait until条件就不会被触发了)
nodered使用方法

其实看到就差不多明白了,首先创建节点,然后根据自己需要的流程,将节点之间使用线连接起来。将数据当做电流,可以认为这些线就是根导线。结点需要一个触发器作为开始,而没有规定具体结束方式。

到这里整个nodered怎么使用你已经学会了,快来试试吧!(不是)

比如我们需要一个检测人员活动开关灯的操作,只需要以人体感应器作为起始节点,中途判断人员的状态来选择当前是开灯还是关灯即可。之后的事情只是优化这套流程,比如设置延时防止一次误检测没人就关灯,或是将传感器数据发送至mqtt服务器用于数据统计等等。

后期缓慢更新的东西

工作日判断

借用论坛大佬的帖子:分享个【自动判断】Node Red节假日传感器
使用了免费开源的API,注意其中一个方法使用到了国内镜像仓库coding,现在需要登录才能调用API,故舍弃。
调用https://github.com/NateScarlet/holiday-cn API的方法(就是二楼更新的方法)我这里测试的那天正好是周末的上班调休,结果输出结果是“节假日”,因本人调试了半天没发现原因,所以还是用了二楼本楼的不稳定接口,使用方式就和二楼说的一样,放在/config/configuration.yaml里面。

rest:
  - scan_interval: 3600
    resource_template: http://tool.bitefu.net/jiari/?d={{ now().strftime('%Y%m%d') }}
    sensor:   
      - name: cn_workdays
        value_template: >-
          {% if value == '0' %}
            工作日
          {% elif value == '1' %}
            假日
          {% elif value == '2' %}
            节日
          {% else %}
            unknown
          {% endif %}

之后重启HA网关就能在概览中看到对应实例。Node-red中也可以使用“current state”节点调用到对应状态并设置流程即可。测试流程switch节点

参考

https://www.home-assistant.io/docs/mqtt/discovery/
https://www.home-assistant.io/docs/configuration/
https://www.zigbee2mqtt.io/supported-devices/#s=aqara
[基础教程] 【经验分享】HA官方推荐的博联遥控器学习射频和红外方法
https://www.home-assistant.io/integrations/mqtt_statestream/
[教程系列] 新手配置node-red遇到的几个难题,及完成第一个时间触发的…
Home Assistant中接入博联WiFi智能遥控
https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Home Assistant是一个开源的自动化平台,可以将各种智能设备和服务集成到一个平台中。MQTT是一种轻量级的消息传递协议,可以用于物联网应用中的传感器和控制器之间的通信。 在Home Assistant中,可以使用MQTT传感器来监测MQTT主题的值,并将其显示在UI中。以下是创建MQTT传感器的步骤: 1. 配置MQTT代理 在Home Assistant中配置MQTT代理,以便可以与传感器进行通信。可以使用集成或手动配置来完成此操作。 2. 创建MQTT传感器 在configuration.yaml文件中添加以下内容来创建MQTT传感器: sensor: - platform: mqtt name: "My MQTT Sensor" state_topic: "my/mqtt/topic" 这将创建一个名为"My MQTT Sensor"的传感器,并订阅"my/mqtt/topic"主题以获取其状态。 3. 配置传感器属性 可以使用以下选配置传感器的其他属性: - unit_of_measurement: 传感器测量的单位 - value_template: 用于计算传感器值的模板 - device_class: 传感器类型(例如,温度,湿度等) - icon: 传感器图标 例如,以下是一个具有所有属性的传感器配置示例: sensor: - platform: mqtt name: "Temperature Sensor" state_topic: "my/mqtt/topic" unit_of_measurement: "°C" value_template: "{{ value_json.temperature }}" device_class: temperature icon: "mdi:thermometer" 这将创建一个名为"Temperature Sensor"的传感器,其状态从"my/mqtt/topic"主题中获取,单位为"°C",值由"value_json.temperature"计算,类型为温度,并带有温度计的图标。 4. 在UI中显示传感器 可以在Home Assistant UI中添加新的卡片,以显示MQTT传感器的状态。要添加卡片,请转到UI编辑器,选择要添加的卡片类型,并选择要显示的传感器。 使用MQTT传感器可以轻松地将各种传感器和控制器集成到Home Assistant中,从而实现更智能的自动化和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值