BL192 MQTT 설정 가이드
BL192 를 MQTT 브로커에 붙여 I/O 값을 올리고 출력을 제어하기까지의 절차입니다. 화면은 펌웨어 V1.1.16 기준이며, 판올림에 따라 배치가 조금 다를 수 있습니다.
시작 전 준비
- BL192 의 ETH 0 를 PC 와 같은 네트워크에 연결합니다. 공장 출하 IP 는 192.168.3.2 입니다.
- PC 의 IP 를 같은 대역(예: 192.168.3.1)으로 맞춥니다.
- 브로커로 쓸 PC 에서 1883 포트가 방화벽에 막혀 있지 않은지 확인합니다.
- 브로커는 Mosquitto·EMQX 같은 정식 제품을 권합니다. 현장 시험만 하실 때는 아래 예제 브로커로도 충분합니다.
브로커나 수집 프로그램을 직접 만드실 때는 MQTT 브로커·클라이언트 구현 가이드를 함께 보십시오.
3. I/O 모듈과 레지스터 주소 확인
장착한 Y 보드가 슬롯 순서대로 인식되었는지 확인합니다.
여기 나오는 Modbus Address 가 MQTT 식별자의 번호가 됩니다. 예를 들어 2슬롯 Y24 의 DO 가 1000~1003 이면 MQTT 에서는 REG1000~REG1003 입니다.
이 화면을 캡처해 두시면 나중에 어느 채널이 어느 번호인지 찾기 쉽습니다.
6. 연결 항목 입력
아래 표가 각 항목의 뜻입니다. 입력이 끝나면 오른쪽 아래 Save & Apply 를 눌러야 적용됩니다.
| Cloud platform | Custom Cloud — 직접 세운 브로커에 붙일 때 선택합니다. |
|---|---|
| Cloud Name | 설정을 구분하는 이름입니다. 동작에는 영향이 없습니다. |
| Host IP or Domain | 브로커가 도는 PC·서버의 IP 또는 도메인. BL192 자신의 IP 가 아닙니다. |
| Port | 브로커 포트. 일반적으로 1883(평문), TLS 는 8883. |
| MQTT Client ID | 브로커가 장치를 구분하는 이름입니다. 여러 대를 붙일 때는 반드시 서로 다르게 지정하십시오. 같으면 뒤에 붙은 장치가 앞의 연결을 끊습니다. |
| User Name · Password | 브로커에 인증을 걸었을 때만 채웁니다. 비워 두면 익명 접속입니다. |
| Encryption | TLS 사용 여부. 사내망 밖으로 내보내신다면 켜십시오. |
| Publish data format | Default data format 이면 평면 JSON 으로 올라갑니다. |
| Publish Topic | 장치가 값을 올리는 토픽. 수집 프로그램은 이 토픽을 구독합니다. |
| Subscribe Topic | 장치가 명령을 받는 토픽. 출력 제어는 이 토픽으로 보냅니다. |
| Publish Period(s) | 올리는 주기(초). 1 이면 1초마다 전체 채널을 보냅니다. |
| Publisher QOS | 0=최대 한 번, 1=최소 한 번. 값이 빠지면 안 되는 용도라면 1 로 두십시오. |
| Data Retransmission Enable | 연결이 끊긴 동안의 데이터를 복구 후 다시 보냅니다. |
| Data packing · Number of data | 여러 채널을 한 메시지에 묶습니다. 20 이면 최대 20개씩 묶입니다. |
| Publish when data changes | 켜면 주기와 무관하게 값이 바뀔 때 보냅니다. 통신량을 크게 줄일 수 있습니다. |
올라오는 데이터 형식
Default data format 으로 올라오는 메시지는 아래와 같은 평면 JSON 입니다. 키의 REG 뒤 번호가 곧 Modbus 주소입니다.
{
"REG2000": 0, "REG2001": 0, "REG2002": 0, "REG2003": 0,
"REG2004": 1, "REG2005": 0, "REG2006": 0, "REG2007": 0,
"REG1000": 0, "REG1001": 0, "REG1002": 0, "REG1003": 0,
"ipv4-address": "192.168.3.2",
"time": 1107303581,
"seq": 1
}
| Modbus 주소 | MQTT 식별자 | 채널 종류 | 접근 |
|---|---|---|---|
| 1000 ~ 1999 | REG1000 … | 디지털 출력 (DO) | 읽기 · 쓰기 |
| 2000 ~ 2999 | REG2000 … | 디지털 입력 (DI) | 읽기 전용 |
| 3000 ~ 3999 | REG3000 … | 아날로그 입력 (AI) | 읽기 전용 |
| 4000 ~ 4999 | REG4000 … | 아날로그 출력 (AO) | 읽기 · 쓰기 |
| 5000 ~ 8999 | REG5000 … | 펄스 출력 · DI 카운팅 | 읽기 · 쓰기 |
BL192·BL192Pro 사용자 매뉴얼 4.3 Modbus 레지스터 매핑 기준입니다. 실제 장착 구성에 따른 번호는 IO status 화면에서 확인하십시오.
출력 제어
구독 토픽(예: BL192-SUB)으로 아래와 같은 JSON 을 보내면 해당 채널이 바뀝니다.
DI 처럼 읽기 전용인 주소로 보내면 무시됩니다.
{ "REG1000": 1 }
브로커에서 확인하기
설정이 끝나면 브로커 쪽에서 접속과 메시지가 보이는지 확인합니다. 아래 화면은 어큐시스가 제공하는 Windows 시험 도구로 확인한 것입니다. 설치 없이 실행되며, 브로커·클라이언트와 전체 소스가 함께 들어 있습니다.
- 압축을 푼 폴더에서 mqtt_broker_gui.exe 를 실행합니다.
- 포트가 1883 인지 확인하고 [시작] 을 누릅니다. Windows 방화벽 경고가 뜨면 반드시 [액세스 허용] 을 눌러야 장치가 붙습니다.
- BL192 의 Host IP or Domain 에 이 PC 의 IP 를 넣고 Save & Apply 를 누릅니다.
- 왼쪽 목록에 장치가 나타나고 오른쪽 로그에 값이 올라오면 정상입니다.
코드 서명이 되어 있지 않아 Windows SmartScreen 이나 백신이 경고를 띄울 수 있습니다. 사내 보안 정책상 실행이 어려우시면 함께 들어 있는 소스를 직접 빌드해 쓰십시오(build.bat · Visual Studio 필요). 시험용이므로 외부망에 열린 PC 에서는 쓰지 마시고, 확인이 끝나면 프로그램을 종료하십시오.
브로커·수집 프로그램을 직접 만드실 때의 예제 코드는 구현 가이드에 있습니다.
잘 안 될 때
| Connect State 가 Connected 로 바뀌지 않습니다 | Host IP 가 브로커 PC 의 IP 인지, 1883 포트가 방화벽에 막혀 있지 않은지 확인하십시오. BL192 에서 그 PC 로 ping 이 가는지부터 보시면 빠릅니다. |
|---|---|
| 연결은 되는데 메시지가 오지 않습니다 | 수집 프로그램이 구독한 토픽과 BL192 의 Publish Topic 이 정확히 같아야 합니다. 대소문자도 구분합니다. |
| 잠시 붙었다가 계속 끊깁니다 | 같은 MQTT Client ID 를 쓰는 장치가 또 있는지 확인하십시오. 브로커는 같은 ID 의 기존 연결을 끊습니다. |
| 값이 전부 0 으로만 올라옵니다 | IO status 에서 모듈이 정상으로 인식되었는지, 구독 중인 레지스터 번호가 그 슬롯의 주소와 맞는지 확인하십시오. |
| time 값이 엉뚱합니다 | 장치 시각이 동기되지 않은 상태입니다. System 메뉴에서 NTP 를 설정하시거나, 수집 쪽에서 수신 시각을 쓰십시오. |
| 출력 제어 명령이 먹지 않습니다 | Subscribe Topic 으로 보내고 계신지, 쓰기가 가능한 주소(DO·AO)인지 확인하십시오. |
그래도 해결되지 않으면 설정 화면과 브로커 로그를 함께 보내 주십시오. 기술 문의 →



