見出し画像

Raspberry Piでオフィス環境を可視化してみた

こんにちは。
jampan、お茶山、501号、ちゃんじゃです。
ナビタイムジャパンで、研究開発(jampan)、バックエンド開発(お茶山)、フロント開発(501号、ちゃんじゃ)をそれぞれ担当しています。

私たち4名は、新卒3年目の同期です。
日々各々が所属しているプロジェクトへの貢献を考え業務に取り組んでいます。先日、会社全体へ向けて何か貢献できることはないかと考える機会がありました。
数年前に当社メンバーの数名で行われていた『みんなが働きやすい空調設定』を目指す施策が、コロナ禍によるオフィスでの業務機会の減少で凍結していたことを知りました。近年はその状態も回復傾向にあり、オフィスでの業務機会も徐々に増加してきています。そこで当時この施策に関わっていたメンバーから施策内容を引き継ぎ『みんなが働きやすい空調設定の実現』に取り組み始めました。

オフィス環境は快適ですか?

温度/湿度は業務の生産性に影響するとされており、
「温度25度、湿度50%」が最もパフォーマンスを発揮しやすい環境となっています。

当社では短時間での極端な空調設定の上げ下げ(通称:空調バトル)が発生し問題になっていました。現状、個人の感覚で空調が制御できる状態となっており、誰かの温度設定により冬場にも関わらず暑いと感じることがありますし、私の周りでもオフィスが暑い/寒いといった声をよく耳にします。私は暑いと頭がボーッとしてしまったり、寒いと室温に気が散ってしまったりして業務に集中できないといったことがあります。快適に業務を行える環境はパフォーマンスだけでなく、業務を行うモチベーションにも繋がる程大事だと感じます。

このような課題を解決するため、快適なオフィス環境を実現するシステムを作成することを最終目標にしました。

施策は現在も進行中です。
そのため今回は、現状を確認するためにRaspberry Piを用いて当社のオフィスの環境を可視化したことについてお話ししたいと思います。

オフィス環境を可視化する

機器類の準備

オフィスの状態を測定するにあたり、下記の機器類を繋げて利用しています。

  • Raspberry Pi

  • 温湿度センサモジュール(DHT11)

  • CO2モジュール(MG-Z19)

比較的安価に揃えられる、という点から今回はこちらでシステム構築を行いました。
センサーを取り付けるとこのような見た目になります。

回路については、それぞれ以下のサイトの回路図を参考にしました。

スクリプト作成

GitHubに公開されているソースコードを参考に、モジュールから情報を取得するスクリプトを作成しました。
下記は実際に公開されている計測スクリプトの例です。

import RPi.GPIO as GPIO
import dht11
import time
import datetime

# initialize GPIO
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)

# read data using pin 14
instance = dht11.DHT11(pin=14)

try:
	while True:
	    result = instance.read()
	    if result.is_valid():
	        print("Last valid input: " + str(datetime.datetime.now()))

	        print("Temperature: %-3.1f C" % result.temperature)
	        print("Humidity: %-3.1f %%" % result.humidity)

	    time.sleep(6)

except KeyboardInterrupt:
    print("Cleanup")
    GPIO.cleanup()

上記を元に作ったスクリプトを実行すると、下記のように数値として計測結果が出力されます。
出力されている内容は左から「計測日時」、「二酸化炭素濃度」、「湿度」、「温度」です。

2023年 1月 26日 木曜日 13:05:00 JST co2= 711, 52.8%, 25.0 deg C
2023年 1月 26日 木曜日 13:10:00 JST co2= 713, 52.9%, 25.1 deg C
2023年 1月 26日 木曜日 13:15:00 JST co2= 716, 52.7%, 25.0 deg C
.
.
.

計測の定期実行

ここまでで単体でのスクリプト動作が確認できたので、次ステップとして定期的な測定と結果送信に着手しました。
スクリプトに対してcronでの定期実行を設定し、その実行結果をスプレッドシートへ送信する実装を行っています。

上記構成図のような流れで、GCP経由でGoogleスプレッドシートへ結果を出力し、5分ごとにオフィス環境が可視化されるようになりました。

以下のグラフが1日通して計測を続けた結果になります。
午前中や16時以降は室温が下がっており、適切な室温を維持できていないことがわかります。

ある1日の当社オフィスの室温の推移

今後の展望としては、このような室温が下がり始めたタイミングで空調の調整を促せるSlackbotを作成していければと考えています。

苦戦したこと

  1. スプレッドシートとRaspberry Piの連携
    Raspberry Piでの計測までは施策引き継ぎやサンプルを元に進める事ができたのですが、計測後の結果の出力に苦戦しました。社内で確認したところ、実現したい形と近しい連携を実装されていた有識者がいたため、その方へヒアリングをする事でこの問題を解決することができました。

  2. 活動時間の確保
    メイン業務の間を縫っての活動で手を動かす時間があまり取れなかったため、マイルストーンをおいて計画を組み、時間を有効に使う事を意識して進めました。また、どんなに忙しくても週1の定例を設定し作業を進めるようにしました。

おわりに

今回、Raspberry Piを用いたオフィス環境の可視化を行いました。苦戦したことでも触れたように新たな技術に触れた機会でしたので、センサー類やクラウドの知識が身につき、エンジニアとしての知識幅を広げる事ができたのではと思います。また活動を通じて、メイン業務と並行して業務外の活動も進められる会社の雰囲気を感じました

このような仕組みでオフィス環境の快適さを計測できるので、ぜひ皆さんも自身のオフィス環境を可視化してみてはいかがでしょうか。