【腾讯连连 腾讯物联网入门学习 第1篇】腾讯官方静鸡鸡发布的“腾讯连连”终于来了,按照官方教程教你在微信小程序实现配网、控制 ESP8266啦! - CoreHouse

时间:2024-03-01 08:39:46

      微信物联网生态主要分在微信硬件开发平台腾讯物联开发平台,前者已经停止维护,但依然有着很大的学习价值,而后者作为主推的平台,集成很多功能,包括从微信小程序实现配网到控制;

      为了兼顾更多的朋友开发和自己的学习笔记,我将会一直更新此专题笔记,欢迎关注本人CSDN半颗心脏,带你走进前沿领域,学习前沿技术!

自搭微信服务器&&微信硬件开发平台

微信小程序控制硬件第1篇 】 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件!
微信小程序控制硬件第2篇 】 开始微信小程序之旅,导入小程序Mqtt客户端源码,实现简单的验证和通讯于服务器!
微信小程序控制硬件第3篇 】 从软件到硬件搭建一个微信小程序控制esp8266的项目,自定义通讯协议,为面试职位和比赛项目加分!
微信小程序控制硬件第4篇 】 深度剖析微信公众号配网 Airkiss 原理与过程,esp8266如何自定义回调参数给微信,实现绑定设备第一步!
微信小程序控制硬件第5篇 】理清接下来必须走的架构思想,学习下 JavaScript 的观察者模式,在微信小程序多页面同时接收到设备推送事件!
微信小程序控制硬件第6篇 】服务器如何集成七牛云存储SDK,把用户自定义设备图片存储在第三方服务器!
微信小程序控制硬件第7篇 】动起来做一个微信小程序Mqtt协议控制智能硬件的框架,为自己心里全栈工程师梦想浇水!!
微信小程序控制硬件第8篇 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!
微信小程序控制硬件第9篇 】巧借阿里云物联网平台的免费连接,从微信小程序颜色采集控制 esp8266 输出七彩灯效果,中秋节来个直播如何?!
微信公众号控制硬件 第10篇 】如何在微信公众号网页实现连接mqtt服务器教程!!
微信小程序控制硬件 第11篇 】全网首发,微信小程序ble蓝牙控制esp32,实现无需网络也可以控制亮度开关。
微信小程序控制硬件 第12篇 】微信小程序蓝牙控制硬件应如何开发?为您全面解析微信小程序蓝牙API的使用。
微信小程序控制硬件 第13篇 】安信可B站直播学习总结,微信小程序MQTT远程控制ESP8266 NodeMCU,谈谈微信生态那些事。

腾讯物联开发平台

腾讯连连 - 腾讯物联开发平台 第1篇 】腾讯官方静鸡鸡发布的“腾讯连连”终于来了,按照官方教程教你在微信小程序实现配网、控制 ESP8266啦!

在这里插入图片描述

本博文已在2020年6月20号更新,增加对smartconfig的配网支持说明;

前言

     现在万物智联的时代, 作为一名全栈开发工程师,无线点灯已经成为基本功了,要对自己产品有所优势,就务必把更好玩、更吸引人、更创新的玩法想出来并实现分享给大家!

     昨天,公司的前端开发小姐姐问到我她手上的前端如何在微信小程序中配网ESP8266,从而实现控制的功能;于是乎,我很亢奋,微信小程序可以实现配网了吗?我打开了网页,竟然是 腾讯物联网平台,竟然还支持个人开发!!!!

     于是乎,从编译代码到读懂配网原理,我只花了1个半小时,今天,有机会给大家分享下如今的“腾讯连连”使用现状!(以 ESP8266资深玩家身份评估)


一、“腾讯连连”这款小程序定义?

     2019年在腾讯云IoT生态峰会上,腾讯云首次对外升级物联网全链路产品以及发布“腾讯连连”全新产品,简单来说,用户只需要通过这款小程序的入口,就可以实现一键控制不同厂商、不同协议硬件产品,真正实现万物互联。

     据腾讯云物联网平台产品总监周佳鑫介绍:“腾讯连连并非是一款简单的微信小程序,它是腾讯云面向物联网行业提供的一整套C to B开放平台服务,借助腾讯连连可以降低物联网产品的研发门槛以及加快研发速度,同时提供以微信小程序为载体的、面向消费者的应用入口,整合腾讯内部的品牌以及多项优势内容服务。”

    一句话:腾讯物联网平台升级了,已经结合微信小程序配合从 配网、绑定、控制和分享设备了,真正融合进微信生态啦!

    而 “腾讯连连” 一个配网、绑定、控制和分享设备的微信小程序!


二、微信配网 airkiss 技术不再维护!!

     关注本人博客的朋友都知道,我在2018年都已经提到了:微信配网airkiss和微信硬件云可能不维护了,现在再验证了这一说法!

    微信公众开放平台关于airkiss配网帖子,其管理员提到:

  1. 微信硬件云中的 airkiss和近场发现不再维护!
  2. airkiss配网不支持在微信小程序控制!

在这里插入图片描述


三 、“腾讯连连”优势在哪?

    上述的微信生态中的微信公众号Airkiss配网已经不维护,而大家最期待的应该是:微信小程序可以给智能设备配置入网吗?其实 ,在我的圈子里面,已有很多人实现了微信小程序给智能设备配置入网,其原理就是 热点配网!

    而官方的优势解释大概意思 : “腾讯连连” 一个配网、绑定、控制和分享设备的微信小程序,可以实现结合微信生态提高用户体验;

    在没有“腾讯连连”之前,我们可以实现上面的想法吗? 当然是可以的,我去年做了一个《微信小程序蓝牙配网ESP32》, 就可以看到 微信小程序其实也是可以 配网 设备的,控制设备更不用说了,直接用 webSocket 跑 MQTT 协议就可以了!下面给出链接哈!

  • ①:ESP32蓝牙配网的高度封装,集成简单、使用简单、容易上手,提高开发效率:
    点我访问
  • ②:开源微信小程序Mqtt客户端源码,实现简单的验证和通讯于服务器: 点我访问

    因为,激励技术的前进,大多数由于业务的需求;聪明的开发者,都是想尽各种方法实现: 如何做一个配网、绑定、控制和分享设备的微信小程序!确实是可以做到了,本人是做到了,但由于某些原因,是不能开源和发布出来的,如有兴趣可以技术讨论啦!

    谈了这么多 , 博主认为 “腾讯连连” 优势在于 官网流量支持,并且会一直维护下去,面向个人和企业想在微信生态做自己的产品,会更 easy ! 更容易上手! 这也对国内的物联网发展,标志着一个里程碑, 但更多需要我们开发者去不断磨合它,不断提出BUG完善它,这样,我们才真正看到一个成熟的 “腾讯连连” !


四、“腾讯连连”配网原理

    前面谈了这么多理论和个人想法,相信您一定对这个“腾讯连连” 配网原理很感兴趣,那么,下面跟着我一起走吧!

    Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 Wi-Fi 网络。

  • 对于具备丰富人机界面包括屏幕/键盘的设备,例如电脑或手机,可以直接输入 SSID/PSW 进行连接。
  • 对于不具备丰富人机交互界面的物联网 Wi-Fi 设备,例如智能灯、扫地机器人等,则可以借助手机等智能设备,以某种配网方式将 SSID/PSW 传递该设备。

    配网有多种方式,包括 WPS、smartconfig、softAP 等。

配网方式特点
WPS存在安全性问题
smartconfig较便捷,但一般为各厂商采用私有协议,兼容性和互操作性较差
softAP适配性兼容性较好,但手机端需要做两次 Wi-Fi 连接设置的切换,步骤较复杂

方式①:腾讯连连的softAP 配网

4.1 基本原理

    设备通过 softAP 方式创建一个 Wi-Fi 热点,手机连接该热点,通过数据通道,将目标 Wi-Fi 路由器的 SSID/PSW 传递该设备,设备获取后,连接路由器从而连接互联网。同时,为了对设备进行绑定,手机 App 可以利用该数据通道,让设备提供签名数据,再将签名数据发送至物联网后台进行验证和绑定。

4.2 softAP 配网协议示例

本示例基于 ESP8266 腾讯云定制模组配合腾讯连连小程序。

  1. 已经烧录好腾讯云固件的ESP8266 模组接到 PC 端 USB 串口。

  2. 首先让 Wi-Fi 模组进入 softAP 配网模式。如果模组说明有指示灯在快闪,则说明进入配网模式成功,默认的 热点 SSID 为 ESP8266-SoftAP , 密码12345678 ,也可以修改!

  3. 手机连接该 Wi-Fi 热点"ESP8266-SoftAP",获取到 IP。

  4. 小程序作为 UDP 客户端连接 Wi-Fi 模组上面的 UDP 服务。(IP 为网关地址,在 ESP8266 上是192.168.4.1,端口为8266)

  5. 小程序给模组 UDP 服务发送目标 Wi-Fi 路由器的 SSID/PSW,JSON 格式为:

{"cmdType":1,"ssid":"Home-WiFi","password":"abcd1234"}

发送完成后,等待模组 UDP 服务回复确认消息:

{"cmdType":2,"deviceReply":"dataRecived"} 
  1. 如果2秒之内,未收到模组回复,则重复步骤5,UDP 客户端重复发送目标 Wi-Fi 路由器的 SSID/PSW。如果重复发送5次都没有收到回复,则认为配网失败,模组有异常,需要对模组进行重启复位。
  2. 如果步骤5已收到回复,则说明模组已经收到 Wi-Fi 路由器的 SSID/PSW,正在进行连接。此时小程序需要等待3秒钟,然后发送时间戳信息给模组,JSON 格式为:
{"cmdType":0,"timestamp":1234567890}

发送完成后,等待模组 UDP 服务回复签名消息:

{"cmdType":2,"productId":"0C88P7AQQ9","deviceName":"wifi_kit","connId":"eaAZy","signatu re":"e595bf7703cc383d76567f8cc13591012c495c50","timestamp":1234567890,"wifiState":"conn ected","mqttState":"connected"}

设备端签名串 signature 的生成示例请参见 calc_device_sign 函数

  1. 如果2秒内,未收到模组回复,则重复步骤7,UDP 客户端重复发送时间戳信息。如果重复发送5次,都未收到签名回复,则认为配网失败。
  2. 在以上5 - 8步骤中,如果小程序收到模组 UDP 服务发送过来的错误日志,且 deviceReply 字段的值为"Current_Error",则表示当前配网绑定过程中出错,需要退出配网操作。如果 deviceReply 字段是"Previous_Error",则为上一次配网的出错日志,只需要上报,不影响当前操作。 错误日志 JSON 格式例子:
{"cmdType":2,"deviceReply":"Current_Error","log":"ESP WIFI connect error! (10, 2)"} 
  1. 如果步骤7收到模组回复的签名串,并且 wifiState 和 mqttState 字段的值都是"connected", 则表示模组已通过 Wi-Fi 连接到云端后台,配网成功。手机可以连接到目标 Wi-Fi 路由器,与云端后台通讯。

注意:UDP 相比 TCP 是不可靠的通讯,存在丢包的可能,特别在比较嘈杂的无线 Wi-Fi 环境中,丢包率会比较大。为了保证小程序和设备之间的数据交互是可靠的,需要在应用层设计一些应答以及超时重发的机制。


方式②:腾讯连连的Smartconfig 配网

    目前适配了乐鑫ESP-TOUCH协议;具体请见另外文章:

    深度解析微信小程序smartconfig配网原理,安信可ESP-12S直连腾讯物联开发平台!!


四、腾讯物联网平台后台创建产品

     这里对于在腾讯物联网平台新建产品的教程步骤 ,自行去查阅官方文档:点我,注册产品之后再新建一个设备拿到三元组!

  • 设备产品ID : ProductID
  • 设备名字 : DeviceName
  • 设备密钥 : DeviceKey

     以下就是拿到了一个设备的三元组了,下面会用到!
在这里插入图片描述

五、开始搭建ESP8266 腾讯物联网平台接入SDK开发

    这里不再多说 基本编译环境的搭建,参考学习我之前写的文章:

    注意,目前2020.3.18号的依赖的是 ESP8266_RTOS_SDK 3.1 分支:

 git clone --single-branch -b release/v3.1 https://gitee.com/xuhongv/ESP8266_RTOS_SDK.git

    然后把 IDF_PATH 路径指向上面的文件夹!

    这时候,开始下载腾讯云提供的 ESP8266 模组接入腾讯物联网平台的SDK开发资源包 :

https://gitee.com/xuhongv/qcloud-iot-esp-wifi

     先修改设备三元组信息到HAL_Device_freertos.c里面修改在腾讯云物联网平台注册的设备信息(目前仅支持密钥设备):

/* Product Id */
static char sg_product_id[MAX_SIZE_OF_PRODUCT_ID + 1]    = "PRODUCT_ID";
/* Device Name */
static char sg_device_name[MAX_SIZE_OF_DEVICE_NAME + 1]  = "YOUR_DEV_NAME";
/* Device Secret */
static char sg_device_secret[MAX_SIZE_OF_DEVICE_SECRET + 1] = "YOUR_IOT_PSK";

     然后执行make menuconfig可进行功能配置,顶层菜单里面有对本示例的配置(QCloud IoT demo Configuration)

   [*] To demo IoT Explorer (y) or IoT Hub (n)                                       
         Select explorer demo example (Smart light example)  --->                      
   [*] To use WiFi boarding (softAP) or not                                          
   (YOUR_SSID) WiFi SSID                                                             
   (YOUR_WIFI_PW) WiFi PASSWORD   

     第二项可选择是先进入softAP配网模式(勾选)或者直接连接目标WiFi路由器(不勾选),配网模式需要与腾讯连连小程序进行配合;如果选择直接连接WiFi目标路由器,则后面两项可以用于配置要连接的WiFi路由器热点信息

     再执行make就可以在build目录下面生成固件啦。

     烧写镜像可以在Linux下面执行make flash命令,或者使用乐鑫在Windows烧录工具下载:

     烧写成功之后可以重启开发板运行程序!当出现以下步骤,即可进去配网状态了:

I (352) boot: Loaded app from partition at offset 0x10000
,ծ�INF|1970-01-01 00:00:00|main.c|qcloud_demo_task(163): qcloud_demo_task start
INF|1970-01-01 00:00:00|qcloud_wifi_boarding.c|check_err_log(304): invalid magic code: 0xffffffff
INF|1970-01-01 00:00:00|qcloud_wifi_boarding.c|start_softAP(1417): enter softAP mode
ERR|1970-01-01 00:00:00|qcloud_wifi_boarding.c|wifi_ap_init(619): esp_wifi_disconnect failed: 12290
ERR|1970-01-01 00:00:00|qcloud_wifi_boarding.c|wifi_ap_init(625): esp_wifi_stop failed: 12290
mode : sta(f4:cf:a2:5b:b2:9b) + softAP(f6:cf:a2:5b:b2:9b)
add if0
add if1
bcn 100
INF|1970-01-01 00:00:01|qcloud_wifi_boarding.c|_wifi_event_handler(531): SYSTEM_EVENT_STA_START
INF|1970-01-01 00:00:01|qcloud_wifi_boarding.c|_wifi_event_handler(559): SYSTEM_EVENT_AP_START at channel 1
DBG|1970-01-01 00:00:01|main.c|qcloud_demo_task(174): waiting for boarding result...
INF|1970-01-01 00:00:01|qcloud_wifi_boarding.c|udp_server_task(1229): UDP server socket listening...
DBG|1970-01-01 00:00:03|main.c|qcloud_demo_task(174): waiting for boarding result...
DBG|1970-01-01 00:00:04|qcloud_wifi_boarding.c|udp_server_task(1298): wait for read...
DBG|1970-01-01 00:00:05|main.c|qcloud_demo_task(174): waiting for boarding result...
DBG|1970-01-01 00:00:07|main.c|qcloud_demo_task(174): waiting for boarding result...
DBG|1970-01-01 00:00:07|qcloud_wifi_boarding.c|udp_server_task(1298): wait for read...
DBG|1970-01-01 00:00:09|main.c|qcloud_demo_task(174): waiting for boarding result...
DBG|1970-01-01 00:00:10|qcloud_wifi_boarding.c|udp_server_task(1298): wait for read...

附加 qcloud_wifi_boarding.c 说明

  • 代码包含了softAP+UDP配网(面向微信小程序)和smartconfig+TCP配网(面向app)两种方式及接口,可分别调用
  • 公用部分包括socket服务与app/小程序按照协议进行通信完成配网,设备绑定及错误信息上报的操作
  • 平台函数依赖于ESP8266 RTOS,MQTT函数依赖于腾讯云物联网C-SDK
  • 目前微信小程序仅支持softAP+UDP配网方式,故smartconfig+TCP部分可以忽略。

五、开始配网、控制 ESP8266;

     微信搜索进去 “腾讯连连” 小程序 ,添加设备,扫描二维码,二维码在【交互开发】 > 【配网引导】中的最下面!

在这里插入图片描述

     第一步,输入 2.4G频道的家庭Wi-Fi的密码!
     第二步,自己打开手机Wi-Fi设置进去ESP8266发出的热点,默认名字是 ESP8266-SAP ,而密码是 12345678
     第三步:返回来小程序,等待结果!如下所示即可成功,之后慢慢享受控制吧!

在这里插入图片描述


六、其他

     涉及到的数据交互,动作处理,我后面再为大家一一分析,时间不早了,晚安!

另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转esp8266带你飞、加群QQ群,不喜的朋友勿喷勿加:434878850
  • 个人邮箱:xuhongv@yeah.net 24小时在线,有发必回复!
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码,干货多多,第一时间推送!

在这里插入图片描述