A real-time MQTT message visualizer inspired by the Matrix digital rain effect. Displays incoming MQTT messages with customizable colors, sound effects, and dynamic visual effects.
"This is fucking brilliant. Nobody needs this, nobody has a real use for this and this definitely does not attract girls. Still, I'll try this and probably love it. -Tim Goeree"
- Real-time MQTT message display
- Customizable color schemes
- Keyword highlighting with sound effects
- Adjustable scroll speed
- JSON payload parsing
- Dynamic message fading
- Fullscreen toggle (Alt+Enter)
- Cross-platform support
- Minutes of fun
- Python 3.8+
- Paho-MQTT
- Pygame
-
Clone the repository:
git clone https://github.com/melancholytron/MatrixQtt.git
-
Edit the
config.jsonfile as described in the configuration section below -
Install dependencies using either
piporuv(recommended):uv run MatrixQtt.py
or:
pip install -r requirements.txt python MatrixQtt.py
Edit config.json to customize the behavior. Here's an example configuration:
{
"mqtt": {
"broker": "10.0.0.18",
"port": 1883,
"username": "homeassistant",
"password": "rossDontGiveNoForks",
"topics": ["docker/#", "homeassistant/#"],
"json_fields": {
"docker/jellyfin/status": "health"
}
},
"screensaver": {
"width": 1920,
"height": 1080,
"font_name": "monospace",
"font_size": 25,
"topic_color": [0, 255, 0],
"payload_color": [200, 200, 200],
"keywords": {
"healthy": [0, 255, 0],
"error": [255, 0, 0]
},
"background_color": [0, 0, 0],
"payload_char_limit": 50,
"min_alpha": 50,
"sound_effects": {
"detected": "/path/to/detected.wav",
"motion": "/path/to/motion.mp3",
"unhealthy": "/path/to/alert.wav"
},
"fullscreen": false
}
}
Run the screensaver:
python MatrixQtt.py
| Key | Function |
|---|---|
+ / = |
Increase scroll speed |
- |
Decrease scroll speed |
C |
Clear screen |
ESC |
Quit |
Alt+Enter |
Toggle fullscreen mode |
broker: MQTT broker addressport: Broker port (default: 1883)topics: List of topics to subscribe tojson_fields: Specific JSON fields to extract
width/height: Screen resolutionfont_name: System font to usefont_size: Base font sizetopic_color: RGB color for topic textpayload_color: Default payload text colorkeywords: Color mappings for specific wordsbackground_color: Background RGB colorpayload_char_limit: Maximum payload lengthmin_alpha: Minimum text opacity (0-255)fullscreen: Start in fullscreen mode (true/false)
sound_effects: Map keywords to sound file paths (e.g.,"detected": "/path/to/sound.wav")
- Sound effects are triggered by the first matching keyword in a message.
- Ensure sound files are in a supported format (e.g., WAV, MP3).
GPL-3.0 license. See LICENSE for details.