1983|0

1158

帖子

2

TA的资源

版主

楼主
 

wio link测评之三 [复制链接]

本帖最后由 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之后需要安装两个包,具体执行命令如下:
  1. pip install pycurl
  2. pip install certifi
复制代码

       pycurl模块是curl对Python支持的包,另外一个证书相关的包,因为我们这里是需要用到https,所以需要安装,不然无法支持。

       连接好我们的wiolink,更新好firmware之后我们就可以在本地编程实现了!

      代码如下:
  1. import pycurl
  2. import StringIO
  3. import certifi
  4. import json
  5. import time

  6. getsoundurl="https://cn.wio.seeed.io/v1/node/GroveSoundA0/sound_level?access_token=7d2047855953f7d2649172782fab2ce2"
  7. onledurl="https://cn.wio.seeed.io/v1/node/GenericDOutD0/onoff/1?access_token=7d2047855953f7d2649172782fab2ce2"
  8. offledurl="https://cn.wio.seeed.io/v1/node/GenericDOutD0/onoff/0?access_token=7d2047855953f7d2649172782fab2ce2"

  9. def getSoundLevel():
  10.         b=StringIO.StringIO()
  11.         c=pycurl.Curl()
  12.         c.setopt(pycurl.URL, getsoundurl)
  13.         c.setopt(pycurl.CAINFO, certifi.where())
  14.         c.setopt(pycurl.WRITEFUNCTION, b.write)
  15.         c.setopt(pycurl.FOLLOWLOCATION, 1)
  16.         c.setopt(pycurl.MAXREDIRS, 5)
  17.         c.perform()
  18.         #print b.getvalue()
  19.         data = b.getvalue()
  20.         data = json.loads(data)
  21.         #print data['sound_level']
  22.         #print c.getinfo(c.HTTP_CODE)
  23.         b.close()
  24.         c.close()
  25.         return data['sound_level']

  26. def onLed():
  27.         c=pycurl.Curl()
  28.         c.setopt(c.URL, onledurl)
  29.         c.setopt(pycurl.CAINFO, certifi.where())
  30.         c.setopt(c.POSTFIELDS, '')
  31.         c.perform()
  32.         c.close()

  33. def offLed():
  34.         c=pycurl.Curl()
  35.         c.setopt(c.URL, offledurl)
  36.         c.setopt(pycurl.CAINFO, certifi.where())
  37.         c.setopt(c.POSTFIELDS, '')
  38.         c.perform()
  39.         c.close()

  40. def main():
  41.         while True:
  42.                 soundLevel = getSoundLevel()
  43.                 if soundLevel > 200:
  44.                         onLed()
  45.                         time.sleep(3)
  46.                         offLed()
  47.                 time.sleep(0.1)

  48. if __name__ == '__main__':
  49.         main()
复制代码


      可以看到通过这种API的方式我们开发一个应用是非常方便的!这一点真的是非常好!
      传感器有点不太灵敏啊!简单有手掌拍它来表示获取声音了哈!



此内容由EEWORLD论坛网友michael_llh原创,如需转载或用于商业用途需征得作者同意并注明出处






此帖出自RF/无线论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表