2026年1月24日土曜日

raspi復旧マニュアル

今回、raspi2のSSL更新を簡潔にするために、OSのクリーンインストールをしたため、その後のハードよりの設定でだいぶ苦労しました。OSが違うと、いろいろ大変なようです。念のため、備忘録つくりました。他にも、いろいろひっかるところはありましたが、とりあえず、GPIO周りがとくに大変だったので、関連操作まとめました。
 
1 Python スクリプト (ssr_control.py)
保存場所: /home/pi/ssr_control.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# SSR制御スクリプト
# 指定曜日・時間のみSSRをONにし、それ以外はOFF
# 対象GPIO: 17 (BCM)
import RPi.GPIO as GPIO
import datetime
import time
# GPIO 設定
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)

try:
    while True:
        now = datetime.datetime.now()
        weekday = now.weekday()  # 月曜=0, 日曜=6

        # 水曜(2)と土曜(5)の6時〜7時にON、それ以外はOFF
        if (weekday == 2 or weekday == 5) and 6 <= now.hour < 7:
            GPIO.output(17, GPIO.HIGH)  # SSR ON
        else:
            GPIO.output(17, GPIO.LOW)   # SSR OFF

        time.sleep(30)  # 30秒ごとにチェック

finally:
    GPIO.cleanup()
ポイント:
時間は 6 <= now.hour < 7 で 1時間だけ ON。
曜日は weekday() の値を確認(0=月曜, 6=日曜)。
30秒ごとにチェックするループ。

2 systemd サービス設定 (ssr_control.service)
保存場所: /etc/systemd/system/ssr_control.service
[Unit]
Description=SSR Control
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi
ExecStart=/home/pi/bottle-env/bin/python /home/pi/ssr_control.py
Restart=on-failure

[Install]
WantedBy=multi-user.target
ポイント:
User=pi にして仮想環境(bottle-env)の Python を使用。
WorkingDirectory はスクリプトのあるディレクトリ。
失敗時に自動再起動。

3  systemd の操作コマンド
# サービスを再読み込み(設定変更後は必須)
sudo systemctl daemon-reload
# サービスを有効化(起動時に自動開始)
sudo systemctl enable ssr_control.service
# サービス起動
sudo systemctl start ssr_control.service
# 状態確認
sudo systemctl status ssr_control.service
# サービス停止
sudo systemctl stop ssr_control.service
# ログ確認
journalctl -u ssr_control.service -b
※ バックアップ・復旧のコツ
/home/pi/ssr_control.py と /etc/systemd/system/ssr_control.service を両方コピーして保存。
Python 仮想環境 (bottle-env) も丸ごとバックアップしておくと、ライブラリの問題で復旧に悩まなくて済む。
OSアップデート後は、GPIOライブラリや Python バージョンを確認してから systemd サービスを再有効化。

0 件のコメント:

コメントを投稿