春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了。貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计理念都非常棒。物联网是什么东东,这个百度、google一下就能得到很多说法或概念,但到底是什么呢,这个我想还是DIY一个简单的东东来体验一下吧。

 
一、目的
      DIY一个可以简易的远程监控室内温度设备,实现通过web/android/ios/微信进行查看家中温度的电子设备。(最终的效果相当不错,虽然简单,只要家中未断电断网,就可以用随时随地掌握家中的温度变化,做到遥知冷暖,很新鲜啊,提供个链接,欢迎大家围观:http://www.yeelink.net/devices/7376
 
二、软硬件环境
      硬件:tiny6410+ds18b20+有线网络 or USB wifi
      软件:linux+QT/curl/crontab/shell/YeeLink服务(云存储、各种接入方式web/android/ios/微信甚至微博、邮件及相关社交网络分享,这点很赞)
 
三、ds18b20驱动及应用
见参考资料5,这个有前人的经验总结,就不展开说,源码如下:
 

四、curl移植到tiny6410
1、移植openssl到tiny6410。
下载openssl-1.0.0l.tar.gz
解压tar xzvf openssl-1.0.0l.tar.gz
配置编译(ubuntu中进行交叉编译)
 #!/bin/sh
export LD_LIBARY_PATH=/opt/FriendlyARM/toolschain/4.5./lib/
export CPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5./include/
export LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5./lib/
export CC=/opt/FriendlyARM/toolschain/4.5./bin/arm-linux-gcc cd openssl-1.0.0l
./config no-asm --prefix=/home/share/tool/tiny6410/openssl os/compiler:/opt/FriendlyARM/toolschain/4.5./bin/arm-linux-gcc
make
make install
2、移植curl到tiny6410。(依赖openssl)
下载openssl-1.0.0l.tar.gz
解压tar xzvf curl-7.35.0.tar.gz
配置编译(ubuntu中进行交叉编译)
 #!/bin/sh
export LD_LIBARY_PATH=/opt/FriendlyARM/toolschain/4.5./lib/
export CPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5./include/
export LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5./lib/
export CC=/opt/FriendlyARM/toolschain/4.5./bin/arm-linux-gcc cd curl-7.35.
./configure --host=i686 --target=arm-linux --prefix=/home/share/tool/tiny6410/curl --with-ssl=/home/share/tool/tiny6410/openssl --with-random=/dev/urandom
make
make install
五、yeelink环境
     为了实现远程监控功能,在此使用了yeelink基于物联网应用免费的云存储服务器及相关的客户端(android/IOS/微信服务号/微博发布),作为一种物联网应用,该平台确实非常不错。
1、yeelink之注册用户、添加设备、添加传感器、上传数据、取回数据。详情见官网http://www.yeelink.net/
2、根据yeelink的api接口上传数据。在tiny6410 linux系统上采用shell脚本调用curl工具来实现。

 #!/bin/sh

 #在单引号中填入yeelink给你的API KEY
YL_ApiKey='xxxxxxxx'
YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11615/datapoints
temp=$(/dev/shm/read_ds18b20)
echo $temp upcmd="curl --request POST --data '{\"value\":$temp}' --header U-ApiKey:$YL_ApiKey --verbose $YL_URL" echo $upcmd|sh
六、busybox crontab使用
 1、在crontab服务中加入下面加红的一行, 让脚本每分钟运行一次, 保存退出。

*/1 * * * * /dev/shm/post_ds18b20_data_to_yeelink.sh
2、开启crond服务(tiny6410 linux+qt系统默认未开启)。

 [root@FriendlyARM crontabs]# crond&
[root@FriendlyARM crontabs]# ps
PID USER VSZ STAT COMMAND
root S init
root SW [kthreadd]
root SW [ksoftirqd/]
root SW [kworker/u:]
root SW< [khelper]
root SW [sync_supers]
root SW [bdi-default]
root SW< [kblockd]
root SW [khubd]
root SW< [rpciod]
root SW [kworker/:]
root SW [khungtaskd]
root SW [kswapd0]
root SW [fsnotify_mark]
root SW< [aio]
root SW< [nfsiod]
root SW< [crypto]
root SW [mtdblock0]
root SW [mtdblock1]
root SW [mtdblock2]
root SW [ubi_bgt0d]
root SW [pvrusb2-context]
root SW [kworker/u:]
root SW [ubifs_bgt0_0]
root SW [mmcqd/]
root S syslogd
root S /usr/sbin/inetd
root S /usr/sbin/boa
root S /usr/bin/led-player
root S /opt/Qtopia/bin/qpe
root S init
root S init
root S init
root S init
root SW [kworker/:]
root SW [flush-ubifs_0_0]
root S < /opt/Qtopia/bin/qss
root S N /opt/Qtopia/bin/quicklauncher
root S /usr/sbin/telnetd -i
root S -sh
root S /usr/sbin/telnetd -i
root S -sh
root S crond
root R ps
[root@FriendlyARM crontabs]#
七、实现效果
1、网页浏览效果
 
2、android客户端显示效果
 
3、 下面提供了交叉编译后的可执行文件(交叉工具链为:FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc)
使用说明:
 /**
* @file readme.txt
* @brief 基于tiny6410、ds18b20、curl的远程温度监测实现说明
* @details
* @version V1.0.0
* @author Richard.hmm
* @date 2014-2-4
*/ 、在tiny6410上安装ds18b20驱动
insmod ds18b20.ko 、拷贝curl到usr/bin/下
cp curl /usr/bin/ 、拷贝read_ds18b20和post_ds18b20_data_to_yeelink.sh到tiny6410的内存文件系统/dev/shm中
cp read_ds18b20 /dev/shm/
cp post_ds18b20_data_to_yeelink.sh /dev/shm/ 、配置crontab
[root@FriendlyARM crontabs]# crontab -e
*/ * * * * /dev/shm/post_ds18b20_data_to_yeelink.sh // 新增任务
[root@FriendlyARM crontabs]# crond& // 开启crond
八、参考资料
1、树莓派玩家5分钟内将树莓派-USB摄像头与Yeelink连接–最好玩的网页监控器 http://blog.yeelink.net/?p=468
2、远程监控树莓派BT上传/下载状态 http://bbs.yeelink.net/forum.php?mod=viewthread&tid=112&extra=page%3D2
3、如何使用busybox的cron实现计划任务 http://bbs.csdn.net/topics/190017224
5、基于Tiny6410的ds18b20驱动 http://blog.csdn.net/tandesir/article/details/7247558
 
 

DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)的更多相关文章

  1. DIY远程控制开关(tiny6410+LED+yeelink+curl)

    上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...

  2. DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)

    看到有博客上采用motion搭建移动图像监测系统,感觉很强大,但大多缺少远程监测能力,大多局限于局域网.OK,笔者手头刚好有一个30W像素的USB摄像头,那么借用yeelink服务,也来DIY一把,哈 ...

  3. jvisualvm远程监控Tomcat

    网上已经有很多这方面的资料,但有些很杂乱,这里做了整理总结. 一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. ...

  4. 使用visualvm 远程监控 JVM

    1. 测试环境 Ubuntu Server 10.01 2.  在服务器上安装 jstatd 组件 使用apt-get 命令安装 openjdk 即可 : sudo apt-get install o ...

  5. 转:isualvm远程监控Tomcat

    一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. JVM 监控工具 Java VisualVM .jvisua ...

  6. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台

    前言 随着Android系统的不断更新和发展,现在越来越多的硬件产品选择用安卓系统作为运行环境,电视机,机顶盒.门禁.行车记录仪.车载系统.单兵设备等等,Android系统底层还是Linux,但对上层 ...

  7. 转载:JProfiler远程监控LINUX上的Tomcat过程细讲

    来源于xuwanbest的博客   所谓"工欲善其事,必先利其器",好的工具确能起到事半工倍的作用.我用到的最多的就两个JConsole 和JProfiler .JConsole监 ...

  8. SNMP远程监控进程信息的OID

    最近有个项目需要用snmp远程监控进程信息.于是我查了一下资料. 一.资料 .1.3.6.1.2.1.25.4.2.1.1.iso.org.dod.internet.mgmt.mib-2.host.h ...

  9. c# 远程监控(4) 接收端 RTP包重组 分屏显示

    我们在上一期使用RTP协议,并进行了配置,打包了视频数据,这一期我们就对发送的数据进行重组,并显示在接受端上.最后对其进行扩展,支持多客户端视频发送,并在接收端分屏显示.完成远程监控的模拟. 先来个效 ...

随机推荐

  1. Flask系列(七)Flask中的wtforms使用

    一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...

  2. t分布, 卡方x分布,F分布

    T分布:温良宽厚 本文由“医学统计分析精粹”小编“Hiu”原创完成,文章采用知识共享Attribution-NonCommercial-NoDerivatives 4.0国际许可协议(http://c ...

  3. 【转】Deep Learning(深度学习)学习笔记整理系列之(五)

    9.2.Sparse Coding稀疏编码 如果我们把输出必须和输入相等的限制放松,同时利用线性代数中基的概念,即O = a1*Φ1 + a2*Φ2+….+ an*Φn, Φi是基,ai是系数,我们可 ...

  4. keras实现不同形态的模型

    keras提供了Sequential线性的模型,但是有些网络需要多个输入,有些网络有多个输出,更甚之层与层之间有内部分支,这使得网络看起来像是层构成的图,而不是线性的堆叠.有些场景需要多模态的输入,这 ...

  5. 特定于类的内存管理---《C++必知必会》 条款36

    我们可以量身定制 operator new 和 operator delete 用于某个类类型,而不是必须使用标准版的 operator new 和 operator delete. 注意:我们不可以 ...

  6. 自定义 Repository 方法

    为某一个 Repository 上添加自定义方法 步骤: 定义一个接口: 声明要添加的, 并自实现的方法 提供该接口的实现类: 类名需在要声明的 Repository 后添加 Impl, 并实现方法 ...

  7. SQL学习笔记八之ORM框架SQLAlchemy

    阅读目录 一 介绍 二 创建表 三 增删改查 四 其他查询相关 五 正查.反查 一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进 ...

  8. 20145105 《Java程序设计》第1周学习总结

    20145105 <Java程序设计>第1周学习总结 教材学习内容总结 学习了教材的第一章后,我初步了解了Java的发展历程,以及什么是JCP,JSR,JVM.JCP是一个开放性国际组织, ...

  9. 20145325张梓靖 《Java程序设计》第7周学习总结

    20145325张梓靖 <Java程序设计>第7周学习总结 教材学习内容总结 时间的度量 格林威治时间,简称GMT时间,由观察太阳而得来:世界时,UT:国际原子时,TAI:世界协调时间,U ...

  10. leetcode刷题吧

    排列 从排序的数组中删除重复项 /** * @param {number[]} nums * @return {number} */ var removeDuplicates = function(n ...