1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LineNotifyが終わる!?

気付いたらLineNotifyサービスが終了との情報……
折角作ったQULIOもどきが機能しなくなってしまう…
代替機能を探してみるとLine Messagin APIというものが公開されているのでこちらを採用、改めて作り直してみた。

作りたいもの

・鍵を掛けたら鍵の状態を撮影、「鍵を掛けた!」とテキストでLineに通知を飛ばしたい

何で作りますか

取り敢えず家に転がっていた二つ
・ラズパイzero W
・マグネットセンサ
これさえあればGPIOでマグネットセンサのON・OFFで鍵の状態を検知、という作りたいものが達成できそう。

開発環境

OS:Windows 11 Pro 24H2
Raspberry Pi Pico2 W

まずはLine Messaging APIの登録・設定を行う!

Messaging API - LINE Developersにアクセスし、右上のコンソールにログインするボタンをクリックする。
https://developers.line.biz/ja/services/messaging-api/
image.png

LINEアカウントでログインをクリックし、自分が使用しているLineIDでログインする
image.png

新規プロバイダーを設定するため、プロバイダー欄の作成ボタンをクリックする。
image.png

新規プロバイダー作成画面で名前を付けて作成ボタンをクリックする。
image.png

チャネル設定から画面中央のMessaginAPIをクリックする。
image.png

LINE公式アカウントを作成するをクリックする。
image.png

自分のアカウントでログインする。
image.png

必須項目だけ入力し確認ボタンをクリックする。
image.png
image.png

入力内容を確認し、完了ボタンをクリックする
image.png
image.png

LINE Official Account Managerの画面で同意をクリックする
image.png

個別規約への同意も同意をクリックする
image.png
image.png

アカウント名を入力し次へをクリック、ホーム画面を移動を押してホーム画面に移動する
image.png

画面右上当たりの設定をクリックし、左側のツリーからMessaginAPIをクリックする
image.png

MessaginAPIを利用するをクリックする
image.png

作成済みのプロバイダーを選択、もしくは新規でプロバイダー名を指定して同意をクリックする
image.png

プライバシーポリシーなどは無視してOKをクリックする
image.png

一度接続したプロバイダーとは解除ができない警告が表示されるのでOKをクリック
image.png

LINE Developersに戻り、コンソールトップから作成したチャネルをクリックし、MessaginAPI設定を開いた最下段にチャネルアクセスト-クンがあるのでメモ帳などエディターに控えておく。
image.png

回路を作る!

適当に以下のイメージで回路を構成する。
プルアップ抵抗ってなんぞやみたいな人はググってください。
Untitled Sketch_回路図.png

コードを書く!

ラズパイとPCをmicorUSBで接続し、「Thonny Python IDE」を起動する。
インストールしていない場合はThonnyをインストールしておくこと。

以下のコードをそれぞれraspberrypi pico2 Wに保存する。
main.pyがあることにより起動時に自動でimportに示されているpyファイルを順次実行してくれる。
今回で言うとwifi.pyとkeyopenstatus_lite.pyを順番に実行してくれる。

main.py
import wifi
import keyopenstatus_lite
wifi.py
import network
import time

SSID = '接続するWIFIの名前(SSID)'
PW = 'WIFIのパスワード(平文なのでセキュリティ的に良くはない…)'

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PW)

while wlan.isconnected() == False:
    print('Connecting to Wi-Fi router')
    time.sleep(1)

wlan_status = wlan.ifconfig()
print('Connected!')
print(f'IP Address: {wlan_status[0]}')
print(f'Netmask: {wlan_status[1]}')
print(f'Default Gateway: {wlan_status[2]}')
print(f'Name Server: {wlan_status[3]}')


keyopenstatus_lite.py
import machine #import Pin
import os
import time
import network, urequests
import requests
import json

led = machine.Pin("LED", machine.Pin.OUT)
token = 'チャネルアクセスト-クン'
url = 'https://api.line.me/v2/bot/message/broadcast'
headers = {'Authorization': f'Bearer {token}','Content-Type': 'application/json; charset=UTF-8;'}

button1 = machine.Pin(16,machine.Pin.IN,machine.Pin.PULL_UP)
button2 = machine.Pin(18,machine.Pin.IN,machine.Pin.PULL_UP)

opn = 1
opnd = 1

while True:
        #if button.is_pressed:
        if button2.value():
            if opn == 1:
                time.sleep(0.5)
                pass
            else:
                #print('Open')
                messageText:str = "KeyOpen"
                #data = {'to': user_id,'messages': [ {'type': 'text','text': messageText} ] }
                data = {'messages': [ {'type': 'text','text': messageText} ] }
                response = requests.post(url, headers=headers, json=data)
                time.sleep(0.5)
                led.value(0)
                opn = 1
        else:
            if opn == 0:
                time.sleep(0.5)
                pass
            else:
                #print('Lock')
                messageText= 'keyClose'
                data = {'messages': [{'type': 'text','text': messageText}]}
                response = requests.post(url, headers=headers, json=data)
                time.sleep(0.5)
                led.value(1)
                opn = 0

動作確認

磁石をセンサに近づけたり、遠ざけたりして作成した公式アカウントから「open」や「close」のメッセージが返ってきていればOK。

3Dプリンターでケースを作りラズパイとセンサ類を収めて、玄関に取り付ける。
image.png

完成!

LineNotify時代の動作している様子を動画に収めました。gifなんで粗々ですけどね・・・
無題の動画 ‐ Clipchampで作成 (2).gif
無題の動画 ‐ Clipchampで作成 (3).gif

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?