Weline,让微信轻松的连接硬件

用微信连接硬件,通过微信随时随地了解自己的设备状态,这或许是很多极客和硬件开发者的心愿。如果还苦恼于不知如何连接微信,不防试试Weline,通过Weline,你可以让自己的微信轻松连接任意硬件。
Weline是基于微信的物联网平台。拥有微信公众号的用户,无论是订阅号还是服务号,都可以对接到平台使;如果没有微信公众号,也可以通过关注已经对接平台的公众号来实现控制。总之,Weline的有两种用户群体,一种是拥有公众号的人群,例如高级开发者、硬件厂家等,另一种是没有公众号的用户群体,例如普通消费者、极客(当然极客们也是可以有的)…
好了,先看张图:

如上图,通过简单的配置以后,微信公众号就可以实现这样的功能,目前,Weline已经实现了开关型设备和数值型设备的主要功能,基本可以满足绝大多数情况下的需要,在云端管理上,Weline也已经实现了自定义的阀值触发机制。
在Weline平台操作和编辑公众号非常的方便,只需要像对应的设备添加关键词,并为添加的关键词设置一个动作,那么用户在回复此关键词的时候,就可以完成相应的动作。


上面做完了简介,下面我们介绍一下如何使用。
1.申请微信公众账号
打仗怎么可以没有武器?!要通过微信控制你的硬件,没有公众账号怎么行!申请账号也很简单,在微信官方申请即可,官方微信公众账号申请地址: https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN
通过这种方式申请,一般我们也要经历3天的等号时间,因为腾讯要审核你所提交的资料,那么为了快速起见,我们可以直接申请测试账号,申请地址: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 申请测试账号非常快,申请完即可拿到自己的测试账号,下面的介绍,我们主要以测试账号为例,正式公众号操作基本相同。

如上图,只需要点击登录,然后用自己的微信扫描二维码,就可以申请到自己的微信公众测试账号。拿到测试账号以后,第一步工作就基本完成了,这一步大约耗时1分钟。
2.配置接口
这一步同我们使用小猪CMS,微客来,微盟这样的第三方平台是一样的,需要在平台去配置你的账号信息,这一步也很简单:

填写公众号名称,原始ID和微信号:

获取URL和Token:

在微信后台配置URL和Token:

填写AppID和AppSecret:

完成上面的步骤以后,配置就OK了,点击保存即可。右侧是Weline所提供的基础功能,通用设备中已开放了数值型和开关型两类通用设备,下来我们介绍一些如何使用这些设备。
3.添加触发关键词和相应动作
我们以开关型设备为例,在左侧点击通用设备–>开关型设备–>动作管理–>新增,我们添加一条动作:

添加完成后,就可以在开关型设备–>动作管理的列表中看到刚才添加的动作了,这一步完成后,我们就可以在公众号端来测试了。
但是在这之前,要先关注自己刚申请的公众号,在刚才的申请页面下面有二维码 ,自己扫一下关注即可。
好了,也关注完了,那就开始测试吧,我们回复关键词 打开 发现公众号提示我们还没有创建设备,需要先创建,回复创建即可创建,OK,我们回复 创建 ,公众号提示创建成功(创建成功后,就可以在Weline的开关型设备–>设备列表中看到刚才创建的设备了),我们再回复 打开 ,微信返回:已打开设备 至此模拟测试完成。如下图:

4.优雅的连接硬件,然后逗逗它
我们以获取开关状态为例,获取设备状态的api地址格式:
- http://api.weline.top/index.php/switch/Function/id/YourID
我们的设备ID为1,获取设备状态的function为getstatus,所以对应的api就是:
- http://api.weline.top/index.php/switch/getstatus/id/1
但是在请求的时候不要忘了在请求头加入你的Openid,Openid是你和所关注公众号之间的唯一标识!
OK,上面的理解了,我们上硬件来测试。硬件我们选择arduino和enc28j60分别做控制器和网关,硬件的连接如下图:

连接好硬件,我们来写程序,程序如下:
- #include <EtherCard.h>
- static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
- byte Ethernet::buffer[600]; //稍微大一点,缓存返回的数据
- static uint32_t timer;
- char website[] PROGMEM = “api.weline.top”;
- char urlBuf[] PROGMEM = “/index.php/switch/getstatus/id/1”;
- //自己的Openid,可在公众号中找到
- char openid[] PROGMEM = “Openid: ov4OsuOHxAnuRsneim7f_itgY_xs”;
- //回调函数
- static void my_callback (byte status, word off, word len) {
- String reply=(const char*)Ethernet::buffer + off;
- Serial.println(reply);
- }
- void setup () {
- Serial.begin(9600);
- Serial.println(F(“[webClient]”));
- if (ether.begin(sizeof Ethernet::buffer, mymac,5) == 0){
- Serial.println(F(“Failed to access Ethernet controller”));
- }
- if (!ether.dhcpSetup()){
- Serial.println(F(“DHCP failed”));
- }
- ether.printIp(“IP: “, ether.myip);
- ether.printIp(“GW: “, ether.gwip);
- ether.printIp(“DNS: “, ether.dnsip);
- if (!ether.dnsLookup(website)){
- Serial.println(“DNS failed”);
- }
- ether.printIp(“SRV: “, ether.hisip);
- }
- void loop () {
- ether.packetLoop(ether.packetReceive());
- if (millis() > timer) {
- timer = millis() + 5000;
- ether.httpPost (urlBuf, website, openid, “”, my_callback);
- }
- }
我们把程序下载进去,然后连接网线,打开串口:

可以看到返回为{"status":"1"}表示设备此时的状态为开,如果返回{"status":"0"},表示设备此时状态为关,如果身份验证失败,则会返回{"result":"0","openid":"0"}。
我们来通过微信测试一下控制,打开Weline,我们为它添加一条动作,关键词设置为 关闭 ,触发动作设置为 关闭设备 ,在上面我们是通过回复文字来实现控制的,在这里我们试试说话,我们对着微信公众号发一条语音,说一声 关闭 ,然后看看返回的结果:

OK,我们只需要让arduino把返回来的JSON处理一下,就可以实现硬件的控制,如果你觉得打字麻烦,还可以设置自定义菜单,或者对这个它说话~
OK,到这里就演示结束了,还有其他更多的function,可以满足大多数情况下的需要,更多精彩,尽在Weline!

- 本文固定链接: http://oszine.com/weline-wechat-hardware/
- 版权归《开源杂志》所有,转载请保留二维码并注明: zx_1923 于 开源杂志 发表




发表评论
Comment List(1)
段永明
2015.4.28 20:04
mark