查看: 818|回复: 0

MYS-6ULX-IOT 开发板测评——实现简单的物联网应用

[复制链接]

该用户从未签到

发表于 2018-6-26 09:06:17 | 显示全部楼层 |阅读模式
分享到:
  前面,我们在 MYS-6ULX-IOT 开发板上成功地驱动了 RTL8188 WiFi 模块,也为 MYS-6ULX-IOT 的系统增加了 curl 命令。接下来,我们就来通过这个 WiFi 模块连接云端实现一个最简单的物联网应用。
提供 Web API

  在本示例中,我的 web 服务器部署在阿里云上,大家也可以通过局域网内的服务器进行实验。
  Web 服务器实现了 HTTP 和相关的 TCP 连接处理,同时具有 web 资源管理等功能。常见的 Web 服务器有 Nginx、Apache、IIS(Windows),而嵌入式领域则通常采用轻量级的 lighttpd、thttpd、minihttpd 等等。
  这里,我们实现一个物联网的点灯实验。在我的服务器上创建了一个 JSON API,它的内容如下:
{        "led": true}  在 MYS-6ULX-IOT 端,我们尝试用 curl 去获取这个 API:
# curl <a href="https://www.luckydarcy.top/2018/iot/api.json">https://www.luckydarcy.top/2018/iot/api.json</a> {        "led": true}  很棒,看起来已经获取到云端数据了!
Python 实现连接

  实际上,上述的 api.json 为我们提供的是 LED 的状态信息,我们的目的是让设备通过 Web API 实现 LED 的亮/灭操作。因此,我们要编写程序实现 HTTP 请求,并从中解析 LED 的状态。
  MYS-6ULX-IOT 的 Base 系统已经包含了 Python2.7,那么简单起见,我们这里用 Python 来实现。示例程序如下:
# cat led.pyimport urllib2import jsonimport os, timewhile True:        results = urllib2.urlopen('<a href="https://www.luckydarcy.top/2018/iot/api.json')">https://www.luckydarcy.top/2018/iot/api.json')</a>.read()        status = json.loads(results)['led']        if status == True:                print "Light ON"                os.system("echo 1 > /sys/class/leds/user/brightness")        else:                print "Light OFF"                os.system("echo 0 > /sys/class/leds/user/brightness")        time.sleep(3)  首先使用 urllib2.urlopen 发起 HTTP 请求;然后使用 json.loads 解析 api.json,获取 LED 状态值;最后通过 os.system 调用本地 Shell 命令,对 LED 的文件 I/O 进行操作。为了降低请求频率,对每次请求增加了3秒的延时。
  好啦,我们在 MYS-6ULX-IOT 开发板运行 python led.py 看看。
安装 json 模块

  很遗憾,出现了 “ImportError: No module named json” 这样的错误,显然是因为当前系统没有 json 模块所造成的。然而,也没有 pip,所以我们需要手动安装 json 模块了。
  登录 https://pypi.org/ 查找 json 模块,这里我们安装的是 simplejson,选择下载源代码 simplejson-3.15.0.tar.gz。

  在 MYS-6ULX-IOT 开发板上解压缩 simplejson-3.15.0.tar.gz,进入目录 simplejson-3.15.0,然后执行以下命令安装即可:
python setup.py install测试

  别忘了,我们还要将 import json 修改为 import simplejson as json。
  然后再次执行,可以看到终端打印“Light ON”,并且 MYS-6ULX-IOT 开发板上的蓝色 USER LED 亮起来了。登录服务器将 api.json 修改为 "led": false,此时终端打印“Light OFF”,并且 LED 灭。
# python led.py Light ONLight ONLight ONLight OFFLight OFF  嗯哈!这样,我们就实现了一个简单的物联网应用啦~
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

手机版|小黑屋|与非网

GMT+8, 2024-4-23 21:57 , Processed in 0.178465 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.