❖ systemdを使う方法
❍ systemdを使うとOSのサービスとして、自動起動や停止したり再起動したりできる。❍ 起動させたいプログラムを以下のようにPythonで記述する。(ip_disp.py)
ip_disp.pyは起動時、RasPiに割り振られているip番号をLCD表示器に表示してSystemに返る。
-------------ip_disp.py-------------
# coding: UTF-8
# 起動時IPを表示
#############################################
import socket
import sys
# LCD表示器モジュールimport
from MyPackage.St7032ilcd import St7032iLCD
I2C_ADDR = 0x3e
lcd = St7032iLCD(I2C_ADDR)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8",80))
ip = s.getsockname()[0]
ip1 = ip[:8]
ip2 = ip[8:]
lcd.set_cursor(0, 0)
lcd.print1(ip1)
lcd.set_cursor(0, 1)
lcd.print1(ip2)
sys.exit()
# quit()
❍ ip_disp.pyファイルを以下に格納する。
$ pi sudo mv ip_disp.py /home/pi/programs/work_pid/pid/
❍ ip_disp.serviceファイルを以下のように記述。
--------------ip_disp.service------------ (自動起動し、プロセスループ)
[Unit]
Description = ip display
[Service]
ExecStart=/usr/bin/python3 /home/pi/programs/work_pid/pid/ip_disp.py
Restart=always
Type=simple
[Install]
WantedBy=multi-user.target
----------------------------------------------------
--------------ip_disp.service------------ (立ち上がり時、一回のみ)
[Unit]
Description = ip display
[Service]
ExecStart=/usr/bin/python3 /home/pi/programs/work_pid/pid/ip_disp.py
Restart=no
Type=oneshot
[Install]
WantedBy=multi-user.target
----------------------------------------------------
#############################################
❍ ip_disp.serviceファイルを以下に格納する。
$ pi sudo mv ip_disp.service /etc/systemd/system/multi-user.target.wants /<--ラズビアンの場合はここ
$ pi sudo mv ip_disp.service /etc/systemd/system/
❍ systemdを使ってサービスを起動する。
$ pi sudo systemctl start ip_disp
❍ systemdを使ってサービスを停止する。
$ pi sudo systemctl stop ip_disp
❍ systemdで起動時に自動起動するよう設定する。
$ pi sudo systemctl enable ip_disp
❍ systemdで起動時に自動起動しないよう設定する。
$ pi sudo systemctl disable ip_disp
❍ RasPiを再起動し,ip番号がLCDに表示されるか確認する。
まずWiFi番号を数秒表示後、有線LANをLCD表示してOSへ返る。
参考サイト:
❍ Raspberry Piでプログラムを自動起動する5種類の方法を比較・解説
0 件のコメント:
コメントを投稿