loudnessspy project for audio calculating RMS, and publishing to MQTT.
| .vscode | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| loudnessspy.code-workspace | ||
| Readme.md | ||
loudnessspy
Ein Rust-Programm für den Raspberry Pi, das kontinuierlich die Lautstärke (RMS) des ersten verfügbaren Mikrofons misst und alle 2 Sekunden per MQTT an einen Server sendet.
Features
- Durchgehende Aufnahme des ersten (USB-)Mikrofons
- Alle 2 Sekunden Berechnung der mittleren Lautstärke (RMS)
- Versand der Werte als JSON per MQTT (mit Username/Passwort)
- Robuster Betrieb: Reconnect bei Netzwerkproblemen, Timeout beim Senden
Konfiguration
Die Datei config.toml im Projektverzeichnis steuert die Verbindung:
host = "localhost"
port = 1883
username = "user"
password = "pass"
client_id = "loudnessspy"
topic = "loudnesspy/volume"
Kompilieren für Raspberry Pi 1 (32 Bit)
- Rust-Target installieren:
rustup target add arm-unknown-linux-gnueabihf - Cross-Compiler und ARM-ALSA-Entwicklerdateien installieren:
sudo apt-get install gcc-arm-linux-gnueabihf libasound2-dev:armhf pkg-config-arm-linux-gnueabihf - Umgebungsvariablen setzen:
export PKG_CONFIG_SYSROOT_DIR=/usr/arm-linux-gnueabihf export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig export PKG_CONFIG=arm-linux-gnueabihf-pkg-config - Bauen:
cargo build --release --target=arm-unknown-linux-gnueabihf
MQTT-Format
Alle 2 Sekunden wird ein JSON wie folgt gesendet:
{"rms":0.0123}
Hinweise
- Das Programm sucht bevorzugt nach USB-Mikrofonen, nutzt sonst das Standardgerät.
- Bei fehlender Verbindung wird automatisch reconnectet.
- Fehler beim Senden werden geloggt, blockieren aber nicht den Hauptloop.
Autostart
sudo apt install tmux
nano ~/bashrc
Am Ende hinzufügen
if ! tmux has-session -t loudnessspy 2>/dev/null; then
tmux new-session -d -s loudnessspy '~/loudnessspy'
fi
tmux Pane Control
tmux attach
Ctrl b, " Split pane horizontally
Ctrl b, % Split pane vertically
Ctrl b, o Next pane
Autor: Leonhard Suckau Lizenz: AGPL