diff --git a/sensors/mqtt.sh b/sensors/mqtt.sh index ac91ea3..452c3a2 100755 --- a/sensors/mqtt.sh +++ b/sensors/mqtt.sh @@ -11,22 +11,55 @@ # Prerequesite #apt install mosquitto-clients -MQTT_BROKER="hass.lan" -MQTT_PORT=1883 -MQTT_USERNAME="pve" -MQTT_PASSWORD="TeLEARDHemAS" +source ~/.mqtt-hass.conf + +#MQTT_BROKER="" +#MQTT_PORT=1883 +#MQTT_USERNAME="" +#MQTT_PASSWORD="" + +#TYPE="power" +#NAME="Host $(hostname -s)" +#ID="host_$(hostname -s)" +#TOPIC="host/$(hostname -s)" + +LC_NAME=${DEVICE_NAME,,} +ID=${LC_NAME// /_} + +TOPIC=${LC_NAME// //} -NAME="Host $(hostname -s)" -ID="host_$(hostname -s)" -TOPIC="host/$(hostname -s)" +case ${TYPE} in + "power") + DEVICE_CLASS="power" + UNIT="W" + ICON="mdi:lightning-bolt" + ;; + "voltage") + DEVICE_CLASS="voltage" + UNIT="V" + ICON="mdi:sine-wave" + ;; + "temperature") + DEVICE_CLASS="temperature" + UNIT="°C" + ICON="mdi:thermometer" + ;; + "humidity") + DEVICE_CLASS="humidity" + UNIT="%" + ICON="mdi:water-percent" + ;; + *) + echo "Unknown sensor type: ${TYPE}" >2 + exit 1 + ;; +esac + -DEVICE_CLASS="power" -UNIT="W" -ICON="mdi:lightning-bolt" MANUFACTURER="custom" MODEL="custom" -EXPIRE_AFTER_S="90" +EXPIRE_AFTER_S="600" MQTT_CONFIG_TOPIC="homeassistant/sensor/${ID}/config" MQTT_STATE_TOPIC="${TOPIC}/${DEVICE_CLASS}" @@ -35,7 +68,8 @@ function send { TOPIC=$1 PAYLOAD=$2 echo "Sending payload to ${MQTT_BROKER}:${MQTT_PORT}/${TOPIC} ..." - echo "$1" + echo "TOPIC=$TOPIC" + echo "PAYLOAD=$PAYLOAD" mosquitto_pub -h "${MQTT_BROKER}" -p "${MQTT_PORT}" -u "${MQTT_USERNAME}" -P "${MQTT_PASSWORD}" \ -t "$TOPIC" \ -m "$PAYLOAD" @@ -51,7 +85,7 @@ function state { function setupEntity { config "{\ -\"name\": \"${DEVICE_CLASS}\",\ +\"name\": \"${NAME}\",\ \"unique_id\": \"${ID}_${DEVICE_CLASS}\",\ \"device_class\": \"${DEVICE_CLASS}\",\ \"unit_of_measurement\": \"${UNIT}\",\ @@ -59,7 +93,7 @@ function setupEntity { \"expire_after\": \"${EXPIRE_AFTER_S}\",\ \"icon\": \"${ICON}\",\ \"device\": {\ -\"name\": \"${NAME}\",\ +\"name\": \"${DEVICE_NAME}\",\ \"identifiers\": \"${ID}\",\ \"manufacturer\": \"${MANUFACTURER}\",\ \"model\": \"${MODEL}\"\ diff --git a/sensors/run.sh b/sensors/run.sh index c1a55c0..5b3b003 100755 --- a/sensors/run.sh +++ b/sensors/run.sh @@ -32,9 +32,9 @@ for PLUGIN in ${PLUGINS}; do #echo "${CMD}" DATA=$(eval $CMD) - #echo "-----------------" - #echo "$DATA" - #echo "-----------------" + echo "-----------------" + echo "$DATA" + echo "-----------------" TABLE_NAME="home_${PLUGIN}" # default @@ -47,6 +47,43 @@ for PLUGIN in ${PLUGINS}; do 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