2017-10-07 8 views
-1

私は山から離れているときに、Raspberry Piと小さなPythonスクリプトを使ってPhoto-voltaicシステムを監視し、データを読み込んで1時間ごとに私のWebページに送ります。それは15分間機械を動かす電気機械スイッチによって開始されます。しかしその間、スクリプトは2回実行される可能性があります。これは、結果が乱雑になるのを防ぐためです(lsdx.eu/GPV_ZSDX)。Python内からraspbian/debianを停止する

一度スクリプトを実行するとスクリプトの最後に行を追加して、電源がオフになる前にraspbianをクリーンな終了として停止することもできます。 - "exit"はループを終了しますが、スクリプトはまだ実行中です - もちろん、Ctrl + Cは私が離れているために実行されません。 StackOverflowまたはRasbianヘルプの高度な技術的なメッセージでヒントが見つかりませんでした。

チップはありますか? ありがとう

+1

これまでに試したことをお見せしてくれてうれしいですね。なぜそれは動作しませんでした。あなた自身を最初に試してみることなく、他の人に問題を解決させるためには、まあまあではありません。たとえば、RPiをシャットダウンする場合は、 'os.system( 'shutdown -hP now')やそれに類するものを試してみませんか? – Torxed

+0

特定のプログラミング問題について特定の質問をする必要があります。 Stack Overflowはあなたからの閉鎖理由を隠しているからです:* "本、ツール、ソフトウェアライブラリ、チュートリアル、または他のオフサイトリソースを推薦するか、見つけようとする質問は、オピニオン回答とスパムを引き付ける傾向があるため、Stack Overflow代わりに、問題を説明し、それを解決するためにこれまでに何が行われているか」。 – jww

答えて

0

exit()コマンドはプログラムを終了する必要があります(breakはループを終了するステートメントです)。あなたはどんなふるまいをしていますか?シャットダウンするに

、試してみてください。

のpython3:

from subprocess import run 
run('poweroff', shell=True) 

python2:

from subprocess import call 
call('poweroff') 

注:電源オフは、システム上のシャットダウン呼び出すことができ、追加のコマンドラインにスイッチが必要な場合がありますがシャットダウンを強制します(必要な場合)。あなたのケースでは

0

、構造は次の構文を使用した機能として、Pythonスクリプト:

def read_data(): 
    data_reading_voodo 
    return message_to_be_sent 

def send_message(msg): 
    perform_message_sending_voodo 
    log_message_sending_voodoo_success_or_failure 
    return None 

if __name__ == "__main__": 
    msg = read_data() 
    send_message(msg) 

はこのように構造化された、Pythonスクリプトを実行した後に終了する必要があります。

次はsudo shudown -h 6はスクリプトが実行された6分後にraspberrypiをシャットダウンし

#!/bin/bash 
python -m /path/to/your/voodo/script && sudo shutdown -h 6 

次のように(bashのやPythonを想定しますが、使用状況に応じて変更)シェルsriptを作成します。このオプションは、ランタイム再開サイクルを停止したい場合に、起動後にしばらく時間がかかり、sriptを削除するのに役立ちます。

は、シェルスクリプトを実行可能にします:chmod 755 run_py_script_then_set_shutdown詳細

ためman chmod今すぐ起動時にrun_py_script_then_set_shutdownを実行するcronジョブを作成してご覧ください。

crontab -e

はその後、あなたのcrontab

@reboot /path/to/your/shell/script 

保存するには、次の行を追加します。パイを再起動すれば完了です。 rpiが起動するたびに、pythonスクリプトを実行して終了する必要があります。その後、pythonスクリプトが終了して6分後にrpiが終了します。

あなたの目的に合わせて6分を調整できます。

0

PythとDebを学ぶのに役立つこれらの回答をありがとう。 は私が最終的には、スクリプトの終わりに非常にシンプルなソリューションを選択しました: 輸入OS os.system(「今sudoのシャットダウン」)

しかし、私は再びこれらの他のソリューションの心に 感謝を保つ、 ライオネル

関連する問題