上一次,介紹了如何實現遠程監控室內溫度,大家伙反響還是很熱烈的,筆者很欣慰,獨樂樂不如眾樂樂啊。不過話說回來,那個實現只能是遠程監測家中溫度,假如發現家里熱得很,想遠程打開空調開關提前降降溫,回家后不就很爽,那這怎么做呢。下面就此介紹如何實現遠程控制開關。當然筆者家還沒有DIY好可以遠程控制的空調設備,但那就沒法實現了嗎?NO,還好,tiny6410開發板有可以控制的led燈,實現了LED燈的遠程開關,那么加個繼電器遠程控制空調,原理類似啊。
DIY遠程監控室內溫度設備(tiny6410+ds18b20+yeelink+curl)http://www.CUOXin.com/IDoIUnderstand/p/3537858.html一、目的 DIY一個可以簡易的遠程控制開關,實現通過web/android/ios/微信進行控制開關打開或者關閉。二、軟硬件環境 硬件:tiny6410+LED+有線網絡 or USB wifi 軟件:linux+QT/curl/crontab/shell/YeeLink服務三、LED控制方法 此處直接采用tiny6410自帶led驅動和控制方法進行LED控制,方法如下: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_status10 grep -wq /"value/":1 /dev/shm/yeelink_led_status && status=on || status=off11 echo $status12 13 if [ $status = on ];14 then15 /etc/rc.d/init.d/leds start16 echo "set led on"17 else18 /etc/rc.d/init.d/leds stop19 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=942、《04- Tiny6410 Linux開發指南-20110809.pdf》
新聞熱點
疑難解答