loudnessspy/Readme.md

1.6 KiB

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)

  1. Rust-Target installieren:
    rustup target add arm-unknown-linux-gnueabihf
    
  2. Cross-Compiler und ARM-ALSA-Entwicklerdateien installieren:
    sudo apt-get install gcc-arm-linux-gnueabihf libasound2-dev:armhf pkg-config-arm-linux-gnueabihf
    
  3. 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
    
  4. 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.

rc.local script to start LoudnessSpy on boot


Autor: Leonhard Suckau Lizenz: AGPL