bttn使ってみました

会社でbttnという製品を購入しました。

何の変哲もない(?)押しボタンですが、これがなんとWiFi搭載でネットに繋がってます。
ボタンを押すと特定の宛先にメールを送る、とかTwitterにツイートする、とかできてしまいます。
公共の場所での簡易インタフェースとか、お年寄りのための見守りボタン的な使い方が想定されているようです。

この記事では、ボタンを押すとインターネット経由で社内のRaspberry Piに繋がったスピーカーから音が出る、というサンプルを設定してみます。

(1) bttnユーザ登録
my.bt.tnからユーザ登録と購入したボタン登録を済ませます。

(2) ボタンを押した時に呼び出されるURLを設定
my.bt.tnにログインすると、登録済のボタン一覧が表示されます。
設定対象のボタンの行にある「Action」ボタンを押してアクションを設定します。
「NEW ACTION」→「pressed」→「HTTP」と進みます。
アクションはメール送信などいろいろな種類が用意されていますが、ここでは「HTTP」(ウェブAPI呼び出し)を選びます。
ここで表示されるフォームに以下の内容を入力します。
HTTP URL: (Specify URL) http://example.com/
HTTP METHOD: GET
HTTP AUTHENTICATION: (HTTP server requires authentication) username:hogehoge password:fugafuga
このように、BASIC認証が設定されているURLへもアクセスできるようになっています。
API用のURLは後で生成するので、ここでは仮のURLを記入しておきます。
この状態で「NEXT」→「Save」で設定完了です。

(3) ウェブAPIを準備
呼び出される側のウェブAPIを用意します。
今回は社内のRaspberry Piで動いているウェブサーバを利用しました。

<VirtualHost 192.168.150.1:8080>
       DocumentRoot /var/www/bttn
        <Directory />
                Order allow,deny
                allow from all
                AuthType Basic
                AuthName "Password for bttn"
                AuthUserFile /etc/apache2/bttn_passwd
                Require valid-user
        </Directory>
</VirtualHost>
<?php
exec('/usr/bin/mpg321 /home/pi/sound/dog1.mp3');
echo "OKn";

(4) ウェブトンネリング設定
Raspberry Piのウェブサーバはファイアウォールの内側にあってインターネット非公開です。
ngrokを使ってbt.tnのサーバからアクセスできるようにします。

まず、ダウンロードページからngrokコマンドのバイナリをダウンロードします。
Raspberry Pi用は”Linux/ARM”ですね。
ダウンロードしたものを展開し、以下のコマンドを実行します。

$ unzip ngrok_2.0.19_linux_arm.zip
$ ./ngrok http 8080

ngrok実行後の画面に以下のような表示があるはずです。

Forwarding                    http://5ae30682.ngrok.io -> localhost:8080
Forwarding                    https://5ae30682.ngrok.io -> localhost:8080

このURLでインターネットから社内のRaspberry Piにアクセスできるようになりました。

(5) URLをmy.bt.tnに設定
再びmy.bt.tnからログインして
「Action」→「Current(HTTP)」と進み、HTTP URLの欄に
http://5ae30682.ngrok.io
を記入します。

これで完了です。
ボタンを押すと犬が吠えるようになりました。
手順として書くと長くなりましたが、非常に簡単です。

この単純明快なインタフェースをどう使うか、知恵の絞り甲斐のあるデバイスですね。

Related Post