基本情報:
OS:raspbeian
プログラム:python
内容:
pythonプログラムを起動時に起動させたいのですが、どうやらうまく動作せず、尚且つ、.serviceによる起動だとバックグラウンドでターミナルが起動し実行されているようなので、どのようにエラーが出ているのかわからず困っております。
実は以前に同じ質問をしたのですが、エラーログの取得をして、どういったエラーが出ているのか確認してみてはどうですか?と、回答があったのですが、実際どのようにエラーを取得したらよいか分からず困っております。
https://teratail.com/questions/124911
ちなみにプログラムはダブルクリックで起動させると動いていますが、自動起動はしません。
ただし、pythonファイルのファイル名と場所はそのままに、中のプログラムを消して、別のプログラムを入れたところ自動起動するみたいでした。
ファイル場所:
pythonファイル場所:/opt/GarbageDayReminder/GarbageDayReminder.py
.serviceファイル場所:/etc/systemd/system/GarbageDayReminder.service
動作:
シンボリックを作成済み:sudo systemctl enable GarbageDayReminder.service
pythonプログラム:
python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4# +++ モジュール +++ 5from threading import Thread 6import RPi.GPIO as GPIO 7import datetime 8import schedule 9import pandas 10import time 11import csv 12import os 13 14# +++ 変数 +++ 15# リマインド時間 16spc_time = "7:20" 17 18# 確認時間 19start_time = "00:00:00" 20end_time = "08:30:00" 21 22# +++ クラス +++ 23class GarbageDayReminder(object): 24 # イニシャライズ 25 def __init__(self): 26 pass 27 28 # 日付処理 29 def date(self): 30 # 変数 31 FormatDay = "%Y/%m/%d " 32 FormatTime = "%H:%M:%S" 33 34 # 今日の日時を取得 35 now = datetime.datetime.now() 36 37 # 明日の日時を取得 38 tmr = now + datetime.timedelta(days=1) 39 40 # 1990-01-01対策の現在日付を追加 41 date = now.strftime(FormatDay) 42 43 # 今日、明日を振り分ける時間を作成 44 start = datetime.datetime.strptime(date + start_time, FormatDay + FormatTime) 45 end = datetime.datetime.strptime(date + end_time, FormatDay + FormatTime) 46 47 # 今日、明日日付取得の分岐 48 if start <= now <= end: 49 # 今日日付の取得 50 today = "{}/{}/{}".format(now.year, now.month, now.day) 51 return today ,"today" 52 else: 53 # 明日の日付を取得 54 tommorow = "{}/{}/{}".format(tmr.year, tmr.month, tmr.day) 55 return tommorow ,"tommorow" 56 57 # csv処理 58 def csv(self,date): 59 # データが格納されている作業ディレクトリまでパス指定 60 os.chdir("/opt/GarbageDayReminder") 61 62 # csvファイルを読み込む 63 df = pandas.read_csv("garbage_day.csv") 64 65 # 何のゴミの日か取得 66 garbage = df[df["日付"] == date]["ゴミ"].values[0] 67 68 return garbage 69 70 # リマインダー処理 71 def reminder(self, now, garbage): 72 # 辞書 73 gb_dict = {"燃":"燃やすごみ",\ 74 "不":"燃やさないごみ",\ 75 "缶":"空き缶、スプレー缶、空きびん、廃蛍光管",\ 76 "資":"プラスチック製容器梱包、ペットボトル",\ 77 "紙":"紙類ごみ",\ 78 "草":"せんてい枝、庭の草", \ 79 "粗":"粗大ごみ"} 80 81 # 今日、明日の切替 82 if now == "today": 83 now = "今日" 84 elif now == "tommorow": 85 now = "明日" 86 else: 87 return 88 89 # リマインド 90 if garbage in gb_dict: 91 msg = "/opt/jtalk/jtalk.sh " + "ぽーーん!" + now + "は" + gb_dict[garbage] + "の日です" 92 os.system(msg) 93 else: 94 msg = "/opt/jtalk/jtalk.sh " + "ぽーーん!" + now + "のごみの日はありません" 95 os.system(msg) 96 97 # 中間処理 98 def intermediate(self): 99 # 日付処理 100 date, now = gdr.date() 101 102 # csv処理 103 garbage = gdr.csv(date) 104 105 # リマインダー処理 106 gdr.reminder(now, garbage) 107 108 # 指定時間処理 109 def specified_time(self): 110 # 指定時間に中間処理を実行 111 schedule.every().day.at(spc_time).do(gdr.intermediate) 112 while True: 113 schedule.run_pending() 114 time.sleep(1) 115 116 # チェック処理 117 def button(self): 118 GPIO.setmode(GPIO.BCM) 119 120 #GPIO12pinを入力モードとし、pull up設定とします 121 GPIO.setup(12,GPIO.IN,pull_up_down=GPIO.PUD_UP) 122 123 while True: 124 GPIO.wait_for_edge(12, GPIO.FALLING) 125 sw_counter = 0 126 127 while True: 128 sw_status = GPIO.input(12) 129 if sw_status == 0: 130 sw_counter = sw_counter + 1 131 if sw_counter >= 30: 132 print("長押し") 133 gdr.intermediate() 134 break 135 else: 136 print("短押し") 137 break 138 139 time.sleep(0.01) 140 141 print(sw_counter) 142 143 # メイン処理 144 def main(self): 145 # 指定時間処理(マルチスレッド) 146 t = Thread(target=gdr.specified_time) 147 t.start() 148 149 # デバッグ用 150 #gdr.intermediate() 151 152 # ボタン処理 153 gdr.button() 154 155# +++ 初期動作 +++ 156if __name__ == "__main__": 157 # GarbageDayReminderクラスをインスタンス化して実行 158 gdr = GarbageDayReminder() 159 gdr.main()
.serviceファイル
service
1[Unit] 2Description = GarbageDayReminder 3 4[Service] 5ExecStart = /usr/bin/python /opt/GarbageDayReminder/GarbageDayReminder.py 6Restart = always 7Type = simple 8 9[Install] 10WantedBy = multi-user.target

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/09 11:21
2018/05/09 11:24
2018/05/10 23:26 編集
2018/05/10 23:31
2018/05/11 01:04
2018/05/11 01:34
2018/05/11 03:19
2018/05/11 11:15