Skip to content

Fac2Real/monitory-iot

Repository files navigation

Monitory IoT

공장 통합 모니터링 시스템 Monitory의 IoT 센서 시뮬레이션 및 데이터 수집을 위한 레포지토리 입니다.


🏭 레포지토리 소개

Monitory IoT는 공장 내 다양한 센서 데이터를 시뮬레이션하고 실시간으로 수집·전송하는 시스템입니다. AWS IoT Core를 통해 MQTT 프로토콜로 센서 데이터를 전송하며, 웹 인터페이스를 통해 센서 관리가 가능합니다.

  • 다양한 센서 시뮬레이션: 온도, 습도, 진동, 전력, 전류, 압력, 미세먼지, VOC 등
  • 실시간 데이터 전송: AWS IoT Core를 통한 MQTT 기반 데이터 송신
  • 환경/설비 센서 구분: Zone ID와 Equipment ID 기반 센서 분류
  • 웹 기반 관리: Streamlit을 통한 직관적인 센서 관리 인터페이스
  • 실제 센서 지원: USB 연결 기반 실제 센서 데이터 수집

📁 폴더 구조

monitory-iot/
├── service/
│   ├── simulation/           # 시뮬레이터 구현
│   │   ├── TempSimulator.py     # 온도 센서 시뮬레이터
│   │   ├── HumiditySimulator.py # 습도 센서 시뮬레이터
│   │   ├── PowerSimulator.py    # 전력 센서 시뮬레이터
│   │   ├── PressureSimulator.py # 압력 센서 시뮬레이터
│   │   ├── VibrationSimulator.py# 진동 센서 시뮬레이터
│   │   ├── CurrentSimulator.py  # 전류 센서 시뮬레이터
│   │   ├── DustSimulator.py     # 미세먼지 센서 시뮬레이터
│   │   ├── VocSimulator.py      # VOC 센서 시뮬레이터
│   │   ├── SimulatorInterface2.py # 시뮬레이터 인터페이스
│   │   └── factory.py           # 시뮬레이터 팩토리
│   └── simulatelogic/        # 시뮬레이션 로직
│       ├── ContinuousSimulatorMixin.py      # 연속 데이터 생성 로직
│       └── PowerContinuousSimulatorMixin.py # 전력 전용 생성 로직
├── streamlit_app/           # 웹 관리 인터페이스
│   └── app.py              # Streamlit 메인 앱
├── mqtt_util/              # MQTT 통신 유틸리티
│   └── publish.py          # AWS IoT Core 연결
└── config/                 # 설정 파일
    └── aws_config.json     # AWS 인증 정보

🚀 주요 기능

1. 다양한 센서 시뮬레이션

  • 온도(temp): 환경센서(25±3°C), 설비센서(71±10°C)
  • 습도(humidity): 환경센서(55±15%), 설비센서(50±12%)
  • 진동(vibration): 환경센서(2±2), 설비센서(1.6±0.7)
  • 전력(power): 유효전력 + 무효전력 동시 전송
  • 전류(current): 환경센서(5±30A), 설비센서(80±25A)
  • 압력(pressure): 35.74±10.38 kPa
  • 미세먼지(dust): 50±25 ㎍/㎥
  • VOC(voc): 400±250 ppb

2. 지능형 데이터 생성

  • 평균 회귀: 센서 값이 평균으로 돌아가는 자연스러운 변화
  • 노이즈 추가: 실제 센서와 유사한 미세한 변동
  • 이상치 생성: 설정 가능한 확률로 이상 상황 시뮬레이션
  • 환경/설비 구분: Zone ID = Equipment ID면 환경센서, 다르면 설비센서

3. 실시간 데이터 전송

  • MQTT 프로토콜: AWS IoT Core를 통한 안정적인 데이터 전송
  • 토픽 구조: sensor/{zone|equip}/{zoneId}/{equipId}/{sensorId}/{sensorType}
  • Shadow 지원: 센서 상태 관리 및 원격 제어
  • 멀티 스레딩: 다중 센서 동시 운영

4. 웹 기반 센서 관리

  • 직관적 UI: Streamlit 기반 사용자 친화적 인터페이스
  • 실시간 모니터링: 센서 상태 및 진행률 실시간 표시
  • 일괄 관리: 모든 센서 동시 시작/중지
  • 설정 저장: JSON/SQLite 기반 센서 설정 저장/로드

🛠️ 기술 스택

  • Python 3.8+
  • AWS IoT core, MQTT
  • Streamlit (웹 인터페이스)
  • Threading (멀티 센서 동시 실행)

⚡️ 시뮬레이터 사이트 링크


📡 MQTT 토픽 구조

  • Shadow 토픽
$aws/things/Sensor/shadow/name/UA10T-TEM-24060890/update
$aws/things/Sensor/shadow/name/UA10T-TEM-24060890/update/desired
  • 일반 센서
// ZoneId == EquipId
sensor/zone/ZONE-001/ZONE-001/UA10T-TEM-24060890/temp
  • 설비 센서 // ZoneID != EquipId
sensor/equip/ZONE-001/EQUIP-001/UA10T-TEM-24060890/temp
  • 전력 센서 (이중 토픽 전달)
sensor/equip/ZONE-001/EQUIP-001/UA10P-PWR-24060890/active_power
sensor/equip/ZONE-001/EQUIP-001/UA10P-PWR-24060890/reactive_power

📝 데이터 포맷

  • 기본 센서 데이터 (ex.Temp)
{
    "zoneId": "ZONE-001",
    "equipId": "EQUIP-001", 
    "sensorId": "UA10T-TEM-24060890",
    "sensorType": "temp",
    "val": 25.34
}

🚨 주의사항

  • 실제 센서(real_sensor): 로컬 환경에서만 사용 가능, USB 연결 필요
  • AWS 비용: 대량 데이터 전송 시 AWS IoT Core 요금 발생 가능
  • 스레드 관리: 시뮬레이션 중지 시 모든 스레드 정상 종료 확인 필요
  • 포트 충돌: 실제 센서 사용 시 USB 포트 충돌 주의

📋 지원 센서 목록

센서 타입 아이콘 단위 환경센서 범위 설비센서 범위
temp 🌡️ °C 25±3 71±10
humidity 💧 % 55±15 50±12
vibration 📳 - 2±2 1.6±0.7
power ⚡⚡ W/VAR - 53K±38K / 29K±19K
current A 5±30 80±25
pressure ⚙️ kPa 35.7±10.4 35.7±10.4
dust 💨 ㎍/㎥ 50±25 50±25
voc 🌫️ ppb 400±250 400±250
real_sensor 🔌 다양 실제 센서 값 실제 센서 값

환경

  • python 3.13.3

의존성 설치

pip install -r requirements.txt

pem.key 위치 .env에 정의

git config commit.template "$(GitMessage_PWD)/.gitmessage.txt"

About

모니토리 서비스의 시계열 데이터 수집을 위해 가상 데이터를 보내주는 ISO 국제 표준화 기구 기반의 룰베이스 시뮬레이팅 서비스

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages