adds mqtt.sh sample script

This commit is contained in:
Florian Klemenz 2024-10-20 10:29:24 +02:00
parent c8362938ad
commit cfdbfe29d0

94
sensors/mqtt.sh Executable file
View File

@ -0,0 +1,94 @@
#!/bin/bash
# MQTT configuration attributes
# https://www.home-assistant.io/integrations/sensor.mqtt/
# https://www.home-assistant.io/integrations/switch.mqtt/
# Explanation
# https://www.youtube.com/watch?v=VHiCtZqllU8
# https://resinchemtech.blogspot.com/2023/12/mqtt-auto-discovery.html
# Prerequesite
#apt install mosquitto-clients
MQTT_BROKER="hass.lan"
MQTT_PORT=1883
MQTT_USERNAME="pve"
MQTT_PASSWORD="TeLEARDHemAS"
NAME="Host $(hostname -s)"
ID="host_$(hostname -s)"
TOPIC="host/$(hostname -s)"
DEVICE_CLASS="power"
UNIT="W"
ICON="mdi:lightning-bolt"
MANUFACTURER="custom"
MODEL="custom"
EXPIRE_AFTER_S="90"
MQTT_CONFIG_TOPIC="homeassistant/sensor/${ID}/config"
MQTT_STATE_TOPIC="${TOPIC}/${DEVICE_CLASS}"
function send {
TOPIC=$1
PAYLOAD=$2
echo "Sending payload to ${MQTT_BROKER}:${MQTT_PORT}/${TOPIC} ..."
echo "$1"
mosquitto_pub -h "${MQTT_BROKER}" -p "${MQTT_PORT}" -u "${MQTT_USERNAME}" -P "${MQTT_PASSWORD}" \
-t "$TOPIC" \
-m "$PAYLOAD"
}
function config {
send "${MQTT_CONFIG_TOPIC}" "$1"
}
function state {
send "${MQTT_STATE_TOPIC}" "$1"
}
function setupEntity {
config "{\
\"name\": \"${DEVICE_CLASS}\",\
\"unique_id\": \"${ID}_${DEVICE_CLASS}\",\
\"device_class\": \"${DEVICE_CLASS}\",\
\"unit_of_measurement\": \"${UNIT}\",\
\"state_topic\": \"${MQTT_STATE_TOPIC}\",\
\"expire_after\": \"${EXPIRE_AFTER_S}\",\
\"icon\": \"${ICON}\",\
\"device\": {\
\"name\": \"${NAME}\",\
\"identifiers\": \"${ID}\",\
\"manufacturer\": \"${MANUFACTURER}\",\
\"model\": \"${MODEL}\"\
}}"
#\"firendly_name\": \"${NAME} power\",\
# "hw_version":"1.02",
# "sw_version":"2.45",
# "configuration_url":"http://192.168.1.226"
}
function deleteEntity {
config ""
}
if [ "$1" == "r" ]; then
deleteEntity
exit 0
fi
if [ -n "$1" ]; then
setupEntity
state "$1"
exit 0
fi
if [ -z "$1" ]; then
setupEntity
exit 0
fi
exit 1