木曜日、5月 21、2020

物理ボタンで電源のON/OFFを制御する

上記で、システムシャットダウン時のLED制御を設定しましたが、今度は本体にある電源ボタンを使った制御を設定します。
この設定をおこなうと、電源ボタンを長押しすることでシャットダウンを検知し、本体の電源をOFFさせることが可能になります。

シャットダウン用プログラムの作成
システムシャットダウンのプログラムはPythonのプログラムで作成します。以下のソースコードをつかって、ファイルを作成してください。
ここでは、ファイル名を "shutd_btn.py" とし、ファイルを/ratoc 以下に保存します。
ディレクトリはあらかじめ作成しておきます。

$ mkdir ratoc
$ cd ratoc
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
#   RPi-CM3MB2/MB3 Shutdown Button handler
#   "shutd_btn.py"
#   2018/03/13 R1.0 
#   RATOC Systems, Inc. Osaka, Japan
#
import RPi.GPIO as GPIO
import os, time
shutd_ctl = 6     #GPIO 06 for Shutdown Control
GPIO.setmode(GPIO.BCM)  # Use Broadcom pin numbering
GPIO.setup(shutd_ctl, GPIO.IN, pull_up_down=GPIO.PUD_UP)
print( "RPi-CM3MBx Shutdown Button handler" )
def isr_shutdown(self):
    print( "Shutdown Button is activated !!" )
    os.system( "sudo shutdown -h now" )
GPIO.add_event_detect(shutd_ctl, GPIO.FALLING, callback=isr_shutdown, bouncetime=2000)
while(True):
    time.sleep(1)
GPIO.cleanup()

スクリプトファイルの作成がおわれば、ファイルの属性を変更します。

~/ratoc/ $ sudo chmod 755 ./shutd_btn.py

次に、先ほど作ったファイルをサービス登録るためにサービスファイルを作成します。
以下のコードを使ってサービスファイルを作成してください。
ここでは、ファイル名を "shutd_btn.service" とします。

[Unit]
Description=RPi-CM3MB2/MB3 Shutdown button service
Wants=network.target
[Service]
ExecStart=/home/pi/ratoc/shutd_btn.py
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target

ファイルの作成が終われば、サービスファイルを システムにコピーします。

~/ratoc/ $ sudo cp shutd_btn.service /etc/systemd/system/shutd_btn.service

サービスの開始
先ほどコピーしたサービスを開始させます。

~/ratoc/ $ cd
$ sudo systemctl start shutd_btn.service

サービスの自動実行化
次に、サービスを自動実行するための設定をおこないます。

$ sudo systemctl enable shutd_btn.service

自動実行を有効にしたのち、サービスが正しく動作しているかをかくにんします。

$ sudo systemctl status shutd_btn.service

shutd_btn.service - RPi-CM3MB2/MB3 Shutdown button service
Loaded: loaded (/etc/systemd/system/shutd_btn.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-03-15 11:57:55 JST; 5min ago
Main PID: 349 (python3)
CGroup: /system.slice/shutd_btn.service
mq349 python3 /home/pi/ratoc/shutd_btn.py

3月XX XX:XX:XX raspberrypi systemd[1]: Started RPi-CM3MB2/MB3 Shutdown button service.

上記のように●が緑になっていれば、正常に動作しています。

動作確認後、電源ボタンを3秒間長押しして、連動してシャットダウンが実行されることを確認します。
電源ボタンを押して起動後に、再度以下のコマンドを入力してください。

$ sudo systemctl status shutd_btn.service

コマンド入力後、サービスが正しく動作しているかを確認してください。
※●が緑になっていればOKです。


おまけ:システム起動時のサービス自動実行を無効化したいとき
自動実行を無効化する際は、以下のコマンドを入力してください。

sudo systemctl disable shutd_btn.service
  1. Asianshah

    水曜日, 7月 26, 2023 - 19:19:42

    Hello guys! Nice article 物理ボタンで電源のON/OFFを制御する : г‚ігѓЎгѓігѓ€ « ラズパイブログ
    Если вы ищете идеальную платформу для приобретения любых вещей, то MEGA - ваш лучший выбор. Это самая крупная и надежная площадка в России и СНГ, которая всегда доступна по адресу мега купить. На MEGA вы сможете найти все, что вам нужно, независимо от ваших предпочтений и запросов. Здесь представлен огромный ассортимент позиций, готовых удовлетворить самые разнообразные потребности.

    mega nz

    mega
    мега магазин
    sb mega
    мега официальный сайт
    официальный сайт меги

    ph99bGGoma

  2. Zend_zgPt

    日曜日, 10月 1, 2023 - 06:45:37

    Новые полиэтиленовые мешки
    полиэтиленовые мешки оптом полиэтиленовые мешки.

  3. meshki_lqka

    木曜日, 12月 21, 2023 - 02:20:41

    Мешки для строительного мусора с доставкой по всей России
    сколько стоят мешки для строительного мусора http://www.meshki-dlya-stroitelnogo-musora-w.ru/.

  4. Vain_quei

    土曜日, 1月 6, 2024 - 03:09:55

    Строительные мешки купить в магазине
    мешки под мусор строительный цена https://www.meshki-dlya-stroitelnogo-musora-p.ru.

コメントの追加

下記フォームにあなたのコメントを入力してください