A simple, low-level matrix <--> mqtt "bridge".
go get gitlab.eiselecloud.de/matrix/tuple
tuple -homeserver https://matrix.org -username tuple -password secret -broker tcp://localhost:1883
The rooms have to joined manually at this point via another client.
Configuration using environment vars is also possible:
USERNAME
PASSWORD
HOMESERVER
BROKER
The command line args overwrite these.
There's a reproducible docker image available at docker.eiselecloud.de/matrix/tuple
.
The bridge will send all Matrix Message Events to:
Topic: _tuple/client/r0/rooms/<roomId>/event/<eventType>
Content: the received Matrix event, like
{
"type": "m.room.message",
"sender": "@tuple:eiselecloud.de",
"content": {
"body": "foo",
"msgtype": "m.text"
},
"origin_server_ts": 1590951283344,
"unsigned": {
"age": 165
},
"event_id": "$yNhWPC-6zi85SQGpkqsbZv6K_aTW8yrpkgn0y83FgiI",
"room_id": "!jxyndfUCCLyUOLeZuI:eiselecloud.de"
}
Topic: _tuple/client/r0/rooms/<roomId>/send/<eventType>
Content: Any Matrix Message Event Content, like
{
"msgtype":"m.text",
"body": "foo"
}
The sender will be the tuple
user.
Note that tuple
will happily receive its own Matrix events and publish them to MQTT.
- Weather Station Example
- Just for fun
- Small IOT devices, like the ESP32 that don't require persistence or other advanced Matrix features
- A federated sensor network
- Smart Home stuff
This Bridge should closely follow the Matrix Client Server Specs, with useful exceptions.
The eventType
is included in the mqtt topic, so that IOT devices can choose to subscribe only to compatible
(proprietary) events
This is my first golang project, so don't judge to hard on programming decisions.