# esp8266-hilink **Repository Path**: yaohx/esp8266-hilink ## Basic Information - **Project Name**: esp8266-hilink - **Description**: Demo project for HiLink - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2021-09-02 - **Last Updated**: 2024-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1.HUAWEI HiLink协议介绍 当前智能家居领域,各品牌厂家之间,就像各省的方言一样,不能互联互动,从而形成一个个孤岛,这和给消费者提供更美好生活本质背离。HUAWEI HiLink,就是为各智能终端之间提供的普通话。 对行业,华为开放协议SDK,并建设开发者社区为开发者提供全方位的指导,帮助开发者从开发环境搭建到集成、测试、提供一站式的开发服务。华为通过HUAWEI HiLink互联协议,将和所有智能硬件厂家一起,形成开放、互通、共建的智能家居生态。 ## 2.HILINK 的架构 HUAWEI HiLink开放互联协议架构:连接人、端、云 1. HUAWEI HiLink协议框架主要部件:HUAWEI HiLink Device:开放的终端SDK、OS和芯片能力 a)集成HUAWEI HiLink SDK,实现终端快速入网、能力开放和设备间互操作 b)可支持WiFi/Zigbee/BT 2. 华为智能家居 App:开放的海量手机入口 a)统一入口、统一体验 b)单设备管理和控制 c)多设备联动和场景设置 3. HUAWEI HiLink Cloud:开放的云端数据共享 a)多设备管理 b)场景联动 c)远程控制 d)视音频媒体能力 e)OpenAPI第三方对接 4. HUAWEI HiLink Router:开放的智能家居路由平台 a)一键连接、自组网、自动漫游 b)多设备协同和场景联动 c)多协议、多标准转换 ## 3.软硬件准备 1. 软件准备:1.熟悉hilink sdk接入手册,本工程docs目录下HILINK开发资料,需要根据具体设备适配profile文件中的服务类型;2.熟悉8266的开发平台,参考bbs.espressif.com中的8266相关文档,下载相关编译及烧录工具.您可以使用 xcc 和 gcc 来编译项目,建议使用 gcc。对于 gcc,请参考[esp-open-sdk](https://github.com/pfalcon/esp-open-sdk) 2. 硬件准备:准备一块wroom02开发板,flash不少于2MB, ## 4.工程结构 ├── bin ├── docs ├── esp8266-rtos-sdk-hilink //hilink 8266 sdk ,open SOCKET REUSE of lwip ├── genmisc.sh //生成固件脚本 ├── hilink_ota //OTA 相关的适配例子,使用iot.espressif.cn作为OTA服务,华为提供的空调demo作为具体设备,若是使用客户自己的升级服务器该部分可以直接去掉 │   ├── hilink_ota.c │   ├── hilink_ota_config.h //OTA配置文件 │   ├── hilink_ota_crc32.c │   ├── hilink_ota_lib.c │   ├── Makefile │   └── README.md //OTA帮助文档 ├── Makefile ├── platforms │   ├── hilink │   │   ├── adaptation │   │   │   ├── hilink_error.h │   │   │   ├── hilink_esp_link.c //Hilink 配网相关 │   │   │   ├── hilink_esp_m2m.c //m2m函数适配接口 │   │   │   ├── hilink_osadapter.c //库函数适配接口 │   │   │   ├── hilink_socket_stub.c //网络层适配接口 │   │   │   └── Makefile │   │   ├── include │   │   │   ├── hilink_esp_adapter.h //esp新增的适配接口,需要调用 │   │   │   ├── hilink_link.h │   │   │   ├── hilink_log.h │   │   │   ├── hilink_osadapter.h │   │   │   ├── hilink_profile.h │   │   │   └── hilink_socket.h │   │   ├── lib │   │   │   └── libhilinkdevicesdk.a │   │   └── Makefile │   └── Makefile ├── README.md └── user ├── hilink_demo.c //使用华为提供的调试空调作为例子 ├── hilink_esp_m2m_adapter.c //demo空调相关属性接口适配例子,客户需要根据自己的设备和华为提供的profile来适配 └── Makefile ## 5.编译运行 在unix环境下只需要运行./genmisc.sh,其他环境请参考[esp-open-sdk](https://github.com/pfalcon/esp-open-sdk) ## 6. 固件烧录(windows) 1. 安装[串口驱动](http://www.usb-drivers.org/ft232r-usb-uart-driver.html) 2. 安装[烧写工具](http://espressif.com/en/support/download/other-tools) 3. 烧录相关 bin 文件 将 GPIO0 开关(GPIO0 Control)拨到内侧开发板置为下载模式,按照如下所示,配置串口号、串口波特率等,按 `START` 即可开始下载程序 ``` boot.bin------------------->0x000000 // 启动程序 user1.2048.new.5.bin------->0x01000 // 主程序 blank.bin------------------>0x1F8000 // 初始化用户参数区 blank.bin------------------>0x1FB000 // 初始化 RF_CAL 参数区。 esp_init_data_default.bin-->0x1FC000 // 初始化其他射频参数区 blank.bin------------------>0x1FE000 // 初始化系统参数区 ``` ## 7. APP添加注册控制 上电后设备之前若有没有进行过配网,会自动进入配网状态,app可以扫到该设备进行添加注册,如图: 手机app根据设备广播的beacon信息来显示热点信息配网完成后进入注册页面,注册页面可以选择设备的摆放位置 注册完成后进入设备详情界面,可以在设备点击控制之后可以在串口看到设备收到的控制命令 例如设置制冷模式,串口输出: ``` put svc_id is airConditioner payload is {"mode":2} mode value 2 get svc_id airConditioner in 0 (null) out {"mode":2} ``` ## 8.升级功能适配步骤 由于华为hilink不提供升级服务器,所以升级服务器功能需要客户根据自己的产品特性独立开发。本工程下升级功能适配的例子是基于iot.espressif.cn开发的,用户若是使用该服务器实现OTA功能请按照一下步骤进行,若是客户准备自行开发升级服务器也可参考升级部分的适配代码. ### (a)云端配置以及上传升级固件 1.注册iot.espressif.cn(http://iot.espressif.cn/#/join/) 2.注册完成后登录,点击设备开发->创建 3.点击创建后到如下界面,可以自定义产品名字和类型 4.创建设备成功后进入如下界面,记录下设备的master device,并且设置自己为owner 5.再次点击页面右上角的设备管理 6.选中刚才创建的设备类型,进入如下界面 7.上传需要升级的固件,并且设定版本号 8.设定为当前最新版本 ### (b)设备端修改适配步骤 1.只需修改hilink_ota目录下的hilink_ota_config.h ``` #define OTA_SERVER_ADDR "115.29.202.58" //iot.espressif.cn的ip地址,不用动 #define OTA_SERVER_PORT 80 //服务器端口,不用动 #define BIN_FILENAME "user.bin" //上传的升级固件文件名称,云端第七步上传的是文件名是user.bin #define OTA_TIMEOUT 60000 //升级超时时间,可以改动 #define MASTER_KEY "eaff337b3468470a12c0feea6604fa349853764c" //填入云端第4步的master_devide_key ```