DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

RaspberryPiと炊飯器で低温調理器を自作してみた⑥ 「スタート/ストップデーモン」

スタートボタンが押されたら/dev/shm/領域にスタートファイルを生成、ファイルが存在している場合はスタートファイルを削除するデーモン

 

f:id:DreamerDream:20190918164030p:plain

スタートファイルに日時を保存する。

このスタートファイルが存在することを確認したら、ヒーター制御デーモンが指定温度になるようヒーターを制御します。

スタートファイルは、このデーモンの他にタイマーデーモンからも参照、追記、削除されます。

 

<start_stop_btnd.py>

 

#!/usr/bin/python
#coding:utf-8

import RPi.GPIO as GPIO
import time
import os
import datetime
import file_mng as file

Switch = 10

 

#スイッチが押されたときの処理

def switch(gpio_pin):
  time.sleep(0.2)
  if GPIO.input(Switch) == 0:
    time.sleep(0.2)

    #既にスタートファイルがあるときは
    if file.is_start():

      #スタートファイルを消す
      file.stop()
      file.save_row_0('-- STOP --')

    #スタートファイルが無い場合は
    else:
      now = datetime.datetime.now()

      #現在日時をスタートファイルに書き込む
      file.start( now.strftime("%Y/%m/%d %H:%M:%S") )
      file.save_row_0('-- START --')

  while GPIO.input(Switch) == 0:
  time.sleep( 1 )

 

#スタートスイッチをプルアップしておいて、プッシュ時(ピン電圧0V時)にswitchメソッドを読むよう設定

def standby():
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(Switch, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.add_event_detect(Switch, GPIO.FALLING)
  GPIO.add_event_callback(Switch, switch)

  while True:
    time.sleep(60)


if __name__=='__main__':
  standby()

 

<全プログラム内部構造一覧>

dreamerdream.hateblo.jp

 

kampa.me