笔者决定在嵌入式企鹅圈2016年的首篇文章中,发表微信硬件物联领域极具实践价值的文章,它将能指引和帮助任何有兴趣于物联网开发的童鞋们快速掌握微信硬件开发流程,只需一个小时,而再不需要通过揣摩微信硬件浩瀚的文档资料来完成艰难构建。
笔者之前曾经撰写过一篇文章《基于微信硬件公众平台的智能控制开发流程》介绍微信硬件开发的流程,但该篇文章是理论性的描述。而本篇文章是完全可操作实践的,请结合两篇文章理解。技术咨询请发邮件至yqwucheng@163.com
本篇文章的目的是快速搭建微信硬件开发的环境,完成微信硬件物联Demo。直接上图,傻瓜式教程!
1. 申请微信硬件测试公众号
链接: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/。
1) 获取access_tocken
2) 设备授权
授权字段定义请参考: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.公众号连上微信蓝牙开发板后,即可以发开灯和关灯指令,对微信蓝牙开发板进行控制。