スイッチIoTで服薬管理 〜M5Stack × AWS〜 [Part1] | 服薬カウンター(1/4)

技術情報 IoT M5Stack UIFlow ビジュアルプログラミング AWS AWS Lambda Amazon DynamoDB 作り方
更新日:2023/05/09

私には、毎日飲まなければいけない薬があります。
喘息薬なので、正確には「飲む」というより「吸引」しなければならないのですが。
でも、ついつい吸引し忘れてしまうこともありますし、吸引したのかどうかを思い出せないことも。

そこで、服薬記録をとるためのガジェットを開発することにしました。
IoTデバイスの「M5Stack」とストレージサービスの「AWS」を使って。

紹介ビデオ

完成した「服薬カウンター」を使ってみた動画がこちらです。

IoTのシステム構成

ユーザインタフェースには「M5Stack Core2」を使い、バックエンド処理には「AWS(Amazon Web Services)」を使います。
M5Stackのスイッチボタンを押すことで、AWSのWeb APIを呼び出し、AWS上のデータベースに服薬回数を記録することにしましょう。
そして反対に、Web APIを介してデータベースから服薬回数を取得し、M5Stackのディスプレイに表示します。
「M5Stack Core2」がIoTデバイスとして優れている点は、タッチパネルモニタとなっていることです。
画面上にボタンを自由に配置して、スイッチ動作を組み込むことができます。
M5Stackの開発プラットフォームである「UIFlow」を使って、次のような画面をデザインします。
ガジェットの名称は「Medication Counter」(服薬カウンター)と命名しました。

データベースの構築

データベースには「Amazon DynamoDB」を使います。
DynamoDBは、NoSQLというタイプのデータベースで、パーテションキーソートキーで構成されます。
パーティションキーとソートキーは、検索キーとして使用できます。
また、ソートキーを使って、昇順/降順に並び替えることができます。
今回は「服薬した日付」をパーティションキーとして、「記録した日時」をソートキーとして、記録することにしました。
毎朝2回服薬した場合は、次のようなイメージでデータが保存されます。
パーティションキー ソートキー
yyyymmdd(服薬した日付) entry_datetime(記録した日時)
20230401 2023-04-01 09:21:36
20230401 2023-04-01 09:22:03
20230402 2023-04-03 08:48:54
20230402 2023-04-03 08:49:12


1. AWSのDynamoDBコンソールにサインインして、[テーブルの作成]ボタンを選択します。


2. テーブルの作成画面で、テーブル情報を入力します。

  1. ① テーブル名に「medication-management-table」と入力
  2. ② パーティションキーに「yyyymmdd」(服薬した日付)と入力
  3. ③ ソートキーに「entry_datetime」(記録した日付)と入力
  4. ④ [テーブルの作成]ボタンを選択

Web APIのルートを作成

Amazon API Gateway」で、Web APIのルートを作成します。
ルートは、「HTTPメソッド」と「リソースパス」の2つから構成されます。
Web APIのルートを次のように設計しました。
APIの種類 HTTPメソッド リソースパス
服薬情報登録API PUT /items/{year}/{month}/{day}
服薬情報削除API DELETE /items/{year}/{month}/{day}
服薬情報取得API GET /items/{year}/{month}/{day}/{offset}

リソースパスに含まれる「{year}」「{month}」「{day}」は、画面に表示している対象日付とリンクします。
服薬情報取得APIのリソースパスにある「{offset}」については、「前日」ボタン、「当日」ボタン、「翌日」ボタンとリンクさせるために付けています。
「0」を対象日付当日とし、「-1」が前日、「1」が翌日を意味します。
(例)
  • GET /items/2023/04/01/0 であれば、2023年4月1日の情報を取得
  • GET /items/2023/04/01/-1 であれば、2023年3月31日の情報を取得
  • GET /items/2023/04/01/1 であれば、2023年4月2日の情報を取得


1. AWSのAPI Gatewayコンソールにサインインして、「HTTP API」の[構築]ボタンを選択します。



2. APIの作成画面にて、API名を入力します。

  1. ① API名に「medication-management-api」と入力
  2. ② [確認して作成]ボタンを選択


3. 確認して作成画面にて、[作成]ボタンを選択します。




4. APIを作成したら、APIの「ルート」を作成します。

  1. ① [Routes]メニューを選択し、ルート画面を開く
  2. ② ルート画面で、[Create]ボタンを選択
  3. ③ ルートの作成画面で、PUTDELETEGETのルートを作成

1
2
3
4
次へ

あなたへのおすすめ記事