利用物联网系统构建一个系统,可实时监测并显示情绪评分
1. 创意
现代办公空间充满活动、设备和人员,容易出现环境问题、噪音、光线不足以及空气污浊等情况,这些因素会降低专注力、舒适度和整体情绪。然而,这些状况通常无法持续监控,团队往往对影响工作效率的环境条件缺乏感知。
为解决这一问题,我们开发了一套基于物联网的办公环境情绪监测系统,可实时测量关键环境变量,并将其转化为一个直观统一的“办公环境情绪评分”。该评分能即时反映工作空间的“健康状况”,支持实时监控与历史趋势分析。
与静态或专有解决方案不同,我们的系统具备模块化、开源和可扩展性,可部署于多个工位或房间,适应不同空间大小,并在不重新设计架构的前提下集成更多传感器。通过实现环境状态的自动化感知,办公室无需依赖猜测或定期人工检查,即可维持舒适且高效的工作环境。
2. 项目概述
该系统通过一系列传感器实时监测办公室的舒适度,具体测量内容包括:
•声级:识别过量噪音
•照度:判断照明质量
•二氧化碳浓度:反映通风状况和空气清新度
•温度与湿度:体现热舒适性
•占用情况:检测办公桌使用状态及工作区域利用情况
数据通过 oneM2M ACME 平台进行采集和汇总,提供实时与历史可视化信息。
为实现即时本地反馈,每个 ESP32 节点均配备一个 RGB LED,具有双重功能:
- 显示当前工作场所情绪评分(从绿色到红色的渐变色)
- 显示桌面占用状态(LED 点亮表示已占用 / LED 关闭表示未占用)
这种实时系统数据与简单本地指示相结合,帮助团队快速了解环境状况、工作区使用情况,以及这些因素对舒适度和工作效率的影响。
3. 目标
该系统通过持续监控,旨在提升办公环境的舒适度、专注力和工作效率。
主要目标包括:
•实时监测噪音、照明、二氧化碳浓度、温度、湿度及人员占用情况;
•将原始传感器数据转化为简洁舒适的评估指标,实现工作场所情绪评分;
•通过中央oneM2M平台(ACME CSE)传输数据;
•检测异常问题,例如噪音过高或通风不良。
4. 系统架构
工作场所情绪监测系统构建为一个端到端的物联网(IoT)管道,整合了桌面级传感、房间级传感、本地中间节点以及集中式数据采集与处理功能。该架构集成了一颗ESP32传感器节点和基于树莓派的MN-CSE(中间节点CSE),以全面捕捉工作场所的环境状况。
4.1 ESP32节点
ESP32负责采集桌面级别的测量数据:噪声、照度和人员占用情况,并通过REST协议将数据上传至MN-CSE(树莓派)。此外,ESP32还运行一个小型通知服务器,当其oneM2M属性更新时,可立即驱动RGB LED刷新显示。LED用于实时展示最新的情绪评分和人员占用状态。
引脚布局:
•组件功能 GPIO
•VEML7700 I2C SDA 8
•VEML7700 I2C SCL 9
•INMP441 I2S SCK (BCLK) 12
•INMP441 I2S WS (LRCLK) 11
•INMP441 I2S SD (DOUT) 10
•mmWave UART TX 17
•mmWave UART RX 18
•mmWave OT2 1
•NeoPixel DIN 38
4.2 房间级传感(树莓派MN-CSE)
树莓派作为中间节点CSE(MN-CSE),连接至房间级Switchbot二氧化碳传感器,用于测量温度、湿度和CO₂浓度。它将读取的数据以属性形式存储,并通过安全的 WireGuard VPN 连接,使用资源公告向 IN-CSE 发送所有更新。
4.3 中央处理(IN-CSE、摄取服务、情绪服务)
在中央 oneM2M 节点(IN-CSE)中,订阅机制会在新遥测数据到达时通知摄取服务。摄取服务:
•提取遥测数据
•标准化指标名称和值
•将结构化遥测数据写入 PostgreSQL
•将标准化的数据转发至情绪服务进行计算
情绪服务会根据所有环境变量(桌面级 + 房间级)计算出工作场所情绪得分。它将情绪状态以CIN形式发布到房间容器中的MN-CSE,并根据得分更新LED灯的颜色。
4.4 全流程概览
1. ESP32 收集桌面级测量
2. MN-CSE 收集房间级别的测量数据
3. ESP32 发布属性 → MN-CSE
4. MN-CSE 通过 WireGuard VPN 将传感器资源转发至 IN-CSE
5. IN-CSE 触发订阅 → 吸入服务
6. 摄入:归一化 → 存入 PostgreSQL → 转发至情绪服务
7. 情绪服务:计算得分 → 存入PostgreSQL → 将情绪CIN发布到房间容器内的MN-CSE,并更新LED灯的颜色属性。
8. ESP32 通过其自带的小型本地通知服务器即时接收 LED 更新。
9. Grafana 及应用程序通过 PostgreSQL 可视化遥测数据和情绪状态
5. 实施
工作场所情绪监测系统采用模块化、端到端的物联网管道实现,整合边缘设备、本地节点和云端节点以及分析服务。
5.1 台面级(ESP32 传感器节点)
硬件:
•ESP32-S3-DevKitC-1 配备 VEML7700(光线传感器)、INMP441(麦克风)、S3KM1110(人体占用传感器)和 WS2812 RGB LED。
功能:
•在 MN-CSE 中创建传感器资源树。
•每 10 秒读取一次光照、噪音和占用状态。
•通过 REST 接口将测量数据发送至本地 MN-CSE。
运行一个小型通知服务器,当 RGB LED 的颜色或二进制开关资源更新时,可即时刷新其显示。该功能用于展示最新的情绪评分和占用状态。
软件:
•使用 PlatformIO / Arduino 开发。
5.2 房间级节点(Raspberry Pi MN-CSE)
硬件:
•树莓派4:读取SwitchBot CO2传感器的蓝牙信号,并解码温度、湿度和CO₂数据。
功能:
•创建用于MN-CSE功能所需的资源树,包含CO2传感器。
•聚合ESP32和SwitchBot传感器的数据。
•通过WireGuard VPN安全地将资源转发至云端IN-CSE。
软件:
•Python BLE扫描器(Bleak)、ACME MN-CSE Docker容器、WireGuard VPN。
5.3 云处理(IN-CSE、摄入服务、情绪服务)
IN-CSE:
•ACME基础设施节点,接收来自MN-CSE的CINs。
摄入服务(Flask):
•由IN-CSE的订阅通知触发。
•对遥测数据进行标准化(指标同义词、类型转换)。
•将结构化事实持久化存储在PostgreSQL中(fact_telemetry)。
•将标准化的数据转发至情绪服务。
情绪服务(FastAPI):
•基于启发式算法,结合CO₂、噪音、照度、温度、湿度和占用率计算工作场所情绪评分。
•将结果存储在fact_mood表中。
•向MN-CSE发布情绪CINs。
可选机器学习服务:
•实验性、只读,用于预测性情绪评分。
5.4 部署
•容器化:所有服务(MN-CSE、IN-CSE、摄入服务、情绪服务、PostgreSQL、Grafana)均使用Docker Compose进行编排。
•配置:通过 .env 文件存储的环境变量,用于IP地址、端口、传感器MAC地址和VPN信息。
•WireGuard VPN:安全地将分布式MN-CSE连接到云IN-CSE。
•监控:日志通过Docker检查,提供集成测试(verify_ingest.sh)。
5.5 注意事项
•MN-CSE负责房间级别的数据聚合,减轻云端负载。
•ESP32迷你通知服务器确保LED反馈即时响应。
•BLE传感器每60秒扫描一次,而ESP32传感器每10秒更新一次。
•系统完全模块化,支持多台工作台、多个房间以及额外传感器。
6. 可视化
职场情绪监测系统采用 Grafana 作为核心可视化平台,实时提供办公环境状况及计算出的职场情绪评分的历史与实时数据。所有遥测数据和情绪评分均存储在 PostgreSQL 数据库中,Grafana 通过查询该数据库生成仪表板,用户和管理者可即时访问。
仪表板设计直观且信息丰富。实时仪表显示关键环境指标,如二氧化碳浓度、噪音水平、光照强度、温度、湿度以及桌位占用情况。专用面板展示职场情绪评分,帮助团队快速判断工作环境是否有利于专注、处于中性状态或存在疲劳风险。
历史趋势通过时间序列图表呈现,便于分析环境参数的变化趋势及其与情绪评分之间的关联,覆盖数天或数周的时间范围。同时,也可查看原始遥测数据的表格,深入掌握传感器读数的详细信息。
Grafana 通过 Docker Compose 部署为容器化服务,预配置了仪表板和数据源,实现快速部署与无缝运行。通过集中可视化,Grafana使设施管理人员、团队负责人和研究人员能够同时监控多个工作台或房间,识别重复性问题,并基于数据做出决策,以优化工作环境的舒适度和生产力。
本文编译自hackster.io





