温湿度センサーの値を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を楽しみながらいろいろなレシピにチャレンジしてみましょう!