はじめに
SESAME3は非常に便利なスマートロックですが、前回バージョンのSESAME miniで出来たIFTTT送信には対応していません。
Alexaに対応するも、セキュリティの面からか毎回パスワードを答える二度手間が面倒でした…
よってSESAME3をより手軽に開閉出来るよう、手元のスマートバンドMi band 6(Mi band 5やAmazfit band 5も可)でIFTTTを起動し、SESAME3を解錠するよう設計しました!!
主なフロー スマートバンドからIFTTT送信 →Google Apps Script →SESAME WEB API →SESAME3解錠
上記のスマートバンドからIFTTTを送信する方法はこちらからどうぞ。
アプリ概要はこちら
アプリの詳細設定(IFTTTとの連携方法)はこちら
オススメのスマートバンドはこちら
必要な物
必要なのはSESAME3本体のみ!!
今回の方法は、物理的な中継機だったりするRaspberry Pi等を使わない方法です!!
おそらく後継機種の
SESAME4でも同じことが出来るかと!!
※保証はできませんので悪しからず..
ちなみに電池は公式で買うよりAmazon等ECサイトのが安いですよ!!
SESAME API key
API Keyの取得
CandyHOUSE Dashboardにアクセスし、API Keyを入手します。
SESAME3の設定時に自身が登録したメールアドレスを入力すると、4桁の認証コードがメールで届きます。
メールに届いた認証コードを入力すると、自動でログインされます。
「API_KEY」下の文字列をコピーし、API key取得完了です。
Name, UUID, Secret Keyの取得
セサミアプリからSesame 3の設定画面に移動し、「このセサミの鍵をシェア」 からQRコードを作成し、保存する。
作成したQRコードをQR Code Reader for SESAMEにアップロードすると、「Name, UUID, Secret Key」をそれぞれ取得することができる。
Google Apps Script
新規ファイル作成
Google Apps Script(以降GAS)を使用する。
GoogleChromの左上「アプリ」から「Googleドライブ」に移動する。
続いて、スクリプトファイルを新規作成「新規→その他→Google Apps Script」する。
GitHubから必要コード取得
artjombさんの cryptojs-extensionを使用する。
GitHubのこちらのサイトから、「lib/cryptojs-aes.min.js」及び「build/cmac.min.js」の内容をコピーする。
例 lib/cryptojs-aes.min.jsの場合
1. libを選択
2. cryptojs-aes.min.jsを選択
3. コードを全てコピーする
スクリプト追加
GASに戻り、「ファイル+」からスクリプトを押し、追加する。
ファイル名を「cryptojs-aes.min.js」及び「build/cmac.min.js」に設定し、記述されているコード「function myFunction() { }」を消し空欄にした後、GitHubから得たコードをそれぞれペーストする。
メインコード取得
道ばたのノートさんのコードを使用する。
こちらのサイトの汎用サンプルコードをコピーし、GASの「コード.gs」ファイルへ、記述されているコード「function myFunction() { }」を消し空欄にした後ペーストする。
コードの一部分を書き換えする。
8 prop.setProperty('myKey', '*****'); *****へ任意の数字 9 prop.setProperty('apiKey', '*****'); *****へAPI key 16 analyzeQR('*****', '*****', '*****'); *****へName, UUID, SecretKey 29 main(myKey, "セサミの名前", 2, "GAS"); 「セサミの名前」はSESAME3の名前を入力(アプリで確認) 「GAS」はアプリでの実行名(そのままでも問題なし)
「プロジェクトを保存」を押し、コードを保存する。
動作テスト
プルダウンより「prepare」を選択し、「実行」を押す。
同様にプルダウンから「test」を選択し、「実行」を押す。
成功すると200が返り、SESAME3により鍵が開く。
Webアプリ化
「デプロイ」 から 「新しいデプロイ」を選択する。
「種類の選択(歯車部分)」で「ウェブアプリ」を選択する。
次のユーザーとして実行を「自分」、アクセスできるユーザーを「全員」に設定する。
「デプロイ」を押すと「ウェブアプリURL」が表示されるため、コピーを行う。
IFTTT
IFTTTのwebhookでPOST送信
IFTTTのwebhook機能を使用し、上記で取得した「ウェブアプリURL」にPOST送信をする。
webhookへの設定は以下の通り
URL 「ウェブアプリURLを入力」 Body 「{"myKey":"任意の数字","deviceName":"セサミの名前","command":"0","user":"通知に表示される名前"}」 任意の数字: GASのコード.gsファイルで入力したmyKeyの数字 セサミの名前: GASのコード.gsファイルで入力したセサミの名前 command: 0=解錠 1=施錠 2=トグル 通知に表示される名前: 任意 Method 「POST」 Contest Type 「application/json」
これでIFTTT経由でGASを起動し、WEB APIを用いてSESAME3で解錠することができるようになる。
最後に
目標であるIFTTTでSESAME3を動かす計画は大成功を収めた。
SESAME3ユーザー様のためになれば幸いである。
参考:道ばたのノート様