<Gravioユースケース>IoTを活用して、ビタミン剤や薬の飲み忘れを防ぐ仕組みをつくってみた
この記事は1年以上前に書かれた内容です。
Gravioの機能・画面キャプチャーなどの情報が古い可能性があります。
最新情報は、Gravioオンラインマニュアルをご参考ください。
こんにちは、Gravio事業部のタルミです。
不要不急の外出を避け、自宅でテレワークをしていて気になるのは運動不足。また、保存に向いた食事になりがちなことから、ビタミン不足も気になります。で、ついついポチってしまうのが、サプリメント各種。
これ、意外と飲み忘れたりしませんか?そこで思い出したのが、以前風邪にかかったとき、薬の飲み忘れを防ぐ仕組みを作ろうと思ったのですが、日々の忙しさにかまけて後回しにしておりました。
そこで今回お披露目させて頂ければと思います。
#StayHomeで、部屋を片付けたり、不用品の処分をされた方って結構多いと思うのですが、皆様はどうですか?
私はかなり「断捨離」しました。デスク周りを中心に片付けていたら、10年以上前に購入した、万年筆の化粧箱が出てきました。これは使えますね。ただ、中は「万年筆」用の中敷きが入ってて、インクの染みもちらほら。
そこで家に余っていた端切れの布を内側に貼り付けることで、Made in Italyの素敵なケースが作れました。当然、100円均一のプラケースでも勿論オッケーですよ。
そのケースの中に薬をいれておき、開閉情報を取ることで、薬を飲んだか、飲んでないか、を判断すればいいわけです。
今回は、そもそもの「飲み忘れ」を防ぎたいので、箱を開ける=飲む行為を行った、というカウントをすることにします。
箱を開けたが、飲むのをやめた、とか、錠数を間違えた、というのは今回はやりません(まぁあんまりないですよね)。
錠数に関しては、事前に錠数を決めて入れておくピルケースと併用で、シンプルに対処します。もちろん、重さとかを測れば、何錠減ったか、とか、開けたけど飲まなかった、といったデータは収集できますが、「シンプル」が重要です。
完璧にデータを取ろうとして、迷宮に入るケースも多いのです。The best is enemy of the good ですね。
あとは、薬を飲むサイクルを考えなければなりません。私の場合、サプリメントがほとんどなので、一日一回、朝に飲む、というサイクルで設定してみます。
で、飲み忘れ通知の定義としては
- ケースを開けたら、薬を飲んだ、というアラートを通知する
- お昼までにケースが開かなければ、飲み忘れのアラートを通知する。
とします。
実は、弊社では現在デイリーでの体温測定と報告が義務(弊社のPlatioというアプリで毎日報告しています)となっています。
ですので、体温計もあわせて薬箱に入れておき、体温測定も薬を飲むタイミングで一緒に行なうことにします。
「朝にやらなきゃいけないこと」が全部入っている箱、をイメージしてもらえれば良いかと思います。
もちろん、体温計そのものに磁石を付けて、収納ケース側に開閉センサーを付けておけば、取り出しは確認できますし、体温計を入れる箱を別に用意するのもアリですね。
いずれにしても、重要なのは、開閉を検知(非検知も含む)したときの通知方法です。
箱が開いたらメッセージの通知アクションを行なう仕組みは過去のブログでも多数ご紹介しています。
弊社ですとオフィスの扉であったり、マッサージチェアなどで利用している仕組みですね。
念の為今回も簡単に記載しておきますが、過去のブログもこの機会に是非ご覧いただけると良いかと思います。
そして、今回は特に、○時間飲まなかった(データがなかった)ら、何かのアクションを行なう、という仕組みをあわせてご紹介いたします。
全体の仕組みはおおまかにこんな感じです。
- 体温計とサプリを入れた箱に開閉センサーを取り付ける(両面テープでOK)
- 箱が開けられたら、「朝やらなきゃいけないこと(サプリ飲んで体温測った)」を実行したとし、結果をLINE経由で送信する。
(あれ、今日サプリ飲んだっけ?とお昼頃に思い出したりすること、ありませんか?服薬済みを通知することでそのような問題を防ぐ役割も担います) - お昼に、2で生成される「朝からの開閉データ」を確認し、もし開いたデータがなければ、飲み忘れと判断し、飲み忘れの通知を行なう。
さて、実際に作ってみましょう。
今回もセンサー接続、データ受信、LINE Notifyなどの設定は以前にもご紹介しておりますので割愛させていただきます。Qiita(Gravioで検索)や、過去のブログをご覧ください。
センサーデータはこのようになります。
ケースの開閉がデータとして入ってきていますね。
開閉のデータが取れれば、あとはその情報に「紐付いた」プログラムとなる「アクション」の設定をしていきます。
また、定時確認も今回は行いますので、タイマーなどの設定も必要ですね。
それぞれ、順に設定していきます。
まず、服薬を行った=箱が開いた(閉まった)というデータが該当しますので、これは簡単です。
トリガーとして「箱の開(閉)」データを利用し、そのデータが来たら、紐付けたアクションとして「本日の分を服薬しました」というメッセージをお好きなメッセージツールを使って設定すれば良いですね。
服薬完了を通知するLINEのアクションはこんな感じです。
当然、このアクションを動かすための「トリガー」をセットしなければなりません。
トリガー設定はこうなります。
上記を設定すると、このような形でLINEが飛んできますね。
ここまでは、今までにもご紹介した仕組みとほぼ一緒なので、問題なく作成できるかと思います。
さて、今回のキモである、未服薬時のアクションを作っていきましょう。
今回、新しく実装されている機能を使い、「例外処理」に「アクションの紐付け」をする仕組みを利用します。このように書くと難しく感じますが、新バージョンでは「開閉のデータ」が「特定の時間の間」に「来ていない」場合を「例外」とし、その場合には別の「アクション」を実行させる、ということを簡単に設定できるようになりました。
今回の設定としては、毎日12時(正午)に、過去6時間のデータを遡って確認し、開閉のデータがなければ、未服薬を通知するメッセージを送信する、というものです。
この一連の動作は、
- LINEで「未服薬通知」を行なうアクションの設定
- 過去6時間のデータ遡り確認をDB上で行うアクションの設定
- 2のアクションと1のアクションを「例外処理時のアクション」として統合する設定
- 毎日12時に3の「データ遡り確認+なければLINEを送る」統合アクションをするために必要な「タイマートリガー」の設定
で可能となります。お察しの方も多いかと思いますが、2と4を調整することで、服薬サイクルを変更することができますね(朝、昼、晩とか)。
では、早速作っていきましょう。
まずは、
1:「未服薬時の通知」を行なうLINEを設定するアクションです。
これを先に作成することで、後々の作業が楽になります。
作り方は一番最初に作った「服薬完了」を通知するアクションと全く一緒ですので、割愛します(送るメッセージが変わるだけです)。
次に、キモとなる、
2:の開閉データを過去に遡って確認するアクションです。
これで、Gravioが収集している開閉センサーのデータの過去6時間分を遡って確認するアクションが完成です。遡る期間は自由に設定できます。
で、初めて出てくる「例外時のアクション」設定です。
これは、「例外処理」として「未服薬通知」のアクションと紐付けすることになります。
作業は非常に簡単です。先程6時間前のデータを遡るアクションを作りましたが、そこに「例外処理」と「アクションの紐付け」を下記のように行います。
これで、過去6時間以内に開閉データが無ければ、未服薬のメッセージを流す、というアクションとして仕上がりました。
最後に、
上記のアクションを毎日12時に動かす、4:のタイマートリガーです。
このトリガーが動作すると、2:と3:のデータ遡り+データ未検出→未服薬の通知が実行される、ということです。繰り返しはちょっと気の利いた、様々なパターンが用意されていますので、ぜひ実際に試してみて頂ければと思います。
送信されるメッセージはこのようになります。
(検証用に毎日16時にタイマートリガー、過去10分間の開閉データを遡る設定としています)
本作業内容の応用範囲は広く、たとえば20分に1回のタイミングで、過去10分間に会議室内の人を検知していなければ、無人とみなして通知したり、会議室の利用表示灯を消す、といったような用途などにも使えます。
先にも申し上げた通り、リアルタイム性を上げるとセンサーコストやデータ通信費用が上がったりしますし、更にIoTにつきもののバッテリー問題に悩まされることになります。「Roughly Right」とでもいいましょうか、ざっくりとしたデータでも役に立つケースは多いものです。
初めて触られる方でも、やりたいことが「すぐに」実現できるAI搭載IoT統合エッジウェア、Gravioを是非皆様の業務でもお役立て頂ければ幸いです。