java系统找不到指定文件怎么解决
307
2022-09-18
MYS-6ULX-IOT 开发板测评——实现简单的物联网应用
前面,我们在 MYS-6ULX-IOT 开发板上成功地驱动了 RTL8188 WiFi 模块,也为 MYS-6ULX-IOT 的系统增加了 curl 命令。接下来,我们就来通过这个 WiFi 模块连接云端实现一个最简单的物联网应用。
提供 Web API
在本示例中,我的 web 服务器部署在阿里云上,大家也可以通过局域网内的服务器进行实验。
Web 服务器实现了 HTTP 和相关的 TCP 连接处理,同时具有 web 资源管理等功能。常见的 Web 服务器有 Nginx、Apache、IIS(Windows),而嵌入式领域则通常采用轻量级的 lig等等。
这里,我们实现一个物联网的点灯实验。在我的服务器上创建了一个 JSON API,它的内容如下:
{ "led": true}
在 MYS-6ULX-IOT 端,我们尝试用 curl 去获取这个 API:
# curl "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(' 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 模块了。 登录 查找 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
嗯哈!这样,我们就实现了一个简单的物联网应用啦~
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~