Edited at

PowerApps でセンサーデータの値を取得してみた!(ソースもあるよ!)


まずはこちらをご覧ください。


構成図はこちらです!

Untitled (1).png


説明

Raspberry Pi に接続している、BME680というセンサーで、温度、湿度、気圧、空気中のガスを計測することができます。

そのデータをPowerAppsに表示させます。

PowerAppsにて使用可能で、API経由でデータ送信可能なデータソースはSQL Serverといったものが使用可能ですが、Office365のみと考えると実はそう多くなく、今回はAPIやリファレンスが豊富なSharePointのカスタムリストを採用しています。

SharePointはモダンサイトでは2万件以上のレコードは動作に支障をきたすため

特定のレコードを都度更新するという処理にすることで、レコードを増やさないようにしています。

なお、データをため込みたい場合は、Power BIのストリーミングデータセットを使用し、Power BIのレポートで参照しましょう。


注意

今回のデータソースの使い方は、本来の使い方とはかけ離れています。

実際のプロダクトに使用することは絶対におやめください。

また、万一使用したことにより発生したあらゆる事象について、私及び私が所属するすべての組織は一切の責任を負いかねます。

ご了承ください。


作り方


各種センサー及びディスプレイ

Amazonさんで購入しましょう!

* BME680

* SSD1306


SharePoint側

カスタムリストを以下の通り作成します。

列名
種類
用途
備考

Product
1行テキスト
レコード検索用名称
要インデックス

Value1
数値
IoT数値データ1(温度)

Value2
数値
IoT数値データ2(湿度)

Value3
数値
IoT数値データ3(気圧)

Value4
数値
IoT数値データ4(ガス)


PowerApps側


データソース接続(IoT_Data)

SharePointで作成したカスタムリストを指定します。


タイマーコントロール


OnTimerStart


OnTimerStart

Refresh(IoT_Data);

ClearCollect(SPSSensor,(LookUp(IoT_Data,Product="PiSensor")))

なお、期間や繰り返し、自動開始などは以下の通りに設定しましょう。

image.png


解説

作成したデータソース「IoT_Data」のデータを取得して

各種ラベルに表示させる用のコレクション「SPSSensor」に

IoT_DataのProduct列「PiSensor」のレコードに格納します。


ラベル


温度表示部分


Text

Concatenate(Text(First(SPSSensor).Value1),"℃")



湿度表示部分


Text

Concatenate(Text(First(SPSSensor).Value2),"%")



気圧表示部分


Text

Concatenate(Text(First(SPSSensor).Value3),"hPa")



ガス(空気質)表示部分


Text

First(SPSSensor).Value4



サンプルアプリ

こちらです!


Raspberry Pi側

Pythonで作成しています!

ソースコードはこちらに格納しています。

こちらです!

各種センサー用のドライバが別途必要ですので、それらをインストールしてくださいね!


Power BI部分

こちらの記事をぜひ参考にしてください!

https://qiita.com/rnakamuramartiny/items/0cd593660f62def90b96


最後に

いかがでしたか?

PowerAppsで、センサーデータの取得

また、逆にセンサー側からPowerAppsをコントロールといった制御も

コーディングなどが必要にはなってきますが

実現することは可能です!

この辺りは、まさにエンジニアの仕事です!

PowerPlatformは、みんなが作り

使いたいけど使えないものはエンジニアがバリバリ作ることで

無限大の表現ができるようになります!

みなさんもぜひ、PowerPlatform、楽しんで使ってみてください!