SORACOM GPSマルチユニットのデータをMicrosoft Power Automateで取り込む

# 注意事項
本記事での実装はMicrosoft Power Automateの<font color="red">プレミアムコネクタ（<b>有償</b>）</font>を使用します。
90日間の試用できるため、[E5開発者サブスクリプション](https://learn.microsoft.com/ja-jp/office/developer-program/microsoft-365-developer-program)などを使って（期間は限られますが）無償で確認することも可能です。

# はじめに
最近、MicrosoftのPower Platform界隈の方に誘われ、勉強を始めました。
そこでいろいろ触るなか、SORACOMのデバイスと絡められないかと考えていたところ、@TAC_yachtさんに以下の記事を教えてもらいました。

https://qiita.com/TAC_yacht/items/8fee62e9b63a059d81a6

今回はGPSマルチユニットのデータをPower Automateに送って、Teamsに通知、SharePointリストに登録をしてみます。

ちなみに本記事の執筆のきっかけは久々の「Try！SORACOMキャンペーン」です。
いつもモチベーションを下さり、ありがとうございます。

https://www.lp.soracom.jp/202402trysoracom

# 準備
## GPSマルチユニット
今回は以下のレシピを参考にGPSマルチユニットのGPS（緯度経度）データと、温湿度データを対象として取得します。

https://soracom.jp/recipes_index/2962/

また今回の手法では[バイナリパーサー設定](https://users.soracom.io/ja-jp/docs/binary-parser/predefined-format/#gpsmultiunit)が必要となります。
SIMグループ設定画面で「SORACOM Air for セルラー設定」の「バイナリパーサー」をONにして、フォーマットを「`@gpsmultiunit`」として保存しておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/13713616-437e-117b-ddcf-48af1d9d3d05.png)

## SharePoint
### サイトの追加
Teamsとリストを使うため、SharePointサイトを作成します。
1. [Microsoft365のトップページ](https://www.office.com/)で検索窓に「share」と入れるとSharePointのアイコンが表示されるので、クリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/38303430-09e5-4495-2166-27a6789d31b6.png)
1. 「サイトの作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/78914f29-6554-d96e-3823-549bb14e851d.png)
1.  「チーム サイト」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/0aab9051-ba33-c09c-bda4-cdd6cd56e4a5.png)
1. 「標準チーム」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/9ef7b9af-3c73-aa58-685c-1e0e5f4282ad.png)
1. 「テンプレートを使用」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/6b424f72-f319-ee8a-3da7-34c17311111e.png)
1. サイト名を入力し、「次へ」をクリックする（ここでは「SORACOM連携」とする）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/c0401ca0-9f5b-9a4f-3a18-34be44d45d38.png)
1. プライバシーの設定を「プライベート」、言語の選択を「日本語」を選択して、「サイトの作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/743d36bd-3b11-9064-c50c-704348267b5b.png)
1. 追加のメンバーが居れば追加し、「完了」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/00eb42cc-eecf-7cba-dca3-784029db3c65.png)

以上でサイトの作成が完了となります。

### Teams有効化
今回、Teams通知機能を入れるため、作成したサイトのTeamsを有効化します。
1. サイトのトップページ左下の「Microsoft Teamsを追加」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/f2e7e850-755a-65f9-363d-1f29e68b4a7e.png)
1. 画面右に表示された「続行」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/20115dfe-9cd7-4285-31ff-05c637bd3197.png)
1. 「Teamsを追加」をクリックする 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/29b372eb-de6b-6576-f01f-705f5e7cd905.png)

### リストの作成
SharePointには簡易なデータベース「リスト」の機能があります。
今回はこの「リスト」にデータを保存するので、そのためのリストを新規に作成しておきます。
1. 作成したSharePointのホーム画面で「新規」「リスト」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/7d695402-fd3f-bcfc-5fa1-267db4d1ad49.png)
1. 「空白のリスト」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/facdb0b6-48cb-0ac3-f0c3-5af9f2ffee5c.png)
1. 名前を入力し、「作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/b7c30696-e525-9ae2-fc50-b3225f5bc92e.png)
1. 「列の追加」をクリックし、「数値」を選択して、「次へ」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/fd0d6a31-f74c-ff84-f929-98d310116340.png)
1. 名前に「緯度」を入力し、「保存」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/f02a0715-3507-4a96-b48e-f9f03c2d8d46.png)
1. 4~5の手順で「経度」「温度」「湿度」の列を追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/929a4be9-8e30-52e5-a145-44b1be5b2a2a.png)

続けて登録日時を表示するための設定です。
1. 「すべてのアイテム」を選択し、「現在のビューの編集」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/e5ffe400-8736-fbb2-4a50-80266638aeb5.png)
1. 画面下の方にある「登録日時」にチェックを付けて、画面上部の「保存」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/03bc3129-eee5-1ce7-678a-b7a4228028c5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/6595137e-8813-6cf8-3ca4-1712ed850363.png)
1. 登録日時が表示されたことを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/50de2d41-4617-673a-8a23-7c3425ae3b74.png)

以上でリストの作成が完了です。

# 作業手順
## Teams通知実装
### Power Automateの設定
1. [Microsoft365のトップページ](https://www.office.com/)で検索窓に「power」と入れるとPower Automateのアイコンが表示されるので、クリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/bfce961a-eeb5-b6d1-e7bd-9ce3becc7f05.png)
1. 画面左の「＋作成」をクリックし、「インスタントクラウドフロー」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/7a3bd05f-9ab7-584d-55bf-90b1101a6b57.png)
1. フロー名を入力し、トリガーで「HTTP要求の受信時」を選択して、「作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/c0436202-be01-da95-c51e-b311fd2d6f02.png)
1. フローの編集画面になったら「manual」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/0c983df9-2eca-a44a-b01c-2b06c0062b0e.png)
1. 「フローをトリガーできるユーザー」を「誰でも」にして、「要求本文のJSONスキーマ」に下の文を入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/6d92849f-81ef-08ce-bd33-bd1cc2e9783b.png)
    ```json
    {
        "type": "object",
        "properties": {
            "lat": {
                "type": "number"
            },
            "lon": {
                "type": "number"
            },
            "bat": {
                "type": "integer"
            },
            "rs": {
                "type": "integer"
            },
            "temp": {
                "type": "number"
            },
            "humi": {
                "type": "number"
            },
            "type": {
                "type": "integer"
            }
        }
    }
    ```
1. 「manual」の下の「＋」をクリックし、「アクションの追加」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/cd91a61a-524e-3336-adfe-14ace9d51f9f.png)
1. 検索入力欄に「teams」を入れ、表示されたTeamsの欄の「さらに表示」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/658e5144-5573-47fc-3c60-8d6c6750a8ba.png)
1. 「チャットまたはチャネルでメッセージを投稿する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/39c497cc-317d-81dd-3834-722e04d54ce2.png)
1. 投稿者を「フロー ボット」、投稿先を「Channel」、Teamを作成したTeam、Channelを「General」として、Messageに緯度、経度、温度、湿度を入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/141093b5-ac86-aecb-707d-449e8af4b62f.png)
1. 保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/338eb6be-13eb-82aa-107a-a38ee193c7e6.png)
1. 保存後に「manual」をクリックすると、HTTP POST URLが入っているので、コピーアイコンをクリックし、どこかにメモとして貼り付けておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/d2cc76a3-5a5c-568b-4a96-8986d83a7029.png)

### SORACOM Beamの設定
SORACOM Beamを通じてPower Automateに渡します。
1. SIMグループ設定画面で「SORACOM Beam 設定」の「設定を追加する」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/3b306736-d7dc-c230-e5bd-e01fece1f4d7.png)
1. 「UDP → HTTP/HTTPS エントリポイント」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/589b64e6-1064-bf02-254a-22595ffd9afc.png)
1. ホスト名に先ほどメモしたURLのホスト名、ポート番号に「443」、パスにURLの「/workflows/…」以降を入力して保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/276561dd-7bc4-82e9-9007-6529cb476bde.png)

以上で設定完了です。
問題が無ければ、Teamsに通知が届くようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/b63afa84-5729-cccc-c999-8e7722c73f08.png)


## SharePointリスト登録実装
### Power Automateの修正
SharePointリストにデータを保存する設定を追加します。
1. Power AutomateでTeams投稿の下の「＋」をクリックし、「アクションの追加」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/cb310a0d-5854-1404-46f9-6940d24357a2.png)
1. 検索入力欄に「SharePoint」を入れ、表示されたSharePointの欄の「さらに表示」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/b4eb30bb-87ce-7074-546b-f0ab2f5fedab.png)
1. 「項目の作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/21e8484d-10b6-55a8-caf8-3256ad2b0c69.png)
1. 作成したサイト、リストを選択し、「すべてを表示」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/d4c17aa0-a7f2-3297-d663-189c227830e8.png)
1. 「緯度」「経度」「温度」「湿度」欄で稲妻アイコンをクリックし、それぞれ「lat」「lon」「temp」「humi」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/9bb7ec19-93eb-6fb0-8a9f-d3a510349971.png)
1. フローを保存すると、SharePointリストにデータが保存されるようになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/916611/903cc90a-50fd-4797-f465-759cf73a4528.png)

以上でSharePointリストへの登録が完了です。
あとはどう可視化するか・・これから考えます。

# まとめ
今回はとりあえずPower Automateに投げ込むようにしましたが、業務で使う場合はもう少しセキュリティ強化が必要かなと思います。
今回も@TAC_yachtさんやきっかけをくださるソラコムさん、色々な方のおかげさまで書き上げることができました。
誠にありがとうございました！

# 参考文献
- M365 E5開発環境構築

https://kuroivlog.com/microsoft365_e5_enviroment