SESAME3, 4をIFTTTで操作する【ラズパイ不要】WEB API-Google Apps Script(GAS)-Alexa

電子工作/便利改造

はじめに

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を送信する方法はこちらからどうぞ。

アプリ概要はこちら

【Notify for Mi Band】Mi band 5, 6でLINE電話通知&Alexa対応化アプリ Amazfit band 5も強化可能
Mi band 5, 6やAmazfit band 5でLINE電話通知&Alexa対応が可能な神アプリ【Notify for Mi Band】を紹介します。

アプリの詳細設定(IFTTTとの連携方法)はこちら

【Notify for Mi Band】Alexa, IFTTTのアプリ設定解説 [Mi band 6, 5やAmazfit band 5対応]
Mi band 6,5でAlexa定型アクショントリガーやIFTTTを使うためのアプリ【Notify for Mi Band】の具体的な設定方法を記載しました。

オススメのスマートバンドはこちら

日本語Alexa対応スマートバンド徹底比較 Amazfit band 5 vs Mi band 6 NFC Global
唯一2つだけ日本語Alexa対応しているスマートバンドAmazfit band 5とMi band 6 NFC Globalをその機能から徹底比較しました!!

必要な物

必要なのはSESAME3本体のみ!!

今回の方法は、物理的な中継機だったりするRaspberry Pi等を使わない方法です!!

ガジェ男
ガジェ男

おそらく後継機種の

SESAME4でも同じことが出来るかと!!

※保証はできませんので悪しからず..

ちなみに電池は公式で買うよりAmazon等ECサイトのが安いですよ!!

セサミ3、セサミ4の電池交換方法【スマートロックSesame3,Sesame4】
スマートロックセサミ3、セサミ4の動きが悪くなってきたので、電池を交換してみました。

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ユーザー様のためになれば幸いである。

参考:道ばたのノート