あのボタンをしろボタンに移行した手順のメモ
これは
AWS IoT 1-clickのサービス終了に伴い、サービスが終了するSORACOM LTE-M Button Powered by AWSを、LTE-M Button for Enterpriseに移行した際の手順をまとめた記事です。
SORACOM LTE-M Button powered by AWS から SORACOM LTE-M Button for Enterprise への移行
2023年12月に突如発表された、AWS IoT 1-clickのサービス終了。これに伴い、SORACOM LTE-M Button powered by AWSもサービス終了となりました。
発表直後に私が書いたこちらのブログでは、移行パスを提案するとともに、「希望的観測ではあるが、ソラコムさんから何らかの救済措置が出るかもしれない」という期待を書いていました。
そんな中、2024/4/17に、待望の救済措置が発表されました。
要約すると、申請すればSORACOM LTE-M Button powerd by AWS(通称ならびに以降「あのボタン」)を、LTE-M Button for Enterprise(通称ならびに以降「しろボタン」)に移行してくれるというものです。
これはまさに私が希望的観測で書いていた「連携先がAWS IoT 1-Click固定だったあのボタンが、しろボタンと同じように使えるようになる」というものでした。移行はバッチで処理され、毎月20日までに申し込まれたものをまとめて翌月1日に移行するということだったので、早速所有している3つのあのボタンのうち、1つを申請しました。他の2つは遠く離れた場所で稼働しているため、まずは手元のもので様子を見ようと思ったわけです。
移行申請
移行の申請はSORACOM UGの和田さんが書かれてるのでそちらを参考に進めました。
和田さんのブログとの違いは、事前に空のSIMグループを準備して、そのIDを申請フォームに入力している点です。
SORACOM側の移行作業完了
2024/5/2にSORACOMコンソールを覗いてみると、SIM一覧に見慣れないSIMがありました。プランがplan-KM1となっていますし、SIMグループも指定したものになっているのでこれが移行したもののようです(図中上の方。下はひげボタンのSIM)。
しかし、設定していた名前が消えています。SIM詳細で見るとIMEIも消えています。
名前はkeyがname
のタグで設定されていたのですが、タグが全て消えています。
今回は1つだけだったのでそれほど困りませんが、複数のものを移行するときにはちょっと問題になりそうです。ソラコムサンタに解決案をお願いしてみましたが、ひとまず現時点で可能な対策としては1つずつ個別に申請し、都度SIMグループを変えるくらいでしょうか。それも数が多いと結構大変そうです・・。
(2024/5/20追記)
申請時のサポートからの回答を再度確認したところ、DSNに対してIMSIの値が提示されていました。これを使って、移行後のSIMを特定することができました。
以下のようにSORACOM CLIとjqを使って、移行後のSIMを特定することができます。
% soracom sims list | jq -r '.[] | select(.profiles[].subscribers[].imsi == "移行後のIMSI") | .simId'
動作検証
では、早速動作検証してみましょう。移行したSIMグループでHarvestをONにして、ボタンを押してみます。バイナリーパーサーをONにして@button
も入れます。
シングル/ダブル/ロングクリックを1回ずつやってみましたが、無事届いていました。形式もしろボタンのものになっていますね。ちゃんと移行できているようです。
IoT 1-ClickのLambdaと繋いで見る
さて、次にIoT 1-Clickで使っていたLambdaと繋いでみましょう。対象となるのは、家族の日々の安否確認で使っている以下のようなLambdaです。
# -*- coding: utf-8 -*-
import json
import requests
URL = "https://notify-api.line.me/api/notify";
def lambda_handler(event, context):
user = event['placementInfo']['attributes']['user'];
line_token = event['placementInfo']['attributes']['token'];
headers = {"Content-Type": "application/x-www-form-urlencoded","Authorization": "Bearer %s" % line_token};
click = event["deviceEvent"]["buttonClicked"]["clickType"];
message = "test";
if click == "SINGLE":
message = "元気です。";
if click == "DOUBLE":
message = "元気ではないけど心配無用です。";
if click == "LONG":
message = "助けてください!";
message = "%sです。%s" % (user,message);
data = {"message": message.encode("utf-8")}
x=requests.post(URL, headers=headers, data=data);
print(event);
print(x.text);
return {
'statusCode': 200,
'body': json.dumps('OK')
}
ざっと仕様を書き出しますと、
- シングルクリックで「元気です」、ダブルクリックで「元気ではないけど心配無用です」、ロングクリックで「助けてください!」とLINEに通知する
- LINEへの通知はLINE Notifyを使う
- LINE NotifyのトークンはIoT 1-Clickのデバイスの属性(
token
)に入れる - 通知先のユーザ名はIoT 1-Clickのデバイスの属性(
user
)に入れる
という感じです。
これを移行するために、昨年の私のブログで作成したSoraletを利用します。GitHubで公開しているものはちょうどこの仕様に適合するようにタグ情報を取得していますので、そのままGitHub Acitonsでデプロイします。
コンソールからSIMのタグを設定します。
あとはFunkを設定して、該当のLambdaを呼び出すように設定します。
ダブル/シングル/ロングクリックしてみましたが、うまく動いているようです。
今後の作業
今後は、残りのボタンをこのSIMグループに移行し、移行完了したらタグを設定したらいけそうです。
まとめ
SORACOM LTE-M Button powered by AWSからSORACOM LTE-M Button for Enterpriseに移行する手順をまとめました。
2024/5/2時点では移行後にSIMのタグ情報やIMEI情報が消えてしまうので、複数のSIMを移行する場合は注意が必要です。
呼び出されていたLabmdaに関しては、私の作ったSoraletを使うとLambda側を変更することなく移行できるので、短時間で移行できました。
皆様のお役に立てば幸いです。
Discussion