今回は、たった30分で温湿度をセンサーを使えるようになり、Slackに投稿できるお手軽IoTを紹介します。
準備するもの
まずは、必要なセンサーとパーツを準備ができている状態からスタートします。
名称 | 型番 | 価格 | 販売元 |
---|---|---|---|
温湿度センサー | AM2302 (DHT22) | 950円 | 秋月電子通商 |
ブレッドボード | EIC-801 | 270円 | 秋月電子通商 |
抵抗10kΩ 1本 (4.7kΩでも可) |
RD16S 10K | 100円 (100個入) |
秋月電子通商 |
ジャンパーケーブル (オスxメス 3本) |
- | 549円 | Amazon |
あとは、お手持ちのRaspberry pi Zero、2、3 をご準備下さい。
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
前提条件
- 必要パーツが揃っている
- インターネット環境がある
- Raspbian Jessie のインストール、セットアップが完了している
- Raspberry Piをターミナルから実行できる環境が整っている
- Slackのサインアップが済んでいる
Slackのサインアップは簡単なので、以下のページで登録してください。
配線する
Raspberry Pi の電源を切り、microUSBを外します。以下のように配線をします。
GPIOピン23番を使用しますので、挿し間違いに注意しながら作業しましょう。挿す場所を間違えてRaspberry Piの電源を入れると、パーツやRaspberry Pi 本体が故障するなどの影響が出ます。
配線ができたら microUSBの電源を接続して Raspberry Pi の電源を入れます。
IncomingWebHook の有効化
Slackの以下ページより、IncomingWebHooksを有効化します。
https://my.slack.com/services/new/incoming-webhook/
投稿するチャンネルを選択し、Webhook URLを取得します。
取得したWebhook URL
をコピペします。この Webhook URL
をPythonのプログラムで使用します。
Slackへ投稿するIncomingWebHookの表示名とアイコンはカスタマイズ可能です。こちらは必要に応じて変更します。
Slackwebのセットアップ
Slackwebのインストール
slackwebをインストールし、ラズパイからSlackへ投稿するための準備をします。
$ sudo pip install slackweb Downloading/unpacking slackweb Downloading slackweb-1.0.5.tar.gz Running setup.py (path:/tmp/pip-build-sacoIx/slackweb/setup.py) egg_info for package slackweb Installing collected packages: slackweb Running setup.py install for slackweb Successfully installed slackweb Cleaning up...
Slack投稿テスト
Slackへ投稿するためのサンプルのプログラムを作成します。slack = slackweb.Slack(url="https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxx")
に先ほど取得したWebhook URL
を使用します。
$ nano test.py import slackweb slack = slackweb.Slack(url="https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxx") slack.notify(text="Hello World!")
テストプログラムを実行します。
$ python ./test.py
Slackに投稿できていれば成功です。
温湿度センサーの測定値を取得する
次は、温湿度センサーDHT22を使ってお部屋の温湿度を測定します。その値をSlackへ投稿してみましょう。
まずは、OSのパッケージアップデートと、Python 開発ツールをインストールします。
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install build-essential python-dev
次に、温湿度センサーDHT22のライブラリをインストールします。
2017年5月6日現在、pipでインストールしようとするとインストール途中でラズパイZeroである事を検出できないバグが発生しています。以下の代替手段でインストールを実行します。
$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT/
$ sudo python setup.py install
温湿度センサーのサンプルプログラムを実行する
GPIOピン23番を使っているため、サンプルプログラムを以下のように変更します。
$ cd examples/ $ nano simpletest.py pin = 'P8_11' #pin = 23 ↓ #pin = 'P8_11' pin = 23
サンプルプログラムを実行し、温湿度が出力されているか確認します。
$ python simpletest.py Temp=25.8*C Humidity=57.8%
温湿度をSlackへ投稿する
Slackへ投稿するためのPythonプログラムを作成する
Slackへ以下のようにプログラムを作って、日本語で投稿してみましょう。
$ nano notify_to_slack.py #!/usr/bin/python # -*- coding: utf-8 -*- import slackweb import Adafruit_DHT sensor = Adafruit_DHT.DHT22 pin = 23 slack = slackweb.Slack(url="https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxx") humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: msg = u"現在の温度は{0:0.1f}度、湿度は{1:0.1f}% です".format(temperature, humidity) else: msg = u"温湿度を測定できませんでした" slack.notify(text=msg) print msg
プログラムを実行し、温湿度の値をSlackへ投稿する
プログラムを実行します。結果はターミナル上にも出力されて、Slackにも投稿されます。
$ python ./notify_to_slack.py 現在の温度は25.6度、湿度は56.3% です
Slackへ定期的に投稿する方法
cronに登録して定期的にSlackへ投稿したり、以前紹介した timer を使ってみたり、いろいろ試してみてください。
cronで毎時5分に投稿する方法は以下の通りとなります。
$ crontab -e 5 * * * * /home/pi/notify_to_slack.py
まとめ:すぐにIoTをはじめたい人へ
いかがでしたでしょうか。たった30分でお手軽IoT環境を手に入れることができます。今回紹介したRaspberry Piと必要なパーツ、インターネット環境さえあれば誰だってIoTを始められます。ぜひ残り少ない大型連休中にチャレンジしてみてはいかがでしょうか。
秋葉原には秋月電子通商のリアル店舗があります。
千石電商もおすすめです。ぜひ、最初の一歩を踏み出してみましょう!
ちなみに、ブレッドボードや抵抗などを一通り揃えるのが大変だな・・・と感じる方は以前エントリーで紹介したEnviro pHAT 1枚を買うだけで色々できちゃうので、こちらもオススメです。
関連ページ
- 作者: 廣川英寿,平初,橋本直哉,森田邦裕,渡辺一宏
- 出版社/メーカー: 翔泳社
- 発売日: 2017/02/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る