この記事を読むのに必要な時間は約 13 分です。
AmazonダッシュボタンがIoTに使えると聞いて遥か昔に購入したものをようやく活用しました。
少しめんどくさいイメージがあって今までやっていなかったのですが、やってみると1時間程度でサクッと完成したので備忘として載せておきます。
今回は自宅にある超小型PCのRaspberry Pi(ラズベリーパイ)とAmazonダッシュボタンを用いてSwitchBotを操作します。
以前にスイッチボットをラズパイから操作する記事なども書いていますが当時はPythonを使っていました。
今回はnode.jsを利用します。
※関連過去記事
Switch Bot(スイッチボット)家のスイッチをIoT化!使い方・操作方法を解説!
ラズパイ(Raspberry Pi)からSwitch Bot(スイッチボット)を操作する手順を解説
Amazonダッシュボタンの初期設定
Amazonダッシュボタンは最初にwifiとの接続設定が必要となります。
その設定がAmazonのスマホアプリを用いて行う必要があるため、まだ持っていない人はインストールが必要です。
Amazonのスマホアプリを用いて初期設定を行う
さて、早速初期設定を行なっていきます。
基本的にはダッシュボタンに付属している説明書通りに作業を進めていき、商品を選択する前でセットアップを終了します。
※商品選択までしてしまうと、ボタン押すたびに商品来てしまいます。
手順を記載すると以下のようになります。
- Amazonアプリからメニューを表示
- 「アカウントサービス」をタップ
- 「ダッシュ端末の管理」をタップ
- 「新しいDash Buttonをセットアップ」をタップ
- 案内に従ってセットアップを進める
- 商品選択画面で商品を選択せずにセットアップを終了する
以降はラズパイを用いて作業をしていきます。
Raspberry pi(ラズベリーパイ)での作業
ラズパイで行う作業は以下の3つです。
- 必要なパッケージのインストール
- ダッシュボタンのMACアドレス確認
- ダッシュボタンのクリックからイベントの発火
また、ダッシュボタンのプッシュを受け取ってスイッチボットを操作するのはnodeとnpmを使用するのでこれらは入っていない場合は先に入れておいてください。
※nodeが入って入ればnpmも入っているはずなのでnodeの有無を確認すると良いです。
※node -v と入力してバージョン情報が返ってくればnodeは入っています。
$ node -v
$ npm -v
※共に入って入ればこれでバージョン情報が返って来ます。
1.必要なパッケージのインストール
下準備です。
適当な階層でフォルダを作成してその中でコマンドを実行すると良いです。
ラズパイ上で以下のコマンドを実行していってください。
//作業用のフォルダを作成する
$ mkdir DashButton
//作成した作業用フォルダに移動
$ cd DashButton
//package.jsonの作成
//パッケージの情報を聞かれますが、基本何も入力せずにEnter押しておけば良いです。
$ npm init
//ダッシュボタンとスイッチボットに必要なパッケージをインストール
$ npm install --save dash-button
$ npm install --save switchbot
package.jsonのscriptsと記載があるところを以下のように変更してください。
"scripts": {
"scan": "dash-button scan",
"test": "echo \"Error: no test specified\" && exit 1"
}
※linux上での編集は「vi package.json」と打つと編集画面になります。
その状態で編集を行う箇所にカーソルを合わせて「i」を押すと編集モードになります。
編集した上で「ESC」を押して編集モードを解除、「:wq」と打つと保存して終了になります。
以上で必要なパッケージの準備と変更が完了です。
2.ダッシュボタンのMACアドレス確認
続いてダッシュボタンのMACアドレスを確認します。
MACアドレスとは簡単に言うと、ダッシュボタンを特定するために使用するものです。
$ sudo npm run scan
> dashbutton@1.0.0 scan /home/pi/Documents/DashButton
> dash-button scan
Scanning for DHCP requests and ARP probes on wlan0...
//ここより上がコマンドを実行すると表示され、その状態でダッシュボタンの押すと以下のような行が表示されます。
Detected a DHCP request or ARP probe from 00:00:00:00:00:00
//この上の行のfrom以降の部分がダッシュボタンのMACアドレスになるので控えてください。
確認方法はスイッチボットのスマホアプリから動作させたいスイッチボットの設定画面を開くと表示されています。
アプリを起動してメニューからホーム画面に移動すると近くにあるスイッチボットが認識されます。
歯車マークをタップすると設定画面が開きます。
一番下に表示されているのがスイッチボットのMACアドレスになります。
これはあとで使用します。
3.ダッシュボタンのクリックからイベントの発火
いよいよ最後です。nodeで実行するjsファイルを作成して先ほど調べてMACアドレスを元にソースを書いていきます。
適当なjsファイル(dash-to-switch.js)を作成して中に以下のソースを記載してください。
const DashButton = require('dash-button');
const Switchbot = require('switchbot');
const button = new DashButton('ダッシュボタンのMACアドレス');
const switchbot = Switchbot('スイッチボットのMACアドレス');
button.addListener(() => {
console.log('押された');
switchbot.press();
});
node dash-to-switch.js
コンソール自体表示されない場合はダッシュボタンのMACアドレスが誤っている可能性があるため、再確認してください。
「押された」と表示されたにも関わらずスイッチボットが動作しない場合はスイッチボットのMACアドレスが誤っている可能性があるため、再確認してください。
ちなみにコンソールを閉じてもnodeを動きっぱなしにしたい場合は以下のコマンドでjsを実行すると良いです。
$ nohup node dash-to-switch.js &
「nohup」とかで検索すればコマンドの意味はわかります。
まとめ
先人達が便利なライブラリを作ってくれているおかげでかなりさっくりとできたかと思います。
今回はダッシュボタンからスイッチボットの処理を実行しましたが、jsで実行できるものは大抵の処理が行えます。
そのため、ダッシュボタンを押したら特定のURLをキックしてバッチ処理を実行するなどといった使い方も可能です。
URLキックができるとなるとGASやIFTTTとの連携も可能になるためかなり多くのことができるようになりそうです。
一つだけ欠点があるとするとボタンを押してから実際にイベントが処理されるまで多少のタイムラグがあることですね。。
といっても10秒あるかないかぐらいなので使い方がある程度は絞られますが十分許容範囲かと思います。
記事内で使用した製品
関連記事



