Yeelink初步体验

阅读目录(Content)

回到顶部(go to top)

环境

Qemu: 2.8.0

开发板:vexpress-ca9

回到顶部(go to top)

概述

前面的博文已经使我们的虚拟开发板具备了访问外网的目的,离物联网越来越近了。要玩物联网,Yeelink不得不说,它提供了云平台,可以将设备的数据上传到云端,然后可以通过手机客户端或在网页端查看或修改,从而达到用手机客户端跟嵌入式设备通信的目的。

下面我们实现一个非常简单的功能: 添加一个虚拟开关,通过Yeelink的手机客户端或在网页端可以查看和修改这个开端的状态,而我们的板子会每隔2s联网读取一次这个虚拟开关的状态,最后板子根据开关的状态打印不同的提示。

回到顶部(go to top)

正文

一、首先登陆Yeelink官网,手动添加一个device,然后在该device下面再创建一个sensor用来代表虚拟开关。

二、为Python添加requests模块

Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。

1、下载requests模块

下载地址: https://pypi.python.org/pypi/requests/2.3.0 或 requests-2.3.0.tar.gz

解压后:

$lsHISTORY.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

下载zlib: http://www.zlib.net/zlib-1.2.11.tar.gz 或 zlib-1.2.11.tar.gz

  • 编译zlib:

1 #!/bin/bash2 3 export CC=arm-none-linux-gnueabi-gcc4 5 ../zlib-1.2.11/configure \6     --prefix=`pwd`

修改Makefile,修改AR和RANLIB如下:

AR=arm-none-linux-gnueabi-arRANLIB=arm-none-linux-gnueabi-ranlib

然后执行make && make install, 安装完成之后不要忘了把lib下的so和include下的头文件拷贝到板子上

  • 编译Python3:

 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 -j424 make install

安装完成后,也可以直接将lib/python3.6/lib-dynload/zlib.cpython-36m-arm-linux-gnueabi.so拷贝到板子上面的/usr/lib/python3.6/lib-dynload/下面即可, 而不必全部更新

  • 编译Python2:

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/Third_Part/Zlib/aarch32/lib"\14     CPPFLAGS="-I/home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/include \15     -I/home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/include \16     -I/home/pengdonglin/disk_ext/Third_Part/Termcap/aarch32/include \17     -I/home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/include"\18     LDLAST="-L/home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/lib \19     -L/home/pengdonglin/disk_ext/Third_Part/Termcap/aarch32/lib \20     -L/home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/lib"\

mk2_make.sh:

 1 #!/bin/bash 2  3 make HOSTPYTHON=../x86_64/python \ 4     HOSTPGEN=../x86_64/Parser/pgen \ 5     BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \ 6     CROSS_COMPILE=arm-none-linux-gnueabi- \ 7     CROSS_COMPILE_TARGET=yes \ 8     HOSTARCH=arm-none-linux-gnueabi \ 9     BUILDARCH=x86_64-linux-gnu \10     -j4

mk3_install.sh:

1 #!/bin/bash2 3 make install HOSTPYTHON=../x86_64/python \4     BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \5     CROSS_COMPILE=arm-none-linux-gnueabi- \6     CROSS_COMPILE_TARGET=yes \7     prefix=`pwd`

安装完成后,也可以直接将lib/python2.7/lib-dynload/zlib.so拷贝到开发板的/usr/lib/python2.7/lib-dynload/下面,而不用全部更新

  • 然后修改mk_ramdisk.sh:

 1 #!/bin/bash 2  3 thiry_part=/home/pengdonglin/disk_ext/Third_Part/ 4 cross_compile=/home/pengdonglin/disk_ext/Cross_Compiler/aarch32/ 5  6 sudo rm -rf rootfs 7 sudo rm -rf tmpfs 8 sudo rm -rf ramdisk* 9 sudo losetup -d /dev/loop010 sudo losetup /dev/loop0 ./fs_vexpress_1G.img11 sudo partprobe /dev/loop012 13 sudo mkdir rootfs14 sudo cp ${thiry_part}/Busybox/aarch32/_install/*  rootfs/ -raf15 16 sudo mkdir -p rootfs/proc/17 sudo mkdir -p rootfs/sys/18 sudo mkdir -p rootfs/tmp/19 sudo mkdir -p rootfs/root/20 sudo mkdir -p rootfs/var/21 sudo mkdir -p rootfs/mnt/22 23 sudo cp etc rootfs/ -arf24 25 sudo cp -arf ${cross_compile}/arm-2014.05/arm-none-linux-gnueabi/libc/lib rootfs/26 27 #Python328 sudo mkdir -p rootfs/usr29 pushd rootfs/usr30 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python3/aarch32/bin .31 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python3/aarch32/lib .32 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python3/aarch32/include .33 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python3/aarch32/share .34 35 #Python236 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python2/aarch32/bin .37 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python2/aarch32/lib .38 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python2/aarch32/include .39 sudo cp  -raf /home/pengdonglin/disk_ext/Python/Python2/aarch32/share .40 popd41 42 #SQlite343 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/bin/* rootfs/bin/44 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/include/* rootfs/include/45 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/lib/* rootfs/lib/46 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/SQlite3/aarch32/share/* rootfs/usr/share47 48 #Readline49 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/include/ rootfs/include/50 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/Readline/aarch32/lib/* rootfs/lib/51 52 #Zlib53 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/include/* rootfs/include/54 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/Zlib/aarch32/lib/* rootfs/lib/55 56 #BeautifulSoup457 sudo cp -raf /home/pengdonglin/disk_ext/Python/BeautifulSoup4/beautifulsoup4-4.5.3/bs4  rootfs/usr/lib/python2.7/site-packages58 sudo cp -raf /home/pengdonglin/disk_ext/Python/BeautifulSoup4/beautifulsoup4-4.5.3/py3k/bs4  rootfs/usr/lib/python3.6/site-packages59 60 #Requests61 sudo cp -raf /home/pengdonglin/disk_ext/Python/Requests/requests-2.3.0/requests  rootfs/usr/lib/python2.7/site-packages62 sudo cp -raf /home/pengdonglin/disk_ext/Python/Requests/requests-2.3.0/requests  rootfs/usr/lib/python3.6/site-packages63 64 #Boa65 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/WebServer/Boa/boa-0.94.13/src/boa rootfs/bin66 sudo mkdir -p rootfs/usr/lib/boa67 sudo cp -raf /home/pengdonglin/disk_ext/Third_Part/WebServer/Boa/boa-0.94.13/src/boa_indexer rootfs/usr/lib/boa68 sudo mkdir -p rootfs/var/www/cgi-bin69 sudo mkdir -p rootfs/var/log/boa70 71 sudo rm -rf rootfs/lib/*.a72 sudo arm-none-linux-gnueabi-strip rootfs/lib/* rootfs/bin/*73 sudo arm-none-linux-gnueabi-strip rootfs/usr/lib/boa/*74 sudo arm-none-linux-gnueabi-strip rootfs/usr/lib/*75 sudo arm-none-linux-gnueabi-strip rootfs/usr/bin/*76 sudo arm-none-linux-gnueabi-strip rootfs/bin/*77 78 sudo mkdir -p rootfs/dev/79 sudo mknod rootfs/dev/tty1 c 4 180 sudo mknod rootfs/dev/tty2 c 4 281 sudo mknod rootfs/dev/tty3 c 4 382 sudo mknod rootfs/dev/tty4 c 4 483 sudo mknod rootfs/dev/console c 5 184 sudo mknod rootfs/dev/null c 1 385 86 sudo mkdir ./tmpfs/87 sudo mount -t ext4 /dev/loop0p1 ./tmpfs/88 sudo rm -rf ./tmpfs/*89 sudo cp -raf rootfs/* ./tmpfs/90 91 sleep 292 sudo umount ./tmpfs/93 94 sudo losetup -d /dev/loop0

3、测试

 1 [[email protected] ]# python3 2 Python 3.6.0 (default, May  6 2017, 00:08:14) 
 3 [GCC 4.8.3 20140320 (prerelease)] on linux 4 Type "help", "copyright", "credits" or "license" for more information. 5 >>> import requests 6 >>> 
 7 [[email protected] ]# python2 8 Python 2.7.13 (default, May  6 2017, 00:11:41) 
 9 [GCC 4.8.3 20140320 (prerelease)] on linux210 Type "help", "copyright", "credits" or "license" for more information.11 >>> import requests12 >>>

三、编写python程序获取开关状态

get_switch.py2:

 1 #!/usr/bin/env python2 2  3 import requests 4 import time 5  6 apiurl = "http://api.yeelink.net/v1.0/device/7445/sensor/405914/datapoints" 7 apiheaders = {‘U-ApiKey‘:‘3957bd54eaddd2fda1f35841d52776d9‘} 8  9 while True:10     r = requests.get(apiurl, headers=apiheaders)11     print(r.text)12     sw = r.json()13     if sw[‘value‘] == 1:14         print("Switch On")15     elif sw[‘value‘] == 0:16         print("Switch Off")17     time.sleep(2)

get_switch.py3:

 1 #!/usr/bin/env python3 2  3 import requests 4 import time 5  6 apiurl = "http://api.yeelink.net/v1.0/device/7445/sensor/405914/datapoints" 7 apiheaders = {‘U-ApiKey‘:‘3957bd54eaddd2fda1f35841d52776d9‘} 8  9 while True:10     r = requests.get(apiurl, headers=apiheaders)11     print(r.text)12     sw = r.json()13     if sw[‘value‘] == 1:14         print("Switch On")15     elif sw[‘value‘] == 0:16         print("Switch Off")17     time.sleep(2)

四、测试

运行测试程序,然后在手机客户端或在网页端修改开关的状态,测试程序会联网获得开关的状态:

完。

时间: 2024-10-03 13:39:49

Yeelink初步体验的相关文章

pymedia初步体验

学习python的时候突然想看看多媒体方面的开源库. 找到了pymedia. 下载后,编译: python setup.py install <<< y 初步尝试了播放一个wav文件. python aplayer.py /projects/media/test-org.wav 很遗憾,播放失败,提示 File "aplayer.py", line 72, in <module> aplayer( sys.argv[ 1 ], i, r, t ) File

结合子类父类和LIstView适配器相关设置,初步体验类的多态。

在初级阶段,我们常对listview的适配器都是在一个activity类中全部写满.当你接触项目多了,你会发现大神都把各种适配器放一个包里,要用直接传如相关参数到适配器的构造方法设置ListView.今天做了个简单的demo,对于菜鸟理解多态有帮助.在MainActivity中代码如下 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState)

express 框架初步体验

一. 安装express 1.打开cmd  全局安装express 输入:npm install -gd express 2. 安装命令行工具,不然你输入express 会出现 不是内部命令. 输入:npm install -g express-generator 3.新建一个工程 cd 到你需要的路径 输入:express  expresstess 4.下一步:输入:npm install 5.运行 npm  start 6.打开浏览器输入:http://127.0.0.1:3000 好了到这

V8 javascript引擎初步体验

v8 引擎,不必多说,大名鼎鼎,迄今最快的js引擎. 这么好的东西,如果尽在浏览器中使用,太浪费了,也希望用到其他地方,比如一些客户端开发中. 闲言少讲,这就开始 下载源码 去官方网站:https://code.google.com/p/v8/ 我喜欢用git,所以从这里下载 git clone git://github.com/v8/v8.git v8 && cd v8 编译 我为android平台编译的,折腾了好久,记录一些重点.你首先要看这个:http://code.google.c

VNC树莓派(Raspberry Pi 3)远程桌面初步体验

树莓派远程登录初步实践 本文中VNC安装部分以及实现VNC服务器端自动运行的方法来自以下网址:http://shumeipai.nxez.com/2013/09/04/login-rpi-with-vnc.html?variant=zh-cn 之前买了一个树莓派3,同时也买了一个小屏幕,已经通过自带屏幕设置好wifi.在使用中发现不但屏幕小,而且显示也不好.所以还是决定用远程登录的方法试试. 树莓派HDMI显示画面(显示器质量一般,显示效果并不理想) 首先下载SecureCRT.SecureCR

2014年新一代的报表利器 Qlik Sense Desktop 初步体验

Qlik Sense Desktop 的案例展示 先上几个刚刚边看边学完成的几个报表案例效果 (如果图片显示不正常,可以重新刷新一下页面显示)- 个人感觉报表的设计过程非常简单和方便,并且报表的交互性也非常之强,很容易从各个维度来分析与查看数据信息. 开篇介绍 我估计很多人都听说过 QlikView,并且可以从 2014 BI 开发工具排名上看到 Qlik 产品已经排到第二的位置,排名第一是 Tableau,排名第三的是 Microsoft.当然前两者都主要是在报表开发方面有非常独特的优势,大数

黑马程序员--Objective-C之--OC的初步体验

一.OC简介 (一).Objective-C与C的渊源 Objective-C诞生于 20 世纪 80 年代,由Brad Cox 发明,意在将流行的.可移植的 C 语言与优雅的 Smalltalk 语言结合在一起. Objective-C 是 C 语言的一个扩展集,它以 C 语言为基础,在语言中添加了一些微妙但意义重大的特性. 苹果公司的 iphone 平台采用 Objective-C 做为 native language 的开发,Objective-C的内核是C语言的,并基于C语言实现OOP的

Hadoop初步体验(安装与测试)

简述:Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 物理主机.虚拟机.虚拟主机这三个就不多说了.我们先在ubuntu里添加一个叫hadoop的用户 ?1:安装jdk? 下载jdk: jdk-7u75-linux-x64.tar.gz 安装jdk: #切换到root用户 su root #进入用户编译的目录 cd /usr/local/lib #将jdk压缩包解压到当前路径 tar -zxvf [jdk文件路径]/java-jdk-1.7/jdk-7u75-linu

docker初步体验

在虚拟机里试着装docker,因为只有虚拟机的内核版本是3.10以上的 一.概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板.Docker 容器(Container) 容器是独立运行的一个或一组应用.Docker 仓库(Registry) Docker 仓库用来保存镜像,可以理解为代码控制中