MQTT Server per servizi Radioamatoriali

E’ disponibile per libero utilizzo il server mqtt.iz3mez.it, un collettore MQTT di messaggi organizzati e suddivisi per specifici topic, dal traffico APRS, ultimi ascolti DMR delle rete BrandMeister, Spot dai server DX Cluster, Reverse Beacon Network CW/FT8, rilevamento dei fulmini, stazioni meteo, SDR.

L’idea nasce dall’esigenza di avere a disposizione un protocollo altamente flessibile e adattabile per ogni esigenza JSON: dal progetto con Arduino, ESP32, STM32, fino alle integrazioni con Bot Telegram, applicazioni software, web con Python, PHP… e tanto altro ancora.

Per tale fine ho creato un bridge MQTT server in continuo sviluppo che si riassume in questa immagine:

Un breve accenno:

MQTT (inizialmente un acronimo di MQ Telemetry Transport) è un protocollo di rete leggero basato sul modello pubblica/sottoscrivi. È stato progettato per connessioni con posizioni remote che dispongono di dispositivi con vincoli di risorse o larghezza di banda di rete limitata, come nell’Internet of Things (IoT). Deve essere eseguito su un protocollo di trasporto che fornisce connessioni ordinate, senza perdite e bidirezionali, tipicamente TCP/IP, ma anche eventualmente su QUIC .

È uno standard OASIS aperto e una raccomandazione ISO (ISO/IEC 20922).

Alcune delle sue caratteristiche chiave includono:

  1. Leggerezza: MQTT è progettato per essere efficiente in termini di larghezza di banda e consumo energetico, rendendolo adatto per dispositivi con risorse limitate.
  2. Modello di pubblica/sottoscrivi: MQTT utilizza il modello di comunicazione pubblica/sottoscrivi, in cui i client pubblicano messaggi su argomenti specifici e altri client si sottoscrivono a tali argomenti per ricevere i messaggi.
  3. Affidabilità: MQTT offre affidabilità di consegna dei messaggi, garantendo che i messaggi vengano consegnati al destinatario.
  4. Qualità del servizio (QoS): MQTT supporta tre livelli di QoS per la consegna dei messaggi: QoS 0 (al più una volta)QoS 1 (almeno una volta) e QoS 2 (esattamente una volta).
  5. Messaggi conservati (Retained Messages): MQTT consente di mantenere l’ultimo messaggio pubblicato su un argomento, in modo che i nuovi sottoscrittori ricevano immediatamente l’ultimo stato.
  6. Sessioni persistenti: MQTT supporta sessioni persistenti, consentendo ai client di riprendere la comunicazione da dove si era interrotta anche dopo la disconnessione.

Premessa una descrizione sommaria, invito ad approfondire consultando il sito https://mqtt.org

Di seguito l’indirizzo del server e topic sottoscrivibili in modalità read-only.

Server (IPv4): mqtt.iz3mez.it
Porta: 1883
Encryption (TLS): No
Autenticazione: Nessuna

APRS (Automatic Packet Reporting System)

Topic Esempio
aprs/message/# {“ssid”: “CALL-9”, “message”: “PicoAPRS Check Update Version019”}
aprs/object/# {“ssid”: “CALL-8”, “comment”: “T114.8 Lnkd LAR, CYS, BFF”, “lat”: XX.XXXXXX, “lon”: XXX.XXXXXX, “course”: 0, “speed”: 0}
aprs/position/# { “ssid”: “CALL-2”, “comment”: “BM2222 DMR Repeater – MMDVM MMDVM HS Hat 431.5000/431.5000 CC1”, “lat”: XX.X, “lon”: XX.X, “course”: 0, “speed”: 0 }
aprs/raw/# CALL-9>APRS,qAR,CALL:,PgmiN>/”5m}439.200MHz 73!
aprs/telemetry-message/# { “ssid”: “EL-CALL”, “telemetry-message”: “[‘RX Erlang’, ‘TX Erlang’, ‘RXcount/10m’, ‘TXcount/10m’, ‘none1’, ‘STxxxxxx’, ‘logic’, ”, ”, ”, ”, ”, ”]” }
aprs/weather/# {“ssid”: “CALL-13”, “lat”: XX.XXXXXX, “lon”: XXX.XXXXX, “humidity”: 63, “pressure”: 995.9, “rain_1h”: 0.0, “rain_24h”: 0.0, “temperature”: 13.33, “wind_direction”: 0, “wind_gust”: 2.2352, “wind_speed”: 0}

DMR Last Heard BrandMeister

Topic Esempio
dmr/bmlh/# {“LinkName”: “MMDVM Host”, “SessionID”: “2c6f8dae-29e3-4048-8683-9c145929aa68”, “ContextID”: 1234567, “Slot”: 0, “SourceID”: 1234567, “DestinationID”: 222, “LinkCall”: “LINKCALL”, “SourceCall”: “CALL”, “SourceName”: “Name”, “DestinationCall”: “”, “DestinationName”: “Bridge”, “Start”: 1710079123, “Stop”: 1710079128, “RSSI”: 0, “BER”: 0, “LinkTypeName”: “Repeater”, “Master”: 2222, “TalkerAlias”: “CALL Name”}
dmr/bmlh2/# Topic di backup, payload “none” non presenti

{“LinkName”: “MMDVM Host”, “SessionID”: “d6d6196b-72c4-40ed-ab11-882a5ee2bf9b”, “ContextID”: 1234567, “Slot”: 0, “SourceID”: 1234567, “DestinationID”: 222, “LinkCall”: “none“, “SourceCall”: “CALL”, “SourceName”: “Name”, “DestinationCall”: “none“, “DestinationName”: “none“, “Start”: 1710080328, “Stop”: 1710080376, “RSSI”: 0.0, “BER”: 0, “LinkTypeName”: “none“, “Master”: “none“, “TalkerAlias”: “none“}

DX Cluster

Topic Esempio
dxc/ls/# {“spot_datetime_utc”: “10/03/2024 14:19:36”, “spot_time”: “1419Z”, “band”: “10”, “frequency”: “28375.0”, “spotted”: “CALL”, “spotted_dxcc”: “XX”, “spotted_country”: “ITALY”, “spotted_continent”: “EU”, “spotter”: “CALL2”, “spotter_dxcc”: “XX”, “spotter_country”: “ITALY”, “spotter_continent”: “NA”, “spotter_comment”: “Yota”}

RBN

Topic Esempio
rbn/cw/# {“dx_de”: “CALL”, “frequency”: 14061.0, “band”: “20”, “spotted”: “CALL2”, “mode”: “CW”, “db”: “37”, “wpm”: “25”, “type”: “CQ”, “timez”: “1313Z”}
rbn/ft8/# {“dx_de”: “CALL”, “frequency”: 21074.0, “band”: “15”, “spotted”: “CALL2”, “mode”: “FT8”, “db”: “-13”, “locator”: “JN59”, “type”: “CQ”, “timez”: “1314Z”}

Rilevamento Fulmini

Topic Esempio
lightning/lr/# {“ts”: 1963742400000, “lat”: XX.XXXXXX, “lon”: XXX.XXXXXX, “time”: 1963742400, “wwloc”: “AA00aa”}

⚠️ Suggerimento: sottoscrivete solo i topic necessari.

Un software per la connessione è MQTT Explorergithub.com/thomasnordquist/MQTT-Explorer

Altro software da provare è MQTTX: github.com/emqx/MQTTX

73

Francesco, iz3mez

I commenti sono chiusi.