Raspberry Piでセンサーを使ってみよう ~温湿度センサーの値をSlackに通知するレシピ
Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ 第2回
温湿度センサーの値をSlackに通知する
次に、温湿度センサーの値をSlackに投稿できるお手軽レシピを紹介します。
Slackのサインアップがお済みで無い方は、以下のページから登録してください。
IncomingWebHook の有効化
Slackの以下ページより、IncomingWebHooksを有効化します。
投稿するチャンネルを選択し、Webhook URLを取得します。

取得したWebhook URLをコピー&ペーストします。このWebhook URLをPythonのプログラムで使用します。

Slackへ投稿するIncomingWebHookの表示名とアイコンはカスタマイズ可能です。こちらは必要に応じて変更します。

Slackwebのセットアップ
Slackwebのインストール
Slackへの投稿が可能になるPythonライブラリ「Slackweb」をインストールし、Raspberry Pi Zeroから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 slackweb_test.py import slackweb slack = slackweb.Slack(url="https://hooks.slack.com/services/xxxxxxxxx/xxxxxxxxx/xxxxxxxxxxxxxxxxx") slack.notify(text="Hello World!")
テストプログラムslackweb_test.pyを実行します。
$ python ./slackweb_test.py

Slackに投稿できていれば成功です。
温湿度を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へ投稿することができます。cronで毎時5分に投稿する方法は以下の通りです。
まず、スクリプトファイルに実行権限を付けます。
$ chmod 755 notify_to_slack.py
その後、crontabに指定の時間でスクリプトを実行するように設定します。今回の例は、毎時5分にSlackへ温湿度を通知するようにしている例です。
$ crontab -e 5 * * * * /home/pi/notify_to_slack.py
まとめ
温湿度センサーの値をSlackに投稿することでIoTを実現することができました。この調子でIoTを楽しみながらいろいろなレシピにチャレンジしてみましょう!
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ連載記事一覧
- この記事の著者
-
平 愛美(タイラ マナミ)
熊本県出身のITエンジニア。2児の母で、趣味は写真とグルメ。最近はRaspberry Pi、Arduinoを使った家庭内IoTについて日々研究するIT系母ちゃんとして活躍中。主な著書は、『改訂3版 Linuxエンジニア養成読本』(寄稿、技術評論社 刊)、『Linuxシステム管理標準教科書』(共著、LPI-Japan)など。 ブログ:Mana Blog Next Twitter:@mana_cat
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
