植物と会話する時代へ: M5Stack自動給水器とDiscord Botの完璧な連携
下書き hitto<>
IoTに触れてみる第一歩としてM5Stackを使ってDiscordで植物の状態を管理できる自動給水器を作成しましたので紹介します。
このプロダクトを通して、植物と会話する時代への第一歩を踏み出しましょう。
利用した製品・サービス
M5Stackは、ESP32を搭載したIoTデバイスです。Arduino IDEで開発することができます。M5Stack用の自動給水器を作成するにあたり、M5StickC Plusを利用しました。
M5Stackを拡張することができるユニットです。水分測定センサと給水ポンプが搭載されています。
Discord Botを作成するために必須のサービスです。
Postmanなのにgetpostman.comリクエストを簡単に送るためのサービスです。
Cloudflareが提供している、任意のTCPで動くようなサーバをセキュアに公開できるすごいサービスです。詳しい仕組みは省きますがCloudflareの世界中に分散されたデータセンターを使って実現しているサービスです。
Cloudflareはipアドレス1.1.1.1を割り当てられているすごい会社です
2023年に2番目によく使われていた言語です。Pythonのメリットは簡単に使えることです。
pycordは、DiscordのBotをPythonで開発するためのライブラリです。
選定理由は今までメジャーだった公式ライブラリだったdiscord.pyの開発が停止されたためです。
flaskは、PythonでWebアプリケーションを開発するためのライブラリです。同じようなライブラリにfastAPIというライブラリもありますが、シンプルにサクッと作りたかったのでflaskを選びました。
SQLite3は、Pythonでデータベースを利用するためのライブラリです。選定理由はMySQLとは異なり、軽量のディスクベースのデータベースで、外部のデータベースサーバーを必要とせずに、ローカルストレージに直接組み込むことができるからです。つまり、手軽に使えるのでSQLiteを選びました。
オブジェクトリレーショナルマッピング(ORM)ライブラリです。ORM(Object-Relational Mapping)は、リレーショナルデータベースのテーブルとオブジェクト指向プログラミング言語のクラスをマッピングする技術です。つまりデータベースの操作を簡単に行うことができます。選定理由は異なるDBの違いを吸収してくれたり、SQLを書かなくてもよいのでコードの可読性が向上するなどいろいろありますが、使ってみたかったからです。
仮想化環境を構築するためのオープンソースのプラットフォームです。仮想マシン(VM)およびコンテナ仮想化(CT)を作成することができ、僕の愛用OSSです。クラスタリング、RESTful API提供、スナップショット、ネットワーキング、クラウドインテグレーションなどの楽しく、便利な機能がたくさんあります。Flask、Pycordの環境を用意しました。
システム構成
初期に作成した設計案の様子について紹介します。データの流れとテーブル設計を簡単に表したものです、リアルタイムで更新されるデータをポーリングを用いて更新することにしました。
※汚いですが適当なので許してください
実際の写真
機能
完成までの過程
苦労したポイント
改善点
感想
今回初めてIoTというものに触れました。僕の中で、IoTを使ったサービス作ることはとても難しく、専門的な知識が必要なものだというイメージがありましたが、今回の経験でそこまで難しくないことがわかりました。IoTを使ったサービスを作るにはネットワーク、データベース(データ分析)、組込みシステム、セキュリティ、アプリケーション、運用保守などしっかりとした幅広い知識が必要ですが、それらを学ぶことができ、とても楽しかったです。
「植物と会話する」がこのIoTのコンセプトです。将来的にAIを使用したり、データを分析し、水が欲しいときにのどが渇いた、水が欲しいというようなことを言えるようになるといいなと思います。
コード
hitto-hub/Watering-b (github.com)
hitto-hub/Watering-discord-bot (github.com)
hitto-hub/M5StackWatering (github.com)
← Go home