見出し画像

あくありうむ うぃず あいおーてー

この記事は paiza Advent Calendar 2021 12/06の記事です。

paiza Advent Calendar 2021 - Adventar



paizaの新卒エンジニアのもじゃです。4年制専門の21卒なので23歳なのですが、多分社内の結構な人から30代くらいだと思われてます。かなしいね。

私は昔から動植物が好きで、特にエキゾチックアニマルの部類がすきです。
昔は親がクワガタのアマチュアブリーダーで、仕事の傍ら趣味としてよく珍しいクワガタをブリーディングして販売していたのでその影響かもしれません。部屋1室飼育用の温室にして母親に怒られてたのマジで面白かった。

私はそこまでではありませんが、社会人になって金銭的にも余裕ができ、生き物を満足に飼育できる部屋も手に入れたので今は窓際で植物を育てながらアクアリウムを管理しています。

必要に応じて水槽の数は増減していますが、今は2台の水槽を管理しています。今回はこのうちメイン水槽をIoT化して管理している話をしようとおもいます。ちなみにメイン水槽以外にはベタくんの単頭飼育水槽や、時期によって繁殖水槽を立ち上げたりします。

動機

IoTとは?については割愛します。

最近はやっと少しずつ外出できるようになってきたので、家をあけることが増えてきました。これまでのリモートワークで情勢ではコンビニ以外マジででかけてなかったので常に水槽の様子を確認できてよかったんですが、外出するようになると魚の様子が不安で不安でしょうがないです。

なので、水槽に関するものをIoT化して外出先からも確認できるようにし、かつ障害が発生した場合には自動で対応とアラート通知によってさっさと帰宅できるようにしようと思いたちました。そういうことです。

メイン水槽

メインの45cm水槽

住民

  • グリーンネオンテトラ

    • いわゆる「ネオンテトラ」より小型で赤色部分が弱い。体が丈夫で温厚。かわいいね。

  • ブラックネオンテトラ

    • 「ネオンテトラ」の改良品種で、ネオンテトラより大きい。引き締まった黒い体色とおめめの周りのオレンジがきれい。かわいいね。

  • パンダメダカ

    • メダカの改良品種で、目の周りに黒い縁が現れるので「パンダ」。この子達は家で生まれた子です。かわいいね。

  • コリドラスパンダ

    • ナマズの仲間で底床に顔を突っ込んで砂利ごとエサを吸い込むコリドラス。体の模様がパンダ。かわいいね。

  • オトシンクルス

    • ナマズの仲間で、特徴的な吸盤状の口を使って壁面や水草、流木に張り付いて表面のコケを削ぎ落として食べる。かわいいね。

  • ミナミヌマエビ

    • 小型の淡水エビ。日本で流通している「ミナミヌマエビ」は正確には「シナヌマエビ」だったりすることがあるのでこの子達はどっちなんだろう。環境がいいと無限に増える。かわいいね。

  • イシマキガイ

    • 本来淡水で生息する貝ではないので、淡水では繁殖することができないためクリーナーとしてそこそこ人気の貝。ガラス壁面をお掃除してくれるけど水槽内のレイアウトをぶっ壊して引きずり回したりもする。かわいいね。

IoT化しているもの

照明の管理

魚も生き物なので、水槽の明るさを一定のリズムで保ってあげることが大切です。昼行性・夜行性の魚がそれぞれいますし、常に真っ暗・明るくても生活習慣が乱れてストレスを受け、体調を崩してしまいます。
そもそも私の生活習慣が乱れてる?うるさいなあ今魚の話してるんですよ?

また、照度は植物の育成にも重要ですが、明るい時間が続きすぎるとコケが繁茂してしまいます。ガラス壁面のコケはオトシンクルスのごはんになるのでまだしも、水草にコケが発生するとその水草の成長を阻害して枯らしてしまいます。こちらもミナミヌマエビが喜んで食べてくれますが、ミナミはそこまでコケ取りの能力が高いエビではないので追いつかなくなっちゃいます。

なので、水槽照明はAmazon Echo plugで自動管理しています。毎日12時に自動点灯し、20時に自動消灯します。合計8時間ですね。

また、先の通り夜も明るいと魚の生活習慣によくないので、0時になると部屋の照明も自動消灯しています。こっちはアイリスオーヤマのIoTシーリングライトです。0時を過ぎると私は真っ暗な部屋で作業を続けています。

ヒーター

熱帯魚水槽なので、水温は年中高く維持する必要があります。
今はGexの120Wオートヒーターを使っています。サーモスタットが付いていて、自動で水温を25℃前後へ維持するものです。
このヒーターはコンセントに直接接続せずにTP-Linkのスマートプラグ HS-105 を経由して接続しています。

ヒーターは基本的に稼働させっぱなしでオンオフするものではないんですが、なぜIoT化しているかについては後ほどお話します。また、照明と異なりAmazon Echo plugでない理由も後述します。

水温ロガー

変温動物である熱帯魚たちの命に直結するので水槽の温度は水温計で管理するのが必須ですが、外出しているときには水槽の前にいないので温度がわかりません。なので、屋外からもインターネットを経由して水温が把握できるロガーを作りました。
詳細は省きますが、ESP-32と水温センサを利用して水温を定期的にロギングし、Apolloで構築したWebサーバへHTTPでGraphQLで登録しています。

例外通知と緊急シャットダウン

熱帯魚飼育で最も怖いのはヒーターの故障事故。
先の通り120Wのオートヒーターを入れていますが、もしサーモスタットが故障して制御が効かなくなると40℃くらいまで水温が上がってしまいます。
また、逆に加温ができなくなったら冬季は水温が10℃台まで下がってしまいます。どちらにしても熱帯魚は生きることができません。

こういう事故は割と聞くので...出社して帰ってきたらかわいい魚たちが煮えたり凍えたりして全滅してたら流石にショックでそのまま退職して隠居します。

飼育下の魚たちは自然環境と異なり、ある程度住みやすい環境へ自分で移動する、ということはできません。せいぜい50l程度の狭い水槽に閉じ込められていますからね。逃げ場がない生き物をそういう理由で死なせてしまわないよう最大限努力するのは飼育者の責任だと思います。

なので、先程の水温ロガーで値を常時モニタリングし、水温が正常値からハズレた場合には次の緊急対応を自動で行う仕組みを作っています。

  1. 監視サーバーが水温を常時監視。異常値を検知した場合緊急対応を発火。

  2. ヒーターのIoTプラグへOff信号を送信し故障を疑われるヒーターを切り離し。

  3. ヒーターを切断しても水温が安全範囲に保たれるように25℃でエアコンを暖房で起動。

  4. スマホへ障害通知。

このうち、ヒーターに噛ませてる TP-Linkの HS-105 はLAN内機器からnodejsで直接操作できるサードパーティライブラリが存在するため採用しました。
GitHub - plasticrake/tplink-smarthome-api: TP-Link Smarthome WiFi API

また、エアコンの操作にはNature Remo、スマホへの通知はDiscordへWebhookで行っています。

部屋ごと加温してしまえば水温は安定して維持できますし、心配なので通知を受けておうちに帰ることもできます。
ちなみにpaizaではわりと柔軟に「一旦帰宅してリモート勤務で再開」ということができるので、私は「魚がヤバいので帰ります」する予定です。

まとめ

以上、うちの水槽環境の自慢でした。

水槽環境のIoT化として、やりやすいこととやりにくいことがあり、水温なんかは比較的かんたんにデータ化できるんですが水質については難しそうです。硝酸塩濃度とかPHとか取れればいいんだけどなあ…

Webカメラで外から水槽を見れるとかはやりたいなと思います。良いお年を。

この記事が気に入ったらサポートをしてみませんか?