春节了,趁着假期的空闲时间,抽空捣鼓了下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. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  2. 开发一个根据xml创建代理类的小框架

    github地址 https://github.com/1367356/GradleTestUseSubModule/tree/master/CreateMyFrameWork 1:定义一些规则

  3. idea一个类中,各个修饰符的符号表示

    1: 2:

  4. PHP实现返回JSON和XML的类分享

    PHP实现返回JSON和XML的类分享 <?php     class Reponse{         //private $result = array('code'=null,'messa ...

  5. sprintf函数的用法

    说明1:该函数包含在stdio.h的头文件中,使用时需要加入:#include <stdio.h> 说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印 ...

  6. C# 多线程编程第二步——线程同步与线程安全

    上一篇博客学习了如何简单的使用多线程.其实普通的多线程确实很简单,但是一个安全的高效的多线程却不那么简单.所以很多时候不正确的使用多线程反倒会影响程序的性能. 下面先看一个例子 : class Pro ...

  7. LINUX_RHEl6_DHCP服务器配置

    安装DHCP服务器 DHCP配置文件 可以使用RHEL 6.0自身携带的RPM包安装,安装结束后DHCP端口监督程序dhcpd配置文件是/etc/dhcp目录中的名为dhcpd.conf的文件.下面手 ...

  8. Codeforces Round #532 (Div. 2) Solution

    A. Roman and Browser 签到. #include <bits/stdc++.h> using namespace std; ]; int get(int b) { ]; ...

  9. ng-深度学习-课程笔记-13: 目标检测(Week3)

    1 目标定位( object localization ) 目标定位既要识别,又要定位,它要做的事就是用一个框框把物体目标的位置标出来. 怎么做这个问题呢,我们考虑三目标的定位问题,假定图中最多只出现 ...

  10. python: 基本的日期与时间转换

    需要执行简单的时间转换,比如天到秒,小时到分钟等的转换. 为了执行不同时间单位的转换和计算,请使用datetime 模块.比如,为了表示一个时间段,可以创建一个timedelta 实例,就像下面这样: ...