Forward subscribed MQTT topics to Signalgrid push notifications
mqtt2push is a small open source Go bridge that connects to an MQTT broker, subscribes to one or more MQTT topics, and forwards each received message to Signalgrid as a push notification.
If you are looking for MQTT push notifications, MQTT alerts to phone, MQTT notifications for iPhone or Android, or a simple MQTT to push gateway for Mosquitto, Home Assistant, or custom IoT systems, this integration is built for exactly that job.
This is useful for homelab alerts, IoT events, automation workflows, broker-based status updates, machine alarms, Home Assistant side-projects, and any other setup where MQTT already acts as your event bus.
What mqtt2push Does
- Subscribes to one or more MQTT topics
- Supports normal MQTT wildcards such as
alerts/#andservers/+/status - Forwards MQTT payloads as Signalgrid push notifications
- Uses the MQTT topic as the notification title
- Works with plain MQTT and MQTT over TLS
- Supports custom CA certificates, reconnects automatically, and re-subscribes after reconnect
Prerequisites
- A running MQTT broker such as Mosquitto, EMQX, HiveMQ, or another MQTT-compatible server
- A machine that can reach your broker and
https://api.signalgrid.co - A Signalgrid account
- Your Signalgrid
client_key - Your Signalgrid channel token
- Go installed if you want to build the bridge from source
Installation
The bridge reads its configuration from a config.yml file located next to the executable. This makes it easy to deploy as a lightweight MQTT notifier, MQTT alert forwarder, or background MQTT daemon on a VPS, homelab box, Raspberry Pi, or Docker host.
Minimal Configuration
A basic setup with one broker, one topic, and one Signalgrid target can look like this:
If port is omitted, 1883 is used automatically for plain MQTT. MQTT QoS 0, 1, and 2 are supported.
Configuration Fields
mqtt.brokermqtt.example.commqtt.port1883 for plain MQTT and 8883 when TLS is enabledmqtt.client_idmqtt.usernamemqtt.passwordmqtt.topicsmqtt.qos0, 1, and 2signalgrid.client_keysignalgrid.channelsignalgrid.typeINFO, WARN, SUCCESS, or CRITTLS Configuration
If your broker uses MQTT over TLS, enable the optional TLS block and provide the CA file when needed. This is useful for secure Mosquitto notifications, remote MQTT alerts over the internet, and internal brokers that use private certificate authorities.
When TLS is enabled without a custom CA file, mqtt2push uses the operating system trust store. If port is omitted, 8883 is used automatically.
How Notifications Are Built
For each received MQTT message, the bridge creates one Signalgrid push notification. In other words, mqtt2push turns MQTT messages into mobile push alerts without requiring any inbound ports on your phone.
titlefactory/line1/alarm becomes a readable MQTT notification titlebodychannelsignalgrid.channel in your configurationtypesignalgrid.type in your configurationRun the Bridge
After placing config.yml next to the compiled binary, start the bridge:
When the bridge starts successfully, it connects to the broker and subscribes to every configured topic. New messages on those topics are then forwarded to Signalgrid immediately, which makes this a simple way to get MQTT alerts on iPhone, MQTT alerts on Android, or MQTT notifications in your browser.
Common Use Cases
FAQ
# and + are supported.Manual Testing
The quickest end-to-end test is to start the bridge, publish a message to one of the subscribed topics using your normal MQTT tooling, and then verify that a Signalgrid notification appears on the target devices.
If you do not receive anything, first verify your Signalgrid credentials with a direct API request from the same machine:
Troubleshooting
signalgrid.client_key, signalgrid.channel, and that your device is signed in to the same Signalgrid accountmqtt.tls.enabled is set correctly and that mqtt.tls.ca_file points to the right CA certificate when your broker requires itsignalgrid.type value from your configuration for every forwarded message