Raspberry PiからLine Notifyを使用して、室温をLineに通知できるようにしたいと思います。Line Notifyを使えば、任意の文字を通知できるようになります。
- Line Notify
-
Webサービスやアプリと連携し、Lineへ通知するサービス
- Line Notifyの登録方法
- Raspberry PiからLINEに通知する方法
LINEに通知する
LINEからパーソナルアクセストークンの取得
通知時にトークンを指定することで、Lineに通知できるようになります。そのトークンを取得します。
以下のサイトからマイページにログインします。
ログインをして、以下からアクセストークンを発行します。
発行したトークンは発行時しか確認できないので、絶対コピーして下さい!
①トークン発行
トークン名は任意の文字列を入力してください。

③トークン取得
赤字でトークンが表示されるのでコピーして下さい。

②トークンルーム選択
任意のトークルームに通知先を設定できますが、自分しか見なくていい場合は、「1:1でLINE Notifyから通知を受ける」を選んでください。

LINEに通知する
通知方法はLINEの公式サイトに詳しく書かれています。

公式サイトの「通知系」の項目のサンプルを参考に、LINEに「test」と通知します。
以下のようにスクリプトを作成します。
XXXXXの部分には取得したトークンを入力してください。
message=に通知したい文字を入れてください。
#!/bin/sh
curl -X POST -H 'Authorization: Bearer XXXXX' -F 'message=test' https://notify-api.line.me/api/notify
{"status":200,"message":"ok"}
スクリプトを実行すると、LINEに通知することができます。

これLINEの準備ができました。次回は、室温の計測の準備と通知をしたいをと思います。
室温を通知する
回路を組む
温度センサーの回路を組んでいきます。
用意するもの
部品は「Raspberry Piで学ぶ電子工作」を参考にしています。
- ADT7410(温度センサー)
- ジャンパワイヤーオスーメス
- ブレッドボード
IC2有効にする
「sudo raspi-config」から設定してします。
① Interface Optionsを選択

② P5 I2Cを選択

③ I2C有効化


必要なパッケージインストール
i2c-toolsとpython-smbusをインストールします。
$ sudo apt install i2c-tools python-smbus
- i2c-tools
-
Linux用のi2cを使用するためのコマンドなどが同封されているパッケージ
- python-smbus
-
SMBus(System Management Bus)を使用するためのpythonライブラリ SMBusはI2Cの派生仕様
回路を組む
Raspberry Piと温度センサーの回路を以下のように組みます。
GPIOとセンサーとの接続関係は以下の通りです。
GPIO | ADT740 (温度センサー) |
3.3V | VDD |
I2C SDA(2) | SDA |
I2C SCL(3) | SCL |
GND | GND |

i2cdetectを使って、読み込めているか確認します。
今回の回路であれば、以下のように48が出れば、温度センサーを認識できています。
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
温度計測
サンプルのプログラムの「07-01-temp.py」をRaspberry Piに入れて実行します。
以下のように温度が出力されれば、成功です。
$ python ./07-01-temp.py
28.9375
28.9375
28.9375
28.9375
28.9375
28.9375
28.9375
28.9375
室温を通知する
温度を取得する仕組みが出来たので、Lineに通知したいと思います。sshでraspberry piから直接操作できますが、いつでも確認したいので、Homebridgeを使用して、iPhoneから確認できるようにします。
プログラム
コード内に説明を書きます。
# -*- coding: utf-8 -*-
# gettemp.pyのコード
import smbus
from time import sleep
class PioCtrler:
def __init__(self):
# I2C通信の初期化
self.bus = smbus.SMBus(1)
# デバイスのアドレス
address_adt7410 = 0x48
# レジスタのアドレス
register_adt7410 = 0x00
self.address_adt7410=address_adt7410
self.register_adt7410=register_adt7410
def read_adt7410(self):
# アドレス0x48のI2Cデバイスの0x00番地のレジスタから2バイトのデータを取得
word_data = self.bus.read_word_data(self.address_adt7410, self.register_adt7410)
data = (word_data & 0xff00)>>8 | (word_data & 0xff)<<8
data = data>>3 # 13ビットデータ
if data & 0x1000 == 0: # 温度が正または0の場合
temperature = data*0.0625
else: # 温度が負の場合、 絶対値を取ってからマイナスをかける
temperature = ( (~data&0x1fff) + 1)*-0.0625
return round(temperature,1)
# -*- coding: utf-8 -*-
# notify-temp.pyのコード
import gettemp
import subprocess
ctrler = gettemp.PioCtrler()
temp = ctrler.read_adt7410()
hp='https://notify-api.line.me/api/notify'
line = 'Authorization: Bearer XXXXX' #XXXXには、取得したトークンを設定して下さい。
msg = 'message='+u"室温は"+str(temp)+u"℃"
cmd3 = ['curl', hp, '-X','POST','-H',line,'-F',msg]
subprocess.call(cmd3)
Homebridge
Homebridgeコンフィグに以下を追加します。Homebrige UIの使い方は、過去の記事を参考にして下さい。
追加した設定は以下の通りです。”accessories”に追加しています。
追加on_cmdとoff_cmdに作成したプログラムを実行するように設定しています。
Homebrige UIから再起動して下さい。
"accessories": [
{
"accessory": "CMD",
"name": "温度",
"on_cmd": "python /home/pi/work/temperature/notify-temp.py",
"off_cmd": "python /home/pi/work/temperature/notify-temp.py"
}
],
実際にやってみる
iPhoneのホームから”温度”を押すと、室温を通知することが出来ました。

Siriから通知も可能
コンフィグの「”name”: “温度”」でつけた名前を呼べば、声だけで通知もできます。実は漢字を書いても正しく認識しています。
「Hey,Siri 温度つけて」と言ってみて下さい。
配線にはこちらの本を参考にしています。初心者にもわかりやすく書かれている本です。
コメント