Echolot
명령줄과 CI

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 1
warehouses/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/log

QoS 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-proxyHTTP_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연결했고 구독하거나 게시했습니다.
1subscribe: 브로커가 연결이나 모든 구독을 거부했습니다. publish: 브로커가 연결이나 QoS 1, 2 메시지를 거부했습니다.
64잘못된 옵션이나 브로커 주소.

이 페이지에서