DIY遠程控制開關(tiny6410+LED+yeelink+curl)


      上一次,介紹了如何實現遠程監控室內溫度,大家伙反響還是很熱烈的,筆者很欣慰,獨樂樂不如眾樂樂啊。不過話說回來,那個實現只能是遠程監測家中溫度,假如發現家里熱得很,想遠程打開空調開關提前降降溫,回家后不就很爽,那這怎么做呢。下面就此介紹如何實現遠程控制開關。當然筆者家還沒有DIY好可以遠程控制的空調設備,但那就沒法實現了嗎?NO,還好,tiny6410開發板有可以控制的led燈,實現了LED燈的遠程開關,那么加個繼電器遠程控制空調,原理類似啊。

 
DIY遠程監控室內溫度設備(tiny6410+ds18b20+yeelink+curl)  http://www.cnblogs.com/IDoIUnderstand/p/3537858.html
 
一、目的
      DIY一個可以簡易的遠程控制開關,實現通過web/android/ios/微信進行控制開關打開或者關閉。
 
二、軟硬件環境
      硬件:tiny6410+LED+有線網絡 or USB wifi
      軟件:linux+QT/curl/crontab/shell/YeeLink服務
 
三、LED控制方法
    此處直接采用tiny6410自帶led驅動和控制方法進行LED控制,方法如下:
 
 
四、tiny6410實現定時獲取yeelink開關狀態
1、按參考資料1方法注冊一個開關傳感器。
2、根據yeelink的api接口查詢開關傳感器狀態。在tiny6410 linux系統上采用shell腳本進行實現。
 1 #!/bin/sh
 2  
 3 #在單引號中填入yeelink給你的API KEY
 4 YL_ApiKey='xxxxxxxx'
 5 YL_URL=http://api.yeelink.net/v1.0/device/7376/sensor/11624/datapoints
 6  
 7 upcmd="curl --request GET --header U-ApiKey:$YL_ApiKey --verbose $YL_URL"
 8  
 9 echo $upcmd | sh  > /dev/shm/yeelink_led_status
10 grep -wq \"value\":1 /dev/shm/yeelink_led_status && status=on || status=off
11 echo $status
12  
13 if [ $status = on ];
14 then
15 /etc/rc.d/init.d/leds start
16 echo "set led on"
17 else
18 /etc/rc.d/init.d/leds stop
19 echo "set led off"
20 fi

 

  六、增加定時運行服務
在crontab服務中加入下面加紅的一行, 讓腳本每分鍾運行一次, 保存退出。
*/1 * * * * /dev/shm/get_led_status_yeelink.sh
 
七、實現效果
yeelink平台提供了兩種方式,一種是arduino/單片機通過直接socket網絡連接的辦法,連入平台上,保持和服務器的長連接,這種方法控制的實時性相對較強;另外一種辦法是arduino作為客戶端,定期的向服務器查詢傳感器(LED)的當前值,如果我們要改變arduino的狀態(如點亮LED),只需改變當前傳感器的值(其實是發送HTTP的post命令,更新一下當前的設備狀態),則arduino在定時周期到的時候,發出(HTTP  get)命令來獲取當前LED狀態的時候,發現最近的值有變化(從0變為1)的時候,則相應的改變驅動LED的IO口狀態,從而實習遠程控制,這里注意,在arduino板上,如果是觸發性的操作(只操作一次),則可以在get數據並操作好后,直接發送POST改變服務器上嗎的傳感器狀態,保證不會在arduino端重復觸發。
 
在此tiny6410上采用方式二:輪詢yeelink的tiny6410 LED開關狀態,再進行動作,輪詢頻率是每分鍾1次,因此存在最長1分鍾的控制延時。以上過程驗證OK。
 
八、參考資料
1、如何用arduino+ethernet shield與yeelink結合5分鍾實現web遠程家電控制(代碼已更新)  http://blog.yeelink.net/?p=94
2、《04- Tiny6410 Linux開發指南-20110809.pdf》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM