SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ

Raspberry Piでセンサーを使ってみよう ~温湿度センサーの値をSlackに通知するレシピ

Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ 第2回


  • X ポスト
  • このエントリーをはてなブックマークに追加

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

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Raspberry Pi Zeroではじめよう! おうちで楽しむIoTレシピ連載記事一覧

もっと読む

この記事の著者

平 愛美(タイラ マナミ)

 熊本県出身のITエンジニア。2児の母で、趣味は写真とグルメ。最近はRaspberry Pi、Arduinoを使った家庭内IoTについて日々研究するIT系母ちゃんとして活躍中。主な著書は、『改訂3版 Linuxエンジニア養成読本』(寄稿、技術評論社 刊)、『Linuxシステム管理標準教科書』(共著、LPI-Japan)など。 ブログ:Mana Blog Next Twitter:@mana_cat

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10562 2017/12/19 14:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング