Amazon Dash ButtonでPhilips Hue 電球専用のDimmer スイッチを作ってみました (2)

9月から配信開始になったNETFLIXの”スター・トレック: ディスカバリー”を何で観るか! “Fire TV Stick”編

Apple Watch Series 3(GPS + Cellularモデル)とApple TV 4K(32GB)が届きました!! (3)

Koogeekスマートコンセント HomeKit 遠隔操作 電力を監視 1800W AC120V 米国の規制 ホワイト

ルートアール 30灯 USB LED バーライト 拡散カバータイプ 昼光色 RL-BAR30DD

ダイソンのPure Hot + CoolをGoogle AssistantとHomeKitでリモコン操作できるようにしてみました

Homekitアクセサリを外出先からリモートコントロールする方法をまとめておきますね

980円でお部屋の温度をHomeKitをベースに外出先でもモニターできるようにしてみました

Philips Hue Whiteスターターセットを買ってHomeKitとGoogle Homeでホームオートメーション!

Amazon Dash ButtonでPhilips Hue 電球専用のDimmer スイッチを作ってみました (1)“の続きです。

 

先日のTALKで、”Philips Hue(ヒュー) ホワイトグラデーション スターターセット“には、”Philips Hue(ヒュー) Dimmer スイッチ 929001173762 【AmazonAlexa認定取得製品“は要らない、とお話しましたが、数日間使ってみると、誤って、これまで使っていた照明用のスイッチで、Hue電球をオフにしてしまうと、通電自体オフになってしまうので、その後、該当のHue電球のコントロールができなくなるという不都合に気づき、これは何とかしないとなあ、と思い、先人の知恵を検索してみると、”Amazon Dash Button“と”Raspberry Pi” (常時電源が入っているデバイスならばPCでも良さそう。)のコンビで、”Philips Hue(ヒュー) ブリッジ 929001180614 【AmazonAlexa認定取得製品】“を介して、Hue電球をオフ・オンできるそうなので、早速、試してみることにしました。

で、前回までで、“Philips Hue ブリッジ”を介して、Hue電球の状態やオン・オフするところまでは出来たのですが、肝心な”Dash Button”のセットアップが不調に終わり、アマゾンのサポートさんとチャットした結果、もう1台、”Dash Button”を送ってもらうことにした、というところまでお話しました。

 

(3) 再送してもらった”Dash Button”をセットアップしてみましょう

再送してもらった”Dash Button”が翌日届いたので、早速、セットアップをしてみることにしました。

iOSアプリ “Amazon ショッピングアプリ – AMZN Mobile LLC“を起動して、所定の手順でセットアップを進めてみると、

“登録中…”画面が表示されていた後、少し経つと、”Dash Button”の青色に光っていたLEDが消えてしまいます。んんん、やっぱり、セットアップが出来ない!!

2台目も同様の現象だとすると、”Dash Button”のハードウェア的問題ではないことは明確になったので、改めて、ネット検索しながら、セットアップできない原因を考えてみることにしました。

 

(4) ”Dash Button”をセットアップできない原因が判明しました!

”Dash Button”をセットアップできない原因として、一番疑った箇所は、自宅のネットワーク環境でした。我が家では、2系統の無線LANがあったり、無線LANを利用するガジェットが山のようにあるので、複雑になってしまったネットワーク環境、あるいは”DHCP”、”2.4GHz帯域”辺りを重点的にチェックしてみたのですが、一向に改善の兆しが見えてきません。

で、ふとしたきっかけで閲覧した”Amazon.comのアカウントを結合済みのお客様 Amazon.comとAmazon.co.jpのアカウントを結合済みのお客様への注意点です。“というアマゾンのヘルプで、もしかすると、”Dash Button”でも同様の状況は発生するのかも?ということで、テンポラリに女房のアマゾンIDを借りて、”Dash Button”をセットアップしてみることにしました。

WiFiの認証情報を入力、”登録中…”画面が表示されていた後、少し経つと、セットアップ手順の続きに進むことができました!

“商品を選択”画面に切り替わったタイミングで、右上の”X”ボタンをタップして、商品の設定をスキップします。

今回は、”Dash Button”でアマゾンに注文する必要がないので、これでいいんです!!

ま、結果的に、2台目の”Dash Button”も手元に残ったので、この機会にセットアップを済ませておきます。2台目以降の”Dash Button”をセットアップする場合は、WiFiの認証手続きをスキップできるんですねえ。これは、賢い仕様ですねえ。

無事、”Dash Button”のセットアップが完了しました。

 

(5) 本題に入る前に

”Dash Button”を使って、Hue電球をコントロールする方法は、先人たちの努力によって、いくつかのパターンがあるようです。勿論、全てを試すわけにはいきませんので、比較的、簡単そうな方法を1種類だけ試してみました。

・Dasherモジュールを活用する方法

Dasher“というモジュールを活用すれば、APIなどを叩かなくても、比較的用意にHue電球をコントロールできそうなので、実際に試してみたところ、なかなかストレートにはできそうにありませんでした。

これ以外に、”node-dash-button“なども気にはなりましたが、そうそう試している時間もないので、いずれまた、ということにしました。

 

(6) それでは、Philips HueのAPIを使って、Hue電球をコントロールしてみましょう

今回は、折角、Philips Hue APIのアウトラインを理解できたので、ライブラリやモジュールといった方法には頼らず、直球勝負で、APIを発行するシェルスクリプトを書くことにしました。勿論、先人たちの知恵を借りながらですけどねえ。

・Dash ButtonのMACアドレスを調べておきます

今回は、マックのターミナルを使って、

sudo tcpdump port bootps

を実行、そして”Dash Button”のボタンを押すことで、MACアドレスを調べる方法でいきました。

ただ、この方法ですと、複数のMACアドレスが一度に表示されることがあるので、表示されたMACアドレスを”こちら”で検索することで検証しました。

 

・Raspberry Piにtcpdumpをインストールします

sudo apt-get install tcpdump

 

・シェルスクリプトを書いていきます

sudo nano dash_button_hue.sh

シェルスクリプトの中身はこんな感じです。

#!/bin/bash

sudo tcpdump udp -nl | while read line; do

  if [[ `echo ${line} | grep "68:37:e9:57:60:df"` ]]; then

#対象ライトのステータスを取得

    statesearch=$(curl -X GET 'http://<前回調べたブリッジのIPアドレス>/api/<前回取得したusername>/lights/<前回調べたHue電球のID番号>')

state=\"on\":true\,\"bri\"

#echo $statesearch

#echo ${statesearch:10:15}

#照明がオンの場合

if [[ ${statesearch:10:15} = ${state} ]]; then

#hueのブリッジに対象ライトをOFFさせに行く

      curl -X PUT 'http://192.168.1.17/api/<前回取得したusername>/lights/<前回調べたHue電球のID番号>/state' -d '{"on": false}'

    else

#照明がオフの場合

      curl -X PUT 'http://192.168.1.17/api/<前回取得したusername>/lights/<前回調べたHue電球のID番号>/state' -d '{"on": true}'

    fi

  else

    echo "dash_button_script is running."

  fi

done

 

ちょっとだけ補足しておきますと、対象ライトのステータスを取得すると、次のような結果が返ってきます。

{“state”:{“on”:true,”bri”:

204,”alert”:”none”,”mode”:”homeautomation”,”reachable”:true},”swupdate”:{“state”:”noupdates”,”lastinstall”:”2018-01-31T08:46:35″},”type”:”Dimmable light”,”name”:”書斎のサブ照明”,”modelid”:”LWB014″,”manufacturername”:”Philips”,”capabilities”:{“streaming”:{“renderer”:false,”proxy”:false}},”uniqueid”:”xxxxxxxxxx”,”swversion”:”1.29.0_r21169″,”swconfigid”:”321D79EA”,”productid”:”Philips-LWB014-1-A19DLv4″}

なので、先頭の何文字かを照合して、Hue電球がオンなのかオフなのかを判定しています。

 

作成したスクリプトファイルに実行権限を付けます。

sudo chmod 755 dash_button_hue.sh

で、シェルスクリプトを実行し、”Dash Button”のボタンを押して、コントロールできていることを確認します。

sudo /home/pi/dash_button_hue.sh

ターミナルには、こんな具合に出力されます。

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes

dash_button_script is running.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100   455    0   455    0     0  22416      0 --:--:-- --:--:-- --:--:-- 23947

[{"success":{"/lights/2/state/on":false}}]

dash_button_script is running.

 

(7) シェルスクリプトを自動起動するようにしておきましょう

Raspberry Piが起動する度に、シェルスクリプトを実行するのも手間なので、自動起動するようにしておきます。

 

sudo nano /etc/systemd/system/dash_button_hue.service

 

ファイルの中身はこんな感じです。

Description=dash_button_hue.service

After=syslog.target

[Service]

Type=simple

WorkingDirectory=/home/pi/

ExecStart=/home/pi/dash_button_hue.sh

Restart=always

TimeoutStopSec=5

StandardOutput=null

RestartSec=10

[Install]

WantedBy = multi-user.target

 

systemdに登録します。

sudo systemctl daemon-reload

sudo systemctl enable dash_button_hue.service

sudo systemctl start dash_button_hue.service

 

Raspberry Piを再起動した後、自動起動しているか確認しておきます。勿論、”Dash Button”のボタンを押してみれば、一目瞭然ですけどねえ。

sudo systemctl status dash_button_hue.service

 

こんな感じでターミナルに出力されればOKです。

dash_button_hue.service

   Loaded: loaded (/etc/systemd/system/dash_button__hue.service; enabled; vendor preset: enabled)

   Active: active (running) since Sun 2018-02-04 16:39:19 JST; 42s ago

 Main PID: 312 (dash_button_hue)

   CGroup: /system.slice/dash_button_hue.service

           ├─312 /bin/bash /home/pi/dash_button_hue.sh

           ├─343 sudo tcpdump udp -nl

           ├─344 /bin/bash /home/pi/dash_button_hue.sh

           └─363 tcpdump udp -nl

 

これで、一通り完成です。

ま、いろいろありましたが、結果的には、Hue電球 1個あたり250円で、Philips Hue 電球専用のDimmer スイッチが完成したので、当初の目標は達成できました。使い勝手としては、物理的なスイッチのように、パチパチ連続してオン・オフはできませんが、照明を付け、一呼吸してから照明を消す、といった比較的スローなアクションでしたら、実用性は十二分かと思います。

ちょっぴり暫定的な雰囲気がありますが、まずは使ってみながら、細かな改良をしていくつもりです。まずは、もっと綺麗にシール作らないとねえ。

p.s>

あまりに美しくないので、100円ショップで、インクジェットプリンタ専用のラベル用紙を買ってきて、

こんな感じでシールを作ってみたのですが、実際に切り抜いてみると、やっぱり円の部分を上手に切り抜けなかったので、

結局、こんな感じ。ま、前よりは少しだけマシかなあ!?

 

 

 

Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。
ホームページ “THE POOH FILES” にも是非お立ち寄り下さい。

tomohiko

長年に渡りMacintosh向けの自作アプリを作り続けているPOOHです。最近はiPhone,iPad向けアプリ開発にも挑戦中。グルメ、旅行、露天風呂、写真、サイクリング、映画、STAR TREKが大好き。レトロでSFなおもちゃを大量にコレクション。プレーリードッグと同居中。

おすすめ

コメントを残す