咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

微信硬件平台接入

微信硬件平台方案

假如我们要有一个WiFi硬件产品,已经有与自己的服务器通讯的私有协议,现在要接入到微信公众号平台,那将如何选择对接方案呢?

《微信硬件平台》 有两大类接入方案:微信硬件云标准接入方案平台基础接入方案

选择接入方案.png

调试工具

微信公众平台接口调试工具

硬件接口api接口调试.png

设备绑定通知.png

注意:此处已认为你已对接完成微信公众平台,比如已经能接收微信平台的文本消息等,并且已经开启“设备功能”。

名称约定

设备:这里指WiFi设备,跟微信没有近场通讯的功能。

硬件云:我们的服务器

微信云:微信公众号平台的服务器,推送的是xml格式消息

微信IoT云(微信硬件云):微信硬件平台的服务器,推送json格式消息

以下 “我们的服务器” 统一称为 “服务器”

一、平台基础接入方案

摘录微信:设备不对接微信硬件云,设备消息将以xml格式发送到开发者在 公众平台/基本配置 填写的服务器地址。可以使用连接、消息接收等基础能力,但将不具备微信硬件平台制定的产品标准能力。

平台基础接方案.png

这种方案相对简单,微信云 将消息以普通的消息(如文本消息,xml格式)一样推送到服务器。

注意:不需要在 设备功能-设置 配置服务器URL。

我们使用 调试工具 的来模拟 微信云 推送过来的消息,选择 接口类型:使用硬件接入消息接口调试 ,里面有4个接口:

  1. 设备向后台发送数据

    这个接口是指:设备通过微信和服务器通信,并且接收服务器的响应。指的应该是 近场通讯 ,忽略。

  2. 请求绑定消息

    这应该是过期的接口,在文档上没找到,忽略。

  3. 绑定、解绑消息

    这个接口非常重要,用户扫码绑定设备或者解除绑定,微信云 都会推送到服务器,服务器可以进行关系的绑定和解除。

  4. WiFi设备连接状态订阅、退订消息

    这个是状态(如在线、离线),用户在微信上需要知道设备的状态,所以 微信云 需要向服务器订阅状态,微信云推送订阅消息时,服务器需响应设备的状态数据,当设备的状态改变时,需主动将状态数据发送给 微信云

其中,设备向后台发送数据 的消息类型是device_text ,其他三个是 device_event 。如绑定事件消息:

1
2
3
4
5
6
7
8
9
10
11
12
<xml>
<ToUserName><![CDATA[gh_44d240793a14]]></ToUserName>
<FromUserName><![CDATA[oQyEgw2RrBdvRkFm-X2dTCcDlT8I]]></FromUserName>
<CreateTime>1544586669</CreateTime>
<MsgType><![CDATA[device_event]]></MsgType>
<Event><![CDATA[bind]]></Event>
<DeviceType><![CDATA[gh_44d240793a14]]></DeviceType>
<DeviceID><![CDATA[RSJMPLUG00002223]]></DeviceID>
<Content><![CDATA[]]></Content>
<SessionID>0</SessionID>
<OpenID><![CDATA[oQyEgw2RrBdvRkFm-X2dTCcDlT8I]]></OpenID>
</xml>

总结:该方案利用绑定、解绑事件实现了用户和设备的绑定,应用场景即可根据需求开展。

举例:我的设备是一块 微信相框 ,在公众号上发送一张照片,微信云 推送到服务器,服务器通讯绑定关系,将照片通过自己定义的通讯协议推送给微信相框微信相框就可以把照片显示出来了。

二、微信硬件云标准接入方案

摘录微信:若选择该方案,设备消息将以 Json 格式发送到开发者在 设备功能/设置 填写的服务器地址
该方案的产品可拥有微信硬件平台制定的产品标准能力,实现设备互联与数据互通。

微信硬件云标准接入方案.png

设备直连微信硬件云通道

摘录微信:设备可通过微信硬件平台提供的直连SDK,直接与微信硬件云对接

这部分是硬件直接连接微信云,不需要自己搭建服务器了,不是我们要对接的部分,省略。

厂商云连接微信硬件云通道

摘录微信:设备连接厂商服务器后,可通过设备 openAPI 与微信硬件云对接。

这种方案用的比较多,大部分产商都是用此方案。该方案要在 设备功能/设置 配置服务器URL,这个URL一样需要验证,但是接收的数据将不是 xml 格式,而是 json 格式,所以这个URL最好和 公众平台/基本配置 的不一样。

调试工具 没有测试 微信IoT云 推送事件的功能,只有测试 服务器 通知 微信IoT云 的接口。

不过没关系,我们先配置好服务器URL,进入”设备功能”,点击”添加产品” 添加一个产品,通过 调试工具 生成一个设备ID二维码,用微信扫描,直接绑定设备,就能收到推送事件。

扫码绑定 通知消息格式(解绑相同):

1
2
3
4
5
6
7
8
9
10
11
{
"device_id": "xxxxx",
"device_type": "xxxxxx",
"msg_id": 657728900,
"msg_type": "bind",
"create_time": 1544600955,
"open_id": "xxxxx",
"session_id": 0,
"content": "",
"qrcode_suffix_data": "xxxxxxx=="
}

接收到事件之后,需要异步处理,这一点和 平台基础接入方案 的阻塞处理不同。假如收到绑定事件,要立刻响应结果(内容不重要),服务器在处理完绑定事件之后,需要发送一个POST请求到 微信IoT云 ,告诉它我们服务器处理的结果。

这里只接受绑定和解绑的事件,功能其实和 平台基础接入方案 一样。

另外这个方案主要是使用 《微信硬件平台设备端OpenAPI》 ,这个东西的作用就是:微信IoT云设备 通信,而通信的中间人就是我们在 设备功能/设置 填入的URL 服务器

通信都是异步方式,类型分为三类:

  1. 微信IoT云 向服务器查询设备消息
  2. 微信IoT云 向服务器设置设备消息
  3. 服务器通知微信IoT云消息

《微信硬件设备于端数据接口》

方案选择

如果不需要用到 OpenAPI 的话,其实厂商云连接微信硬件云通道平台基础接入方案 都可以,只需要绑定关系即可,厂商云连接微信硬件云通道 的功能更加强大。