お世話になります。
前回から私はデータベースから値を参照し、実行したあとに値を入力し真偽の判断をするPythonプログラムを自動実行しようと頑張っています。
しかしsystemdでは標準入力ができないなどと調べると出てきました。
本当にできないのでしょうか?ご教示いただけると幸いです。
Pythonプログラム
python
1import mysql.connector 2import RPi.GPIO as GPIO 3import time 4 5#GPIOの設定 6 7GPIO.setmode(GPIO.BCM) 8GPIO.setup(25, GPIO.OUT) 9 10 11#データベース接続 12db = mysql.connector.connect( 13 host='10.22.94.152', 14 port='3306', 15 user='root', 16 password='password', 17 database='testdb', 18 charset ='utf8', 19) 20 21#接続できているか確認 22from time import sleep 23while not db.is_connected(): 24 time.sleep(10) 25 26#カーソル・参照する場所 27cur = db.cursor() 28cur.execute("select * from test") 29rows = cur.fetchall() 30gen = (row[1] for row in rows) 31at = list(gen) 32print(at) 33while(1): 34#入力関数 35 val = input('>>入力待ち:') 36 af = int(val) 37 38#読み込み時の判定 39 if af in at : 40 GPIO.output(25, GPIO.HIGH) 41 time.sleep(3) 42 print("解錠") 43 print ("----------") 44 GPIO.cleanup() 45 break 46 else: 47 GPIO.output(25, GPIO.LOW) 48 time.sleep(0.2) 49 50 print ("読み込んだ値が違います") 51 print ("----------")
test.service
[Unit]
Description=test
After=mariadb.service
Wants=mariadb.service
[Service]
User=root
ExecStartPre=/bin/bash -c "until nc -z 10.22.94.152 3306 ; do sleep 1 ; done"
ExecStart= /usr/bin/python3 /home/pi/Python/test.py
Type=simple
[Install]
WantedBy=multi-user.target
###systemdエラー
● test.service - test
Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-12-15 14:20:16 JST; 1h 2min ago
Main PID: 5926 (code=exited, status=1/FAILURE)
12月 15 14:20:16 raspberrypi systemd[1]: Started test.
12月 15 14:20:16 raspberrypi python3[5926]: /home/pi/Python/test.py:8: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) t
12月 15 14:20:16 raspberrypi python3[5926]: GPIO.setup(25, GPIO.OUT)
12月 15 14:20:16 raspberrypi python3[5926]: [22495, 12905, 268904387, 230247158, 139507559, 265069890, 149580363, 107507669]
12月 15 14:20:16 raspberrypi python3[5926]: >>入力待ち:Traceback (most recent call last):
12月 15 14:20:16 raspberrypi python3[5926]: File "/home/pi/Python/test.py", line 35, in <module>
12月 15 14:20:16 raspberrypi python3[5926]: val = input('>>入力待ち:')
12月 15 14:20:16 raspberrypi python3[5926]: EOFError: EOF when reading a line
12月 15 14:20:16 raspberrypi systemd[1]: test.service: Main process exited, code=exited, status=1/FAILURE
12月 15 14:20:16 raspberrypi systemd[1]: test.service: Failed with result 'exit-code'.
見たところ、inputのところが空で駄目と言われているのがわかります。
開発環境
Raspberrypi 4
Debian 10.11
Python 3.7.3
mysql Ver 15.1 Distrib 10.3.31-MariaDB, for debian-linux-gnueabihf (armv8l) using readline 5.2
回答1件
あなたの回答
tips
プレビュー