echolot mqtt
TCP, TLS, WebSocket으로 MQTT 브로커(3.1.1 또는 5.0)의 토픽을 구독하고 메시지를 게시합니다.
echolot mqtt는 터미널에서 MQTT 브로커와 통신합니다. subscribe는 도착하는 메시지를 출력하고 publish는 메시지를 보냅니다. 둘 다
기본적으로 MQTT 5.0을 사용하며, 요청하면 3.1.1을 사용합니다. 프로토콜은 TCP(mqtt://), TLS(mqtts://), WebSocket(ws://, wss://)을
지원합니다. 앱에서의 같은 기능은 MQTT 요청을 참조하십시오.
예제는 Alpenglow 요청 Warehouse sensors처럼 Mac의 localhost에 있는 브로커를 사용합니다. 데모 API는 MQTT를 실행할 수 없습니다.
echolot mqtt subscribe
echolot mqtt subscribe [<options>] <broker> <filters> ...<broker>는 mqtt://host[:1883], mqtts://host[:8883], ws://host/mqtt, wss://host/mqtt입니다. <filters>는 하나 이상의 토픽
필터입니다. +는 한 레벨, #은 나머지 전부와 일치합니다.
echolot mqtt subscribe mqtt://localhost 'warehouses/+/temperature' --qos 1warehouses/bern/temperature 4.5
warehouses/zurich/temperature 5.1각 메시지는 표준 출력의 한 줄이며, 토픽, 공백, 페이로드 순서입니다. UTF-8 텍스트가 아닌 페이로드는 Base64로 출력됩니다. --json을
쓰면 각 메시지가 topic, payload(또는 payload_base64), qos, retain이 있는 JSON 줄이 되어 jq에 바로 넘길 수 있습니다.
echolot mqtt subscribe mqtt://localhost 'warehouses/#' --count 10 --json | jq -r .payload구독은 사용자가 중지할 때(⌃C), 브로커의 연결이 끊어질 때, --listen 초가 지났을 때, --count개의 메시지가
도착했을 때까지 계속됩니다. 브로커가 거부한 필터는 표준 오류에 표시됩니다.
| 옵션 | 의미 |
|---|---|
--qos <level> | 0(최대 한 번), 1(최소 한 번), 2(정확히 한 번). 기본값은 0입니다. |
--listen <seconds> | 수신할 시간(초). 0이면 중지하거나 브로커의 연결이 끊어질 때까지 수신합니다. 기본값은 0입니다. |
--count <n> | 이 수만큼 메시지를 받으면 멈춥니다. |
--json | 각 메시지를 JSON 줄로 출력합니다. 토픽, 페이로드, qos, retain. 바이너리 페이로드는 Base64입니다. |
echolot mqtt publish
echolot mqtt publish [<options>] <broker> <topic>-m은 페이로드를 지정합니다. 없으면 표준 입력의 각 줄이 메시지가 됩니다.
echolot mqtt publish mqtt://localhost warehouses/bern/temperature -m '4.5' --qos 1
tail -f readings.log | echolot mqtt publish mqtt://localhost warehouses/bern/logQoS 1이나 2에서는 Echolot이 브로커가 모든 메시지를 확인할 때까지 기다리고, 거부된 메시지가 있으면 알려 줍니다. QoS 0에서는 게시한 메시지 수를 알려 줍니다.
| 옵션 | 의미 |
|---|---|
-m, --message <payload> | 페이로드. |
--qos <level> | 0(최대 한 번), 1(최소 한 번), 2(정확히 한 번). 기본값은 0입니다. |
--retain | 이후의 구독자를 위해 브로커가 메시지를 보관하도록 요청합니다. |
둘 다의 옵션
| 옵션 | 의미 |
|---|---|
--mqtt-version <version> | 프로토콜 버전: 5 또는 3.1.1. 기본값은 5입니다. |
--client-id <id> | 클라이언트 ID. 기본값은 echolot-와 임의의 접미사입니다. |
-u, --user <name> | 사용자 이름. |
--password <password> | 암호. ECHOLOT_MQTT_PASSWORD 환경 변수를 쓰는 편이 좋습니다. |
--keep-alive <seconds> | 핑 사이의 간격(초). 0이면 보내지 않습니다. 기본값은 60입니다. |
--timeout <seconds> | 연결과 브로커의 응답을 기다리는 시간(초). 기본값은 30입니다. |
-i, --insecure | 브로커의 TLS 인증서를 검증하지 않습니다. |
-v, --verbose | 연결과 브로커의 응답을 표준 오류에 출력합니다. |
--proxy <url> | 이 프록시를 통해 연결합니다: http://host:port, https://…, socks5://user:password@host:port. |
--no-proxy | HTTP_PROXY 등을 무시하고 직접 연결합니다. |
--cacert <file> | 이 PEM 파일의 CA 인증서도 신뢰합니다. 반복할 수 있습니다. |
--cert <file> | 이 클라이언트 인증서를 보냅니다. PEM 파일(--key와 함께) 또는 .p12/.pfx 파일. |
--key <file> | 인증서 파일에 개인 키가 없을 때, 클라이언트 인증서의 PEM 개인 키. |
--pass <passphrase> | 키나 PKCS#12 파일의 암호. ECHOLOT_CERT_PASSPHRASE를 쓰는 편이 좋습니다. |
여기서 -i는 echolot send의 “include”가 아니라 --insecure를 뜻합니다.
export ECHOLOT_MQTT_PASSWORD='…'
echolot mqtt publish mqtts://broker.example.com:8883 status/door -m open --retain -u heidi종료 코드
| 코드 | 조건 |
|---|---|
0 | 연결했고 구독하거나 게시했습니다. |
1 | subscribe: 브로커가 연결이나 모든 구독을 거부했습니다. publish: 브로커가 연결이나 QoS 1, 2 메시지를 거부했습니다. |
64 | 잘못된 옵션이나 브로커 주소. |