Tuple
A simple, low-level matrix <--> mqtt "bridge".
#tuple:eiselecloud.de
Usage
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.
Docker
There's a reproducible docker image available at docker.eiselecloud.de/matrix/tuple
.
Matrix -> MQTT
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"
}
MQTT -> Matrix
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.
Use cases
- 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
Design
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.
Useful links