2017-06-05 48 views
0

我在我的樹莓派3取得了RGB LED的顏色改變劇本,我的設置重新開始,但我想它,使其所以在晚上11點的燈光在停止並重新開始早上9點。我怎樣才能使這成爲可能? 謝謝 PhantomX暫停腳本直到一定的時間,並在另一一定時間

+0

嗨。從快速谷歌我看到樹莓有一個crontab。我想用cron設置比在腳本中設置要容易得多。 – mkiever

回答

0

使用python中time圖書館,有一個time.localtime()函數將返回當前時間的結構。

您可以檢查小時爲23(11PM),然後關閉燈,然後讓其睡眠36000秒(10小時),然後打開燈。

另外,檢查的時間爲9(上午9:00)每隔幾分鐘,並在事件開燈,該腳本可以在夜間

實例重啓:

import time 

while True: 
    if time.localtime().tm_hour == 23: 
     lights_off() 
     time.sleep(3600) # No need to check for at least 1 hour 
    elif time.localtime().tm_hour == 9: 
     lights_on() 
     time.sleep(3600) 
    time.sleep(60) # Checks every minute 

時間Docs:https://docs.python.org/3.6/library/time.html#time.localtime

+0

當涉及到檢查時間時,如果您預計在您輪詢時間的時間恰好是某個特定值,則會出現很多故障情況。檢查它是否落入X和Y邊界並根據當前值執行操作要安全得多。 – Ivan

+0

@Johnny在這種情況下,它正在尋找一個小時值,不應該有太多的錯誤檢查每分鐘或兩個60分鐘的窗口。 – njoosse

+0

同意,但仍然不好的做法。 – Ivan

0

這是一個更冪等的解決方案,可以確保燈光處於正確的狀態,無論您何時啓動腳本或者是否被中斷。

from datetime import time, datetime 
from time import sleep 

morning = time(9,0,0) 
evening = time(23,0,0) 

while True: 

    while morning < datetime.now().time() < evening: 
     print 'lights on...' 
     sleep(1) 

    print 'lights off...' 
    sleep(1)