Help us understand the problem. What is going on with this article?

通知が飛ぶIoTボタンを作ってみた

More than 1 year has passed since last update.

背景

わずか300円でIoTボタンを作る方法のビッグウェーブに乗るしかない。
ということで、ダイソーに行って買ってきました。

ざっくりとしたフロー

  1. Raspberry Piに接続されたボタンが押される
  2. Pythonのスクリプトが発火
  3. ちゃんと押されたか不安なので、音を流す
  4. 押された日時をデータベースに記録
  5. LINE NotifyのAPIにリクエストを送る
  6. 手元のスマホに通知がくる

準備するもの(必要なライブラリ等)

LINE NotifyのAPIにリクエストを送るためにrequestsを導入

pip install requests

LINE Notifyのトークンを取得

コマンドラインから LINE にメッセージを送れる LINE Notify

LINE Notifyのトークンを環境変数に設定

export LINE_NOTIFY_TOKEN="YOUR_TOKEN"

Raspberry piで音声ファイル(mp3)を再生するためにpygameを導入

入ってなかったら入れる。

sudo apt install python-pygame

3.5mmのオーディオジャックから音を出す設定

オーディオ設定 Raspberry Pi 公式ドキュメントを日本語訳

ソースコード

githubにおいてあります

import sqlite3
import os
import requests
import pygame.mixer
import time
from datetime import datetime as dt

# now
now = dt.now()
nowdatetime = now.strftime('%Y-%m-%d %H:%M:%S')

# sound
# It is necessary to change the frequency according to the frequency of the audio file.
pygame.mixer.init(frequency = 48000)
# Path to sound file. 
pygame.mixer.music.load(os.path.abspath(os.path.dirname(__file__))+"/hoge.mp3")
# Count of play the sound file..
pygame.mixer.music.play(1)
# Time to play.
time.sleep(3)
pygame.mixer.music.stop()

# db
con = sqlite3.connect(os.path.abspath(os.path.dirname(__file__))+"/report.db")
c = con.cursor()
c.execute("insert into report values (?)",(nowdatetime,))
con.commit()
con.close()

# LINE Notify
endpoint = 'https://notify-api.line.me/api/notify'
token = os.getenv('LINE_NOTIFY_TOKEN')
headers = {"Authorization" : "Bearer "+ token}

message = nowdatetime
payload = {"message" :  message}
r = requests.post(endpoint ,headers = headers ,params=payload)

動いている様子

ちょうどいいスピーカーがなかったので、ギターアンプにRaspberry Piを接続
UNADJUSTEDNONRAW_thumb_13d8.jpg
どっちが本体か分からない……





音声ファイルはニコニ・コモンズからお借りしました。
ATOS (JR東日本) - ニコニ・コモンズ
a_halka
羽田空港第2ターミナル50番台スポットから手荷物受け取りカウンターまでウォーキングの会主宰
https://cf6.in/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした