91 lines
2.3 KiB
Bash
Executable File
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="NAME=\"${LINE_TYPE}\" DEVICE_NAME=\"${PLUGIN} ${LINE_ROOM}\" TYPE=\"${TYPE}\" ${SCRIPT_PATH}/mqtt.sh ${LINE_VALUE}"
|
|
echo "$MQTT"
|
|
#eval $MQTT
|
|
fi
|
|
|
|
done # LINE
|
|
|
|
done # PLUGINS
|
|
|