mqtt should now work

This commit is contained in:
Florian Klemenz 2024-10-21 10:59:20 +02:00
parent 57b49b75dd
commit 82340939fb
2 changed files with 32 additions and 45 deletions

View File

@ -13,56 +13,43 @@
source ~/.mqtt-hass.conf source ~/.mqtt-hass.conf
#MQTT_BROKER="" LC_NAME="${DEVICE_NAME,,}"
#MQTT_PORT=1883
#MQTT_USERNAME=""
#MQTT_PASSWORD=""
#TYPE="power" # Device attriutes
#NAME="Host $(hostname -s)" DEVICE_ID="${LC_NAME// /_}"
#ID="host_$(hostname -s)" DEVICE_MANUFACTURER="custom"
#TOPIC="host/$(hostname -s)" DEVICE_MODEL="${DEVICE_NAME}" #"custom"
LC_NAME=${DEVICE_NAME,,} # Sensor attributes
ID=${LC_NAME// /_} SENSOR_ID="${DEVICE_ID}_${SENSOR_TYPE}"
SENSOR_EXPIRE_AFTER_S="600"
TOPIC=${LC_NAME// //} case ${SENSOR_TYPE} in
case ${TYPE} in
"power") "power")
DEVICE_CLASS="power" SENSOR_UNIT="W"
UNIT="W" SENSOR_ICON="mdi:lightning-bolt"
ICON="mdi:lightning-bolt"
;; ;;
"voltage") "voltage")
DEVICE_CLASS="voltage" SENSOR_UNIT="V"
UNIT="V" SENSOR_ICON="mdi:sine-wave"
ICON="mdi:sine-wave"
;; ;;
"temperature") "temperature")
DEVICE_CLASS="temperature" SENSOR_UNIT="°C"
UNIT="°C" SENSOR_ICON="mdi:thermometer"
ICON="mdi:thermometer"
;; ;;
"humidity") "humidity")
DEVICE_CLASS="humidity" SENSOR_UNIT="%"
UNIT="%" SENSOR_ICON="mdi:water-percent"
ICON="mdi:water-percent"
;; ;;
*) *)
echo "Unknown sensor type: ${TYPE}" >2 echo "Unknown sensor type: ${SENSOR_TYPE}" >&2
exit 1 exit 1
;; ;;
esac esac
# MQTT attributes
MANUFACTURER="custom" MQTT_CONFIG_TOPIC="homeassistant/sensor/${SENSOR_ID}/config"
MODEL="custom" MQTT_STATE_TOPIC="${LC_NAME// //}/${SENSOR_TYPE}/state"
EXPIRE_AFTER_S="600"
MQTT_CONFIG_TOPIC="homeassistant/sensor/${ID}/config"
MQTT_STATE_TOPIC="${TOPIC}/${DEVICE_CLASS}"
function send { function send {
TOPIC=$1 TOPIC=$1
@ -85,18 +72,18 @@ function state {
function setupEntity { function setupEntity {
config "{\ config "{\
\"name\": \"${NAME}\",\ \"name\": \"${SENSOR_NAME}\",\
\"unique_id\": \"${ID}_${DEVICE_CLASS}\",\ \"unique_id\": \"${SENSOR_ID}\",\
\"device_class\": \"${DEVICE_CLASS}\",\ \"device_class\": \"${SENSOR_TYPE}\",\
\"unit_of_measurement\": \"${UNIT}\",\ \"unit_of_measurement\": \"${SENSOR_UNIT}\",\
\"state_topic\": \"${MQTT_STATE_TOPIC}\",\ \"state_topic\": \"${MQTT_STATE_TOPIC}\",\
\"expire_after\": \"${EXPIRE_AFTER_S}\",\ \"expire_after\": \"${SENSOR_EXPIRE_AFTER_S}\",\
\"icon\": \"${ICON}\",\ \"icon\": \"${SENSOR_ICON}\",\
\"device\": {\ \"device\": {\
\"name\": \"${DEVICE_NAME}\",\ \"name\": \"${DEVICE_NAME}\",\
\"identifiers\": \"${ID}\",\ \"identifiers\": [\"${DEVICE_ID}\"],\
\"manufacturer\": \"${MANUFACTURER}\",\ \"manufacturer\": \"${DEVICE_MANUFACTURER}\",\
\"model\": \"${MODEL}\"\ \"model\": \"${DEVICE_MODEL}\"\
}}" }}"
#\"firendly_name\": \"${NAME} power\",\ #\"firendly_name\": \"${NAME} power\",\

View File

@ -79,9 +79,9 @@ for PLUGIN in ${PLUGINS}; do
if [ $MQTT_OK = "true" ]; if [ $MQTT_OK = "true" ];
then 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" echo "$MQTT"
#eval $MQTT eval $MQTT
fi fi
done # LINE done # LINE