Pronouced Ham Cue Tee Tee
An MQTT Interface to an Amateur Radio Station
Triggered by WO4ROB's DTMF relay controller
This project is a suite of hardware / firmware / software to allow the use of a handheld (or other) radio transceiver to publish MQTT messages to a broker. Any device on my home IoT setup, then, can subscribe to and act on the published messages. The devices may publish MQTT messages to the broker, and the handheld will subscribe to those messages and broadcast them as voice messages, or otherwise act accordingly.
Initially, I had used TASMOTA to act as the WiFi access point for the MQTT broker traffic. Now, we have a piece of custom WiFi / MQTT / Ham radio hadrware / firmware instead.
- Remove the MY8870 DTMF decoder module, by incorporating its functionality into the firmware.
- Can the Arduino perform the DTMF decoding? (The would allow the removal of the DTMF hardware.)
- Consider adding audio streaming, allowing actual voice samples rather than electronic voice.
- Test program using WO4ROB's schematic and software, but without the relay outputs. It proves the principle.
- My hardware still doesn't have the ESP8266 / TASMOTA function yet, but I've coded a robust way to receive a DTMF string rather than single digits.
- Added the LED functionality. Got it to rebroadcast the sequence in voice.
- Started building the MQTT response protocol.
- Parser now detects sequences to open and close the relay.
- Timer to auto-close the relay to commands is implemented.
- Timer to ensure callsign is broadcast periodically is implemented.
- Fixed a bug with message acknowledge where zero had been written to the the 0th item of the string.
- Audio responses for open, close, acknowledge, no acknowledge, all working.
- Callsign added to outgoing Tx at the allotec delta time.
- Refactored MQTTresponse for MQTTout to distinguish it later from incoming.
- Added a software serial port for transmission of DTMF string back to TASMOTA on the ESP8266. TASMOTA automatically publishes this by MQTT.
- Modified Serial Receive so it can't get stuck in a loop.
- Refactored MQTTout for serOut, and MQTTin for serIn.
- Changed back to ABCD*# instead of ABCDEF. We'll work in decimal instead of hex.
- Formatted serial output into something resembling a JSON dictionary.
- Trying to patch this back together to work on an ESP8266 without the Arduino, TASMOTA, or MT8770.
- Ported everything over to a single Arduino: MQTT functioning on ESP8288 (D1 Mini), using MT8870.
- This has some debug code to generate beeps. Next version will remove that.
- Working implementation of https://github.com/earlephilhower/ESP8266Audio.
- Better implementation of ESP8266Audio.
- Demonstrates ability to output a received MQTT string. (A string message published to topic mqtt/tx will be transmitted by the radio.)
- Groundwork started on publishing MQTT as a python-style dictionary.
- Breaking change: Start of implementation of input (command / query) protocol. (*701 and *700 used to open and close communications.)
- Implemented Auto-close.
- Now publishes an MQTT message on receipt of a DTMF sequence, if the relay is open.
- Periodically publishes an MQTT status message, and network information, even if relay is closed.
- Added in some QSO / no QSO counters just for sport.
- Added a Timer class, since the timer code is a bit repetative; makes it easier to manage.
- Added automatic callsign broadcast on an infrequent basis, based on RSGB recommendation.
- Shortened some key values in MQTT dictionaries.
- Moved the time client updater into the slowest loop.
- Added certain user modifiable parameters to EEPROM.
- The string components of "EEPROM" have been commented out as they don't work.