アイディアの種

活動記録

他の様々な植物に触れてみる

インプット

アウトプット

実際にプログラムを考える。

前年度応用演習で作成したコードから発展して考える。

import spidev
import time
import requests

# LINE Notifyのアクセストークン
line_notify_api = "<https://notify-api.line.me/api/notify>"
line_notify_token = "rYAHE3W3NuhWd8uV49jPO5NqtJT27RGechcKb2XPQML"

# SPI通信を行うための準備 
spi = spidev.SpiDev()  # SPI通信を行うオブジェクトを取得
spi.open(0, 0)  # 通信を開始
spi.max_speed_hz = 5000  # Debianのバージョンが9.1の場合は必要

# 初期状態を保存
previous_state = None

def read_analog_data():
    # SPIで値を読む
    resp = spi.xfer2([0x68, 0x00])
    # 読んだ値を10ビットの数値に変換
    value = ((resp[0] * 256) + resp[1]) & 0x3ff
    return value

def send_line_notify(message):
    payload = {"message": message.encode('utf-8')}
    headers = {"Authorization": f"Bearer {line_notify_token}"}
    requests.post(line_notify_api, headers=headers, data=payload)

try:
    while True:
        # CDSセンサーからアナログデータを読み取る
        analog_value = read_analog_data()

        print("Analog Value: {}".format(analog_value))

        # アナログデータを基に鍵が置かれたか取られたかを判断
        if analog_value > 20:
            current_state = "HIGH"
        elif analog_value <= 6:
            current_state = "LOW"
        else:
            current_state = "MID"

        if current_state != previous_state:
            if current_state == "LOW":
                print("鍵が置かれました。")
                send_line_notify("鍵が置かれました。")
            elif current_state == "HIGH":
                print("鍵が取られました。")
                send_line_notify("鍵が取られました.")

            previous_state = current_state

        time.sleep(1)

except KeyboardInterrupt:
    spi.close()

LINEnotifyを使用して明るさを利用してものが取られたか撮られていないかを確認し、通知するシステム。

これを活用して湿度を感知し、通知システムを考えたい。

ChatGPTとの対話

今回はなし

対話を受けて

週のまとめ

スクリーンショット 2024-12-27 3.10.52.png

スクリーンショット 2024-12-27 3.10.54.png