スマート製品

SORACOM LTE-M ボタンでSESAMEのリモコンキーを作ってみた!

投稿日:

どうも、CHASUKEです。

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

avatar

CHASUKE

はい。またまたSESAMEスマートロックネタです..

 

SORACOMボタンは、LPWAの一つであるLTE-M通信が可能なIoTデバイス。AWS IoT 1-Clickのサポート対象で扱いやすいのが特徴です。

▼こんな感じに動作します。

 

驚くなかれ。

ボタンを押してから、セサミが開閉するまでに約20秒もかかります

avatar

CHASUKE

スマホやApple Watchから操作した方が早いっすね

けれど、スマホを持ってない家族とか、離れたところからポチッと簡単に操作したい人もいるはず。試しに、車に玄関ロックを搭載してみたよ。

それでは行ってみましょう。

SESAME専用リモコンキーの仕組み

SORACOMボタンを押して、セサミが動くまでの道のりは、下にある通り。

難しそうに見えますが、そんなことはありません。

AWS IoT 1-Clickサポート対象のSORACOMボタンでは、「ポチッ」としてAWS Lambdaにアクセスするところまでは、スマホアプリで簡単に設定できちゃいますから。

 

参考にしたのは公式ブログ

セサミさんの公式アメブロには、Wi-Fi通信が可能な「AWS IoT Enterprise Button」を使って、操作する方法が紹介されています。

こちらの記事をベースに、「AWS IoTボタン」を「SORACOMボタン」に読み替え、処理を少しだけカスタマイズしました。

avatar

CHASUKE

カスタマイズしたポイントだけ書いていきますね

 

少し前に書いたSORACOM LTE-M ボタンの使い方の記事も参考になると思います。

https://chasuke.com/soracombutton/

avatar

CHASUKE

記事内でAWS IoT Enterprise ボタンとの違いも書いてます

SESAME専用リモコンキーの作り方

基本的には、先ほどのセサミさんの公式アメブロの手順通り。

カスタマイズしたのは、Lambda関数の内容になります。

こちらからダウンロード可能

 

このLambda関数は、環境変数に操作したいコマンド(toggle/lock/unlock)を指定します。ボタンを押したら、その操作が実行されます。

けれど、AWS IoT 1-Clickには、3つのアクション(シングルクリック/ダブルクリック/長押し)を登録できます。

avatar

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キー

 

avatar

CHASUKE

これだけです。以上!

 

Bluetooth接続の問題エラー

テストしてたら、「Bluetooth接続の問題」というようなエラーがプッシュ通知され、動かないことがありました。

avatar

CHASUKE

なんか設定間違えたかなぁ〜

なんて思って色々調べてたんですが、、単純にWiFiモジュールが近くになかっただけでした

同じようなエラーが出る人はご参考に♪

さて、どこに設置しよう

普通にリモコンキーとして、使ってもいいけど、遅いんですよね。

avatar

CHASUKE

ドアの近くで使うならWiFi通信のAWS IoT Enterpriseボタンで十分!!

 

ということで、マンションから離れた駐車場にとめてある車に設置してみた。当然、WiFiが届かない場所です。

ハンドルの下に設置。隠れボタンのごとくね。

これ何が良いかって、車に乗り降りするタイミングに「ポチッ」として、玄関の施錠・解錠ができるところ。玄関出るときは何も気にしなくてもいい。

 

▼こんな感じになりました。

最後に

ほとんどセサミさんの公式アメブロに頼りましたが、『SORACOM LTE-M Button』で無事にリモコンキーが作れました

avatar

CHASUKE

SESAMEは拡張性あって面白いスマートロックですね

 

是非、試してみて欲しいですが、SORACOMボタンはお高いですw

それでも購入するなら、税込・送料込みのAmazon.co.jpがおすすめ!!

それではまた。

Amazonでお得に買い物

Amazon.co.jpで買い物するならギフト券を現金チャージするのがお得です。チャージごとに最大2.5%分のAmazonポイントがもらえます。また、5000円チャージで1000円分ポイント還元キャンペーンも実施中!!

詳しくはコチラ

  • この記事を書いた人
CHASUKE

CHASUKE

某IT企業でエンジニアをしているCHASUKEです。 当ブログでは生活を便利にするガジェットやサービスなどライフスタイルに関わる様々な情報をお届けします。レビュー依頼も受け付けています。「お問い合わせ」より気軽にご相談ください。

Copyright© CHASUKE.com , 2019 All Rights Reserved Powered by AFFINGER5.