前回、Arduinoで作るワイヤレス土壌湿度監視システム:センサー編でArduino Unoを使って電池で動く土壌湿度センサーを作成したので、そのセンサー情報を受け取るサーバーを作成したいと思います。
方針
Raspberry Pi上にNode.jsでAPIサーバーを作成します。
フレームワークはFastifyを使用します。
手順は以下の通りです。
- FastifyでAPIサーバーのベースを作成する
- 土壌湿度センサーの情報を受け取るAPIを作成する
- 土壌湿度センサーから受け取った情報を処理するAPIを作成する
- 土壌湿度センサーから受け取った情報を処理するAPIをcronで定期的に呼び出す。
- 作成した処理をPM2でデーモン化する
1. FastifyでAPIサーバーのベースを作成する
ベースの作成は下記記事にまとめました。
これをもとにTypeScriptでAPIサーバーを作成します。
2.土壌湿度センサーの情報を受け取るAPIを作成する
下記機能を実装します。
- 土壌湿度センサーからHTTP POSTで受けとったデータをローカル環境に保存する。
- 受け取った値が前回より一定値以上増えていた場合は、水やりが発生したと判断し、メールを送信する。
詳細なプログラムは長くなるので割愛。
3. 土壌湿度センサーから受け取った情報を処理するAPIを作成する
下記機能を実装します。
- ローカル環境に保存した土壌湿度センサーの値と現在のステータス情報を読み込み、以下の処理を実行する。
- 土壌湿度センサーの値が一定値以下の場合、ワーニング、もしくはアラートメールを送信する。
- 土壌湿度センサーの値を元にローカル環境の現在のステータス情報を更新する。
- Firebaseに土壌湿度センサーの値と現在のステータス情報を保存する。
詳細なプログラムは長くなるので割愛。
土壌湿度センサーの値とステータス情報はそれぞれjson形式で保持しようと思います。
// 土壌湿度センサーの値
{
"moisture": 900,
"moisturePct": 95,
"updateDate": "2017/11/18 23:25:53",
"lastWateredDate": "2017/11/17 00:56:58"
}
// 現在のステータス情報
{
"moisturePct": 95,
"status": 10,
"updateDate": "2017/11/18 13:55:42",
"lastWateredDate": "2017/11/17 00:56:58"
}
4. 土壌湿度センサーから受け取った情報を処理するAPIをcronで定期的に呼び出す。
cronを使って、毎日朝8時に「土壌湿度センサーから受け取った情報を処理するAPI」を呼び出すようにします。
00 08 * * * curl localhost:3000/data-processing?date=`date +%Y/%m/%d`
5. 作成した処理をPM2でデーモン化する
PM2というNode.jsスクリプトをデーモン化するツールを使い、作成した処理をデーモン化します。
これにより、Raspberry Piの電源を入れると同時にAPIサーバーが起動するようになります。
npm install pm2 -g // インストール
pm2 start dist/server.js --name="hoge-server" // 任意の名前を付けて起動
pm2 startup // サーバー起動時に自動的にpm2を自動開始する
以上で完成です。
次回はFirebaseに保存されたデータを元に、観葉植物の状態を確認できるアプリを作成します。
<参考>
node.js node.jsスクリプトをpm2でデーモン化する
The following two tabs change content below.
Akihiro Tanaka
Smart Contract Engineer
Since 2009, I have been a software engineer at Accenture for 9 years, managing, designing, and developing many services, mainly web and mobile apps.
In 2013, I met Bitcoin and started to work on blockchain-related development in 2018, developing an entertainment DApp for underground idols, a blockchain analysis tool, and an STO platform.
Currently, I am working as a Smart Contract Engineer at Secured Finance, developing a DeFi product.
WEB: https://tanakas.org/
In 2013, I met Bitcoin and started to work on blockchain-related development in 2018, developing an entertainment DApp for underground idols, a blockchain analysis tool, and an STO platform.
Currently, I am working as a Smart Contract Engineer at Secured Finance, developing a DeFi product.
WEB: https://tanakas.org/
最新記事 by Akihiro Tanaka (全て見る)
- Euler Financeハッキング事件はなぜ起きたのか - 2023-04-19
- Upgradeableなスマートコントラクトは分散化していると言えるのか - 2022-12-01
- ERC1167(Minimal Proxy Contract)で実装するERC20のFacrotyコントラクト - 2020-01-02
1件のコメント
コメントは停止中です。