tamulab.jp

tamulabはプログラミングのtipsやインターネット上で気になったことなどを書いてます

[ラズパイ] Rubyを使ってBME280センサの気温、湿度、気圧をslackに通知する

calendar

reload

view 99 views

[ラズパイ] Rubyを使ってBME280センサの気温、湿度、気圧をslackに通知する

前回は環境センサBME280を使ってRubyで気温、湿度、気圧を取得するまでやりました。
最終回は取得した気温、湿度、気圧をslackに通知してみます。前々回ですでにRubyをつかってslackへの通知はやっていたのでそのスクリプトにBME280の気温、湿度、気圧取得をいれこみます。

スポンサーリンク

RubyでBME280から値を取得する

rubyでi2cを経由してbme280のデータを読み込むスクリプトがRaspberryPiフォーラムありましたのでそれを使わせてもらいます。

このうち bme280.rb にセンサのアドレスが書かれているのでこれを 0x77 に変更します。
あとでライブラリを読み解いてみたところ RPi::BME280.new(i2cbus) するときにプロパティを設定して、
RPi::BME280.new(i2cbus, 0x77)とするのがいいかもしれません。

ライブラリの読み込みパスを指定するためにsample.rbを編集します。

保存したら実行してみます。

お、前回の Python スクリプトと同じように取得することができました。

前々回のslackへの通知スクリプトに気温、湿度、気温取得を組み込む

まずは前々回テストしたときの post_to_slack.rb を ruby-bme280 にコピーしてきます。
コピーしてきた post_to_slack.rb に sample.rb を移植してきます。
sample.rb では puts で標準出力していましたが、そのときに bme.temperature で気温、 bme.humidity で湿度、 bme.pressure で気圧が取得できていました。
なので、あとはslackに通知する内容にこれらを追加すればOKです。

attachment オブジェクトのなかで、 textプロパティがslackに通知されるテキストなのでそこを
text: "気温: #{bme.temperature}, 湿度: #{bme.humidity}, 気圧: #{bme.pressure}",
とするとslackには次のように通知が届きます。

slack-notifier を使うといろいろな通知の送り方がカスタマイズできますのでいろいろ試してみるといいと思います。
ちなみに、私はこんな感じにしています。
attachment を使うことで気温、湿度、気圧を並べて表示して見やすくしています。
あと ts プロパティを追加することでメッセージフッター部分の時刻表示を追加しています。

実際に届く内容はこんな感じです。

左側の緑色のところですが、温度が30度を越えたらオレンジ色に、35度をこえたら赤になるようにしています。
それと、アイコンが温度計のものになるように icon_emoji: ":themometer:" を追加しています。

スクリプト全体は GitHub で公開しています。

crontab に追加して定期実行する

あとはこれをcrontabについかして定期的(30分ごと)にslackへ通知できるようにします。

ポイントは rbenvを使っているため、bashコマンドを経由して実行しています。
あと、エラーについてはエラーログに書き込むように 2>post_to_slac.err を追加しています。
ときおり、うまく通知されないことがあったのですが、エラーログのおかげでGPIOのエラーが起きていたのがわかりました。

あとはこれを1週間くらい放置しておけば30分毎にあなたのslackにラズパイからの通知がとどきます。

Amazon link

この記事をシェアする

コメントする

関連記事

No Image

[ラズパイ] RaspberryPi3でRubyを動かしてSlackに通知する
rails3 のプロジェクト作成
[参加レポート] Ruby World Conference 2017 ノベルティ

about

Toru TAMURA

Toru TAMURA

PHP, Ruby などをあやつるWebエンジニアです。Amazon Web Service(AWS)のユーザーグループ JAWS-UG 島根支部所属 [詳細]