69 lines
1.4 KiB
Markdown
69 lines
1.4 KiB
Markdown
|
# MQTT sounder
|
||
|
|
||
|
Simple mqtt command executor to play sounds.
|
||
|
|
||
|
Config example:
|
||
|
|
||
|
```yaml
|
||
|
mqtt:
|
||
|
address: "tcp://example.com:1883"
|
||
|
username: "mqtt"
|
||
|
password: "${MQTT_PASSWORD}"
|
||
|
client_id: "mqtt_sounder"
|
||
|
command_topic: "notify/sounder/command"
|
||
|
state_topic: "notify/sounder/state"
|
||
|
player:
|
||
|
default_program: ffplay
|
||
|
default_args:
|
||
|
- "-autoexit"
|
||
|
- "-nodisp"
|
||
|
- "-loglevel"
|
||
|
- "quiet"
|
||
|
sounds:
|
||
|
test:
|
||
|
args: ["sounds/test.mp3"] # args appended to default_args
|
||
|
doorbell:
|
||
|
args: ["sounds/doorbell.wav"]
|
||
|
|
||
|
# default:
|
||
|
# program: bash # default_program replaced to program
|
||
|
# args: # default_args replaced to args because program specified
|
||
|
# - "-c"
|
||
|
# - "echo sound not found"
|
||
|
|
||
|
# default:
|
||
|
# args:
|
||
|
# - "sounds/{payload}.mp3" # {payload} replaced to command payload, use only in trusted environment
|
||
|
|
||
|
```
|
||
|
|
||
|
Password is provided via **MQTT_PASSWORD** environment variable.
|
||
|
|
||
|
Usage:
|
||
|
|
||
|
```
|
||
|
mqtt-sounder config.yaml
|
||
|
```
|
||
|
|
||
|
Systemd unit example:
|
||
|
|
||
|
```ini
|
||
|
[Unit]
|
||
|
Description=Play sound via mqtt commands
|
||
|
After=network-online.target
|
||
|
StartLimitIntervalSec=500
|
||
|
StartLimitBurst=5
|
||
|
|
||
|
[Service]
|
||
|
Type=simple
|
||
|
User=mqtt_sounder
|
||
|
Environment=MQTT_PASSWORD=xxxxxxxxxxxxx
|
||
|
WorkingDirectory=/opt/mqtt-sounder/
|
||
|
ExecStart=/opt/mqtt-sounder/mqtt-sounder config.yaml
|
||
|
Restart=on-failure
|
||
|
RestartSec=5s
|
||
|
|
||
|
[Install]
|
||
|
WantedBy=multi-user.target
|
||
|
```
|