微信硬件平台开发

微信硬件平台开发

本文记录在开发微信硬件平台种种的坎坷,为什么说坎坷呢?其实微信硬件平台开发并不难,难就难在开发文档有点keng,对此不敢恭维。本项目使用的设备是直连SDK的有线设备,如果是蓝牙或者wifi设备,本文并没有解释如何接入微信,下面将一一掀开微信硬件开发的面纱,解释整个开发流程以及有坑的地方。


一、整体框架:

本项目使用的是硬件设备直连SDK,官方的解释是“ 微信硬件平台为设备提供直连数据通道,设备可以通过直连SDK直接接入微信硬件服务器,打通设备到云端的通道”。左图是被许多人吐槽过的,也是我遇到的大坑,其实这个图并没有错,流程确实是这样,用微信提供的H5面板是可以直接控制直连设备的。如果不用微信提供的H5面板,并且需要调用openapi(一组用于和设备交互的API),那么整个项目流程就多了一步:微信客户端-->设备云服务器-->微信硬件云-->设备。



二、微信客户端开发:

在项目中,使用的是H5开发,也可以用微信提供的H5面板来改造。众所周知,html运行在客户端,数据通过restful接口与服务器交互,这里主要是post,关键的是服务器这一环节是怎样实现。


三、服务器端:

这里所说的服务器是自己搭建的,并不是微信硬件服务器,这个要区分好。本项目服务器环境是Linux+Nginx+Php+Mysql,接下来就是调用openapi了,微信硬件开发文档其实写得挺清楚的,主要就是设备查询GET,设备控制SET和设备主动上报NOTIFY。



当在微信设置了服务器地址时,微信的数据都是通过json传过来,而不是xml,下面以设备查询GET为例子:

<span style="white-space:pre">		</span>$url = "https://api.weixin.qq.com/hardware/mydevice/platform/get_device_status?access_token=" . $access_token;//改为您的token
		$operation_status = array (
				"status" => 1 
		);
		
		$post_data = array (
				"device_type" => $device_type,//您的设备类型
				"device_id" => $device_id,//您的设备id
				"services" => array (
						"operation" => $operation_status //必需的功能项
				),
				"user" => $openid,
				"data" => ""
		);
		$data = json_encode ( $post_data );//处理完就可以post上去了

当你收到
{“error_code”: 0,“error_msg”: “ok”} 
的时候,那么恭喜你,你post的数据正确了。如果不是,那就看看error_code是什么了,再看开发文档来解决问题了。
还有set和notify都是同样的道理,这里就不贴代码了。同时要注意的是微信所提供的API并不是所有的都是无限次调用的,例如accesstoken就只有2000次/天等等,所以这些有限制的东东就要保存好,避免重复调用浪费次数和消耗服务器资源。

四、设备端:

设备端是Linux设备,主要实现start()以及三个回调函数,应该没有什么大问题,这里要注意的是devicelicence、deviceid、qrticket这三个东东要保存好,因为设备授权是有限额的,申请了但是没有保存到数据库就浪费了。



五、总结:

本文只关注与整个开发流程,其中一些小细节(设备绑定、设备授权)等等没有提及到,以后可能会更新,如有错误的地方欢迎指出,转载请注明出处。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值