Lesaria の Multiple-Choice

最近、本買いログがメインになっています。たまにPCやガジェットに関して記事にします。

Alexa と Node-Red の連携を復活 再び音声でRaspberry Pi に命令できるように!! 2020/12/26

はじめに

 自宅で Node-red を利用して AlexaとRaspberryPi を通信させていたのですが、以前のアップデートで、Alexa側からは、一つのIPアドレスに対して、一つのデバイスしか認識しなくなった様子です。口頭で部屋の家電を制御するのに飽きていたことに、ものぐさも手伝って、放置していたのですが、今回、再設定したので備忘となります。

 

 

Node-Red どのノードを使うのか?

 

右上のハンバーガーメニューから「パレット管理を選択」

次に「ノードを追加」タブを選択してください。

気ワード「alexa」で検索すると以下のノードが あるので追加してください。

"node-red-contrib-alexa-home"

f:id:multiplechoice:20201226143716p:plain

左端のノードパレットに以下が追加されます。

f:id:multiplechoice:20201226143902p:plain

 

どのように設定するのか?① ノードをフローに

Alexa Home controller を一つフローに置きます。二つ置く必要はありません。

f:id:multiplechoice:20201226144058p:plain

次にAlexa home を置いて好きなデバイス名を付けてください。Alexaのアプリからはこの名前で認識されます。自分は「Light1」にしています。関係あるかないか検証していませんが自分は「Type」をExtended Color lightにしています。

f:id:multiplechoice:20201226144231p:plain

この時、Alexa home を複数置いて、複数のデバイスを1つのサーバーに設定しようとしてはいけません。上手く行きません。又、複数置いた状態で、Alexa アプリからデバイスを検出しようとすると、サーバーに置いたデバイス(=Node)を認識しなくなります。一つに戻しても、何日間か、再検出されない現象を確認しています。

 

どのように設定するのか?② ご説明

バイスが一つしか設定できないなら、AlexaからNode-Redにさせれる仕事の数は凄く少ないんじゃない? 以前と違って使い物にならないのでは?

そう思われるのはごもっとも。 

 

ここで抜け道があります。Alexa アプリから ライトのデバイスには0%~100% の刻みで明るさを指定できるのです。気付きましたか? 「マイ定型アクション」を使うと定型文の命令で、100種類の動作を指定できます。

 

どの様に設定するのか?③ ノードの設定

ここで、パレットの機能から「switch」ノードを置いて利用します。

f:id:multiplechoice:20201226145800p:plain

 

「Light1」からSwitch ノードに繋げます。

palyloadには「.bri」を追記してください。「明るさ」を受け取る訳です。

名前が100~81なのは、この方法では一つのフローに100命令を置かなければならず、

100個に分岐するSwitch を置くと、フローがこんがらがるので、20個づつのSwitch をフロー上に離して置いて解決しています。

f:id:multiplechoice:20201226145559p:plain

 

さて上の写真で気付かれと思いますが、100が最大なのに、254 ?と思った方、そう。254です。Alexa アプリで 100%の明るさを選んだ場合、254 が 流れてきます。

 

  • 100 = 254
  •  99 = 251
  •  98 = 249 


このような具合に100 の 254 と 99 の 251 の間は3 の空きがあり、99と 98 = 249の間は2つの空きがあります。規則正しく、3飛ばし、2飛ばしの数字がNode-Red側には流れてきます。(0~100 まで全部確認したわけではないので、debug ノードを利用してmsg.payload.briに流れてくる値を確認しながら設定してくださいね)

 

このように面倒な作業をして、ようやく、Raspberry Pi をAlexaで制御できるようになりました。お疲れさーん。