mszcool/mqtt-topics-translator

By mszcool

Updated about 2 months ago

Receives messages from one MQTT topic and re-publishes them on one or many other topics.

Image
Message queues
0

572

mszcool/mqtt-topics-translator repository overview

Simple service that receives messages from MQTT topics and republishes them under different topic paths. Useful for bridging, renaming, or fan-out of MQTT messages — for example, ensuring that turning on a pool redox system also activates the pump.

Prerequisites

Configuration

The service is configured via appsettings.json (or environment variable overrides):

SettingDescriptionDefault
MqttTranslatorSettings__MqttServerConfig__ServerMQTT broker hostnamelocalhost
MqttTranslatorSettings__MqttServerConfig__PortMQTT broker port1883
MqttTranslatorSettings__MqttServerConfig__ClientIdClient ID for the MQTT connectionMqttTranslator
MqttTranslatorSettings__MqttServerConfig__UsernameMQTT username
MqttTranslatorSettings__MqttServerConfig__PasswordMQTT password
MqttTranslatorSettings__MqttMappingConfigFilePath to the JSON mapping config filesample-mapping.json

The mapping config file defines source-to-destination topic translations. See src/mqtttranslator/sample-mapping.json for the format.

Docker Image Usage

Pull and run the published image:

docker pull mszcool/mqtt-topics-translator:latest

docker run -d \
    -e MqttTranslatorSettings__MqttServerConfig__Server=your-broker \
    -e MqttTranslatorSettings__MqttServerConfig__Port=1883 \
    -e MqttTranslatorSettings__MqttServerConfig__ClientId=MqttTranslator \
    -e MqttTranslatorSettings__MqttServerConfig__Username=user \
    -e MqttTranslatorSettings__MqttServerConfig__Password=pass \
    -e MqttTranslatorSettings__MqttMappingConfigFile=/app/mapping/mapping.json \
    -v /path/to/your/mapping.json:/app/mapping/mapping.json:ro \
    mszcool/mqtt-topics-translator:latest

Or use a specific version:

docker pull mszcool/mqtt-topics-translator:20260324.0

Sample mapping file

{
    "description": "Contains mappings for the pool translator, and for ensuring that the pump is always turned on when redox or ph is turned on",
    "translations": [
        {
            "sourceTopic": "pooltranslatortest/test1",
            "destinationTopics":
            [
                "pooltranslatortestresult/cmnd/test1",
                "pooltranslatortestresult/cmnd/test2"
            ]
        },
        {
            "sourceTopic": "pooltranslatortest/test2",
            "destinationTopics":
            [
                "pooltranslatortestresult/stat/test1"
            ]
        },
        {
            "sourceTopic": "pooltranslatortest/test3",
            "destinationTopics":
            [
                "pooltranslatortestresult/stat/test1"
            ]
        },
        {
            "sourceTopic": "pooltranslatortest/test4",
            "ifMessageValue": "only if this is here",
            "destinationTopics":
            [
                "pooltranslatortestresult/stat/test42"
            ]
        }
    ]
}

License

See LICENSE for details.

Tag summary

Content type

Image

Digest

sha256:2a17a7711

Size

88.1 MB

Last updated

about 2 months ago

docker pull mszcool/mqtt-topics-translator