Compare commits

..

9 Commits

Author SHA1 Message Date
753f6e1782 .. 2021-02-01 15:56:33 +00:00
89844ef368 all in one 2 2021-02-01 15:15:41 +00:00
13e6615435 all in one 2021-02-01 15:11:48 +00:00
b6f985a323 add sumsel.sh (all in one) 2021-02-01 15:05:37 +00:00
69b70c83d7 doc 2021-01-30 15:59:13 +00:00
3d4b98a866 doc 2021-01-30 15:50:10 +00:00
22fe3daf99 doc 2021-01-30 15:44:23 +00:00
19e6bb8250 add sumsel.defaults 2021-01-30 15:41:41 +00:00
18ff13e376 add sumsel.defaults 2021-01-30 15:34:45 +00:00
7 changed files with 194 additions and 101 deletions

View File

@@ -38,26 +38,27 @@ git clone https://git.hs42.de/hs/sumsel.git
cd /sumsel cd /sumsel
cp sumsel.conf.dist sumsel.conf cp sumsel.conf.dist sumsel.conf
``` ```
Anschliessend Variablen in ./sumsel.conf setzen. 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 |
## Betrieb ## Betrieb
### Endloses Aufnehmen | Kommando | Aktion |
| ------------ | ------------------------ |
| sumsel.sh -s | Simulieren |
| sumsel.sh -r | Aufnehmen |
| sumsel.sh -c | Konvertieren + Hochladen |
``` ### GIT commands
pi@raspi:~> ./record.sh * git status
``` * git add ...
* git commit -m "..."
### Endloses Simulieren * git push origin master
```
pi@raspi:~> ./simulate.sh
```
### Konvertieren und rsync Upload
Einplanung über crond
```
pi@raspi:~> ./convert.sh
```

View File

@@ -1,26 +0,0 @@
#!/bin/bash
. ./sumsel.conf
. ./sumsel_functions.incl
if set_lockfile;
then
#Alle WAV Files ausser das letzte File.
#Das letzte File wird gerade recorded und wird beim naechsten Durchlauf verarbeitet
FILES=$(ls -tr ${REC_DIR} |head -n -1)
for F in ${FILES}
do
#echo ${F}
#Ermittle ctime des WAV Files
CTIME=$(date -r "${REC_DIR}/${F}" +"%Y%m%d%H%M%S")
ffmpeg -i "${REC_DIR}/${F}" -acodec mp3 "${UPL_DIR}/${CTIME}_${UPL_SUFFIX}.mp3"
rm "${REC_DIR}/${F}"
done
rsync -avzh --remove-source-files ${UPL_DIR} ${REMOTE_DIR}
del_lockfile
else
echo "LOCK error"
fi

View File

@@ -1,7 +0,0 @@
#!/bin/bash
. ./sumsel.conf
. ./sumsel_functions.incl
arecord --format=cd --device=${REC_DEVICE} --max-file-time ${REC_FILE_TIME} ${REC_DIR}/${REC_PREFIX}.wav

View File

@@ -1,15 +0,0 @@
#!/bin/bash
. ./sumsel.conf
. ./sumsel_functions.incl
COUNTER=0
echo "Press [CTRL+C] to stop.."
while :
do
sleep 1
COUNTER=$[$COUNTER +1]
dst_fn="${REC_DIR}/${REC_PREFIX}-${COUNTER}.wav"
cp ${SIM_EXAMPLE_FILE} ${dst_fn}
done

View File

@@ -1,27 +1,24 @@
LOCK_DIR=/var/lock
SIM_EXAMPLE_FILE=./res/test.wav
REC_DEVICE=plughw:1,0 REC_DEVICE=plughw:1,0
#Laenge der WAV Dateien in Sekunden #Laenge der WAV Dateien in Sekunden
REC_FILE_TIME=360 #REC_FILE_TIME=360
#Ordner, ind dem die WAV Dateien abgelegt werden #Ordner, ind dem die WAV Dateien abgelegt werden
#wenn der Ordner nicht existiert, wird er angelegt #wenn der Ordner nicht existiert, wird er angelegt
REC_DIR=./recordings #REC_DIR=./recordings
#Dateiname der WAV Dateien #Dateiname der WAV Dateien
# sums-01.wav, sums-02.wav, ... # sums-01.wav, sums-02.wav, ...
REC_PREFIX=sums #REC_PREFIX=sums
#Ordner in dem die MP3 Dateien abgelegt werden #Ordner in dem die MP3 Dateien abgelegt werden
#wenn der Ordner nicht existiert, wird er angelegt #wenn der Ordner nicht existiert, wird er angelegt
UPL_DIR=./upqueue #UPL_DIR=./upqueue
#Dateiname der MP3 Dateien #Dateiname der MP3 Dateien
# 20210130101112-sumsi.mp3, 20210130101120-sumsi.mp3, ... # 20210130101112-sumsi.mp3, 20210130101120-sumsi.mp3, ...
UPL_SUFFIX=sumsi #UPL_SUFFIX=sumsi
#Rsync Zielordner #Rsync Zielordner
REMOTE_DIR=<remote_user>@<remote_host>:<remote_path> REMOTE_DIR=<remote_user>@<remote_host>:<remote_path>

169
sumsel.sh Executable file
View File

@@ -0,0 +1,169 @@
#!/bin/bash
LOCK_DIR=/var/lock
SIM_EXAMPLE_FILE=./res/test.wav
#Laenge der WAV Dateien in Sekunden
REC_FILE_TIME=360
#Ordner, ind dem die WAV Dateien abgelegt werden
#wenn der Ordner nicht existiert, wird er angelegt
REC_DIR=./recordings
#Dateiname der WAV Dateien
# sums-01.wav, sums-02.wav, ...
REC_PREFIX=sums
#Ordner in dem die MP3 Dateien abgelegt werden
#wenn der Ordner nicht existiert, wird er angelegt
UPL_DIR=./upqueue
#Dateiname der MP3 Dateien
# 20210130101112-sumsi.mp3, 20210130101120-sumsi.mp3, ...
UPL_SUFFIX=sumsi
usage() {
echo "Usage: $0 [-h] (-s|-r|-t) [-C <configfile>]" 1>&2;
echo -e '\t-h Usage'
echo -e '\t-s Simulation'
echo -e '\t-r Aufnahme'
echo -e '\t-c Konvertierung'
echo -e '\t-C <configfile> ssss'
exit 1;
}
while getopts ":hsrcC:" options;
do
case "${options}" in
h)
usage
;;
"s" | "r" | "c") #simulate
mode=${options}
;;
C)
config=${OPTARG}
if [ -f ${config} ]; then
. ${config}
else
echo "file not found: ${config}"
exit
fi
;;
*)
echo "unknown option"
usage
;;
esac
done
check_var_exists() {
local var_name=$1
if [[ ! -v ${var_name} ]]; then
echo "${var_name} not set"
exit 1
fi
}
set_lockfile() {
local BASENAME=$(basename "$0")
local LOCK_FILE="${LOCK_DIR}/${BASENAME}"
local RANDOM_FILE=$(mktemp --tmpdir=${LOCK_DIR})
echo $$ > ${RANDOM_FILE}
mv -n ${RANDOM_FILE} ${LOCK_FILE}
if [ -e ${RANDOM_FILE} ] ; then
false
else
true
fi
}
del_lockfile() {
local BASENAME=$(basename "$0")
local LOCK_FILE="${LOCK_DIR}/${BASENAME}"
rm ${LOCK_FILE}
}
simulate() {
check_var_exists "REC_DIR"
check_var_exists "REC_PREFIX"
check_var_exists "SIM_EXAMPLE_FILE"
local COUNTER=0
mkdir -p ${REC_DIR}
echo "Press [CTRL+C] to stop.."
while :
do
sleep 1
COUNTER=$[$COUNTER +1]
dst_fn="${REC_DIR}/${REC_PREFIX}-${COUNTER}.wav"
cp ${SIM_EXAMPLE_FILE} ${dst_fn}
done
exit 0
}
record() {
check_var_exists "REC_DEVICE"
check_var_exists "REC_FILE_TIME"
check_var_exists "REC_PREFIX"
check_var_exists "REC_DIR"
mkdir -p ${REC_DIR}
arecord --format=cd --device=${REC_DEVICE} --max-file-time ${REC_FILE_TIME} ${REC_DIR}/${REC_PREFIX}.wav
exit 0
}
convert() {
check_var_exists "REC_DIR"
check_var_exists "UPL_DIR"
check_var_exists "UPL_SUFFIX"
check_var_exists "REMOTE_DIR"
if set_lockfile;
then
mkdir -p ${REC_DIR}
mkdir -p ${UPL_DIR}
#Alle WAV Files ausser das letzte File.
#Das letzte File wird gerade recorded und wird beim naechsten Durchlauf verarbeitet
local FILES=$(ls -tr ${REC_DIR} |head -n -1)
for F in ${FILES}
do
#Ermittle ctime des WAV Files
local CTIME=$(date -r "${REC_DIR}/${F}" +"%Y%m%d%H%M%S")
ffmpeg -i "${REC_DIR}/${F}" -acodec mp3 "${UPL_DIR}/${CTIME}_${UPL_SUFFIX}.mp3"
rm "${REC_DIR}/${F}"
done
rsync -avzh --remove-source-files ${UPL_DIR} ${REMOTE_DIR}
del_lockfile
exit 0
else
echo "LOCK error"
exit 1
fi
}
case ${mode} in
s) #Simulation
simulate
exit
;;
r) #Aufnahme
record
;;
c) #Konvertierung
convert
;;
*)
echo "mode not set"
exit 1
;;
esac

View File

@@ -1,26 +0,0 @@
function set_lockfile {
local BASENAME=$(basename "$0")
local LOCK_FILE="${LOCK_DIR}/${BASENAME}"
local RANDOM_FILE=$(mktemp --tmpdir=${LOCK_DIR})
echo $$ > ${RANDOM_FILE}
mv -n ${RANDOM_FILE} ${LOCK_FILE}
if [ -e ${RANDOM_FILE} ] ; then
OTHER_PID=$(cat ${LOCK_FILE})
false
else
true
fi
}
function del_lockfile {
local BASENAME=$(basename "$0")
local LOCK_FILE="${LOCK_DIR}/${BASENAME}"
rm ${LOCK_FILE}
}
mkdir -p ${REC_DIR}
mkdir -p ${UPL_DIR}