RaspberryPi+SAE+Wechat打造智能家居篇(三)

本来是不想写全这教程的,其实通过前2篇文章已经实现了功能对接,并且sae在傍晚经常会无法访问微信,具体原因未知,渣浪和企鹅的客服都是说是对方的问题,如果你非要实现远程控制功能,建议自己购买VPS中转,反正我是这么做了….


自定义菜单

先来看一下WeChat的自定义菜单接口说明,通过往微信API接口post一段json字符串来创建自定义菜单,在菜单中定义了类型,名称,和key的键值

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

{
“button”:[
{
“type”:”click”,
“name”:”今日歌曲”,
“key”:”V1001_TODAY_MUSIC”
},
{
“name”:”菜单”,
“sub_button”:[
{
“type”:”view”,
“name”:”搜索”,
“url”:”http://www.soso.com/
},
{
“type”:”view”,
“name”:”视频”,
“url”:”http://v.qq.com/
},
{
“type”:”click”,
“name”:”赞一下我们”,
“key”:”V1001_GOOD”
}]
}]
}
在代码上实现也是非常简单的,就略过不说,如果实在自己不会写,使用官方提供的在线调试接口创建,只需要把你自己的JSON字符串填入即可


然后就可以在sae平台上写入你希望的功能代码
这里我用开启电灯为例(具体硬件为继电器模块)
这里贴出了关键代码

if mstype == 'event':  #判断消息类型
    type = xml.find("Event").text            
    if type== 'CLICK': #判断是否为点击按钮事件
        if EventKey == 'OPEN': #判断Key值,执行相应指令
            Key = 'justmyroom'
            Commands = 'LightOn'
            API_url = "http://%s:8023/api/%s/%s" %(mc.get('ip'), Commands, Key)

            try:
                res =  urllib2.urlopen(url = API_url)
                json_data =  json.loads(res.read())

                if json_data['status'] == 'ok':
                    return self.render.reply_text(fromUser,toUser,int(time.time()),u'电灯已经打开了')
                else:
                   return self.render.reply_text(fromUser,toUser,int(time.time()),u'电灯未开启')
            except:
                  return self.render.reply_text(fromUser,toUser,int(time.time()),u'Pi端服务未开启')

具体就是通过传过来的消息类型,判断点击按钮的key,然后通过PI上报的IP地址,去往PI的对外接口发送数据,让接口执行相应的过程后返回成功状态,然后sae返回数据到微信,整个过程就这样实现

至于Pi上的服务端,如果你有仔细看过前2篇文章,相信自己写出来也是很容易的,这里就不贴了…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值