EASY LOGGER MQTT 설정 사용방법

EASY LOGGER 사용법: EASY LOGGER MQTT 설정 사용방법
안녕하세요. 오늘은 EASY LOGGER를 현장에서 사용할 때 꼭 알아두면 좋은 기능과 설정 흐름을 블로그 포스팅 형식으로 정리했습니다. 기존 사용자메뉴얼의 실제 화면 캡처는 그대로 유지하고, 처음 보는 분도 흐름을 이해할 수 있도록 핵심 사용 순서를 먼저 배치했습니다.

이런 분께 추천합니다
- PLC, 센서, 설비 데이터를 수집해야 하는 현장 담당자
- 생산수량, 온도, 습도, 설비 상태를 DB/CSV/API로 관리하려는 사용자
- EASY LOGGER 화면을 보면서 빠르게 설정 절차를 확인하고 싶은 사용자
이 기능의 핵심 특징
- Broker 기반 publish/subscribe 연동
- 사용자/비밀번호와 TLS 인증서 관리
- Topic Preview로 외부 시스템 연동 주소 확인
- 외부 시스템에서 WRITE 명령 수신 가능
사용 흐름 요약
- Broker 접속 정보를 등록합니다.
- 사용자와 TLS 인증서를 설정합니다.
- Topic Preview로 publish/subscribe 경로를 확인합니다.
- Runtime Status로 연결 상태를 점검합니다.
실제 화면으로 보는 사용 방법
아래 내용은 원본 사용자메뉴얼의 화면 캡처와 절차를 유지하면서, 블로그에서 읽기 쉽게 정리한 본문입니다.
실제 EASY LOGGER hta1.iptime.org:8000의 MQTT 설정 화면 예시입니다.

처음 화면에서는 Broker 접속 정보, TLS 사용 여부, Publish/Subscribe 설정, TLS PEM 업로드 영역을 먼저 확인합니다.
이 문서는 EASY LOGGER의 MQTT 설정을 현장 사용자가 바로 이해하고 사용할 수 있도록 정리한 설명서입니다.
MQTT 설정은 PLC 또는 Modbus에서 수집한 값을 MQTT Broker로 발행하고, 외부 MQTT Client가 보낸 WRITE 명령을 받아 PLC 또는 Modbus로 다시 쓰는 기능입니다.
가장 중요한 결론부터 정리하면 다음과 같습니다.
EASY LOGGER의 MQTT는 수집값을
READ TOPIC으로 발행합니다.
외부에서 PLC 값을 쓰려면WRITE TOPIC으로 정해진 JSON을 발행합니다.
MQTT Broker Configuration의 User/Password는 EASY LOGGER가 Broker에 접속할 때 쓰는 계정입니다.
MQTT User / Password는 LOCAL MQTT Broker에 접속할 외부 사용자 계정을 만들기 위한 관리 화면입니다.
운영 환경에서는 1883 user/password 또는 8883 TLS 구성을 현장 보안 정책에 맞게 선택합니다.
예를 들어 MAIN 설정에서 PLC 이름이 XBMPLC, 설정 이름이 D100_WORD라면 MQTT Topic은 다음처럼 만들어집니다.
READ TOPIC: XBMPLC/D100_WORD/READ
WRITE TOPIC: XBMPLC/D100_WORD/WRITE
외부 프로그램은 READ TOPIC을 구독해서 현재 PLC 값을 받을 수 있습니다.
외부 프로그램에서 WRITE TOPIC으로 올바른 JSON을 보내면 EASY LOGGER가 기존 PLC WRITE 처리 경로를 통해 PLC 또는 Modbus에 값을 씁니다.
1. MQTT 설정을 사용하는 목적
일반 수집은 보통 다음 방식으로 사용합니다.
- PLC 또는 Modbus 값을 일정 주기로 읽는다.
- 읽은 값을 DB 또는 CSV에 저장한다.
- API 또는 OPCUA로 외부 시스템에 제공한다.
MQTT 설정은 이 중 실시간 메시지 연동을 담당합니다.
주로 다음 상황에서 사용합니다.
- Node-RED에서 PLC 값을 실시간으로 구독하고 싶을 때
- MES, SCADA, 관제 서버가 MQTT Topic으로 값을 받아야 할 때
- 외부 시스템에서 MQTT 메시지로 PLC 값을 원격으로 써야 할 때
- DB 저장과 별도로 가벼운 실시간 알림 채널이 필요할 때
- 라즈베리파이의 LOCAL MQTT Broker를 현장 내부 중계 서버로 쓰고 싶을 때
MQTT는 Broker를 중심으로 동작합니다.
EASY LOGGER는 Broker에 접속한 뒤 값을 발행하거나 WRITE 명령 Topic을 구독합니다.
라즈베리파이 출하 구성에서는 같은 장비에 설치된 Mosquitto를 LOCAL MQTT Broker로 사용할 수 있습니다.
2. MQTT 동작 구조
READ 발행은 다음 순서로 동작합니다.
PLC / Modbus 값 수집
-> EASY LOGGER가 DB/CSV 저장 처리
-> MQTT Publish 대상이면 READ TOPIC으로 발행
-> 외부 MQTT Client가 구독해서 값 수신
WRITE 수신은 다음 순서로 동작합니다.
외부 MQTT Client가 WRITE TOPIC으로 JSON 발행
-> EASY LOGGER가 WRITE TOPIC 구독 메시지 수신
-> payload JSON 검증
-> WRITE queue에 적재
-> 기존 PLC WRITE 처리 경로로 전달
-> PLC 또는 Modbus에 실제 값 쓰기
MQTT WRITE는 수신 callback 안에서 바로 PLC에 쓰지 않고 queue에 넣은 뒤 별도 worker가 처리합니다.
따라서 MQTT WRITE 메시지가 들어와도 수집 루프가 직접 막히지 않도록 구성되어 있습니다.
3. 사용 전 준비
MQTT를 사용하기 전에 다음 항목을 먼저 확인합니다.
- MAIN 설정에 PLC 또는 Modbus 수집 설정이 등록되어 있다.
- 수집 설정에 PLC NAME과 CONFIG NAME이 입력되어 있다.
- 해당 수집 설정이 활성화되어 있다.
- EASY LOGGER가 실제 PLC 또는 Modbus 값을 읽고 있다.
- 사용할 MQTT Broker가 실행 중이다.
- 외부 Client PC에서 Broker IP와 Port에 접속할 수 있다.
- LOCAL MQTT Broker를 사용할 경우 라즈베리파이의 Mosquitto가 실행 중이다.
- TLS를 사용할 경우 인증서 파일 또는 생성된 인증서가 준비되어 있다.
수집 설정에 PLC NAME 또는 CONFIG NAME이 없으면 MQTT Topic을 만들 수 없습니다.
먼저 MQTT 화면의 Automatic Topic Preview에 Topic이 표시되는지 확인하는 것이 중요합니다.
4. MQTT 설정 화면 위치
웹브라우저에서 EASY LOGGER에 접속한 뒤 왼쪽 메뉴에서 다음 화면을 엽니다.
MQTT 설정
화면은 크게 다음 영역으로 구성됩니다.
MQTT Broker ConfigurationMQTT User / PasswordMQTT Runtime StatusMQTT Certificate / PKITLS Certificate PEMAutomatic Topic PreviewSubscribed Payload Log
실제 화면에서는 위 영역들이 세로로 이어져 있으므로, 설정 후 아래로 내려가며 사용자 계정, Runtime Status, 인증서, Topic Preview를 순서대로 확인합니다.
처음 설정할 때는 아래 순서로 진행하는 것이 좋습니다.
- MAIN 설정에서 PLC/Modbus 수집 설정을 먼저 저장한다.
Automatic Topic Preview에 Topic이 만들어졌는지 확인한다.MQTT Broker Configuration에서 Broker 주소와 포트를 입력한다.- LOCAL MQTT Broker를 사용할 경우
MQTT User / Password에서 외부 사용자 계정을 만든다. - TLS가 필요하면
MQTT Certificate / PKI에서 인증서를 생성하거나TLS Certificate PEM에서 인증서를 업로드한다. 연결 테스트를 눌러 Broker 접속을 확인한다.선택 발행 적용으로 READ 발행 대상을 확인한다.설정 저장을 누른다.Enable을 켠다.MQTT Runtime Status에서 연결 상태를 확인한다.
5. MQTT Broker Configuration 입력 항목
5.1 Enable / Disable
MQTT 기능 전체를 켜거나 끄는 스위치입니다.
| 상태 | 의미 |
|---|---|
| Enable | MQTT Broker에 접속하고 Publish/Subscribe를 실행 |
| Disable | MQTT 기능 중지 |
설정을 모두 입력한 뒤 Enable을 켜면 EASY LOGGER가 MQTT Broker에 접속합니다.
설정 변경 후에는 설정 저장을 누르는 것이 안전합니다.
5.2 MQTT Server
접속할 MQTT Broker 주소입니다.
LOCAL MQTT Broker를 같은 라즈베리파이에서 사용할 경우 보통 다음 값을 사용합니다.
127.0.0.1
외부 Broker를 사용할 경우 해당 서버 IP 또는 도메인을 입력합니다.
예:
192.168.0.10
mqtt.company.local
5.3 Port
MQTT Broker 접속 포트입니다.
일반적으로 다음 기준을 사용합니다.
| Port | 용도 |
|---|---|
| 1883 | 일반 MQTT, user/password 인증 |
| 8883 | TLS MQTT, 인증서 기반 암호화 |
| 9001 | WebSocket MQTT 사용 시 |
LOCAL MQTT Broker 출하 구성에서는 1883과 8883을 많이 사용합니다.
5.4 User / Password
EASY LOGGER가 MQTT Broker에 접속할 때 사용하는 계정입니다.
중요한 점은 다음과 같습니다.
MQTT Broker Configuration의 User/Password
= EASY LOGGER 자신이 Broker에 로그인할 때 쓰는 계정
외부 Node-RED, SCADA, MES 사용자를 추가하는 화면은 아래의 MQTT User / Password입니다.
두 항목은 이름이 비슷하지만 목적이 다릅니다.
5.5 Keepalive (sec)
Broker와 연결을 유지하기 위한 확인 주기입니다.
기본값:
60
일반 현장에서는 기본값을 사용하면 됩니다.
네트워크가 불안정한 환경에서는 너무 짧게 설정하지 않는 것이 좋습니다.
5.6 Client ID
MQTT Broker에서 EASY LOGGER Client를 구분하는 이름입니다.
비워두면 기동 시 자동으로 부여됩니다.
여러 EASY LOGGER가 같은 Broker에 접속한다면 장비별로 구분되는 이름을 넣을 수 있습니다.
예:
easylogger_line1
easylogger_press
easylogger_test01
5.7 TLS
MQTT TLS 접속을 사용할지 정합니다.
| 상태 | 의미 |
|---|---|
| OFF | 일반 MQTT 접속 |
| ON | TLS 인증서를 사용한 암호화 접속 |
TLS를 켜는 경우 보통 Port는 8883을 사용합니다.
TLS를 사용하려면 TLS Certificate PEM 또는 MQTT Certificate / PKI에서 인증서 경로가 준비되어 있어야 합니다.
5.8 Publish
PLC/Modbus에서 수집한 값을 MQTT READ TOPIC으로 발행할지 정합니다.
| 상태 | 의미 |
|---|---|
| ON | 수집값을 MQTT로 발행 |
| OFF | MQTT로 값을 발행하지 않음 |
Publish가 OFF이면 EASY LOGGER가 Broker에 연결되어 있어도 READ Topic으로 값이 나가지 않습니다.
5.9 Subscribe
MQTT WRITE TOPIC을 구독해서 외부 WRITE 명령을 받을지 정합니다.
| 상태 | 의미 |
|---|---|
| ON | WRITE TOPIC 구독 |
| OFF | WRITE 명령을 받지 않음 |
외부에서 PLC 원격 쓰기를 사용하지 않는 현장에서는 Subscribe를 OFF로 두는 것이 안전합니다.
5.10 Retain
MQTT Publish 메시지에 retain 옵션을 적용할지 정합니다.
| 상태 | 의미 |
|---|---|
| ON | Broker가 마지막 READ 메시지를 보관 |
| OFF | 새 구독자는 다음 발행부터 수신 |
Retain을 켜면 새로 접속한 외부 Client가 마지막 값을 바로 받을 수 있습니다.
단, 오래된 값이 최신값처럼 보일 수 있으므로 현장 정책에 맞게 사용합니다.
5.11 연결 테스트
현재 화면에 입력한 값으로 MQTT Broker 접속을 테스트합니다.
저장 전에도 테스트할 수 있습니다.
성공하면 다음처럼 표시됩니다.
MQTT 연결 테스트 성공
실패하면 User/Password, Port, TLS 설정, 인증서 경로, 방화벽 상태를 확인합니다.
5.12 설정 저장
현재 MQTT 설정을 저장하고 런타임에 반영합니다.
Enable 상태에서 저장하면 MQTT 연결이 재시작될 수 있습니다.
6. MQTT User / Password
LOCAL MQTT Broker를 사용할 때는 외부 Client가 접속할 계정을 아래 영역에서 만들고, 같은 화면에서 Runtime Status도 함께 확인합니다.

MQTT User / Password는 LOCAL MQTT Broker에 접속할 외부 사용자 계정을 관리하는 영역입니다.
예를 들어 Node-RED, SCADA, MES, 외부 테스트 PC가 라즈베리파이의 Mosquitto Broker에 접속해야 한다면 여기서 계정을 만듭니다.
중요한 점은 다음과 같습니다.
MQTT User / Password
= 외부 MQTT Client가 LOCAL MQTT Broker에 로그인할 계정 관리
이 계정은 EASY LOGGER 웹 로그인 계정과 다릅니다.
또한 MQTT Broker Configuration의 User/Password와도 목적이 다릅니다.
6.1 Username
외부 MQTT Client에서 사용할 사용자 이름입니다.
예:
node-red
scada
mes_line1
maintenance
사용 가능한 문자는 영문, 숫자, _, ., @, - 조합을 권장합니다.
6.2 Password
외부 MQTT Client에서 사용할 비밀번호입니다.
신규 사용자를 추가할 때는 반드시 입력해야 합니다.
기존 사용자를 수정할 때 비밀번호를 바꾸려면 새 비밀번호를 입력합니다.
비밀번호는 화면이나 API 응답에 다시 표시되지 않습니다.
6.3 Role
사용자 역할입니다.
| Role | 의미 |
|---|---|
| user | 일반 사용자 |
| admin | 관리자 목적 사용자 |
일반 외부 연동은 user로 충분합니다.
6.4 Access
사용자 목적별 읽기/쓰기 권한입니다.
| Access | 의미 |
|---|---|
| read | READ Topic 구독용 |
| write | WRITE Topic 발행용 |
| read&write | 읽기와 쓰기 모두 사용 |
이 값은 계정 관리와 ACL 정책을 위한 기준입니다.
Mosquitto의 password_file만 적용하면 사용자/비밀번호 인증만 적용됩니다.
Topic별 read/write 제한까지 강제하려면 Mosquitto ACL 파일 반영이 함께 필요합니다.
6.5 Enabled
사용자 계정 사용 여부입니다.
| 상태 | 의미 |
|---|---|
| ON | password file 생성 대상 |
| OFF | password file에서 제외 |
임시로 접속을 막고 싶을 때는 삭제하지 않고 Enabled만 OFF로 바꿀 수 있습니다.
6.6 계정 저장
사용자를 추가하려면 다음 순서로 진행합니다.
- Username을 입력합니다.
- Password를 입력합니다.
- Role을 선택합니다.
- Access를 선택합니다.
- Enabled를 켭니다.
계정 저장을 누릅니다.
목록에 사용자가 표시되면 EASY LOGGER 내부 설정에 저장된 것입니다.
출하 Raspberry Pi 구성에서는 계정 저장 직후 EASY LOGGER가 Mosquitto password file을 /etc/mosquitto/passwd에 자동 반영하고 Mosquitto를 재시작합니다.
정상 반영되면 화면에 Broker 재시작 완료가 표시됩니다.
Broker 자동반영 생략 또는 Broker 반영 확인 필요가 표시되면 helper 설치 상태 또는 Mosquitto 서비스를 확인해야 합니다.
6.7 사용자 수정과 삭제
목록 오른쪽의 수정 버튼을 누르면 해당 사용자를 수정할 수 있습니다.
삭제 버튼을 누르면 해당 사용자가 삭제됩니다.
수정 모드에서 비밀번호를 비워두면 기존 비밀번호를 유지합니다.
6.8 PASSWORD FILE 다운로드
PASSWORD FILE 버튼을 누르면 Mosquitto에서 사용할 수 있는 password file을 다운로드합니다.
파일 이름:
easylogger_mosquitto_passwd
이 파일은 활성화된 MQTT 사용자만 포함합니다.
출하 Raspberry Pi 구성에서는 계정 저장, 사용자 수정, 사용자 삭제 시 EASY LOGGER가 아래 위치에 자동 반영합니다.
/etc/mosquitto/passwd
PASSWORD FILE 다운로드는 자동 반영이 실패했을 때의 백업 작업 또는 외부 Mosquitto 서버에 같은 계정을 수동 반영할 때 사용합니다.
수동 반영을 한 경우 Mosquitto를 재시작해야 실제 Broker 접속 정책에 적용됩니다.
sudo systemctl restart mosquitto
현장 사용자가 라즈베리파이에 직접 접속할 수 없는 환경에서는 먼저 화면 메시지의 자동 반영 결과를 확인하고, 자동 반영이 실패한 경우 관리자 또는 출하 작업자가 이 파일을 반영해야 합니다.
7. MQTT Certificate / PKI
TLS 구성이 필요한 경우 아래처럼 MQTT Certificate / PKI에서 Broker/Client 인증서 상태와 다운로드 경로를 확인합니다.

MQTT Certificate / PKI는 LOCAL MQTT Broker에서 TLS를 사용할 때 필요한 인증서를 생성하는 영역입니다.
화면에는 다음 안내가 표시됩니다.
LOCAL MQTT Broker 사용시 인증서 발급
이 기능은 라즈베리파이에 SSH로 접속하지 않아도 브라우저에서 MQTT 전용 CA, Broker 인증서, Client 인증서를 생성하고 다운로드할 수 있게 하기 위한 기능입니다.
7.1 Broker CN
Broker 서버 인증서의 이름입니다.
기본값:
EASY LOGGER LOCAL MQTT Broker
현장 구분이 필요하면 장비 이름을 넣을 수 있습니다.
예:
EASY LOGGER LINE1 MQTT Broker
EASY LOGGER PRESS MQTT Broker
7.2 Client CN
Client 인증서의 이름입니다.
기본값:
EASY LOGGER MQTT Client
외부 Client별로 인증서를 나눠 관리하는 경우 Client 이름을 구분해서 생성합니다.
예:
NodeRED LINE1
SCADA VIEWER
MES GATEWAY
7.3 Valid Days
인증서 유효 기간입니다.
기본값:
3650
3650일은 약 10년입니다.
현장 보안 정책에 맞게 조정할 수 있습니다.
7.4 Key Size
인증서 키 크기입니다.
선택값:
RSA 2048
RSA 3072
일반적으로 RSA 2048을 사용해도 충분합니다.
보안 정책이 더 강한 현장은 RSA 3072을 선택할 수 있습니다.
7.5 인증서 생성
인증서를 만들려면 다음 순서로 진행합니다.
- Broker CN을 확인합니다.
- Client CN을 확인합니다.
- Valid Days를 확인합니다.
- Key Size를 선택합니다.
인증서 생성버튼을 누릅니다.- STATUS가
READY로 표시되는지 확인합니다. 설정 저장을 누릅니다.
인증서 생성은 EASY LOGGER 내부에서 비동기로 처리됩니다.
기존 수집 로직을 막지 않도록 별도 worker thread에서 생성됩니다.
7.6 다운로드 버튼
인증서가 생성되면 다음 파일을 브라우저에서 다운로드할 수 있습니다.
| 항목 | 파일 예시 | 용도 |
|---|---|---|
| CA CERT | easylogger_mqtt_ca.pem | 외부 Client가 Broker 인증서를 신뢰할 때 사용 |
| BROKER CERT | easylogger_mqtt_broker_server.pem | Mosquitto Broker TLS 서버 인증서 |
| BROKER KEY | easylogger_mqtt_broker_server.key | Mosquitto Broker TLS 개인키 |
| CLIENT CERT | easylogger_mqtt_client.pem | Client 인증서가 필요한 경우 사용 |
| CLIENT KEY | easylogger_mqtt_client.key | Client 인증서 개인키 |
BROKER KEY는 Broker의 개인키입니다.
일반 외부 사용자에게 전달하지 말고 관리자 또는 출하 작업자가 관리해야 합니다.
외부 Client에게 보통 전달하는 파일은 CA CERT입니다.
Broker가 Client 인증서를 요구하도록 구성된 경우에만 CLIENT CERT, CLIENT KEY를 Client에 전달합니다.
8. TLS Certificate PEM
TLS Certificate PEM은 EASY LOGGER가 외부 TLS MQTT Broker에 접속할 때 사용할 인증서 파일을 업로드하는 영역입니다.
업로드 가능한 항목은 다음과 같습니다.
| 항목 | 의미 |
|---|---|
| CA cert | Broker 인증서를 검증할 CA 인증서 |
| Client cert | Client 인증서 |
| Client key | Client 개인키 |
외부 Broker가 TLS 접속을 요구하면 해당 Broker에서 제공한 인증서 파일을 업로드합니다.
LOCAL MQTT Broker용으로 MQTT Certificate / PKI에서 인증서를 생성한 경우에는 생성된 경로가 설정에 반영됩니다.
9. Automatic Topic Preview
Automatic Topic Preview는 EASY LOGGER가 자동으로 만든 MQTT Topic 목록입니다.
실제 화면에서는 MAIN 설정에 등록된 CONFIG별로 READ Topic과 WRITE Topic이 자동 생성되어 표시됩니다.

MAIN 설정에 저장된 수집 설정의 PLC NAME과 CONFIG NAME을 기준으로 Topic이 만들어집니다.
9.1 CONFIG
수집 설정 이름입니다.
예:
D100_WORD
M100_BIT
MODBUS_TEMP
9.2 READ TOPIC
수집값이 발행되는 Topic입니다.
형식:
<PLC_NAME>/<CONFIG_NAME>/READ
예:
XBMPLC/D100_WORD/READ
외부 MQTT Client는 이 Topic을 구독해서 값을 받습니다.
9.3 WRITE TOPIC
외부에서 PLC 값을 쓰기 위해 발행하는 Topic입니다.
형식:
<PLC_NAME>/<CONFIG_NAME>/WRITE
예:
XBMPLC/D100_WORD/WRITE
외부 MQTT Client가 이 Topic으로 올바른 JSON을 발행하면 EASY LOGGER가 값을 검증한 뒤 PLC 또는 Modbus에 씁니다.
9.4 선택 발행 적용
체크박스로 READ 발행 대상을 선택한 뒤 선택 발행 적용을 누릅니다.
이 선택은 READ Publish 대상에 적용됩니다.
WRITE Topic 구독은 Subscribe 설정이 ON일 때 동작합니다.
외부 WRITE를 사용하지 않는 현장은 Subscribe를 OFF로 두는 것이 가장 간단합니다.
10. MQTT READ 메시지 형식
EASY LOGGER가 READ TOPIC으로 발행하는 메시지는 JSON 형식입니다.
예:
{
"plc_name": "XBMPLC",
"config_name": "D100_WORD",
"data_type": "word",
"timestamp": "2026-05-24T10:12:30",
"values": {
"D0100": 123,
"D0101": 456
}
}
주요 항목은 다음과 같습니다.
| 항목 | 의미 |
|---|---|
| plc_name | PLC 이름 |
| config_name | 수집 설정 이름 |
| data_type | 수집 데이터 타입 |
| timestamp | 수집 시간 |
| values | 주소별 값 |
외부 시스템에서는 보통 values 안의 주소와 값을 사용합니다.
11. MQTT WRITE 메시지 형식
외부 Client가 PLC 값을 쓰려면 WRITE TOPIC으로 JSON을 발행합니다.
11.1 기본 형식
가장 권장하는 형식은 values를 사용하는 방식입니다.
{
"values": {
"D0100": 123
}
}
여러 주소를 한 번에 쓸 수도 있습니다.
{
"values": {
"D0100": 123,
"D0101": 456
}
}
11.2 직접 주소 형식
간단한 테스트에서는 주소를 바로 넣을 수도 있습니다.
{
"D0100": 123
}
11.3 배열 형식
수집 설정의 시작 주소부터 순서대로 값을 쓸 때는 배열을 사용할 수 있습니다.
[
123,
456,
789
]
이 경우 첫 번째 값은 수집 설정의 시작 주소에 들어갑니다.
11.4 data_type 지정
쓰기 데이터 타입을 명확히 지정하고 싶으면 data_type을 함께 넣습니다.
{
"data_type": "float",
"values": {
"D0200": 12.34
}
}
지원하는 값은 다음과 같습니다.
bit
word
dword
float
11.5 BIT 쓰기 예시
BIT 주소에 ON을 쓰는 예시입니다.
{
"values": {
"M0100": true
}
}
OFF를 쓰려면 false를 사용합니다.
11.6 WORD 쓰기 예시
WORD 주소에 숫자를 쓰는 예시입니다.
{
"values": {
"D0100": 123
}
}
11.7 DWORD 쓰기 예시
DWORD 값을 쓰는 예시입니다.
{
"data_type": "dword",
"values": {
"D0200": 123456
}
}
11.8 FLOAT 쓰기 예시
FLOAT 값을 쓰는 예시입니다.
{
"data_type": "float",
"values": {
"D0300": 12.34
}
}
WRITE가 정상 처리되면 Subscribed Payload Log에 수신 기록이 표시되고, MQTT Runtime Status의 LAST WRITE가 갱신됩니다.
12. Node-RED에서 READ 구독하기
Node-RED에서 MQTT in 노드를 사용하면 EASY LOGGER의 READ 값을 받을 수 있습니다.
예를 들어 EASY LOGGER가 LOCAL MQTT Broker를 사용하고 Broker IP가 192.168.0.50이라면 MQTT Broker 설정은 다음과 같습니다.
Server: 192.168.0.50
Port: 1883
Username: MQTT User / Password에서 만든 사용자
Password: 해당 사용자 비밀번호
구독 Topic 예:
XBMPLC/D100_WORD/READ
여러 설정을 한 번에 보고 싶으면 와일드카드를 사용할 수 있습니다.
+/+/READ
debug 노드에서 payload를 확인하면 JSON 값이 표시됩니다.
13. Node-RED에서 WRITE 발행하기
Node-RED에서 MQTT out 노드를 사용하면 PLC 값을 쓸 수 있습니다.
Topic 예:
XBMPLC/D100_WORD/WRITE
Function 노드 예:
msg.topic = "XBMPLC/D100_WORD/WRITE";
msg.payload = {
values: {
D0100: 123
}
};
return msg;
FLOAT 쓰기 예:
msg.topic = "XBMPLC/D0300_FLOAT/WRITE";
msg.payload = {
data_type: "float",
values: {
D0300: 12.34
}
};
return msg;
BIT 쓰기 예:
msg.topic = "XBMPLC/M0100_BIT/WRITE";
msg.payload = {
values: {
M0100: true
}
};
return msg;
Node-RED의 MQTT out 노드는 payload를 JSON 문자열로 보낼 수 있어야 합니다.
문자열로 직접 보내야 하는 노드 구성이라면 JSON.stringify(msg.payload)를 사용합니다.
14. Runtime Status 확인
MQTT Runtime Status는 MQTT 연결과 WRITE queue 상태를 보여줍니다.
| 항목 | 의미 |
|---|---|
| 연결 | Broker 연결 여부 |
| SUBSCRIBED | 구독 중인 WRITE Topic 수 |
| QUEUED WRITES | 처리 대기 중인 WRITE 수 |
| DROPPED WRITES | queue 초과 등으로 버려진 WRITE 수 |
| LAST PUBLISH | 마지막으로 READ 발행한 Topic |
| LAST WRITE | 마지막으로 WRITE 수신한 Topic |
| LAST ERROR | 마지막 오류 |
정상 운전에서는 보통 다음 상태를 확인합니다.
연결: OK
SUBSCRIBED: 1 이상
QUEUED WRITES: 0 또는 작은 값
DROPPED WRITES: 0
LAST ERROR: -
LAST ERROR가 표시되면 먼저 Topic, payload JSON, Broker 접속 상태를 확인합니다.
15. Subscribed Payload Log
Subscribed Payload Log는 EASY LOGGER가 최근에 받은 MQTT WRITE 메시지를 보여줍니다.
외부 Client가 WRITE Topic으로 값을 보냈을 때는 아래 화면의 Log 영역에서 최근 수신 Topic과 JSON을 확인합니다.

표시 항목은 다음과 같습니다.
| 항목 | 의미 |
|---|---|
| Timestamp | 수신 시간 |
| Subscribe Topic | 수신한 WRITE Topic |
| Json | 수신 payload |
외부에서 WRITE를 보냈는데 PLC 값이 바뀌지 않으면 이 표를 먼저 확인합니다.
표에 기록이 없으면 EASY LOGGER가 해당 메시지를 받지 못한 것입니다.
표에 기록이 있는데 값이 바뀌지 않으면 payload 형식, 주소 범위, PLC 연결 상태를 확인합니다.
16. LOCAL MQTT Broker 권장 설정
라즈베리파이에서 LOCAL MQTT Broker를 사용할 경우 일반적인 포트 기준은 다음과 같습니다.
1883/tcp = MQTT user/password
8883/tcp = MQTT TLS
9001/tcp = MQTT WebSocket 사용 시
16.1 1883 user/password 구성
내부망에서 user/password 방식으로 사용할 때의 권장 설정입니다.
MQTT Server: 127.0.0.1
Port: 1883
TLS: OFF
User: EASY LOGGER가 Broker에 접속할 사용자
Password: 해당 사용자 비밀번호
Publish: ON
Subscribe: 필요한 경우 ON
외부 Client 계정은 MQTT User / Password에서 만들고, PASSWORD FILE을 다운로드해서 Mosquitto에 반영합니다.
16.2 8883 TLS 구성
TLS 암호화를 사용할 때의 권장 설정입니다.
MQTT Server: 127.0.0.1
Port: 8883
TLS: ON
CA cert: MQTT 전용 CA 인증서
Client cert: Broker 정책에 따라 사용
Client key: Broker 정책에 따라 사용
Publish: ON
Subscribe: 필요한 경우 ON
LOCAL MQTT Broker에서 8883을 사용하려면 Mosquitto 설정 파일에도 TLS 인증서 경로가 반영되어 있어야 합니다.
출하 기준 Mosquitto 설정은 출하시작업.md의 MQTT/OPC-UA 포트 및 로컬 Mosquitto TLS 확인 항목을 따릅니다.
17. 자주 발생하는 상황과 확인 방법
17.1 Automatic Topic Preview가 비어 있다
확인할 항목:
- MAIN 설정에 수집 설정이 저장되어 있는지 확인한다.
- PLC NAME이 입력되어 있는지 확인한다.
- CONFIG NAME이 입력되어 있는지 확인한다.
- 수집 설정이 삭제되거나 비활성화되지 않았는지 확인한다.
- MQTT 화면에서 새로고침을 눌러 확인한다.
PLC NAME과 CONFIG NAME이 없으면 Topic을 만들 수 없습니다.
17.2 MQTT 연결 테스트가 실패한다
확인할 항목:
- MQTT Server IP가 맞는지 확인한다.
- Port가 맞는지 확인한다.
- Broker가 실행 중인지 확인한다.
- 방화벽에서 1883 또는 8883 포트가 열려 있는지 확인한다.
- User/Password가 Broker에 등록된 계정과 같은지 확인한다.
- TLS ON/OFF와 Port 조합이 맞는지 확인한다.
- TLS 사용 시 CA cert, Client cert, Client key 경로가 맞는지 확인한다.
1883은 보통 TLS OFF, 8883은 TLS ON으로 사용합니다.
17.3 READ Topic으로 값이 나오지 않는다
확인할 항목:
- MQTT Enable이 ON인지 확인한다.
- Publish가 ON인지 확인한다.
선택 발행 적용에서 해당 CONFIG가 체크되어 있는지 확인한다.- EASY LOGGER가 실제 PLC 값을 수집 중인지 확인한다.
- Runtime Status의
LAST PUBLISH가 갱신되는지 확인한다. - 외부 Client가 정확한 READ Topic을 구독하고 있는지 확인한다.
Topic은 대소문자와 / 구분이 모두 일치해야 합니다.
17.4 WRITE Topic을 보냈는데 PLC 값이 바뀌지 않는다
확인할 항목:
- Subscribe가 ON인지 확인한다.
- 외부 Client가 정확한 WRITE Topic으로 발행했는지 확인한다.
Subscribed Payload Log에 수신 기록이 있는지 확인한다.- payload가 올바른 JSON인지 확인한다.
- 주소가 해당 수집 설정의 주소 범위 안에 있는지 확인한다.
- data_type이 실제 쓰려는 값과 맞는지 확인한다.
- 대상 PLC 또는 Modbus 연결이 정상인지 확인한다.
- 해당 PLC 주소가 실제 쓰기 가능한 주소인지 확인한다.
WRITE 메시지는 먼저 수신되어야 합니다.
Subscribed Payload Log에 기록이 없다면 Topic 또는 Broker 구독 설정 문제입니다.
17.5 LAST ERROR에 unknown MQTT WRITE topic이 표시된다
EASY LOGGER가 모르는 Topic으로 WRITE 메시지가 들어온 경우입니다.
확인할 항목:
Automatic Topic Preview의 WRITE TOPIC과 외부 Client Topic이 같은지 확인한다.- PLC NAME 또는 CONFIG NAME에 오타가 없는지 확인한다.
- 공백이
_로 바뀌었는지 확인한다. - 수집 설정 이름을 변경한 뒤 외부 Client Topic도 같이 변경했는지 확인한다.
가장 안전한 방법은 Automatic Topic Preview에 표시된 WRITE TOPIC을 그대로 복사해서 사용하는 것입니다.
17.6 invalid MQTT WRITE JSON payload가 표시된다
외부 Client가 보낸 payload가 JSON 형식이 아닙니다.
정상 예:
{
"values": {
"D0100": 123
}
}
확인할 항목:
- 작은따옴표가 아니라 큰따옴표를 사용했는지 확인한다.
- 마지막 쉼표가 들어가지 않았는지 확인한다.
- Node-RED에서 객체가 아니라 문자열로 보낼 때 JSON 문자열이 맞는지 확인한다.
- payload 크기가 너무 크지 않은지 확인한다.
17.7 device address is outside config range가 표시된다
WRITE payload에 들어간 주소가 해당 수집 설정 범위를 벗어난 경우입니다.
예를 들어 설정이 D0100부터 10개라면 쓸 수 있는 범위는 다음과 같습니다.
D0100 ~ D0109
이때 D0200을 쓰면 범위 오류가 발생할 수 있습니다.
WRITE는 해당 CONFIG가 관리하는 주소 범위 안에서 사용하는 것이 안전합니다.
17.8 password file을 다운로드했는데 접속이 안 된다
확인할 항목:
- 다운로드한 파일이 실제
/etc/mosquitto/passwd에 반영되었는지 확인한다. - Mosquitto를 재시작했는지 확인한다.
- 해당 사용자의 Enabled가 ON인지 확인한다.
- 외부 Client의 Username과 Password가 맞는지 확인한다.
- Mosquitto 설정에
allow_anonymous false와password_file이 설정되어 있는지 확인한다.
출하 Raspberry Pi 구성에서는 EASY LOGGER 화면에서 사용자를 추가하면 Mosquitto password file 반영과 재시작을 자동으로 시도합니다.
자동 반영 메시지가 실패로 표시되면 /opt/systemboot/scripts/easylogger-mosquitto-apply.sh, /etc/sudoers.d/easylogger-mosquitto, mosquitto.service 상태를 확인합니다.
17.9 TLS 접속이 실패한다
확인할 항목:
- Port가 8883인지 확인한다.
- MQTT 설정의 TLS가 ON인지 확인한다.
- Broker 쪽 TLS 인증서 경로가 맞는지 확인한다.
- 외부 Client가 CA CERT를 신뢰하도록 등록했는지 확인한다.
- Client 인증서를 요구하는 Broker라면 Client CERT와 Client KEY가 맞는지 확인한다.
- 인증서 유효 기간이 지나지 않았는지 확인한다.
TLS는 Broker와 Client 양쪽 설정이 모두 맞아야 접속됩니다.
17.10 값이 너무 많이 발행되는 것 같다
MQTT READ 발행은 수집 설정 주기에 따라 발생합니다.
100ms 수집 설정이 여러 개 있으면 그만큼 READ 메시지도 자주 발행됩니다.
확인할 항목:
- 수집 주기가 필요한 수준보다 너무 짧지 않은지 확인한다.
- MQTT 발행이 필요한 CONFIG만 선택했는지 확인한다.
- 외부 Broker와 네트워크가 처리 가능한 메시지 양인지 확인한다.
- Retain 사용 여부가 현장 목적과 맞는지 확인한다.
MQTT가 필요 없는 고속 기록은 DB 또는 CSV 저장만 사용하는 것이 더 안정적일 수 있습니다.
18. 운영 권장 설정
실제 현장에서는 다음 기준을 권장합니다.
18.1 내부망 단순 연동
Port: 1883
TLS: OFF
User/Password: 사용
Publish: ON
Subscribe: 필요한 경우만 ON
Retain: 필요한 경우만 ON
18.2 외부 시스템 또는 보안 필요 현장
Port: 8883
TLS: ON
User/Password: 사용
CA 인증서: 등록
Subscribe: 필요한 경우만 ON
18.3 원격 WRITE를 사용하지 않는 현장
Publish: ON
Subscribe: OFF
값 조회만 필요한 현장은 Subscribe를 OFF로 두면 외부 MQTT WRITE를 받지 않습니다.
18.4 원격 WRITE를 사용하는 현장
Publish: 필요에 따라 ON
Subscribe: ON
WRITE Topic: Automatic Topic Preview 값 그대로 사용
Payload: values JSON 형식 사용
PLC 원격 쓰기는 실제 설비 값이 바뀌는 기능입니다.
처음에는 테스트 주소로 쓰기와 읽기를 확인한 뒤 실제 주소에 적용합니다.
19. 운전 전 체크리스트
실제 설비에 적용하기 전에 다음 항목을 확인합니다.
- MAIN 설정에 PLC/Modbus 수집 설정이 등록되어 있다.
- PLC NAME과 CONFIG NAME이 입력되어 있다.
- MQTT 화면의
Automatic Topic Preview에 READ/WRITE Topic이 표시된다. - MQTT Server와 Port가 맞다.
- 1883 사용 시 TLS가 OFF이다.
- 8883 사용 시 TLS가 ON이다.
- User/Password가 Broker에 등록된 계정과 맞다.
- LOCAL MQTT Broker 외부 사용자 계정이 필요하면
MQTT User / Password에서 계정을 만들었다. - Mosquitto password file을 사용하는 경우 다운로드 후
/etc/mosquitto/passwd에 반영했다. - 인증서가 필요한 경우
MQTT Certificate / PKI또는TLS Certificate PEM설정이 완료되었다. - 연결 테스트가 성공했다.
- READ 발행 대상 CONFIG를 선택하고
선택 발행 적용을 눌렀다. - Publish가 필요한 경우 ON이다.
- 원격 WRITE가 필요한 경우에만 Subscribe가 ON이다.
- Runtime Status의 연결 상태가 OK이다.
- 외부 Client에서 READ 구독 테스트를 성공했다.
- WRITE 사용 전 테스트 주소로 쓰기/읽기 확인을 했다.
20. 요약
MQTT 설정은 EASY LOGGER가 수집한 PLC/Modbus 값을 외부 MQTT 시스템과 연결하는 기능입니다.
핵심은 다음 네 가지입니다.
- READ Topic은
<PLC_NAME>/<CONFIG_NAME>/READ형식으로 자동 생성됩니다. - WRITE Topic은
<PLC_NAME>/<CONFIG_NAME>/WRITE형식으로 자동 생성됩니다. MQTT Broker Configuration의 User/Password는 EASY LOGGER가 Broker에 접속할 때 쓰는 계정입니다.MQTT User / Password는 LOCAL MQTT Broker에 접속할 외부 사용자 계정을 관리하기 위한 기능입니다.
문제가 생기면 먼저 Automatic Topic Preview, MQTT Runtime Status, Subscribed Payload Log, LAST ERROR를 확인하면 원인을 빠르게 좁힐 수 있습니다.
현장 적용 팁
- 설정 변경 전에는 현재 운전 상태와 저장 설정을 먼저 확인하세요.
- 외부 연동 기능은 처음에는 읽기 전용 또는 테스트 환경에서 검증한 뒤 현장에 적용하는 것이 안전합니다.
- DB/CSV/API/MQTT/OPC-UA처럼 외부 시스템과 연결되는 기능은 Runtime Status와 Log를 함께 확인하세요.
마무리
EASY LOGGER는 PLC와 센서에서 나오는 현장 데이터를 수집하고, 저장·조회·외부 연동·대시보드 표시까지 이어주는 현장 데이터 허브 역할을 합니다. 이 글의 화면 순서대로 확인하면 처음 설정하는 사용자도 필요한 메뉴를 빠르게 찾고, 현장 데이터 흐름을 안정적으로 구성할 수 있습니다.
#EASYLOGGER #스마트팩토리 #PLC #데이터로거 #설비모니터링 #산업용통신 #원격모니터링