みなさん、こんにちは、株式会社Opening Lineの松本一将です。
今回は IoTデバイスを使用した時に送信される情報をそのままブロックチェーンのネットワークに書き込もうという記事になります。
まずはアーキテクチャを表示します。
おそらくこんな感じの構成だったと思います。
今回のゴールとしては
- IoTのボタンをクリックします。
- Lambdaにはsymbolのトランザクションを実行する処理があり、Lambdaを実行させます
- トランザクションが書き込まれているか確認する
といった流れになります。
準備としては
AWS-CDKを用いたオリジナルなSymbolAPIを作ろう株式会社Opening Lineの松本一将です。 medium.com
こちらの記事でLambdaのAPIを簡単に作れるようにしておきます。(中身に無駄はあるかもしれませんが、まずは「動くこと」を目的にしてます)
トランザクションのメッセージをイベントから受け取るようにする
さて、Lambdaの準備が出来ました。
この記事の状態ですと、ボタンを押すとメッセージは固定されたトランザクションが送信されるといった状態になります。
Symbol Block ExplorerEdit description testnet.symbol.fyi
こちらがそのトランザクションハッシュになります。
TRANSACTION DETAILの中身のMessageが
This is a test message
となっています。
このThis is a test messageをlambdaから受け取ったeventに変更したいわけです。
const transferTransaction = TransferTransaction.create(Deadline.create(epochAdjustmentLastValue!),recipientAddress,[lastValueCurrency.createRelative(10)],PlainMessage.create(JSON.stringify(event)), // ここnetworkTypeLastValue!,UInt64.fromUint(2000000))
こんな感じでlambdaではeventを受け取れるはずなので、このeventの内容をJSON.stringifyしてあげるとうまくいくと思います。
Symbol Block ExplorerEdit description testnet.symbol.fyi
こちらがうまくいったトランザクションの内容になっています。
Messageの中身が
{"deviceInfo":{"deviceId":"7MF6JK6WPDQ25378","type":"button","remainingLife":84.65959,"attributes":{"projectRegion":"ap-northeast-1","projectName":"CDKTest","placementName":"button1","deviceTemplateName":"CDK"}},"deviceEvent":{"buttonClicked":{"clickType":"SINGLE","reportedTime":"2022-03-23T12:12:04.324Z"}},"placementInfo":{"projectName":"CDKTest","placementName":"button1","attributes":{"event":"{ \"body\": { \"firstname\": \"symbol-xym\" } }"},"devices":{"CDK":"7MF6JK6WPDQ25378"}}}
となっているので、うまい具合にボタンをクリックした情報が載っているかと思います。
色々、飛ばしましたが、これかなり下準備が必要でした。
まず何が必要かというとIoT 1Clickを使うには事前設定が必要でした。(これはソラコムさんの勉強会に隔週で参加して色々質問させていただきながらうまく設定できました。やっぱり「サポート」ってとても大事なんです。)
IoTで呼び出しシステム - SORACOM (ソラコム) IoT DIY レシピ公開日: 2020年4月 レシピ難易度:★★☆☆☆ 塾のお迎え連絡の為だけに子供にスマートフォンを持たせるのはちょっと、、、とお悩みの方へ。省電力のモバイル通信「LTE-M」を搭載した乾電池動作するボタンデバイス「SORACOM… soracom.jp
その設定で絶対的に必要な記事になります。
この記事がうまくいくようになると前提条件としてのIoT 1Clickのボタンを押すとLambdaが実行できるという文化がマスターできます。
AWS-CDKを用いたオリジナルなSymbolAPIを作ろう株式会社Opening Lineの松本一将です。 medium.com
次にこの記事でsymbolのトランザクションを発生させるLambdaを作成できるようになります。
この手順はLambdaで受け取ったデータをトランザクションに含めることができるようになる部分を身につけることができます。
ソラコムのサポートは今の所無料で、AWSのデベロッパーアカウントでも約3000円/月でサポートが受けられます。
「サポートや質問できる環境」というのは非常に大事と僕自身は思っていますので、やりたいことを実施するには非常に心強い環境でしたので、この環境は続けてもらえますと幸いです。
これから
さて、ここまでできたということは次にどうするか?という話になってきます。
僕自身IoTデバイスを使ってやりたいこととしては「環境データをブロックチェーンに残していきたい」ということがあります。
なので次はGPSマルチユニットの定期的に送信されるデータをブロックチェーンに記録することで、「誰もが参照できるその地域の環境データベース」という形になるのではないのかなぁと思っています。
こういった「無意識の先にあるデータの蔵」のことを「阿頼耶識(あらやしき)」と言うそうです。
(この名前自体はパチスロYoutuberが聖闘士星矢冥王復活を打っていて、その解説をしていたので、へぇそんなんがあるんだぁと思い調べたらちょうどいい感じの言葉だったので使おうかなぁと思いました。)
SANYO:S聖闘士星矢 冥王復活SANYO:S聖闘士星矢 冥王復活 機種情報公開中! www.sanyobussan.co.jp
名称もちょっとかっこいいなぁと思っていますが、この辺りはもっとサービスが具体的になったら決めようかなぁと思います。(流石にスロットのモードの名前だけで決めるのはちょっと抵抗感はあります)
なのでまずは
GPSマルチユニットSORACOM Edition(バッテリー内蔵タイプ)スターターキット - IoTデバイス通販 - SORACOM (ソラコム) IoTストアGPSマルチユニット SORACOM Editionは、 京セラ社のGPSマルチユニット ... soracom.jp
こちらを購入してIoT Coreと連携してうまい具合にGPSや温度、湿度、加速度が取れるようになって、それをトランザクションに書き込めるといいなぁと思っています。
では引き続き作っていきますので、記事を楽しみにしていただけますと幸いです。