微信蓝牙BLE接入调试指引 测试公众号篇(根据别人调试通过,做下记录)

2023-12-27 11:50

本文主要是介绍微信蓝牙BLE接入调试指引 测试公众号篇(根据别人调试通过,做下记录),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信蓝牙BLE接入调试指引

测试公众号篇

微信测试公众号

2.1 申请测试公众号

可以在http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login申请到一个用于测试的公众号,这个帐号可以用于调试具用AirSync协议的蓝牙设备,简精协议好像调不了。

申请步骤:

打开网址,点击登陆后,出来二维码,用微信扫一下,在弹出的页面点确认登陆,然后网页会自动进入测试号界面

 

进入后,注意一下上图标红线的值,BLE固件里的DEVICE_TYPE的值要改成上面标红微信号的值,而appIDappsecret这两个值在获取access_token时会用到。

2.2 添加蓝牙产品

在测试号界面,找到“功能服务”-》“设备功能”,点开启,然后进行设置,进去后添加产品,然后参考下图填写,就红圈要注意,其他随便填。

 

 

 

 

 

添加完后,并不表示进入公众号后就可以去连蓝牙了,这只是将公众号配置成具有蓝牙功能,想要连接蓝牙设备,还得继续往下。另外,注意上图标红圈的那个值6563,它是产品IDproduct_id),在授权时会用到。

 

另外,说明一下,这里提到的产品是什么意思,要是以为是一个设备就是一样产品,那就惨了,因为测试帐号的限额就5个产品。我的理解是,一个产品,是指具有相同接口功能的硬件,比如蓝牙手表,就一个产品,所有手表都是同一个产品,蓝牙手环也是一样产品,WIFI功能的设备,就另一个产品,是一样大种类,或者叫做功能类别。

 

刚创建的这个产品,只是个空壳,接下来使用“微信公众平台接口调试工具”

http://mp.weixin.qq.com/debug

来向产品添加蓝牙设备。

2.3 添加蓝牙设备

打开http://mp.weixin.qq.com/debug,接口类型和接口列表按下图填写:

 

然后再一下appidsecret的值,appid是测试号界面的appID,secretappsecret。填好后点一下“检查问题”,正常的话,会返回:

 

上面的请求地址,意思是,点击“检查问题”按钮时,实际执行的就是这个指令,你把这个地址拷到网页浏览,显示的信息就是返回结果。

access_token 叫访问令牌,它的有效期是2小时,它的作用是下面提到的指令都得带访问令牌,否则测试号后台是不会接受的。

 

获取到access_token后,我们就可以添加设备了。将接口类型选择为“硬件接入API接口调试”,接口列表选择为“设备授权”:

 

body里填入下面信息:

{

    "device_num": "1", 

    "device_list": [

        {

            "id": "device3", 

            "mac": "f4e6f41549f2", 

            "connect_protocol": "3", 

            "auth_key": "000102030405060708090a0b0c0d0e0f", 

            "close_strategy": "1", 

            "conn_strategy": "1", 

            "crypt_method": "1", 

            "auth_ver": "1", 

            "manu_mac_pos": "-1", 

            "ser_mac_pos": "-2"

        }

    ], 

    "op_type": "0", 

    "product_id": "6563"

}

正常返回如下:

 

 

我们来解读一下BODY的信息,BODY是一个json结构,即“变量”:“值”的格式构成,不清楚的可以查一下。

{

    "device_num": "1", //表示device_list里有多少项,1表示1项,如果是2list就得有两项。 

    "device_list": [ //设备列表

        {

            "id": "device3", //这个值要与BLE固件里的DEVICE_ID一致,可以自定义,也可通过微信HTTP接口生成。

            "mac": "f4e6f41549f2", //这个值是硬件篇提到的BLE设备的MAC地址,与广播数据里的MAC地址顺序一样,也和手机扫描到的MAC地址顺序一样。

            "connect_protocol": "3", //3 表示BLE蓝牙协议

            "auth_key": "000102030405060708090a0b0c0d0e0f", //BLE固件里的aes_key值一致。

            "close_strategy": "1", //1:退出公众号页面时即断开连接

            "conn_strategy": "1", //1:(第1bit 置位)在公众号对话页面,不停的尝

试连接设备

            "crypt_method": "1", //1:AES 加密

            "auth_ver": "1", //加密版本,0是不加密

            "manu_mac_pos": "-1", //-1:MAC地址在尾部

            "ser_mac_pos": "-2" //-2:表示serial number不包含mac 地址

        }

    ], 

    "op_type": "0", //0 表示新增,1表示更改,第一次用0,之后用1

    "product_id": "6563" //对用添加的产品号,op_type = 0时需要。

}

 

设备授权,不表示进入微信号后就会连接设备,只是表示在后面的配置里可以被引用。

 

对上面的“id”项,详细说明一下,id指的是device_id,是唯一的,不能重名,它有两种产生方式,一种是用户自己定义,如上的device3就是我自己取的,另一种是调用微信接口产生:

 

一般在这里只填access_token,会产生错误提示:

{

    "base_resp": {

        "errcode": 100020, 

        "errmsg": "account quota not enough"

    }

}

原因是deviceid的产生需要指定产品ID,表明它是基于哪个产品。解决方法是:在access_tokey里填写ACCESS_TOKEN&product_id=PRODUCT_ID,如下:

向上滚动鼠标到这个界面,并填写如图所示内容,其中的access_token填写刚才获取到的那个字符串并在末尾加上&product_id=21816(注意,这个数字是在第一阶段的第7步所得到的那个,这里的21816是我自己的,需要填写自己对应的那个)。

 

 

http的请求方式:

https://api.weixin.qq.com/device/getqrcode?access_token=ue48NdvmlCrEcknhRP0FJwmeg0d0hOu9aB9Q9ZW0d6HB-RhM6O2ffnSxhzXvH8ClAgSJ1mYnHiQLRScXCH3tMfXv5X-Wlk5kYC6waMPCpyMIYKgAGAQGS&product_id=6563

 

正常返回结果:

 

会产生一个deviceid和一个二维码地址。这个二维码地址是对应该设备的,它与公众号二维码的不同是,它加入了设备信息,用户在扫描二维码后,可以绑定设备,而扫描公众号二维码,则不会要求绑定设备。

 

二维码地址可以通过这个网站http://cli.im/url来产生二维码图片。

 

另外,自己定义的device id,可以通过下命令来产生二维码地址:

curl https://api.weixin.qq.com/device/create_qrcode?access_token=ACCESS_TOKEN -d "{\"device_num\":\"1\", \"device_id_list\":[\"device3\"]}"

上面的access_tokendevice3要换成自己的。

Curl命令一般在Linux终端下使用比较方便,WINDOWS的自己查一下。

2.4 绑定设备

二维码图片产生后,在微信扫一扫,就会跳出绑定界面,已绑过的除外。

 

点击绑定后,微信就会将device3与用户的微号进行绑定,可以通调试接口工具,在“查询用户绑定的设备”中查到,

 

Openid是用户微信号,当用户微信关注设备后,可以在测试号界面里的用户列表上看到。

查询用户绑定的设备”也可通过下面命令查到:

https://api.weixin.qq.com/device/get_bind_device?access_token=ACCESS_TOKEN&openid=微信号

 

这里的绑定,不是实际物理意义上的绑定,只是软件的配置,并没有形成实际的连接。在绑定后,进入公众号,公众号就才会根据它绑定的设备去扫描,当找到对应的设备后,才去连接。所以,如果没有配置好绑定信息,进入公众号后是不会去连接设备的。

 

另外,除了通过扫描设备二维码去绑定设备,还可以通过HTTP接口来绑定设备,这个可以参考下面2.6提到的强制绑定设备。

 

至此,绑定设备后就可以在公众号里连接BLE设备,完成第一阶段的握手,当然,数据的互发还得等第三方服务器建好后。

2.5 设备接入接口协议

可以看到,调试工具的每个接口都有对应的http请求方式,这些请求方式,在《设备接入接口协议V2.3.2》里有详细解释,可以在http://iot.weixin.qq.com/wiki/new/index.html?page=6-1下载。

 

接入接口协议有涉及第三方服务器接口,也有微信本身接口,下面做一下简单导读。

 

打开文档后,翻到目录,前缀是“消息接口”的,是微信发给第三方服务器的,方式是向地址http://URL?signature=SIGNATURE×tamp=12345678&nonce=NONCE发送一段格式如下的xml数据:

<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%u</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<DeviceType><![CDATA[%s]]></DeviceType>

<DeviceID><![CDATA[%s]]></DeviceID>

<Content><![CDATA[%s]]></Content>

<SessionID>%lu</SessionID>

<MsgID>%lu</MsgID>

<OpenID><![CDATA[%s]]></OpenID>

</xml>

然后,第三服务器也会回应一段xml数据,格式如下:

<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%u</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<DeviceType><![CDATA[%s]]></DeviceType>

<DeviceID><![CDATA[%s]]></DeviceID>

<SessionID>%u</SessionID>

<Content><![CDATA[%s]]></Content>

</xml>

 

在目录中,前缀为“API”的,是对微信进行操作的接口,比如配置微信,上面2.32.4提到的添加设备、查询绑定,以及通过微信往设备发数据等。API方式,是请求微信的API地址,如果附带有参数或数据,则发一段JSCON格式的数据,如获取设备二维码:

curl https://api.weixin.qq.com/device/create_qrcode?access_token=ATOKEN -d

"{\"device_num\":\"2\", \"device_id_list\":[\"ID1\",\"ID2\"]}"

2.6 API调试

调试公众号后台,常用到的几个API

 

获取ACCESS_TOKEN:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appID&secret=appsecret

appIDappsecret可以在测试号界面找到。

ACCESS_TOKEN是其他API的访问令牌,有效期是2小时。

 

获取设备二维码:

curl https://api.weixin.qq.com/device/create_qrcode?access_token=ACCESS_TOKEN -d "{\"device_num\":\"1\", \"device_id_list\":[\"device1\"]}"

device1是用户自定义的设备ID

 

授权设备:

curl https://api.weixin.qq.com/device/authorize_device?access_token=ACCESS_TOKEN -d '{"device_num": "1","device_list": [{"id": "device1", "mac": "f4e6f41549f2", "connect_protocol": "3","auth_key": "", "close_strategy": "1","connect_protocol": "3","conn_strategy": "1","crypt_method": "0","auth_ver": "0","manu_mac_pos": "-1","ser_mac_pos": "-2"}], "op_type": "1", "product_id": "6563"}'

各项参数在2.3有提到。

 

查询用户绑定的设备:

https://api.weixin.qq.com/device/get_bind_device?access_token=ACCESS_TOKEN&openid=OPEN_ID

OPEN_ID是用户的微信号。查询该微信号已绑定的设备。

 

强制绑定设备

Curl https://api.weixin.qq.com/device/compel_bind?access_token=ACCESS_TOKEN -d ‘{"device_id": "device1","openid": "OPEN_ID"}’

device1是用户自定义的设备IDOPEN_ID是用户微信号

 

强制解绑设备

Curl https://api.weixin.qq.com/device/compel_unbind?access_token=ACCESS_TOKEN -d ‘{"device_id": "device1","openid": "OPEN_ID"}’

device1是用户自定义的设备IDOPEN_ID是用户微信号

这篇关于微信蓝牙BLE接入调试指引 测试公众号篇(根据别人调试通过,做下记录)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543036

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件