DIY遠程監控室內溫度設備(tiny6410+ds18b20+yeelink+curl)

       春節了,趁着假期的空閒時間,抽空搗鼓了下tiny6410開發板,發現這個東東塵封許久,很長時間沒用過了。貌似最近物聯網大熱,谷歌收購Nest,其設計的恆溫器可以智能調節和遠程控制房間的溫度,UI和設計理念都很是棒。物聯網是什麼東東,這個百度、google一下就能獲得不少說法或概念,但究竟是什麼呢,這個我想仍是DIY一個簡單的東東來體驗一下吧。php

 
1、目的
      DIY一個能夠簡易的遠程監控室內溫度設備,實現經過web/android/ios/微信進行查看家中溫度的電子設備 。(最終的效果至關不錯,雖然簡單,只要家中未斷電斷網,就能夠用隨時隨地掌握家中的溫度變化,作到遙知冷暖,很新鮮啊,提供個連接,歡迎你們圍觀:http://www.yeelink.net/devices/7376
 
2、軟硬件環境
      硬件:tiny6410+ds18b20+有線網絡 or USB wifi
      軟件:linux+QT/curl/crontab/shell/YeeLink服務(雲存儲、各類接入方式web/android/ios/微信甚至微博、郵件及相關社交網絡分享,這點很贊)
 
3、ds18b20驅動及應用
見參考資料5,這個有前人的經驗總結,就不展開說,源碼以下:
 
 
4、curl移植到tiny6410
一、移植openssl到tiny6410。
下載openssl-1.0.0l.tar.gz
解壓tar xzvf openssl-1.0.0l.tar.gz
配置編譯(ubuntu中進行交叉編譯)
 1 #!/bin/sh
 2 export LD_LIBARY_PATH=/opt/FriendlyARM/toolschain/4.5.1/lib/
 3 export CPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5.1/include/
 4 export LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/lib/
 5 export CC=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
 6 
 7 cd openssl-1.0.0l
 8 ./config no-asm --prefix=/home/share/tool/tiny6410/openssl os/compiler:/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
 9 make
10 make install

 

二、移植curl到tiny6410。 (依賴openssl)
下載openssl-1.0.0l.tar.gz
解壓tar xzvf curl-7.35.0.tar.gz
配置編譯(ubuntu中進行交叉編譯)
 1 #!/bin/sh
 2 export LD_LIBARY_PATH=/opt/FriendlyARM/toolschain/4.5.1/lib/
 3 export CPPFLAGS=-I/opt/FriendlyARM/toolschain/4.5.1/include/
 4 export LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/lib/
 5 export CC=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc
 6 
 7 cd curl-7.35.0
 8 ./configure --host=i686 --target=arm-linux --prefix=/home/share/tool/tiny6410/curl --with-ssl=/home/share/tool/tiny6410/openssl --with-random=/dev/urandom
 9 make
10 make install

 

5、yeelink環境
     爲了實現遠程監控功能,在此使用了yeelink基於物聯網應用免費的雲存儲服務器及相關的客戶端(android/IOS/微信服務號/微博發佈),做爲一種物聯網應用,該平臺確實很是不錯。
一、yeelink之註冊用戶、添加設備、添加傳感器、上傳數據、取回數據。詳情見官網 http://www.yeelink.net/
二、根據yeelink的api接口上傳數據。在tiny6410 linux系統上採用shell腳本調用curl工具來實現。
 
 1 #!/bin/sh
 2 
 3 #在單引號中填入yeelink給你的API KEY
 4 YL_ApiKey='xxxxxxxx'
 5 YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11615/datapoints
 6 temp=$(/dev/shm/read_ds18b20)
 7 echo $temp
 8 
 9 upcmd="curl --request POST --data '{\"value\":$temp}' --header U-ApiKey:$YL_ApiKey --verbose $YL_URL"
10 
11 echo $upcmd|sh

  

6、busybox crontab使用
 一、在crontab服務中加入下面加紅的一行, 讓腳本每分鐘運行一次, 保存退出。
*/1 * * * * /dev/shm/ post_ds18b20_data_to_yeelink.sh
二、開啓crond服務(tiny6410 linux+qt系統默認未開啓)。
 
 1 [root@FriendlyARM crontabs]# crond&
 2 [root@FriendlyARM crontabs]# ps
 3   PID USER       VSZ STAT COMMAND
 4     1 root      2992 S    init
 5     2 root         0 SW   [kthreadd]
 6     3 root         0 SW   [ksoftirqd/0]
 7     5 root         0 SW   [kworker/u:0]
 8     6 root         0 SW<  [khelper]
 9   346 root         0 SW   [sync_supers]
10   348 root         0 SW   [bdi-default]
11   349 root         0 SW<  [kblockd]
12   359 root         0 SW   [khubd]
13   455 root         0 SW<  [rpciod]
14   456 root         0 SW   [kworker/0:1]
15   464 root         0 SW   [khungtaskd]
16   465 root         0 SW   [kswapd0]
17   515 root         0 SW   [fsnotify_mark]
18   517 root         0 SW<  [aio]
19   527 root         0 SW<  [nfsiod]
20   531 root         0 SW<  [crypto]
21   615 root         0 SW   [mtdblock0]
22   620 root         0 SW   [mtdblock1]
23   625 root         0 SW   [mtdblock2]
24   634 root         0 SW   [ubi_bgt0d]
25   793 root         0 SW   [pvrusb2-context]
26   866 root         0 SW   [kworker/u:2]
27   915 root         0 SW   [ubifs_bgt0_0]
28   917 root         0 SW   [mmcqd/0]
29   948 root      2992 S    syslogd
30   951 root      3312 S    /usr/sbin/inetd
31   955 root      2028 S    /usr/sbin/boa
32   958 root      1504 S    /usr/bin/led-player
33   968 root     18480 S    /opt/Qtopia/bin/qpe
34   969 root      2992 S    init
35   970 root      2992 S    init
36   971 root      2992 S    init
37   973 root      2992 S    init
38   979 root         0 SW   [kworker/0:2]
39   980 root         0 SW   [flush-ubifs_0_0]
40   987 root      8708 S <  /opt/Qtopia/bin/qss
41   988 root     12552 S N  /opt/Qtopia/bin/quicklauncher
42   990 root      3320 S    /usr/sbin/telnetd -i
43   991 root      3316 S    -sh
44 1025 root      3320 S    /usr/sbin/telnetd -i
45 1026 root      3316 S    -sh
46 1098 root      3312 S    crond
47 1100 root      3316 R    ps
48 [root@FriendlyARM crontabs]# 

 

7、實現效果
一、網頁瀏覽效果
 
二、android客戶端顯示效果
 
三、 下面提供了交叉編譯後的可執行文件(交叉工具鏈爲:FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc)
使用說明:
 1 /**
 2  * @file readme.txt
 3  * @brief 基於tiny64十、ds18b20、curl的遠程溫度監測實現說明
 4  * @details
 5  * @version V1.0.0
 6  * @author Richard.hmm
 7  * @date 2014-2-4
 8  */
 9 
10 1、在tiny6410上安裝ds18b20驅動
11 insmod ds18b20.ko
12 
13 2、拷貝curl到usr/bin/14 cp curl /usr/bin/
15 
16 3、拷貝read_ds18b20和post_ds18b20_data_to_yeelink.sh到tiny6410的內存文件系統/dev/shm中
17 cp read_ds18b20 /dev/shm/
18 cp post_ds18b20_data_to_yeelink.sh /dev/shm/
19 
20 4、配置crontab
21 [root@FriendlyARM crontabs]# crontab -e
22 */1 * * * * /dev/shm/post_ds18b20_data_to_yeelink.sh  // 新增任務
23 [root@FriendlyARM crontabs]# crond&  // 開啓crond

 

8、參考資料
一、樹莓派玩家5分鐘內將樹莓派-USB攝像頭與Yeelink鏈接–最好玩的網頁監控器  http://blog.yeelink.net/?p=468
二、遠程監控樹莓派BT上傳/下載狀態  http://bbs.yeelink.net/forum.php?mod=viewthread&tid=112&extra=page%3D2
三、如何使用busybox的cron實現計劃任務  http://bbs.csdn.net/topics/190017224
五、基於Tiny6410的ds18b20驅動  http://blog.csdn.net/tandesir/article/details/7247558
相關文章
相關標籤/搜索