前提・実現したいこと
RaspberryPi3、Python2.7を使用しております。
RaspberryPi3が起動したら自動で下記の処理が開始され、きちんと動作できるようにしたい。
機械に取り付けて、GPIOを通じてエラー信号を受け取ったときとエラー信号を解除した際に
関係者にメールを送れるようにしたい。
発生している問題・エラーメッセージ
使用しているプログラム名 同じディレクトリ内で存在
・GPIO_input_signal.py → メインプログラム
・send_error_info.py → エラー信号受信時のメール送信プログラム
・send_reboot_info.py → エラー信号解除時のメール送信プログラム
Pythonの所定のコードをsystemctlで自動起動するように設定をしているのですが、
エラー信号を拾っても、解除してもメールの送信がされません。
該当のソースコード
◆/etc/systemd/system/test.service [Unit] Description = Test [Service] ExecStart=/usr/bin/python2.7 /home/pi/NatMachine_system/GPIO_input_signal.py Restart=always Type=simple [Install] WantedBy=multi-user.target ◆GPIO_input_signal.py python import RPi.GPIO as GPIO import time import subprocess GPIO.setmode(GPIO.BCM) pin = 24 ref = 0 def callBack_action(pin): if GPIO.input(pin): print("on") else: ref = 0 GPIO.setup(pin, GPIO.IN, GPIO.PUD_DOWN) GPIO.add_event_detect(pin, GPIO.BOTH, callback=callBack_action, bouncetime=500) try: while(True): if ref == 1 and GPIO.input(pin) == 1: # print("continue palse") time.sleep(10) elif ref == 0 and GPIO.input(pin) == 1: # print("palse up") time.sleep(10) subprocess.check_call(['python','send_error_info.py']) ref = 1 elif ref == 1 and GPIO.input(pin) == 0: # print("palse down") time.sleep(10) subprocess.check_call(['python','send_reboot_info.py']) ref = 0 else: # print("no pulse") time.sleep(10) except KeyboardInterrupt: print "break" GPIO.cleanup()
試したこと
プログラムが起動時に起動しているか確認したが一応動いているみたいです。
ps -ax | grep python で確認してもきちんと起動しております
4469 ? Ssl 0:00 /usr/bin/python2.7 /home/pi/NatMachine_system/GPIO_input_signal.py
systemctl status test.service で確認しても起動しております。
● test.service - Test
Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: enabled)
Active: active (running) since
Main PID: 4801 (python2.7)
CGroup: /system.slice/test.service
mq4801 /usr/bin/python2.7 /home/pi/Machine/GPIO_input_signal.py
4月 05 12:00:49 raspberrypi systemd[1]: Started Test.
teratarmを使用し、プログラムを走らせるときちんと動作します。
自動起動で問題があるかと思うのですが、原因が見出せません。
どなたかご教授頂いてよろしいでしょうか。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/05 04:38