#!/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