从零开始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程
最后更新于:2022-04-01 06:58:22
笔者决定在嵌入式企鹅圈2016年的首篇文章中,发表微信硬件物联领域极具实践价值的文章,它将能指引和帮助任何有兴趣于物联网开发的童鞋们快速掌握微信硬件开发流程,只需一个小时,而再不需要通过揣摩微信硬件浩瀚的文档资料来完成艰难构建。
笔者之前曾经撰写过一篇文章《[基于微信硬件公众平台的智能控制开发流程](http://blog.csdn.net/yueqian_scut/article/details/47380109)》介绍微信硬件开发的流程,但该篇文章是理论性的描述。而本篇文章是完全可操作实践的,请结合两篇文章理解。
本篇文章的目的是快速搭建微信硬件开发的环境,完成微信硬件物联Demo。直接上图,傻瓜式教程!
**1.申请微信硬件测试公众号**
链接:[http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login](http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login),用自己的微信扫一扫即可以完成注册申请。微信测试公众账号重要信息包括:appID、appsecret和微信号。开发工程师代表厂商/运营商的角色,所以这里的微信号其实是代表厂商/运营商的微信ID.

**2.开通测试微信公众账号的设备功能接口**

开启后如下图:

**3.添加设备产品,获得产品编号**
点击设置进行添加:

添加后可以看到产品的编号,如下图。这里只是演示,选择设备品类为“血压计”,其编号是4735\. 表明要生成微信蓝牙血压计(其实是笔者的微信蓝牙开发板)。
**4.蓝牙设备授权**
微信硬件平台的核心功能之一就是对硬件设备进行身份管理。授权即是硬件设备的身份注册,其需要硬件设备的唯一地址码MAC(例如新生儿的指纹)以及人为给这个硬件设备起的名字id(例如新生儿的姓名)。
授权我们通过微信网页调试工具进行,链接是:[http://mp.weixin.qq.com/debug/](http://mp.weixin.qq.com/debug/)。
1)获取access_tocken

2) 设备授权

授权字段定义请参考:[http://iot.weixin.qq.com/document-2_6.html](http://iot.weixin.qq.com/document-2_6.html)。也可以按照以下修改:

这里要特别注意,微信硬件平台有时更新了策略又没说明白,坑很多。应该在2015年9月前注册的测试号可以在不写product_id时也能成功授权,但最近注册的测试号如果不写这个product_id会报以下错误:
{"errcode":100020,"errmsg":"accountquota not enough"}
说是“账号设备授权配额已用完,需重新申请”。晕倒,我刚注册的账号,配额就用完了,天知道微信为什么要这么搞。最后增加产品编号product_id即可以完成注册。
**5.微信硬件测试公众号自定义菜单**
1) 获取access_tocken,同上。
2) 自定义菜单,定义两个按钮

自定义菜单的效果如下:如果用户关注了该公众号,则进入该公众号后会看到底部有开灯和关灯两个button:

**6.部署后台开发环境**
1) 安装JDK,安装后设置系统高级环境变量JAVA_HOME,指向JDK的安装目录。
2) 安装tomcat,修改apache-tomcat-7.0.64\conf\server.xml,将web服务端口改为80

3) 启动tomcat, 点击apache-tomcat-7.0.64\bin\startup.bat
4) 安装MyEclipse
5) MyEclipse配置Tomcat

6) 下载微信蓝牙后台服务样例工程roseblue

7) MyEclipse导入roseblue工程
8) MyEclipse配置服务推送,即生成类文件并拷贝到tomcat的对应目录(apache-tomcat-7.0.64\webapps)。

9) 后台工程配置,修改工程配置属性指向微信测试账号

**7.配置微信测试公众号的第三方服务地址,指向tomcat所在的web服务目录**

**8.MyEclipse生成设备二维码**

这里的device_id和mac两个值和设备授权时的值务必保持一致。Device_id可以任意取值,而mac必须是蓝牙设备的真实MAC地址。
以Java application直接运行这个类可以生成设备二维码,生成路径可以修改:

**9.手机用户扫描关注这个设备二维码,完成设备绑定。**
例如昵称为O的微信用户绑定了这个设备,则在微信测试公众号的后台可以看到它的微信号。

**10.修改roseblue工程的通信设备配置**

暂时不使用数据库,可以将所有的数据库操作注释掉,并直接硬编码。
deviceType即是第1步里面的微信号
deviceID即是设备授权时的deviceID
openID是绑定这个设备的用户的手机微信ID,如昵称为O的微信ID。
11.实现Airsync协议的微信蓝牙开发板上电,开始广播。
12.微信昵称为O的用户打开订阅的微信测试公众号,开始自动扫描并连接微信蓝牙开发板。
13.公众号连上微信蓝牙开发板后,即可以发开灯和关灯指令,对微信蓝牙开发板进行控制。
**如果想要以上安装程序和代码敬请关注嵌入式企鹅圈,并发消息给嵌入式企鹅圈获取资讯。**
OK, 所有的微信硬件开发流程全部完成!可以看到,当你拥有一块实现Airsync协议的微信蓝牙开发板时,即可立刻开始微信硬件物联的Demo。笔者研发的基于Ti CC2541的微信蓝牙模组和微信蓝牙开发板已经量产,能够同时支持微信Airsync协议和一般APP串口透传,用户可以直接在此基础上进行应用控制开发。

你希望立刻拥有这块开发板吗?还记得嵌入式企鹅圈2015年的总结吗?原创技术分享是互联网的核心理念,如果你能够关注嵌入式企鹅圈后向嵌入式企鹅圈投稿(yqwucheng@163.com)一篇有关嵌入式和物联网相关的原创技术总结,一经录用,嵌入式企鹅圈将会赠送你一块微信蓝牙开发板!
笔者前天受邀请到深圳参加CSDN优秀专家年底party,分享一下活动合影!

**更多嵌入式Linux和物联网原创技术分享敬请关注微信公众号:嵌入式企鹅圈**
