【电子DIY作品】+ 智能台灯 + Ai-M61-32S+ Home Assistant

[复制链接]
查看671 | 回复8 | 2024-7-10 23:53:54 | 显示全部楼层 |阅读模式
本帖最后由 WangChong 于 2024-7-11 00:01 编辑

前言
大家好,安信可又出活动了,抱着重在参与的态度给大家带来了我的作品智能台灯。
不知道大家是否还记得这个帖子里的台灯。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,那么如果你没有安装好的话。我这边也有准备好的教程。


1- 前置工作准备(安装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里之后呢,容器列表如下所示

Snipaste_2024-07-10_22-58-45.jpg


2- 集成MQTT到HA

打开已经安装好的HA的Web网站。在左侧导航菜单里依次选择,配置, 设备和服务,添加集成,搜索MQTT
Snipaste_2024-07-10_23-02-23.jpg

之后呢,配置你上述安装好的eclipse-mosquitto 的账号和密码。 此时MQTT完成配置

360截图20240710230355.jpg


当然你可以测试你是否配置成功。 点击MQTT, 点击配置
Snipaste_2024-07-10_23-05-19.jpg

随便订阅一个主题,并且打开MQTT客户端工具,往这个订阅的主题发送一条消息。检查是否可以正常接收。

Snipaste_2024-07-10_23-07-26.jpg


3- 配置HA,使其可以自动发现支持的MQTT设备(via yml)
Ha官网 有详细的介绍关于如何使HA可以发现MQTT的设备 。 我们这次使用的使通过YML的方式使其HA识别。由于我这次DIY的是一个台灯。所以我们在可以在HA官网中找到对Switch的描述。
Snipaste_2024-07-10_23-11-42.jpg


选择Switch,在Switch的最下面有一个完整的Switch的配置。
Snipaste_2024-07-10_23-12-39.jpg


我们拷贝这个配置,并且打开Shell。使用命令 docker exec -it [你的容器ID] /bin/bash 登录到HA中
Snipaste_2024-07-10_23-15-56.jpg

使用vi 命令编辑这个configuration.yml 文件,并且将上述的拷贝的内容粘贴到这个文件的最下方(其他的传感器等也是一样的道理)。注意上述文件中,需要把optimistic 改成 Ture 关于Ture和False的区别请查看HA关于Switch的详细描述
Snipaste_2024-07-10_23-17-16.jpg

然后 按下Shift + : 输入wq 并且按下enter键进行保存。同时打开HA的Web界面。从左侧的导航打开开发者工具。 重载手动配置的MQTT实体
360截图20240710232048.jpg

此时HA已经配置完毕。我们只需要向home/bedroom/switch1/set 这个主题中发送一个ON的命令。那么HA便会自动发现这个实体
Snipaste_2024-07-10_23-23-23.jpg

那么这个实体在哪里呢?在HA的Web页面,点击配置, 设备与服务,选择实体,搜索 switch 你便可以看到这个实体。
Snipaste_2024-07-10_23-25-53.jpg

此时如果你点击这个开关的话,你可以在MQTT的客户端的当前队列中看到HA向这个Message queue 的 topic 发送消息
Snipaste_2024-07-10_23-27-35.jpg

聪明的你肯定想到了。那么只需要使M61-32S订阅这个主题,并且监听这个主题的Message当接收到的message为 ON的时候就打开台灯。等为OFF的时候就关闭台灯。

4- 使用M61-32S 连接Wifi 订阅MQTT主题,接收消息实现台灯控制


当前项目的代码是在Aipi-open-kits 中的Wifi6-test中修改实现的。
360截图20240710233005.jpg


我这里移除了无用的代码,仅仅保留了WIFI相关的MQTT相关的。并且自己写了一个控制IO15的LED.h (移除了无用的easyflash 和其他的Wifi6-led等等)。
360截图20240710233139.jpg


WIFI和MQTT的连接代码部分如下图所示,只需要在这里修改成你自己的Wifi账号和密码已经MQTT服务器的账号密码以及队列信息。(我的是部署在香橙派Zero3 1G上的,实际占用RAM 500 mb左右。)
Snipaste_2024-07-10_23-33-31.jpg


然后在user_mqtt.c的MQTT回调函数中,判断当前接收到的消息,如果接收到的消息为ON那么IO15输出高电平。 如果为OFF的话则输出低电平。控制继电器关闭台灯。
Snipaste_2024-07-10_23-34-38.jpg


代码如下

MQTT.zip (18 KB, 下载次数: 9)
回复

使用道具 举报

1084504793 | 2024-7-11 08:05:00 | 显示全部楼层
回复

使用道具 举报

bzhou830 | 2024-7-11 08:22:36 | 显示全部楼层
王哥厉害
选择去发光,而不是被照亮
回复

使用道具 举报

lazy | 2024-7-11 08:36:22 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-7-11 08:49:36 | 显示全部楼层
不错不错,交作业了!
用心做好保姆工作
回复 支持 反对

使用道具 举报

WT_0213 | 2024-7-11 08:54:28 | 显示全部楼层
回复

使用道具 举报

iiv | 2024-7-11 21:50:40 | 显示全部楼层
很不错呀
回复

使用道具 举报

hrqwe | 2024-7-13 20:52:56 | 显示全部楼层
王哥太牛了
日拱一卒,功不唐捐
回复 支持 反对

使用道具 举报

WildboarG | 2024-7-19 16:20:24 | 显示全部楼层
学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则