91 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
source ~/.mysql-grafana.conf
#PLUGINS="1wire ina219 433mhz"
PLUGINS="1wire ina219 433mhz"
# https://stackoverflow.com/a/1482133
SCRIPT_PATH=$(dirname -- "$( readlink -f -- "$0"; )";)
SOURCE=$(hostname -s)
for PLUGIN in ${PLUGINS}; do
echo "Processing ${PLUGIN}..."
PLUGIN_ENV=MUNIN_LIBDIR=${SCRIPT_PATH}
PLUGIN_CONF="${SCRIPT_PATH}/conf.d/${PLUGIN}"
if [ -f ${PLUGIN_CONF} ]; then
while IFS="" read -r p || [ -n "$p" ]
do
#printf '%s\n' "$p"
if [[ $p == env.* ]]; then
PARAM=${p##env.} # Match longest pattern from front -> everthing after the starting 'env.'
PARAM=${PARAM%% *} # Match longest pattern from back -> everything before the first ' '
VALUE=${p#* } # Match shortest pattern from front -> everything after the first ' '
PLUGIN_ENV+=" ${PARAM}=${VALUE}"
fi
done < ${PLUGIN_CONF}
fi
CMD="${PLUGIN_ENV} ${SCRIPT_PATH}/plugins/${PLUGIN}"
#echo "${CMD}"
DATA=$(eval $CMD)
echo "-----------------"
echo "$DATA"
echo "-----------------"
TABLE_NAME="home_${PLUGIN}" # default
IFS=$'\n'; for LINE in ${DATA}; do
# parse data and insert to database
#echo $LINE
SQL=$(echo $LINE | sed -E "s/(.*)\.(.*) (.*)/INSERT INTO ${TABLE_NAME} (source, metric, value) VALUES (\"${SOURCE}\",\"\1\", \"\3\");/")
echo $SQL
echo $SQL | mysql --host="192.168.0.12" --database="${DATABASE}" --user="${USER}" --password="${PASSWORD}"
MQTT_OK=true
case $PLUGIN in
"433mhz")
LINE_ROOM=${LINE%%_*}
LINE_TYPE=${LINE##*_}
LINE_TYPE=${LINE_TYPE%%.value*}
LINE_VALUE=${LINE##* }
echo "${LINE_ROOM} ${LINE_TYPE} ${LINE_VALUE}"
;;
*)
MQTT_OK=false
;;
esac
case $LINE_TYPE in
"Luftfeuchte")
TYPE="humidity"
;;
"Temperatur")
TYPE="temperature"
;;
"Spannung")
TYPE="voltage"
;;
*)
MQTT_OK=false
;;
esac
if [ $MQTT_OK = "true" ];
then
MQTT="SENSOR_NAME=\"${LINE_TYPE}\" SENSOR_TYPE=\"${TYPE}\" DEVICE_NAME=\"${PLUGIN} ${LINE_ROOM}\" ${SCRIPT_PATH}/mqtt.sh ${LINE_VALUE}"
echo "$MQTT"
eval $MQTT
fi
done # LINE
done # PLUGINS