Upload in Snapshot-Tabelle hinzugefügt - schnelleres Auslesen durch Webseite möglich.
82 lines
2.7 KiB
Bash
82 lines
2.7 KiB
Bash
#!/bin/bash
|
|
# dl5000sql.sh reads data from the DL5000 weather station and writes it up to a MySQL/MariaDB.
|
|
# https://code.hw12.org/tilman/dl5000
|
|
#
|
|
# License GPL3.0 or later
|
|
# https://code.hw12.org/tilman/dl5000/src/branch/master/LICENSE
|
|
|
|
#Log file and temporary txt.
|
|
PFAD=$(dirname "$(readlink -e "$0")");
|
|
FILE=$PFAD"/"$DATE."txt";
|
|
LOG=$PFAD"/edl.log";
|
|
|
|
TMP0="dl5000.tmp";
|
|
TMP1="dl5001.tmp";
|
|
TMP2="dl5002.tmp";
|
|
|
|
#Database
|
|
DB_USER="dbuser";
|
|
DB_PASS="dbpasswd";
|
|
DB_HOST="dbhost";
|
|
DB_NAME="dbname"
|
|
DB_TAB="TempData";
|
|
DB_TAB_SNAP="TempSnapshot";
|
|
|
|
#Get date and round to nearest 5min (for harmonized use with data from other scripts in pChart)
|
|
DATE_RAW=$(/bin/date +%s);
|
|
DATE=$(/bin/date -d @$DATE_RAW "+%Y-%m-%d %H:%M:%S");
|
|
DATE_N5M=$(echo "($DATE_RAW % 300)"|bc);
|
|
|
|
if [ $DATE_N5M -lt 150 ];then
|
|
DATE_N5M=$(echo "($DATE_RAW - ($DATE_RAW % 300))"|bc);
|
|
else
|
|
DATE_N5M=$(echo "($DATE_RAW - ($DATE_RAW % 300) + 300)"|bc);
|
|
fi
|
|
DATE_N5M=$(/bin/date -d @$DATE_N5M "+%Y-%m-%d %H:%M:%S");
|
|
|
|
readsensors(){
|
|
cd /opt/raumklima
|
|
|
|
. ./venv/bin/activate
|
|
python src/read_rs500_test.py > ${TMP0}
|
|
deactivate
|
|
|
|
#Prüfe abgelegte Datei
|
|
TMP_FILE=$(wc -c ${TMP0} | awk '{print $1}')
|
|
if [ ${TMP_FILE} -le 12 ]; then
|
|
sleep 5;
|
|
readsensors;
|
|
fi
|
|
|
|
}
|
|
#Start mit Datenabruf
|
|
readsensors;
|
|
|
|
#Erste Zeile entfernen
|
|
sed -e '1d' ${TMP0} > ${TMP1};
|
|
#Leerzeichen entfernen
|
|
tr -d ' ' < ${TMP1} > ${TMP2};
|
|
|
|
#Zeilenweise in Array übertragen
|
|
while read -r DATA;
|
|
do DATASETS+=(${DATA});
|
|
done < dl5002.tmp;
|
|
|
|
#Zeilen in Variablen nach Raum übertragen
|
|
for DATASETS in "${DATASETS[@]}"
|
|
do
|
|
readarray -td';' DATASET <<< "${DATASETS[@]}";
|
|
|
|
declare "S${DATASET[0]}_Temp"=${DATASET[1]};
|
|
declare "S${DATASET[0]}_Humidity"=${DATASET[2]:0:2};
|
|
|
|
done
|
|
|
|
#Send data to database
|
|
mysql -u $DB_USER -p$DB_PASS -h $DB_HOST -D $DB_NAME <<EOF
|
|
INSERT INTO $DB_TAB (TimeStamp,Nearest5min,S1_Temp,S1_Humidity,S2_Temp,S2_Humidity,S3_Temp,S3_Humidity,S4_Temp,S4_Humidity,S5_Temp,S5_Humidity,S6_Temp,S6_Humidity,S7_Temp,S7_Humidity,S8_Temp,S8_Humidity) VALUES ('${DATE}','${DATE_N5M}','${S1_Temp}','${S1_Humidity}','${S2_Temp}','${S2_Humidity}','${S3_Temp}','${S3_Humidity}','${S4_Temp}','${S4_Humidity}','${S5_Temp}','${S5_Humidity}','${S6_Temp}','${S6_Humidity}','${S7_Temp}','${S7_Humidity}','${S8_Temp}','${S8_Humidity}');
|
|
UPDATE $DB_TAB_SNAP SET TimeStamp='${DATE}',Nearest5min='${DATE_N5M}',S1_Temp='${S1_Temp}',S1_Humidity='${S1_Humidity}',S2_Temp='${S2_Temp}',S2_Humidity='${S2_Humidity}',S3_Temp='${S3_Temp}',S3_Humidity='${S3_Humidity}',S4_Temp='${S4_Temp}',S4_Humidity='${S4_Humidity}',S5_Temp='${S5_Temp}',S5_Humidity='${S5_Humidity}',S6_Temp='${S6_Temp}',S6_Humidity='${S6_Humidity}',S7_Temp='${S7_Temp}',S7_Humidity='${S7_Humidity}',S8_Temp='${S8_Temp}',S8_Humidity='${S8_Humidity}';
|
|
EOF
|
|
|
|
#Temporäre Dateien entfernen
|
|
rm dl500*.tmp; |