Flutter + Raspberry piで「リストに追加することを忘れない」買い物リストアプリを作る
概要
キッチンで作業していたら洗剤がそろそろないことに気づいた。でも今スマホは手元にないからあとで買い物リストにいれておこう、、、といって結局買い物リストに追加するのを忘れてしまう。
皆さんもこんな経験はないでしょうか?自分はこんなことばっかりです。
・キッチンや洗面所で作業しているときはあまりスマホを持っていない
・持っていたとしても一旦手を止めてポケットからスマホを取り出してロックを解除してアプリを立ち上げて登録するのは面倒
・あとで追加しようと思って結局忘れてしまう
こんな場合、「あ、ないな」と思った時にその情報だけ一瞬でスマホに保存して、後でスマホを開く時にそれを見て思い出して買い物リストに追加できたらいいなと思うわけですよ。
そこで、以下のような解決案を考えました。
キッチンにボタンを置いておく
作業中に不足に気づいたらボタンを押す。ボタンを押したらスマホに通知が来る
後でスマホを開いたときに通知で思い出し、買い物リストに登録する
ということでこのような、「リストに追加することを忘れない」買い物リストアプリを作ってみました!
作成
概要
主に以下の2つを作ります。
・スマホアプリ(日用品の不足/十分を管理)
・ボタン(押したらスマホアプリに通知が来る)
アプリはFlutter、ボタンはワイヤレスリレーとRaspberry piで作成しました。
スマホアプリ
スマホアプリは主に2つのページから成ります。
日用品リストの一覧ページ 予め日用品を登録した日用品の一覧が表示されるページです。不足しているものは赤いマークがつきます。また、最終購入日の順に並び変えることもできます。
各アイテムをタップすると、個別の詳細設定ページに行きます。ここでは、十分/不足を設定したり、Amazonなどのページのリンクを設定したりします。また、日時を指定して通知を作成することもできます。
2. 不足通知のページ
ボタンを押すと、通知が来ると同時にこのページに通知が表示されます。通知をタップして不足したアイテムを選択します。選択後は買い物通知を作成するか、ECサイトで購入するかを選択できます。
なお、データの保存にはCloud Firestoreを使用しています。
ボタン
次に、スマホに通知を飛ばすボタンを作ります。
Amazonで以下のようなワイヤレスリレーを購入しました(1個450円)。
ボタンを押すとリレーが閉じます。これをRaspberry piのgpioに接続し、Raspberry piがボタンONを検知できるようにします。
なお、ワイヤレスリレーの12V電源は、マイクロusbを100Vに繋ぎ、以下の変換モジュールで変換。(安定化とかはとりあえずあとで、、、😭)
Raspberry piのプログラム上でgpio信号を監視し、0になったらFirebase messagingでアプリに通知を飛ばします。
メリット
ここで、いくつか想定される質問に答えておきます。
ボタン押さずにアプリに追加したらいいんじゃないの?
> 最初にも書きましたが、僕はキッチンとか洗面所にいるときはスマホ持っていません。仮に持っていたとしてもポケットから出してロックを解除してアプリを立ち上げて、というのは結構手間です。後でスマホをいじる時に「ついでに」追加してしまえばいいのです。
それAmazon Dashボタンでは?
> そうですね、そこから発想を得ています。
ただ、Amazon Dashボタンは1商品につき1ボタンです。そのうち部屋中ボタンだらけになるのでは?その中からお目当てのボタン探す手間が発生するのでは?
それならばボタンは1つにしてスマホの中にリストを入れた方が管理が楽なのでは?と思った次第です。
あと、日用品に関してはAmazonよりも薬局、スーパで買った方が安いです。僕は食品はスーパーに買いに行きますし、フルリモート勤務でもなく外出の機会は多いので、それならばついでにスーパや薬局で買った方がいいと思っています。
完成版
以下の動画のようになりました。(ページ先頭に載せたものと同じです)
最後に
今後もRaspberry piを使って色々作っていきたいです。
改良
・スイッチをモメンタリスイッチになるように修正しました。(トランジスタとRaspberry piを使ってオルタネートスイッチをモメンタリースイッチにする)
Comments