Um was geht es?
- Endlose Aufnahme von WAV über die ALSA Schnittstelle
- Konvertieren der WAV Dateien nach MP3
- Upload der MP3 Dateien via rsync zu entfernten Server
Vorbereitung
Voraussetzung
Raspberry
- Anschluss USB-Soundkarte
- Einrichtung ALSA
- über welches Device kann das Mikro angesprochen werden? (hier: plughw:1,0)
Voraussetzungen entfernter Server (server)
- sshd
- apt-get install rsync
Raspberry (raspi)
- Passwortloses Anmelden auf entfernten Server einrichten:
pi@raspi:~> ssh-keygen -t rsa
pi@raspi:~> cat .ssh/id_rsa.pub | ssh user@server 'cat >> .ssh/authorized_keys'
user@server's password:
pi@raspi:~> ssh user@server
user@server:~> exit
Installation
Auf dem Raspi folgendes ausführen:
git clone https://git.hs42.de/hs/sumsel.git
cd /sumsel
chmod a+x sumsel.sh
cp sumsel.conf.dist sumsel.conf
Anschliessend Variablen in ./sumsel.conf setzen:
| Variable | Optional/Required | Bedeutung | Default |
|---|---|---|---|
| REC_DEVICE | required | Adresse der USB Soundkarte | plughw:1,0 |
| REMOTE_DIR | required | Zielordner auf dem entfernten Server | <remote_user>@<remote_host>:<remote_path> |
| REF_FILE_TIME | optional | Laenge einer WAV Datei in Sekunden | 360 |
| REC_DIR | optional | Ordner, ind dem die WAV Dateien abgelegt werden | ./recordings |
| REC_PREFIX | optional | Prefix Dateiname WAV Dateien | sums |
| UPL_DIR | optional | Ordner in dem die MP3 Dateien abgelegt werden | ./upqueue |
| UPL_SUFFIX | optional | Ordner in dem die MP3 Dateien abgelegt werden | sumsi |
Skripte
| Kommando | Aktion |
|---|---|
| sumsel.sh -s | Simulieren |
| sumsel.sh -r | Aufnehmen |
| sumsel.sh -c | Konvertieren + Hochladen |
Betrieb
Im Dauerbetrieb laufen zwei Jobs:
| Jobtyp | Bezeichnung | Kommando | Betriebsart |
|---|---|---|---|
| record | Aufnahme der WAV Dateien | ./sumsel.sh -r -C ./sumsel.conf | endlos |
| convert | Konvertierung + Upload | ./sumsel.sh -c -C ./sumsel.conf | alle 5 Minuten |
Die Jobs können über cron gestartet werden. Das Skript setzt einen Lock und sorgt dafür, dass von jeden Jobtyp nur eine Instanz laufen kann. Stellt das Script fest, dass bereits eine Instanz läuft, wird die aktuelle Instanz mit der Meldung "LOCK error" beendet.
hs@raspi4:~/dev/stage/sumsel $ ./sumsel.sh -c -C ./sumsel.conf
LOCK error
Beispiel für crontab:
*/5 * * * * <path>/sumsel.sh -r -C <path>/sumsel.conf >> <path>/sumsel_r.log
1,10,11,21,31,41,51 * * * * <path>/sumsel.sh -c -C <path>/sumsel.conf >> <path>/sumsel_c.log
GIT commands
- git status
- git add ...
- git commit -m "..."
- git push origin master
Description
Languages
Shell
100%