打开智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 实现点灯

2024-07-21 安信可科技 微信公众号
开发板,模组,Ai-M61,Ai-M62 开发板,模组,Ai-M61,Ai-M62 开发板,模组,Ai-M61,Ai-M62 开发板,模组,Ai-M61,Ai-M62

上一篇我们介绍了MQTT设备如何接入HomeAssistant(打卡智能家居之旅(2):设备接入HomeAssistant的方法),这一篇就给大家讲一下Ai-M61/M62 开发板或者模组怎么通过编程来接入HomeAssistant。正式开始之前,我们先要确定拥有以下条件:


· 有一个Linux 系统,推荐Ubunt20.04,能够使用SSH进行远程访问

· 已经搭建好的HomeAssistant 并且可以正常访问(局域网或者公网)

· 有一个MQTT服务器,并且可以连接

· HomeAssistant 的MQTT集成已经成功连接到MQTT 服务器

· 重中之重,有一块带有灯的Ai-M61/M62的开发板


确保自己已经拥有以上条件,这次的帖子会从开发环境搭建开始讲,一直到HomeAssistant 控制Ai-M61-Kit 开发板的蓝灯,会有点长,请耐心看完。


1 开发环境搭建

很多同学可能疑惑,之前已经有了开发环境搭建的帖子,为什么还要重新讲?


因为这次的开发环境和之前的开发环境不一样,虽然流程都差不多,但是有很多细节要注意的地方,为了大家都能够跟着这次帖子顺利点灯,还是重新讲一遍比较好。


1.1 安装依赖(适合没有搭建过小安派开发环境的同学,搭建过的请跳过)

· VScode登录:

使用VScode 打开SSH 远程,如果不知道怎么连接请看:(四)零基础开发小安派-Eyes-S1【入门篇】——Win下SSH连接Linux


1.2 Windows的PowerShell 的SSH 登录:

在桌面摁住 <shift>键+鼠标右键,选择“在此处打开Powershell窗口”,然后在PowerShell 输入指令:

ssh 用户名@IP地址


例如:ssh seahi@192.168.16.102
回车输入密码即可登录。


1.3 依赖安装
登录打开终端之后,手动复制以下指令:

sudo apt-get install make gcc vim cmake git ninja-build -y


2 SDK克隆

因为本贴主要面向国内的同学,所以git 首选使用gitee。


2.1 克隆SDK

找一个浪漫一点的路径(这个很重要),运行以下指令:

git clone https://gitee.com/Ai-Thinker-Open/AiPi-Open-Kits.git


成功如下:

2.2 拉取子模块

使用指令进入到SDK当中,逐行运行以下指令(一定要全部执行成功):

cd AiPi-Open-Kits/


注意:git submodule update 就会开始更新仓库的子模块,时间会有点长,只要不报错都是正常的,耐心等待拉取完成:

2.3 设置SDK
使用指令把小安派的配置同步到SDK内部,并设置编译工具,逐行运行以下指令(一定要全部执行成功):

. update_sdk.sh

. export.sh


成功如下:

2.4 编译例程,验证SDK 是否搭建成功

逐行运行以下指令(一定要全部执行成功):

cd examples/blank/

make


编译成功如下:

2.5 命令上烧录测试程序

2.5.1 修改SDK的配置文件,实现先编译再烧录

推荐使用VScode 修改文件,在"AiPi-Open-Kits/bl61x_SDK/os这个路径下找到:project.build打开project.build 之后,找到 第 55 行,先把 COM5 改成 : 

"/dev/ttyUSB0"。


picocom /dev/ttyUSB0 -b 2000000


改成的原因是,当只有一个Ai-M61/M62开发板(或TTL工具)插入到ubuntu 中的时候,驱动中会显示 “/dev/ttyUSB0”,可以使用以下指令查看是否已经插入:

ls /dev/ttyUSB*


运行结果:


最后找到 找到 第 88 行,在"flash:" 后面加入:"build":

确保终端已经在examples/blank/目录,使用指令烧录程序:

make flash


2.5.2 修改报错

这个时候肯定会报错,而且一定是这样的报错内容:

Built target combine

./../../bl61x_SDK/os//tools/bflb_tools/bouffalo_flash_cube/BLFlashCommand-ubuntu --interface=uart --baudrate=2000000 --port=/dev/ttyUSB0 --chipname=bl616 --cpu_id= --config=flash_prog_cfg.ini

[10:22:46.164] - Serial port is /dev/ttyUSB0

[10:22:46.164] - ==================================================

[10:22:46.164] - [<font color="#ff0000"><b>Errno 2] No such file or directory: '/home/seahi/GDBS/AiPi-Open-Kits/examples/blank/../../bl61x_SDK/AiPi_bsp/board/bl616dk/config'</b></font>


这时候,在blank(AiPi-Open-Kits/examples/blank) 例程的目录下打开 flash_prog_cfg.ini 文件,把 "filedir =./../bl61x_SDK/AiPi_bsp/board/bl616dk/config/Rx_boot2_*.bin"  改成:

filedir = ./build/build_out/boot2_*.bin


然后把下面的内容注释掉(用# 号注释):

[edata]

filedir = ../../bl61x_SDK/AiPi_bsp/board/bl616dk/config/edata.bin

address = 0x3e0000


修改后:


2.5.3 再次编译烧录 make flash

就能看到按键提示后,按一下开发板上的复位键就能烧录:


2.6 命令行的log 查看

先安装串口监控工具:

sudo apt-get install picocom


安装成功之后,使用指令:

picocom /dev/ttyUSB0 -b 2000000


运行成功:

再按一次复位键之后,就能看到log了:

如果你也输出了log,那恭喜你,现在只搭建好了开发环境,可以正式进入下面的HomeAssistant 连接,❀保持耐心❀。


3 对接HomeAssistant

3.1 克隆对接例程

在终端使用 "cd" 指令进入到 “example”目录:

cd example


执行克隆指令:

git clone https://gitee.com/Ai-Thinker-Open/HomeAssistant_example.git


成功如下:

你以为这样就能直接编译里面的例程了吗?以我的风格,怎么可能会这么简单。其实是这样图片,我在做一个HomeAssistant的连接库,例程会直接使用这个库来连接HomeAssistant,为了确保各个例程使用的库函数保持最新且一致,我不得不把库以子模块的形式存在于例程当中。


所以,在还需要到例程仓库里面拉取子模块,逐行运行以下指令(一定要全部执行成功):

cd HomeAssistant_example/

git submodule init

git submodule update


拉取成功:


3.2 新建连接程序

3.2.1 复制例程并且重命名

新建程序我建议直接复制原有的工程:HomeAssistant_basic,这个例程中有一个开关的实体,适合点灯,但是连接的服务器是安信可的MQTT服务器,只需要做一下简单的修改就可以实现连接了。你可以使用VS code 的复制粘贴功能(因为大家都已经知道了,所以我就不打算再讲),也可以使用命令行 的"cp"指令(为了能够正常运行,建议命名和我的保持一致):

cp HomeAssistant_basic/ -r HomeAssistant_switch


复制结果如下:

3.2.2 修改烧录配置文件

打开 “HomeAssistant_switch” 下的 “flash_prog_cfg.ini” 文件,把第 26 行“filedir = ./build/build_out/HomeAssistant_basic_$(CHIPNAME)*.bin”改成:

filedir = ./build/build_out/HomeAssistant_switch_$(CHIPNAME)*.bin


如下:

一定要改好,不要再烧录的时候回出错。


3.2.3 修改WiFi 连接

这个例程有一个简单的WiFi 连接,默认连接的WiFi 是:

WiFi名称:FAE@Seahi


备注:这个是笔者的路由器名称和密码,如果不修改的话,是不能正常连接网络的。


VScode 找到 “HomeAssistant_example/HomeAssistant_switch/components/wifi”目录下的“wifi_event.c”文件并打开,编辑界面找到 第 62 行 ,把:staWiFiConnect("FAE@Seahi", "fae12345678");里面的参数改成你自己的WiFi名称和密码,切记WiFi名称一定是2.4GHz的:

staWiFiConnect(“WiFi名称”, "密码");


3.2.4 修改MQTT 配置

在例程当中,MQTT配置使用的是默认的MQTT参数,这些默认参数可以在 "Ai-M6x_HomeAssistant-C/HomeAssistant-C/"目录中的 “homeAssistantDevConfig.h”文件中找到:

当然,你可以直接修改配置文件里面相关宏定义,也可以在main.c 中修改参数,所以就有两种方法修改MQTT配置参数。


●方法一:修改ha_device 结构体参数

在 HomeAssistant_switch/main目录中打开 main.c ,编辑页下拉到第 75 行 ,回车添加以下内容:

ha_device.mqtt_info.mqtt_clientID="Ai-M6X_Kit_Switch";

ha_device.mqtt_info.mqtt_host="你的服务器地址";

ha_device.mqtt_info.port=1883;

ha_device.mqtt_info.mqtt_username="HomeAssistant_switch";


一定要记住,服务器地址要和HomeAssistant 上的MQTT连接的服务器地址保持一致,比如我的HomeAssistant 上MQTT连接的地址:

那MQTT 配置就是这样:

ha_device.mqtt_info.mqtt_clientID="Ai-M6X_Kit_Switch";

ha_device.mqtt_info.mqtt_host="wx.ai-thinker.com";

ha_device.mqtt_info.port=1883;

ha_device.mqtt_info.mqtt_username="HomeAssistant_switch";


●方法二:homeAssistantDevConfig.h 相关宏定义(不推荐)

直接打开Ai-M6x_HomeAssistant-C/HomeAssistant-C/"目录中的 “homeAssistantDevConfig.h”文件,然后修改宏定义后面的内容。


不推荐的原因:homeAssistantDevConfig.h 文件是 HomeAssistant-C库里面的内置文件,一旦更新仓库之后还需要重新配置一遍。你的程序就没办法按照之前的配置连接到正确的MQTT服务器上。


3.2.5 修改实体信息

原工程 HomeAssistant_basic 中的实体有个唯一的信息,它在你的HomeAssistant 中表示这个实体的ID,所以必须要修改,在 HomeAssistant_switch/main的main.c中找到第 38 行 ,把 .unique_id= "switch1"改成:

.unique_id = "switch_v1",


可以改成其他的数值,只要是确保唯一性就行,推荐使用MAC地址来赋值,像这样:

  static ha_sw_entity_t entity_sw1 = {

                 .name = "开关1",

                 .icon = "mdi:power",

            };

            entity_sw1.unique_id = pvPortMalloc(16);

            uint8_t STA_MAC[6] = { 0 };

            aiio_wifi_sta_mac_get(STA_MAC);

            sprintf(entity_sw1.unique_id, "sw_%02x%02x", STA_MAC[4], STA_MAC[5]);


然后就可以烧录测试,查看连接状况情况了,运行:

cd <b style="background-color: rgb(255, 255, 255);">HomeAssistant_switch</b>


连接成功的LOG:

查看HomeAssistant 中的连接情况:

3.2.6 修改设备信息

当然设备信息也是可以改的,只需要在MQTT 配置信息的下面加入以下配置:

 ha_device.name="我的板子"; //设备名称

    ha_device.model="Ai-M61开发板";//模块名称

    ha_device.manufacturer="取个名字真难";//产商名称


添加之后如下:

重新烧录上线之后,HomeAssistant 的设备信息:

4 控制一盏LED

4.1 GPIO驱动编写

我现在用的板子是AiPi-Eyes-DU 开发板,就按点亮RGB 的蓝灯为例,RGB的蓝灯接在了GPIO15,跟着泽哥的教程,写一份让GPIO15输出的代码:

struct bflb_device_s* gpio;//全局变量

gpio = bflb_device_get_by_name("gpio");

    bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);

    bflb_gpio_reset(gpio, GPIO_PIN_15);


实际代码如下:


4.2 接收HomeAssistant 的控制指令并控制LED灯

在 main.c 中的第 29 行 ,ha_event_cb函数,是库中的HomeAssistant 事件回调函数,当我们在HomeAssistant 下发控制指令,会触发回调。


控制灯的回调事件是:HA_EVENT_MQTT_COMMAND_SWITCH。


我们就在这个事件里,做点灯,在第 58 行 里加入:

 if (ha_dev->entity_switch->command_switch->switch_state) {

                bflb_gpio_set(gpio, GPIO_PIN_15);

            }

            else bflb_gpio_reset(gpio, GPIO_PIN_15);


结果如下:

烧录验证:


4.3 在HomeAssistant 中加入开关按钮

在概览页面选择右上角的三个点,然后选择编辑仪表盘:

然后在右下脚选择"添加卡片",在弹出里选择"水平堆叠":

之后在水平堆叠卡片里选择"实体"卡片:

接着在实体卡片里选择"开关实体":

然后保存就行,在概览中就多了一个开关,这个就是控制开发板灯的开关。


5 添加更多开关实体

从 3.2.5 修改实体信息 这个小结可以知道,要添加多个开关实体,就在代码需要定义多个开关,而且开关的unique_id 必须保持唯一。创建完成之后,使用 "homeAssistant_device_add_entity" 函数进行添加。下面就加多两个开关:

 static ha_sw_entity_t entity_sw1 = {

                 .name = "开关1",

                 .icon = "mdi:power",

                 .unique_id = "sw1",

            };

            static ha_sw_entity_t entity_sw2 = {

                 .name = "开关2",

                 .icon = "mdi:power",

                 .unique_id = "sw2",

            };

            static ha_sw_entity_t entity_sw3 = {

                 .name = "开关3",

                 .icon = "mdi:power",

                 .unique_id = "sw3",

            };


            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_SWITCH, &entity_sw1);

            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_SWITCH, &entity_sw2);

            homeAssistant_device_add_entity(CONFIG_HA_ENTITY_SWITCH, &entity_sw3);


这样烧录运行之后,HomeAssistant 上的开发板这个设备就有三个开关:

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由中国颜值的半壁江山转载自安信可科技 微信公众号,原文标题为:智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 实现点灯,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

用M61模组做一个红外空调遥控器

介绍用M61模组做一个红外空调遥控器的方法与步骤。

设计经验    发布时间 : 2024-08-30

【经验】安信可双频Wi-Fi+蓝牙SoC模组BW16如何搭建Arduino开发环境?

安信可BW16模组是基于 RTL8720DN开发的双频Wi-Fi+蓝牙SoC模组,具备超强性能。本文着重介绍BW16及开发板如何搭建Arduino开发环境。

设计经验    发布时间 : 2023-06-10

智能家居之旅:基于Ai-WB2模组实现的HomeAssistant传感器采集器

本文是基于Ai-WB2模组实现的HomeAssistant传感器采集器设计方案及特点介绍。

设计经验    发布时间 : 2024-08-24

ESP32-CAM Wi-Fi+BT SoC模组

型号- ESP32-CAM

数据手册  -  安信可科技  - V1.0  - 2018/8/17 PDF 中文 下载

【产品】安信可ESP32系列低功耗UART-WiFi芯片模组,可支持RTOS操作系统二次开发

ESP32系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫ESP32的低功耗UART-WiFi芯片模组,可以方便地进行二次开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计。

产品    发布时间 : 2023-05-04

【经验】Ai-WB2系列模组AT固件使用教程

Ai-WB2系列模组AT固件使用教程:1.准备工作需要准备的软硬件:Ai-WB2系列模组或者开发板,Type-C数据线,安信可透传云服务器,连接为http://tt.ai-thinker.com/ttcloud2.连接路由器等。

设计经验    发布时间 : 2023-02-03

ESP系列模组PCB设计及天线摆放参考指南

型号- ESP,ESP8285,ESP系列,ESP8266

应用笔记或设计指南  -  安信可科技  - 2019/12/24 PDF 中文 下载 查看更多版本

智能家居之旅(7):HomeAssistant开发板的RGB颜色

hello,有谁还记得之前小美的视频?当时做了一个RGB灯,并且说了 RGB的一些开发过程。所以说RGB实体很早之前就已经开发好了,只是一直没有写帖子介绍它的用法。今天就给大家介绍一下 RGB 彩灯怎么上HomeAssistant,然后控制Ai-M61开发板的 RGB 灯的颜色,感觉这个项目用来控制家里的灯条就挺不错的。

设计经验    发布时间 : 2024-07-18

安信可科技(Ai-Thinker)2.4G模组选型表

描述- 2.4G系列模组是安信可科技有限公司自主设计开发的一系列模组。目前主要有进口,台产和邦定三个系列, 能够满足不同客户群体的需求。可广泛应用于各种物联网场合,适用于无线鼠标、无线遥控、体感设备、有源RFID、 NFC、低功耗自组网无线传感网节点等,是物联网应用的理想解决方案。

型号- NF-02-PA,NF-04,NF-03,NF-01-S,NF-02-SM,NF-04-MI,NF-01-N,NF-02-PE

选型指南  -  安信可科技  - 2017/6/10 PDF 中文 下载

【IC】安信可最新发布Ai-M61和Ai-M62两款WiFi 6+BLE5.3+X模组,最高主频可达320M

通过长期细致深入的研发设计及反复打磨,安信可重磅新品WiFi 6+BLE5.3+X模组——Ai-M61和Ai-M62两款系列模组惊艳亮相,力求为用户带来性能和体验的全面提升!Ai-M61&Ai-M62系列分别搭载BL618、BL616芯片作为处理器,支持Wi-Fi 802.11b/g/n/ax协议和BLE 5.3协议以及丰富的外围接口。

新产品    发布时间 : 2023-04-04

M61/M62系列烧录指导,包含模组&开发板

本教程详细介绍了使用Ai-M61/M62系列模组或开发板进行硬件设置、接线和软件烧录的全过程。首先,准备必要的硬件包括模组或开发板和相应的烧录设备。然后,按照指定方式连接硬件,并使用BLDevCube.exe软件进行烧录,选择正确的芯片型号和下载方式。对于模块和开发板,有具体的文件放置指导和烧录步骤,包括如何处理常见错误。完成后,确认烧录成功即可开始使用新品方案进行开发。

设计经验    发布时间 : 2024-07-07

低能耗、低时延、快速度,星闪开发板Ai-BS21-32S-Kit更多场景应用,邀您一起来探索!

万众期待的星闪开发板上架了!Ai-BS21-32S-Kit 低延迟,高效率!话不多说!先回顾下基本参数信息。

产品    发布时间 : 2024-06-23

【经验】Ai-WB2模组基于TCP的MQTT连接服务器使用示例

1、需要准备的软硬件:Ai-WB2系列模组或者开发板,Type-C数据线2、连接路由器:先保证模块或者开发板上电打印ready,2.发送AT+CWMODE=1;AT+CWJAP=“WIFI名称”,“WIFI密码”。

设计经验    发布时间 : 2023-01-16

LoRa-Kit开发板使用介绍

LoRa-Kit是安信可针对LoRa模组而设计的一款开发板,上面搭载了STM32F103C8T6 芯片和TB-05模组,预留了LoRa转接板插针,适配Ra-01、Ra-03等转接板,便于Ra-01/Ra-01S/Ra-01SC/Ra-03SCH等全系列的LoRa模组,实现LoRa通信和低功耗性能等开发测试。

产品    发布时间 : 2024-06-27

展开更多

电子商城

查看更多

只看有货

品牌:安信可科技

品类:Wi-Fi 6+BLE5.3模组

价格:¥16.2500

现货: 10

品牌:安信可科技

品类:NB-IoT模组

价格:¥17.7500

现货: 10

品牌:安信可科技

品类:雷达模组

价格:¥12.7500

现货: 5

品牌:安信可科技

品类:LoRa模组

价格:¥19.7500

现货: 5

品牌:安信可科技

品类:LoRaWAN模组

价格:¥25.6300

现货: 5

品牌:安信可科技

品类:蓝牙模组

价格:¥4.6300

现货: 4

品牌:安信可科技

品类:雷达模组

价格:

现货: 0

品牌:安信可科技

品类:蓝牙模组

价格:¥8.2600

现货: 0

品牌:安信可科技

品类:蓝牙模组

价格:¥10.0800

现货: 0

品牌:安信可科技

品类:蓝牙模组

价格:¥9.6600

现货: 0

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:RF-LINK

品类:WiFi模块

价格:¥25.5000

现货:16,272

品牌:SKYWORKS

品类:低噪放模组

价格:¥2.5000

现货:11,296

品牌:u-blox

品类:无线及智能模块模组

价格:¥136.7300

现货:6,000

品牌:Sierra Wireless

品类:4G IoT 模组

价格:¥221.3700

现货:500

品牌:AVAGO

品类:Camera Module

价格:¥37.9271

现货:117

品牌:芯波科技

品类:WIFI SIP 模组

价格:¥15.0000

现货:40

品牌:高新兴物联

品类:NB-IOT模组

价格:¥25.0000

现货:28

品牌:高新兴物联

品类:NB-IOT模组

价格:¥22.0000

现货:20

品牌:高新兴物联

品类:LTE CAT1模组

价格:¥63.3334

现货:20

品牌:创芯海微

品类:红外测温模组

价格:¥49.2307

现货:20

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

LED组件/LED传感/UV模组定制

可定制LED组件/LED传感/UV模组的电压、电流、波长等性能参数,电压:3-24V,,电流:30-3500mA,波长:270-940nm;材质:食品级POM,阻燃PC;防水等级:IP20-IP68。

最小起订量: 1000 提交需求>

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面