如何用安信可Ai-M61-32S做一个智能台灯?

描述

本作品由安信可社区用户

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

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分