HomeMadeGarbage Loading

気圧センサの Alexa 連動とグラフプロット

ホーム
電子工作
Raspberry Pi
IOT
音楽
Home > IoT > 気圧センサの Alexa 連動とグラフプロット
すき 0
うんこ 0

我が家のおしゃべりコンシェルジュのティラノくんに気圧センサBMP280を導入したことを前回報告させていただきました。

AquesTalk と Node-RED と ラズパイで おしゃべりティラノくん作製

日々のお知らせにその時の気圧を付与して発話するようにしたのですが、リアルタイムの気圧が知りたいとのことで Alexa と連動もさせてみました。

また1時間ごとに気圧を測って記録しグラフで確認できるようにもしました。
 

 

Alexa連動

Node-RED Alexa Home Skill Bridge というNode-REDモジュール用いて、仮想のAlexaデバイスを作成して発話応答をNode-REDへ返してティラノくんに気圧を発話させました。

構成

 

主要部品

  • Amazon Echo Dot

     
  • Raspberry Pi Zero W

     
  • 気圧センサ BMP280

Node-RED Alexa Home Skill Bridgeの設定

Node-RED Alexa Home Skill Bridge用のアカウントを作成して気圧センサを起動するための仮想のAlexaデバイスを作成します。
 

アカウント登録

以下にアクセスして、Resisterをクリックします。
 https://alexa-node-red.bm.hardill.me.uk/

ユーザ名とメアド、パスワードを登録します。

 

デバイス登録

登録後、Devicesタグを選択してAdd Deviceをクリックします。

 
気圧センサを起動するためのAlexa用デバイス”Barometric pressure”を作成しました。

Name: デバイス名 ” Barometric pressure” 入力
Description: デバイスの簡単な説明記載
Actions: デバイスの動作種類を選択。ここではOnを選択。
     Onで気圧センサ値読み取りのトリガとします。

 

 

Alexaスキル  Node-RED有効化

スマホのAlexaアプリでNode-REDスキルを有効にしてAlexaサービスとNode-RED Alexa Home Skill Bridgeを紐づけます。

 
スキルを有効にするとNode-RED Alexa Home Skill Bridgeのアカウント入力画面に切り替わるので、登録したユーザ名とパスワードを入力します。

 
問題なければデバイス検出画面に移行します。

 
端末の検出をクリックで作成したデバイスが見つかります。

 

定型アクションを編集

作成したデバイスの起動するための発話をカスタマイズするために、 Alexaスマホアプリで定型アクションを編集します。

Node-RED設定

node-red-contrib-alexa-home-skillをインストールします。

設定でパレットのインストールでnode-red-contrib-alexa-home-skillを検索して”install”クリックでノードが追加されます。

作成した仮想Alexaデバイス”Barometric pressure”を配置します。

ノードを配置してまずはNode-RED Alexa Home Skill Bridgeで登録したユーザ名とパスワードを入力します。

 
デバイスを選択します。

 

Alexa-homeノードを気圧センサの値を取得して発話させるノードの手前に挿入します。


 

動作

Alexaで設定した定型アクション文の発話で現在の気圧を発話してくれるようになりました。

参考

 

気圧のグラフプロット

Node-RED上で気圧センサの値を取得・記録しプロットします。

プロットには node-red-contrib-googlechart というノードを利用しました。

Node-REDフロー

1時間ごとにセンサで気圧を測定してJSON形式で記録し、Googleチャートでグラフプロットします。

  1. inject node
    一時間ごとに起動し時間を次のノードに渡します。

     
  2. exec node
    pythonコードを起動して気圧センサの値を取得して、時刻と気圧を次のノードに渡します。

    bme280_sample.py内のcompensate_P(adc_P)の最後の測定値出力を以下のように修正しbme280_data.pyとしました。

    sys.stdout.write(datetime.now().strftime("%Y/%m/%d-%H:%M:%S") + "\t%0.1f" % (pressure/100)) 
     

  3. exec node
    pythonコードを起動して前段ノードからの時刻と気圧をtxtファイルに保存します。
     

     

  4. chart request node
    node-red-contrib-googlechart のchart request nodeでJSON形式のデータをプロットしてグラフを生成します。
    Charttype: グラフの形式を指定。ここでは線グラフのLineChartを指定
    Path: グラフを表示するURLを指定します。ここでは”/kiatu05″として
          node-REDのIPアドレス/kiatu05にアクセスでグラフが表示されます。
    Attributes: +addでJSONデータの要素を追加します。
      
  5. file in node
    ③で生成した時刻と気圧のtxtファイルを読み込みます。

     
  6. function node
    前段からのtxtファイルを配列形式に整形します。
     
  7. json node
    前段から受け取った配列をオブジェクトに変換します。
     
  8. chart response node
    JSONデータを受け取りプロットします。設定することは何もありません。
     

グラフ

これでスマホやPCで気圧のグラフの表示が可能となりました!

参考

 

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください