春节了,趁着假期的空闲时间,抽空捣鼓了下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. POJ -1062 昂贵的聘礼(前向星 &amp;&amp; SPFA)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013497151/article/details/30299671 题目链接:id=1062&qu ...

  2. JAVA优化技巧分享 让游戏更加的流畅

    我的世界怎么样可以玩的更加流畅呢?怎么对游戏进行优化呢?相信很多小伙伴都很想知道吧,今天小编为大家带来的是我的世界游戏优化技巧,喜欢的小伙伴不要错 ... 在很多时候如果电脑配置过低的话,玩游戏并不流 ...

  3. 详谈LABJS按需动态加载js文件

    为了提高页面的打开和加载速度,我们经常把JS文件放在页面的尾部,但是有些JS必须放在页面前面,这样就会增加页面的加载时间:于是出现了按需动态加载的概念,这个概念就是当页面需要用到这个JS文件或者CSS ...

  4. java 的==和equals的区别(二)

    java 的==和equals的区别 java 的==和equals的区别 ==通常表明引用的是同一个东西(引用的地址相同),equals通常表明两个对象的内容相同(值相同) ------------ ...

  5. G.Finding the Radius for an Inserted Circle 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛

    地址:https://nanti.jisuanke.com/t/17314 题目: Three circles C_{a}C​a​​, C_{b}C​b​​, and C_{c}C​c​​, all ...

  6. 20155333 2016-2017-2 《Java程序设计》第七周学习总结

    20155333 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda 教材的引入循序渐近.深入浅出 Lambda去重复,回忆DRY原则 Lambda ...

  7. 20159212杨翔实验一(熟悉Java开发环境)实验报告

     实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验步骤与体会 一.命令行下Java程序开发 1.操作过程     在虚拟环境中 ...

  8. What's the difference between SDK and Runtime in .NET Core?

    What's the difference between SDK and Runtime in .NET Core? Answer1 According to the .Net Core Guide ...

  9. Asynchronous Programming Model (APM)异步编程模型

    https://msdn.microsoft.com/zh-cn/library/ms228963(v=vs.110).aspx 一.概念 An asynchronous operation that ...

  10. JS浏览器BOM

    浏览器对象模型 (BOM)  BOM的核心是window,而window对象又具有双重角色,它既是通过js访问浏览器窗口的一个接口,又是一个Global(全局)对象.这意味着在网页中定义的任何对象,变 ...