2020

1

3

Raspberry PiとMQTT使ってマンションのオートロックを解錠してやんよ!!!(後編)

タグ: | |

Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

前回までのあらすじ

前回、ラズパイを使って鍵を使わずに自宅マンションのオートロックの解錠に挑戦して、

スマートスピーカーからラズパイを通して自宅インターホンの解錠ボタンを操作できるようになりました。

Raspberry PiとMQTT使ってマンションのオートロックを解錠してやんよ!!!(前編)

とはいえ、スピーカー経由で音声操作するには自宅にいる必要があり、そもそもそれは専用アプリで事足りる操作やんけ!!
ってことで後半ではちゃんと外からでもスマホだけで操作できる様にしていきます。

方法① WEBページのFROMから操作

一番手っ取り早いのが自作WEBページのフォームからPOSTリクエストする方法です。

下記ファイルを作成して、レンタルサーバーなどにアップすれば外からスマホでこのファイルのURLにアクセスすれば、そこから操作可能です。

HTML
<div class="container">
    <button id="release" class="button">オートロック解除</button>
    
<div id="output"></div>
</div>

JavaScript
//ボタンが押された時のイベント
document.getElementById('release').addEventListener('click', function(){
    releaseShot();
});
function releaseShot(){
    var url = 'http://api.beebotte.com/v1/data/publish/ENTRANC/release?token=token_トークン情報';
    var param = {
        "data" : [{"room":"living","device":"release","action":"on"}],
    };
    const headers = new Headers( { "Content-type" : "application/json" } );
    return new Promise((resolve, reject) =&gt;{
        fetch(url, {
            method : 'POST',
            body : JSON.stringify(param),
            headers: headers
        }).then((response) =&gt; {
            target = document.getElementById("output");
            target.innerText = "通信成功:オートロック解除しました"
        })
    });
}

でもこれだと検索ロボットに引っかけたくないとか誰でもアクセスできる状態にしたくないからパスワード設定だとか

余計なリスク管理が必要になったりとあんまりイケてない・・・。

方法② iPhoneのショートカットから操作

もっとイケてる感じの方法はないもんかと色々と探っていると、何やらiPhoneのショートカットアプリでAPIのリクエストを直接叩けるという事を知ったのでコレを試してみます!

実際には下記のcurlコマンドをショートカット上で設定していきます

送信するPOSTデータ
curl -i -H "Content-Type: application/json" -X POST -d '{"data":[{"room":"living","device":"release","action":"on"}]}' http://api.beebotte.com/v1/data/publish/Entrance/entrance?token=token_トークン情報

ショートカット「新規作成」設定画面

URLアクション設定

まずはアクセス先のURLを設定します

  1. 1. アプリをインストールしたら新規ショートカットを作成します。
  2. 2. 「アクションを追加」をタップして検索バーから"URL"を選択してbeebotteのリクエストURLを入力

URLアクション設定

次にオプション設定。ここで前回IFTTTでGoogleアシスタントに設定したGoogleHomeのトリガー部分を当てはめていきます。

  1. 1. 新規アクションを追加して"URLの内容を取得"を検索して選択
  2. 2. 「方法」POSTを選択
  3. 3. 「ヘッダ」のキーはContent-Typeを入力、テキストはapplication/jsonを入力
  4. 4. 「本文を要求」JSONを選択し。
  5. 5. 新規フィールドには配列を選択してキーにはdataを入力
  6. 6. dataキーの項目には辞書を選択
  7. 7. 新規項目にテキストを選択し、キー①にはroom、テキスト①にはliving
  8. 8. さらに新規項目はテキストを選択、キー②にはdevice、テキスト②にはrelease
  9. 9. 最後にもう一つ新規項目はテキストを選択、キー③にはaction、テキスト③にはon

これで最低限の設定はできました。
あとは通知アクションを追加したり、アイコンを作成してホーム画面に追加したりとカスタマイズしてください。

まとめ

ショートカットを作成した事でネイティブアプリを使う感じで解錠に成功しました!
わかりやすく動画にまとめようと思いましたが、色々と面倒なのでそれはやめましたw

これで本来SwitchBotの専用ハブを購入しないと実現できなかった外からのSwitchBot操作が可能になりました。

今回の実装リスク

  • ・ラズパイが壊れたら終わる
  • ・各連動サービスが停止・不具合あったら終わる
  • ・自宅が停電したら終わる
  • ・SwithBot自体がBluetooth接続のみのデバイスなので、集合住宅などでは広さによっては隣人宅のスイッチも検知できる。(※)

(※)に関しては、各スイッチに個別パスワードを設定できるが、今回はラズパイにパスワード情報を引き継いでの実装はできなかったため、パスワードは未設定のままのため、この辺りも何とかしていきたい。

Pocket
LINEで送る
Facebook にシェア
reddit にシェア
LinkedIn にシェア

トップへ