환영합니다, 운영자님
농장 관리 서비스 연결 설정을 구성하세요.
연결 설정 (Connection Profile)
시스템 개요
장치 제어 (Controls)
현장 액추에이터를 직접 제어합니다.
CCTV 카메라 목록
목록을 불러오는 중...
장치 목록을 불러오는 중이거나 장치가 없습니다.
'장치 설정' 탭에서 [장치 목록 불러오기]를 클릭하세요.
실시간 모니터링 (Monitor)
센서 데이터 스트림을 확인합니다.
수신 데이터 (Data Stream)
장치 설정 (Settings)
장치 이름을 관리합니다.
장치 이름 관리
'장치 목록 불러오기' 버튼을 눌러주세요.
밸브 그룹 설정 (Valve Groups)
펌프 작동 시 함께 열려야 할 밸브들을 설정합니다.
'그룹 목록 불러오기' 버튼을 눌러주세요.
그룹 추가 / 수정
TheIMC 스마트팜 SDK v2.0 인터페이스 명세서
스마트팜 제어 인터페이스 구현을 위한 통합 개발자 가이드입니다.
1. 시스템 구조 및 연결 (Architecture & Connection)
이 시스템은 MQTT over WebSockets를 사용합니다. 클라이언트는 브로커에 연결하고 아래의 두 가지 주요 토픽을 필수로 구독해야 합니다.
* {field_id}는 일반적으로
'office' 또는 특정 현장 ID를 사용합니다.
2. 액추에이터 제어 (Actuator Control)
포트 인터페이스(0~15)를 통한 직접 하드웨어 제어입니다.
제어 명령 (Client → Server)
{
"action": "set", // 수동관수 + 모터펌프 물채움
"port": 0, // LED 번호 0~7
"value": 1, // 0->off, 1->on
"ts": 1737412345678 // timestamp
}
제어 응답 (Server → Client)
응답(Ack) 토픽으로 수신됩니다:
// Echo confirmation
{
"action": "set",
"port": 0,
"value": 1
}
3. 시스템 메타데이터 (System Metadata)
장치 검색 및 이름 관리 서비스입니다.
장치 목록 요청
{ "action": "deviceNames" }
응답 (Response)
{
"event": "deviceNames",
"data": {
"0": "Main Pump",
"1": "Valve A"
}
}
4. 밸브 그룹 자동화 (Valve Group Automation)
펌프 연동 자동 밸브 설정을 구성합니다. 포트 매핑(0-15)을 엄격하게 따릅니다.
그룹 설정 (추가/수정)
{
"action": "valveGroup",
"port": 0, // Master Pump Port
"valves": [1, 2], // Member Valve Ports
"match": "set"
}
삭제하려면 비어있는
valves: [] 배열을 전송하세요.
설정 조회
// Request
{ "action": "valveGroup", "command": "info" }
// Response
{
"command": "getValveGroups",
"valveGroups": [
{ "pumpPort": 0, "valvePorts": [1, 2] }
]
}
5. CCTV 관제 (WebRTC Signaling)
시그널링 메시지는 MQTT 브로커를 통과하기 위해 JSON으로 래핑됩니다.
Client Offer (시작 요청)
{
"action": "cctvs",
"command": "createOffer",
"cameraId": "uuid-string...",
"payload": {
"type": "offer",
"sdp": "v=0\r\n..."
}
}
Server Answer (서버 응답)
{
"action": "cctvs",
"command": "answer",
"cameraId": "uuid-string...",
"payload": {
"type": "answer",
"sdp": "v=0\r\n..."
}
}
command: "candidate"를 사용합니다.
6. 백엔드 개선 요청 사항 (RFC)
대상: 백엔드 개발팀
프론트엔드 팀은 시스템 안정성과 동기화 개선을 위해 다음 프로토콜 확장을 요청합니다.
6.1 일괄 제어 (Atomic Batch)
요구사항: 펌프/밸브 그룹의 동시 제어를 보장하여 압력 스파이크를 방지합니다.
{
"action": "setBatch",
"operations": [
{ "port": 0, "value": 1 },
{ "port": 1, "value": 1 }
]
}
6.2 에러 피드백 채널
요구사항: 실패한 명령(포트 오류, 하드웨어 타임아웃 등)에 대한 명시적 에러 응답이 필요합니다.
{
"event": "error",
"code": 503,
"msg": "Device Timeout",
"ref": "set"
}
6.3 시스템 상태 텔레메트리
요구사항: 백엔드 서비스의 상태 및 가동 시간(Uptime)을 모니터링하기 위한 전용 토픽입니다.
{ "cpu": 45, "mem": "1024MB", "uptime": 86400 }
7. 고객용 앱 UI 구현 가이드 (Customer App Implementation)
고객용 앱에서 장치 제어 UI를 구현하는 예시입니다.
미리보기 (Preview)
구현 코드 (HTML/CSS Structure)
<!-- 장치 카드 컨테이너 -->
<div class="control-card">
<!-- 헤더: 이름 및 상태 표시등 -->
<div class="control-header">
<span>관수 펌프 1</span>
<!-- 상태 표시등: .on 클래스로 켜짐/꺼짐 토글 -->
<div class="indicator-lamp on"></div>
</div>
<!-- 제어 버튼 그룹 -->
<div class="btn-group">
<button class="btn-on" onclick="sendCmd(0, 1)">켜기</button>
<button class="btn-off" onclick="sendCmd(0, 0)">끄기</button>
</div>
</div>
핵심 로직:
1. indicator-lamp는 수신된 Ack/Data 메시지의 value: 1 값에 따라
.on 클래스를 추가/제거합니다.
2. 버튼 클릭 시 { action: "set", port: 0, value: 1 } JSON을 발행합니다.