环境
Qemu: 2.8.0
开发板:vexpress-ca9
概述
前面的博文已经使我们的虚拟开发板具备了访问外网的目的,离物联网越来越近了。要玩物联网,
Yeelink不得不说,它提供了云平台,可以将设备的数据上传到云端,也可以联网获得云端的数据,我们可以通过手机客户端或在网页端查看或修改,从而达到用手机客户端跟嵌入式设备通信的目的。
下面我们实现一个非常简单的功能: 添加一个虚拟开关,通过Yeelink的手机客户端或在网页端可以查看和修改这个开端的状态,而我们的板子会每隔2s联网读取一次这个虚拟开关的状态,最后板子根据开关的状态打印不同的提示。
正文
一、首先登陆Yeelink官网,手动添加一个device,然后在该device下面再创建一个sensor用来代表虚拟开关。
二、为Python添加requests模块
Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。
1、下载requests模块
解压后:
$ls
HISTORY.rst NOTICE requests/ setup.cfg
LICENSE PKG-INFO requests.egg-info/ setup.py*
MANIFEST.in README.rst requirements.txt test_requests.py*
其中的requests既可以用于Python2也可以用于Python3,然后将这个requests目录拷贝到对应Python的site-packages下面。
在导入requests模块的时候,会提示找不到zlib模块。
2、重新编译Python,支持zlib
1 #!/bin/bash
2
3 export CC=arm-none-linux-gnueabi-gcc
4
5 ../zlib-1.2.11/configure \
6 --prefix=`pwd`
修改Makefile,修改AR和RANLIB如下:
AR=arm-none-linux-gnueabi-ar
RANLIB=arm-none-linux-gnueabi-ranlib
然后执行make && make install,
安装完成之后不要忘了把lib下的so和include下的头文件拷贝到板子上。
1 #!/bin/bash
2
3 ../Python-3.6.0/configure \
4 --host=arm-none-linux-gnueabi \
5 --build=armv7 \
6 --prefix=`pwd` \
7 --enable-ipv6 \
8 --enable-shared \
9 ac_cv_file__dev_ptmx="yes" \
10 ac_cv_file__dev_ptc="no" \
11 LDFLAGS="-L/home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/lib \
12 -L/home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/lib \
13 -L/home/pengdonglin/disk_ext/Third_Part/Termcap/aarch32/lib \
14 -L/home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/lib"\
15 CPPFLAGS="-I/home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/include \
16 -I/home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/include \
17 -I/home/pengdonglin/disk_ext/Third_Part/Termcap/aarch32/include \
18 -I/home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/include"\
19 LDLAST="-L/home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/lib \
20 -L/home/pengdonglin/disk_ext/Third_Part/Termcap/aarch32/lib \
21 -L/home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/lib"
22
23 make -j4
24 make install
安装完成后,也可以直接将lib/python3.6/lib-dynload/zlib.cpython-36m-arm-linux-gnueabi.so拷贝到板子上面的/usr/lib/python3.6/lib-dynload/下面即可, 而不必全部更新
mk1_conf.sh:
1 #!/bin/bash
2
3 ../Python-2.7.13/configure --prefix=`pwd` \
4 --host=arm-none-linux-gnueabi \
5 --build=x86_64-linux-gnu \
6 --enable-ipv6 \
7 --enable-shared \
8 ac_cv_file__dev_ptmx="yes" \
9 ac_cv_file__dev_ptc="no" \
10 LDFLAGS="-L/home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/lib \
11 -L/home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/lib \
12 -L/home/pengdonglin/disk_ext/Third_Part/Termcap/aarch32/lib \
13 -L/home/pengdonglin/disk_ext/