
どうも、CHASUKEです。
SESAME miniの専用リモコンがあったら便利だと思って、SORACOM LTE-M ボタンで作ってみました。リモコンキーね。

CHASUKE
はい。またまたSESAMEスマートロックネタです..
SORACOMボタンは、LPWAの一つであるLTE-M通信が可能なIoTデバイス。AWS IoT 1-Clickのサポート対象で扱いやすいのが特徴です。
▼こんな感じに動作します。
SORACOMボタンからSESAMEロックを操作してみた。
AWS IoTボタンと違ってSIM内臓なので遠隔リモコンとしも活躍する。 #SESAME pic.twitter.com/qMmNOLmYwN
— CHASUKE (@chasuke__) February 22, 2019
驚くなかれ。
ボタンを押してから、セサミが開閉するまでに約20秒もかかります。

CHASUKE
スマホやApple Watchから操作した方が早いっすね
けれど、スマホを持ってない家族とか、離れたところからポチッと簡単に操作したい人もいるはず。試しに、車に玄関ロックを搭載してみたよ。
それでは行ってみましょう。
SESAME専用リモコンキーの仕組み
SORACOMボタンを押して、セサミが動くまでの道のりは、下にある通り。

難しそうに見えますが、そんなことはありません。
AWS IoT 1-Clickサポート対象のSORACOMボタンでは、「ポチッ」としてAWS Lambdaにアクセスするところまでは、スマホアプリで簡単に設定できちゃいますから。
参考にしたのは公式ブログ
セサミさんの公式アメブロには、Wi-Fi通信が可能な「AWS IoT Enterprise Button」を使って、操作する方法が紹介されています。
こちらの記事をベースに、「AWS IoTボタン」を「SORACOMボタン」に読み替え、処理を少しだけカスタマイズしました。

CHASUKE
カスタマイズしたポイントだけ書いていきますね
少し前に書いたSORACOM LTE-M ボタンの使い方の記事も参考になると思います。
https://chasuke.com/wp/soracombutton/

CHASUKE
記事内でAWS IoT Enterprise ボタンとの違いも書いてます
SESAME専用リモコンキーの作り方
基本的には、先ほどのセサミさんの公式アメブロの手順通り。
カスタマイズしたのは、Lambda関数の内容になります。
このLambda関数は、環境変数に操作したいコマンド(toggle/lock/unlock)を指定します。ボタンを押したら、その操作が実行されます。
けれど、AWS IoT 1-Clickには、3つのアクション(シングルクリック/ダブルクリック/長押し)を登録できます。

CHASUKE
せっかくなので3つの操作をさせたいですよね
Lambda関数のカスタマイズ
▼次のように動作させます。
- シングルタップ → トグル
- ダブルタップ → 施錠
- 長押し → 解錠
▼このまま、コピペすればOKです。
from http.client import HTTPSConnection
import json
import os
def get_command(conn, url, headers):
conn.request('GET', url, headers=headers)
ret = conn.getresponse()
if ret.getcode() == 200:
sesame_status = json.loads(ret.read().decode('ascii', 'ignore'))
return 'unlock' if sesame_status['locked'] else 'lock'
else:
raise RuntimeError('Server return error: %s' % ret.read())
def lambda_handler(event, context):
if 'DEVICE_ID' not in os.environ:
raise RuntimeError('DEVICE_ID not given')
if 'APIKEY' not in os.environ:
raise RuntimeError('APIKEY not given')
# シングル(toggle)、ダブル(lock)、長押し(unlock)のどれか
clickType = event['deviceEvent']['buttonClicked']['clickType']
url = '/public/sesame/%s' % os.environ['DEVICE_ID']
headers = {
'Authorization': os.environ['APIKEY'],
'Content-Type': 'application/json'
}
conn = HTTPSConnection('api.candyhouse.co')
# シングルの場合は「toggle」操作
if clickType == "SINGLE":
print("メモ:" + get_command(conn, url, headers))
body = json.dumps({'command': get_command(conn, url, headers)})
# ダブルの場合は「施錠」操作
elif clickType == "DOUBLE":
body = json.dumps({'command': 'lock'})
# 長押しの場合は「解錠」操作
else:
body = json.dumps({'command': 'unlock'})
conn.request('POST', url, headers=headers, body=body)
ret = conn.getresponse()
try:
response_body = json.loads(ret.read().decode('ascii', 'ignore'))
if ret.getcode() == 200:
print('[SESAME] Request successed with task_id=%(task_id)s' % response_body)
return response_body
else:
raise RuntimeError('Server return error: %(error)s' % response_body)
except json.decoder.JSONDecodeError:
raise RuntimeError('Can not parse response: %s' % response_body)
▼環境変数は2つだけ設定する
- DEVICE_ID → セサミのデバイスID
- APIKEY → セサミのAPIキー
![]()
CHASUKE
これだけです。以上!
Bluetooth接続の問題エラー
テストしてたら、「Bluetooth接続の問題」というようなエラーがプッシュ通知され、動かないことがありました。

CHASUKE
なんか設定間違えたかなぁ〜
なんて思って色々調べてたんですが、、単純にWiFiモジュールが近くになかっただけでした。
同じようなエラーが出る人はご参考に♪
さて、どこに設置しよう
普通にリモコンキーとして、使ってもいいけど、遅いんですよね。
![]()
CHASUKE
ドアの近くで使うならWiFi通信のAWS IoT Enterpriseボタンで十分!!
ということで、マンションから離れた駐車場にとめてある車に設置してみた。当然、WiFiが届かない場所です。
ハンドルの下に設置。隠れボタンのごとくね。

これ何が良いかって、車に乗り降りするタイミングに「ポチッ」として、玄関の施錠・解錠ができるところ。玄関出るときは何も気にしなくてもいい。
▼こんな感じになりました。
最後に
ほとんどセサミさんの公式アメブロに頼りましたが、『SORACOM LTE-M Button』で無事にリモコンキーが作れました。
![]()
CHASUKE
SESAMEは拡張性あって面白いスマートロックですね
是非、試してみて欲しいですが、SORACOMボタンはお高いですw
それでも購入するなら、税込・送料込みのAmazon.co.jpがおすすめ!!
それではまた。

