本作品由安信可社区用户
WangChong制作
大家好,安信可又出活动了,抱着重在参与的态度给大家带来了我的作品智能台灯。
不知道大家是否还记得这个帖子里的台灯。
https://bbs.ai-thinker.com/forum ... ad&tid=44226&extra=
没错,它被我拆了。就剩个LED灯板了。然后我把它稍作改造,便成了今天的主角。用HA控制的台灯。由于本人并没有什么好的灵感,来DIY,所以本篇教程将会是抛砖引玉来仔细说明如何使用M61-32S接入HA,从而使大家DIY出好的作品。
在本篇教程你将会学到:
1- 如何连接WIFI
2- 如何连接MQTT
3- 如何配置HA的MQTT集成
4- 如何配置HA的configuration.yml 使其HA可以自动发现实体。
5- 如何将上述的实体开关添加到Dashboard从而实现控制开关灯。
在开始之前呢,希望你已经安装好了HomeAssistant,那么如果你没有安装好,这边也有准备好的教程。
01前置工作准备(安装HA 和 eclipse-mosquitto )
Home Assistant 树莓派4B安装
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44598&fromuid=13075
(出处: 物联网开发者社区-安信可论坛)
在安装好之后,还需要准备一个MQTT服务器,用来使开发板和HA通讯。
这里推荐的是eclipse-mosquitto 教程如下:
https://blog.csdn.net/Navyyy/article/details/122398020
在上述两个服务成功安装到Docker里之后呢,容器列表如下所示
02集成MQTT到HA
打开已经安装好的HA的Web网站。在左侧导航菜单里依次选择,配置, 设备和服务,添加集成,搜索MQTT。
之后呢,配置上述安装好的的账号和密码。此时MQTT完成配置。
当然你可以测试你是否配置成功。点击MQTT, 点击配置。
随便订阅一个主题,并且打开MQTT客户端工具,往这个订阅的主题发送一条消息。检查是否可以正常接收。
03配置HA,使其可以自动发现支持的MQTT设备(via yml)
Ha官网有详细的介绍关于如何使HA可以发现MQTT的设备 。
这次使用的使通过YML的方式使其HA识别。由于这次DIY的是一个台灯,在可以在HA官网中找到对Switch的描述。
选择Switch,在Switch的最下面有一个完整的Switch的配置。
拷贝这个配置,并且打开Shell。使用命令 docker exec -it [你的容器ID] /bin/bash 登录到HA中。
使用vi 命令编辑这个configuration.yml 文件,并且将上述的拷贝的内容粘贴到这个文件的最下方(其他的传感器等也是一样的道理)。
注意上述文件中,需要把optimistic 改成 Ture 关于Ture和False的区别请查看HA关于Switch的详细描述。
然后按下Shift + :输入wq 并且按下enter键进行保存。同时打开HA的Web界面。从左侧的导航打开开发者工具。重载手动配置的MQTT实体。
此时HA已经配置完毕。我们只需要向home/bedroom/switch1/set
那么这个实体在哪里呢?在HA的Web页面,点击配置, 设备与服务,选择实体,搜索 switch 你便可以看到这个实体。
此时如果你点击这个开关的话,你可以在MQTT的客户端的当前队列中看到HA向这个Message queue 的 topic 发送消息
只需要使M61-32S订阅这个主题,并且监听这个主题的Message当接收到的message为 ON的时候就打开台灯。等为OFF的时候就关闭台灯。
04使用M61-32S连接Wifi 订阅MQTT主题,接收消息实现台灯控制
当前项目的代码是在Aipi-open-kits 中的Wifi6-test中修改实现的。
这里移除了无用的代码,仅仅保留了WIFI相关的MQTT相关的。并且自己写了一个控制IO15的LED.h (移除了无用的easyflash 和其他的Wifi6-led等等)。
Wi-Fi和MQTT的连接代码部分如下图所示,只需要在这里修改成你自己的Wifi账号和密码已经MQTT服务器的账号密码以及队列信息。(这里是部署在香橙派Zero3 1G上的,实际占用RAM 500 mb左右。)
然后在user_mqtt.c的MQTT回调函数中,判断当前接收到的消息,如果接收到的消息为ON那么IO15输出高电平。如果为OFF的话则输出低电平。控制继电器关闭台灯。
05更多资料
代码如下
MQTT.zip
视频效果如下:【M61-32s接入HA 控制台灯-哔哩哔哩】
https://b23.tv/uKs6i1V
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !