2013-09-01 145 views
3

我想我想要的是直截了當的。Python腳本重新啓動樹莓派

Python腳本在23小時59分鐘後重啓我的樹莓派。我試圖這樣做的原因,而不是設置與cron工作時間,是Pi沒有一個時鐘的板載電池,所以我不在乎時間(如果連接到互聯網,它將獲得當前時間) ,只是從劇本開始倒計時23小時59分鐘。

這是盡我所能;

def restart(): 
SendEmail = SendEmail "SYSTEM RESTART", "ncam.py auto restart initiated"  msg['Subject'], body) 
command = "/usr/bin/sudo /sbin/shutdown -r now" 
process = subprocess.Popen(command.split(), stdout=subprocess.PIPE) 
output = process.communicate()[0] 

此外,我想爲上述發送電子郵件到自己所設定的參數。

+0

只是一個想法,爲什麼不創建一個cron作業(或類似),並執行一個python命令,將重新啓動你的pi?否則(如下圖),你必須有一個Python循環,我不知道只需要多少CPU /內存就可以運行該腳本。 – Class

+2

爲什麼不使用shell腳本和'sleep $ nearly_a_day;重新啓動;'? – mnagel

回答

3

你會想這方面的一些變種:

import time 
import os 
currentTime = time.time() 
tomorrow = currentTime + 86340000 
while time.time() != tomorrow: 
    do.yourCode() 

os.system("poweroff") 

在你的函數把類似的東西,它會做你想要什麼。

+0

' while time.time() Greenonline

1

你或許應該改變

while time.time() < tomorrow 

避免確切毫秒以匹配任何潛在的「小姐」。

+0

雖然你是正確的(我必須承認,我認爲相同),這看起來像它是[stmfunk的答案]的評論(https://stackoverflow.com/questions/18560331/python-script-to-restart-a-raspberry-pi#answer-18560417) – Greenonline

1

您可以使用'sudo reboot'命令簡單地重新啓動樹莓。 只需將該命令放入python代碼中,並將其作爲系統命令運行即可。例如,此代碼在重新啓動之前從1減少到10:

import time 
import os 
for i in range(1,10): 
     print 'hello',i 
     #Do your code here 
     time.sleep(1) 
os.system("sudo reboot") 

使用此方法可以倒計時並重新啓動pi。