ZPi Controller v1 (운영자용 ZView + MCP + Modbus + Programs) 까지 정리하고 보니, v2 에서 추가할 만한 것들이 명확해졌습니다. 우선순위와 이유를 정리합니다.
🥇 MQTT 1순위 — Modbus 만으로는 부족
PLC MQTT 연동이 1순위입니다. 산업 PLC 의 Modbus 는 검증된 표준이지만 IoT 생태계와는 다리가 약합니다. MQTT 가 있으면:
- Home Assistant 자동발견 (auto-discovery) → 스위치/센서 자동 등록
- Node-RED 와 양방향 연동 (코드 한 줄 없이 플로우 빌딩)
- Grafana 시각화 (MQTT → InfluxDB → 대시보드)
- 클라우드 (AWS IoT, Azure IoT Hub, ThingsBoard) 게이트웨이 0설정
- 다중 ZPi 간 P2P 통신
설계:
zpi/<deviceId>/io → publish, 1Hz
zpi/<deviceId>/io/outputs/{i} → publish on change
zpi/<deviceId>/cmd/output/{i} → subscribe (외부에서 토글)
zpi/<deviceId>/cmd/data/{i} → subscribe (D[] 쓰기)
zpi/<deviceId>/event → publish (룰 발동 / 알람)
zpi/<deviceId>/status → LWT online/offline retain
MQTTnet 으로 .NET 측 client/broker 모두 가능합니다. 작업량 약 3일입니다.
🥈 WebSocket — 라이브 모니터의 정의
WebSocket 실시간 모니터가 두 번째입니다. 현재 모니터 페이지는 /api/io 를
1Hz 로 polling 합니다. 입력 변화 보는데 1초 지연 + 폴링 트래픽 낭비입니다. WebSocket push 로 바꾸면 50ms 이내 반응합니다.
ZView 도 활용 가능합니다 — /api/io polling 대신 WS subscribe → CPU 부담
대폭 감소합니다.
작업량 약 2일입니다.
🥉 알람 + 알림 — 무인 운영의 핵심
PLC 알람 알림은 룰엔진 카드 액션에 “알림” 을 추가하는 것입니다:
- 텔레그램 봇 (가장 즉시)
- 슬랙 incoming webhook
- 이메일 (SMTP)
- 일반 webhook (다른 시스템 연동)
# 예: 룰 카드
Trigger: OnInputRising IN[0] (비상정지 입력)
Action: AlarmSend "🚨 비상정지 발생 - LINE2 컨베이어" → Telegram + Slack
야간 무인 공장 / 원격 모니터링에 필수입니다. 작업량 약 1-2일입니다.
있으면 좋은 다음 기능 목록
| 기능 | 작업 | 가치 |
|---|---|---|
| 로컬 히스토리 DB (SQLite) | 2일 | IO 변화 / 알람 / 룰 발동 영구 기록. 사고 분석 / 트렌드 / 보고서 |
| 백업/복원 | 0.5일 | admin UI 에서 zip export/import. 새 SD 카드 클론 즉시 |
| OTA 펌웨어 업데이트 | 1-2일 | 시스템 페이지에서 dll 업로드. 현장 출장 줄임 |
| 여러 ZPi 동기화 | 2-3일 | 큰 공장의 multi-board 묶음 (master/slave) |
| i18n | 1일 | 한/영 토글. 해외 고객 대응 |
| 모바일 PWA | 0.5일 | manifest + service worker. 폰에서 앱처럼 |
| 감사 로그 | 1일 | 누가 언제 무엇을 바꿨나. 인증 환경 (제약/식품) |
ZView 진화 로드맵
ZView 로드맵은 v1 에서 가장 흥미로운 부분이라 별도로 정리했습니다.
| 항목 | 현재 | v2 |
|---|---|---|
| 활성 슬롯 | 1개 | N개 + 메뉴 (/zview/, /zview/pump, /zview/oven) |
| 사용자 프로그램 통합 | 충돌 경고만 | 프로그램이 자체 ZView 동봉 가능 (program.json 매니페스트) |
| AI 분석 깊이 | 룰 스크립트만 | 사용자 프로그램 소스도 분석해서 그에 맞는 ZView 자동 생성 |
| 미리보기 | 새 탭 | admin UI 안에서 iframe 라이브 미리보기 (편집 → 즉시 확인) |
| 권한 | admin/operator 단일 | 그룹 / 사용자별 분리 가능 |
가장 큰 도전 — 사용자 프로그램 모드의 충돌 해결
사용자 프로그램 GPIO 충돌이 가장 큰 도전입니다. 현재 사용자 프로그램 (Programs 페이지) 이 GPIO 점유하면 룰엔진과 ZView 가 자동 정지합니다. v2 에서 풀어야 할 것들입니다.
- 프로그램이 자체 HTTP API 노출하면 ZView 가 그걸 분석해서 적응합니다
- 프로그램이 매니페스트 (
program.json) 로 control point 선언합니다:
AI 가 매니페스트 보고 ZView 자동 생성합니다{ "controlPoints": [ { "label": "펌프 시작", "endpoint": "POST /pump/on" }, { "label": "비상정지", "endpoint": "POST /pump/estop", "danger": true } ] }
이건 단순 기능 추가가 아니라 아키텍처 결정이라 v2 의 첫 작업입니다.
미쓰비시·지멘스 PLC 와 가격·기능 비교
| 기능 | 미쓰비시 FX5 | 지멘스 S7-1200 | ZPi Controller (목표) |
|---|---|---|---|
| 가격 | ~80만원 | ~120만원 | 부품 ~5만원 (판매가 미정) |
| Modbus | 옵션 모듈 (+10만원) | 통합 | 통합 |
| MQTT | 별도 게이트웨이 필요 | TIA Portal 확장 (+) | 통합 (v2) |
| HMI | 별도 패널 (+30만원~) | WinCC 별도 (+) | 웹 + AI 자연어 생성 |
| 클라우드 | 벤더 클라우드 (+) | 벤더 클라우드 (+) | 표준 MQTT → 어디든 |
| 프로그래밍 | GX Works (전용 IDE) | TIA Portal (전용 IDE) | 웹 + Python |
ZPi 의 위치: “PLC 가 너무 비싸거나 닫혀있어서 못 쓰던 영역” — 교육, R&D, 메이커, 소형 OEM, IoT 게이트웨이입니다.
v2 작업 순서 (제안)
Week 1: 백업 / 롤백 정리 (완료)
Week 2: MQTT 통합 + Home Assistant 자동발견
Week 3: WebSocket + 라이브 모니터 개선 + ZView 멀티슬롯
Week 4: 알람 + 텔레그램/슬랙
Week 5: 로컬 히스토리 DB + Grafana 연동 가이드
Week 6: 사용자 프로그램 매니페스트 + AI ZView 자동생성 v2
마지막 한마디 — AI 친화 인프라
AI 친화 인프라가 ZPi Controller v1 을 만들면서 가장 크게 배운 관점입니다. 도구 description 이 LLM 의 행동지침이 되고, AI 가 만든 산출물의 인프라 부분을 서버가 보완하고, 사용자 설정 실수도 자동 복구되는 시스템입니다.
이런 디자인 패턴은 ZPi 가 아니라도 적용 가능합니다 — 사내 백오피스 도구, 데이터 대시보드, IoT 디바이스 운영자 UI 등입니다.
v2 도 같은 방향입니다. 더 단순하고, 더 안전하고, AI 가 더 잘 다룰 수 있게 만듭니다.
MQTT · WebSocket · 알람이 v2 의 1~3순위이고, 그 위에 AI 친화 인프라를 넓히는 것이 ZPi Controller 의 방향입니다.
의견 / 협업
이 글 보고:
- “이런 기능도 있으면 좋겠다” 의견
- 직접 써보고 싶다 (HW 보드 협찬 / 데모)
- 다른 산업 도메인 (반도체, 제약, 식품) 응용 아이디어
- 코드 보고 싶다 (오픈소스 공개 시점 알림)
연락 환영합니다. (문의 페이지 / 이메일)
시리즈 마무리
ZPi Controller 시리즈 7편 끝입니다.
- 라즈베리파이로 PLC 만들기 — ZPi Controller 소개
- ZView: AI 가 자연어로 만드는 산업 HMI
- Claude Desktop MCP — ‘한 번 더블클릭’ 설치자를 만들기까지의 삽질
- 디버깅한 세 가지 함정 — Modbus 포트, mDNS 캐시, Regex
$1 - 라즈베리파이 WiFi 복원력 + 부팅 1분 31초 → 33초
- (이 글) v2 로드맵
- ZView 샘플 — Modbus IO 모니터링 화면 한 장으로 만들기
읽어주셔서 감사합니다.
문의
- Email : [email protected]
- Insta : https://www.instagram.com/going.sen/
- Website : https://intosen.com/kr/consult/
댓글
닉네임만 입력하면 바로 댓글을 남길 수 있어요. Google/GitHub 로그인도 가능합니다.