|
本帖最后由 michael_llh 于 2017-10-29 15:24 编辑
我们之前聊了关于wiolink的API使用方式,这个是很创新的,通过API的方式我们可以很快速的开发上层的应用,而且我们可以不需要关心底层的是怎样实现的,这次我们利用这个API的方式简单开发一个小型的项目:楼层的声控灯实现
我们这里需要两个东西,一个是声音传感器,一个就是LED了。
关于怎么连接WioLink和将API信息发送到邮件我们已经讲解过了,这里不在说明了。
还有需要注意到一个细节,就是我们可以使用Curl来获取这些内容,之前我们验证的是直接用HTTP进行请求,两者都是可以的。针对Curl在网络传输这块支持是非常全的,而且是开源的,具体大家可以curl官网进行查看:
https://curl.haxx.se/
本次的小项目我们就以Curl的方式来尝试实现一下:
这里选择python+pycurl的方式来实现,当然如果你使用c语言获取其他也是ok的,curl支持的是非常全面的。
python的搭建环境在windwos下和linux都是比较简单的,windows下面有对应的安装包直接安装就可以了。同时我们需要安装一下python的包管理工具pip,因为我们需要安装一些库来支持我们的功能;
安装好了python和pip之后需要安装两个包,具体执行命令如下:
- pip install pycurl
- pip install certifi
复制代码
pycurl模块是curl对Python支持的包,另外一个证书相关的包,因为我们这里是需要用到https,所以需要安装,不然无法支持。
连接好我们的wiolink,更新好firmware之后我们就可以在本地编程实现了!
代码如下:
- import pycurl
- import StringIO
- import certifi
- import json
- import time
- getsoundurl="https://cn.wio.seeed.io/v1/node/GroveSoundA0/sound_level?access_token=7d2047855953f7d2649172782fab2ce2"
- onledurl="https://cn.wio.seeed.io/v1/node/GenericDOutD0/onoff/1?access_token=7d2047855953f7d2649172782fab2ce2"
- offledurl="https://cn.wio.seeed.io/v1/node/GenericDOutD0/onoff/0?access_token=7d2047855953f7d2649172782fab2ce2"
- def getSoundLevel():
- b=StringIO.StringIO()
- c=pycurl.Curl()
- c.setopt(pycurl.URL, getsoundurl)
- c.setopt(pycurl.CAINFO, certifi.where())
- c.setopt(pycurl.WRITEFUNCTION, b.write)
- c.setopt(pycurl.FOLLOWLOCATION, 1)
- c.setopt(pycurl.MAXREDIRS, 5)
- c.perform()
- #print b.getvalue()
- data = b.getvalue()
- data = json.loads(data)
- #print data['sound_level']
- #print c.getinfo(c.HTTP_CODE)
- b.close()
- c.close()
- return data['sound_level']
- def onLed():
- c=pycurl.Curl()
- c.setopt(c.URL, onledurl)
- c.setopt(pycurl.CAINFO, certifi.where())
- c.setopt(c.POSTFIELDS, '')
- c.perform()
- c.close()
- def offLed():
- c=pycurl.Curl()
- c.setopt(c.URL, offledurl)
- c.setopt(pycurl.CAINFO, certifi.where())
- c.setopt(c.POSTFIELDS, '')
- c.perform()
- c.close()
- def main():
- while True:
- soundLevel = getSoundLevel()
- if soundLevel > 200:
- onLed()
- time.sleep(3)
- offLed()
- time.sleep(0.1)
- if __name__ == '__main__':
- main()
复制代码
可以看到通过这种API的方式我们开发一个应用是非常方便的!这一点真的是非常好!
传感器有点不太灵敏啊!简单有手掌拍它来表示获取声音了哈!
此内容由EEWORLD论坛网友michael_llh原创,如需转载或用于商业用途需征得作者同意并注明出处
|
|