From 82340939fb6f7a2ccacd4aef64276d4357917389 Mon Sep 17 00:00:00 2001 From: Florian Klemenz Date: Mon, 21 Oct 2024 10:59:20 +0200 Subject: [PATCH] mqtt should now work --- sensors/mqtt.sh | 73 ++++++++++++++++++++----------------------------- sensors/run.sh | 4 +-- 2 files changed, 32 insertions(+), 45 deletions(-) diff --git a/sensors/mqtt.sh b/sensors/mqtt.sh index 452c3a2..d31da28 100755 --- a/sensors/mqtt.sh +++ b/sensors/mqtt.sh @@ -13,56 +13,43 @@ source ~/.mqtt-hass.conf -#MQTT_BROKER="" -#MQTT_PORT=1883 -#MQTT_USERNAME="" -#MQTT_PASSWORD="" +LC_NAME="${DEVICE_NAME,,}" -#TYPE="power" -#NAME="Host $(hostname -s)" -#ID="host_$(hostname -s)" -#TOPIC="host/$(hostname -s)" +# Device attriutes +DEVICE_ID="${LC_NAME// /_}" +DEVICE_MANUFACTURER="custom" +DEVICE_MODEL="${DEVICE_NAME}" #"custom" -LC_NAME=${DEVICE_NAME,,} -ID=${LC_NAME// /_} +# Sensor attributes +SENSOR_ID="${DEVICE_ID}_${SENSOR_TYPE}" +SENSOR_EXPIRE_AFTER_S="600" -TOPIC=${LC_NAME// //} - - -case ${TYPE} in +case ${SENSOR_TYPE} in "power") - DEVICE_CLASS="power" - UNIT="W" - ICON="mdi:lightning-bolt" + SENSOR_UNIT="W" + SENSOR_ICON="mdi:lightning-bolt" ;; "voltage") - DEVICE_CLASS="voltage" - UNIT="V" - ICON="mdi:sine-wave" + SENSOR_UNIT="V" + SENSOR_ICON="mdi:sine-wave" ;; "temperature") - DEVICE_CLASS="temperature" - UNIT="°C" - ICON="mdi:thermometer" + SENSOR_UNIT="°C" + SENSOR_ICON="mdi:thermometer" ;; "humidity") - DEVICE_CLASS="humidity" - UNIT="%" - ICON="mdi:water-percent" + SENSOR_UNIT="%" + SENSOR_ICON="mdi:water-percent" ;; *) - echo "Unknown sensor type: ${TYPE}" >2 + echo "Unknown sensor type: ${SENSOR_TYPE}" >&2 exit 1 ;; esac - -MANUFACTURER="custom" -MODEL="custom" -EXPIRE_AFTER_S="600" - -MQTT_CONFIG_TOPIC="homeassistant/sensor/${ID}/config" -MQTT_STATE_TOPIC="${TOPIC}/${DEVICE_CLASS}" +# MQTT attributes +MQTT_CONFIG_TOPIC="homeassistant/sensor/${SENSOR_ID}/config" +MQTT_STATE_TOPIC="${LC_NAME// //}/${SENSOR_TYPE}/state" function send { TOPIC=$1 @@ -85,18 +72,18 @@ function state { function setupEntity { config "{\ -\"name\": \"${NAME}\",\ -\"unique_id\": \"${ID}_${DEVICE_CLASS}\",\ -\"device_class\": \"${DEVICE_CLASS}\",\ -\"unit_of_measurement\": \"${UNIT}\",\ +\"name\": \"${SENSOR_NAME}\",\ +\"unique_id\": \"${SENSOR_ID}\",\ +\"device_class\": \"${SENSOR_TYPE}\",\ +\"unit_of_measurement\": \"${SENSOR_UNIT}\",\ \"state_topic\": \"${MQTT_STATE_TOPIC}\",\ -\"expire_after\": \"${EXPIRE_AFTER_S}\",\ -\"icon\": \"${ICON}\",\ +\"expire_after\": \"${SENSOR_EXPIRE_AFTER_S}\",\ +\"icon\": \"${SENSOR_ICON}\",\ \"device\": {\ \"name\": \"${DEVICE_NAME}\",\ -\"identifiers\": \"${ID}\",\ -\"manufacturer\": \"${MANUFACTURER}\",\ -\"model\": \"${MODEL}\"\ +\"identifiers\": [\"${DEVICE_ID}\"],\ +\"manufacturer\": \"${DEVICE_MANUFACTURER}\",\ +\"model\": \"${DEVICE_MODEL}\"\ }}" #\"firendly_name\": \"${NAME} power\",\ diff --git a/sensors/run.sh b/sensors/run.sh index 5b3b003..1488357 100755 --- a/sensors/run.sh +++ b/sensors/run.sh @@ -79,9 +79,9 @@ for PLUGIN in ${PLUGINS}; do if [ $MQTT_OK = "true" ]; then - MQTT="NAME=\"${LINE_TYPE}\" DEVICE_NAME=\"${PLUGIN} ${LINE_ROOM}\" TYPE=\"${TYPE}\" ${SCRIPT_PATH}/mqtt.sh ${LINE_VALUE}" + MQTT="SENSOR_NAME=\"${LINE_TYPE}\" SENSOR_TYPE=\"${TYPE}\" DEVICE_NAME=\"${PLUGIN} ${LINE_ROOM}\" ${SCRIPT_PATH}/mqtt.sh ${LINE_VALUE}" echo "$MQTT" - #eval $MQTT + eval $MQTT fi done # LINE