Working on MQTT
This commit is contained in:
parent
c3eb1a408b
commit
8092424bd6
@ -11,22 +11,55 @@
|
|||||||
# Prerequesite
|
# Prerequesite
|
||||||
#apt install mosquitto-clients
|
#apt install mosquitto-clients
|
||||||
|
|
||||||
MQTT_BROKER="hass.lan"
|
source ~/.mqtt-hass.conf
|
||||||
MQTT_PORT=1883
|
|
||||||
MQTT_USERNAME="pve"
|
#MQTT_BROKER=""
|
||||||
MQTT_PASSWORD="TeLEARDHemAS"
|
#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)"
|
case ${TYPE} in
|
||||||
ID="host_$(hostname -s)"
|
"power")
|
||||||
TOPIC="host/$(hostname -s)"
|
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"
|
MANUFACTURER="custom"
|
||||||
MODEL="custom"
|
MODEL="custom"
|
||||||
EXPIRE_AFTER_S="90"
|
EXPIRE_AFTER_S="600"
|
||||||
|
|
||||||
MQTT_CONFIG_TOPIC="homeassistant/sensor/${ID}/config"
|
MQTT_CONFIG_TOPIC="homeassistant/sensor/${ID}/config"
|
||||||
MQTT_STATE_TOPIC="${TOPIC}/${DEVICE_CLASS}"
|
MQTT_STATE_TOPIC="${TOPIC}/${DEVICE_CLASS}"
|
||||||
@ -35,7 +68,8 @@ function send {
|
|||||||
TOPIC=$1
|
TOPIC=$1
|
||||||
PAYLOAD=$2
|
PAYLOAD=$2
|
||||||
echo "Sending payload to ${MQTT_BROKER}:${MQTT_PORT}/${TOPIC} ..."
|
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}" \
|
mosquitto_pub -h "${MQTT_BROKER}" -p "${MQTT_PORT}" -u "${MQTT_USERNAME}" -P "${MQTT_PASSWORD}" \
|
||||||
-t "$TOPIC" \
|
-t "$TOPIC" \
|
||||||
-m "$PAYLOAD"
|
-m "$PAYLOAD"
|
||||||
@ -51,7 +85,7 @@ function state {
|
|||||||
|
|
||||||
function setupEntity {
|
function setupEntity {
|
||||||
config "{\
|
config "{\
|
||||||
\"name\": \"${DEVICE_CLASS}\",\
|
\"name\": \"${NAME}\",\
|
||||||
\"unique_id\": \"${ID}_${DEVICE_CLASS}\",\
|
\"unique_id\": \"${ID}_${DEVICE_CLASS}\",\
|
||||||
\"device_class\": \"${DEVICE_CLASS}\",\
|
\"device_class\": \"${DEVICE_CLASS}\",\
|
||||||
\"unit_of_measurement\": \"${UNIT}\",\
|
\"unit_of_measurement\": \"${UNIT}\",\
|
||||||
@ -59,7 +93,7 @@ function setupEntity {
|
|||||||
\"expire_after\": \"${EXPIRE_AFTER_S}\",\
|
\"expire_after\": \"${EXPIRE_AFTER_S}\",\
|
||||||
\"icon\": \"${ICON}\",\
|
\"icon\": \"${ICON}\",\
|
||||||
\"device\": {\
|
\"device\": {\
|
||||||
\"name\": \"${NAME}\",\
|
\"name\": \"${DEVICE_NAME}\",\
|
||||||
\"identifiers\": \"${ID}\",\
|
\"identifiers\": \"${ID}\",\
|
||||||
\"manufacturer\": \"${MANUFACTURER}\",\
|
\"manufacturer\": \"${MANUFACTURER}\",\
|
||||||
\"model\": \"${MODEL}\"\
|
\"model\": \"${MODEL}\"\
|
||||||
|
|||||||
@ -32,9 +32,9 @@ for PLUGIN in ${PLUGINS}; do
|
|||||||
#echo "${CMD}"
|
#echo "${CMD}"
|
||||||
DATA=$(eval $CMD)
|
DATA=$(eval $CMD)
|
||||||
|
|
||||||
#echo "-----------------"
|
echo "-----------------"
|
||||||
#echo "$DATA"
|
echo "$DATA"
|
||||||
#echo "-----------------"
|
echo "-----------------"
|
||||||
|
|
||||||
TABLE_NAME="home_${PLUGIN}" # default
|
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\");/")
|
SQL=$(echo $LINE | sed -E "s/(.*)\.(.*) (.*)/INSERT INTO ${TABLE_NAME} (source, metric, value) VALUES (\"${SOURCE}\",\"\1\", \"\3\");/")
|
||||||
echo $SQL
|
echo $SQL
|
||||||
echo $SQL | mysql --host="192.168.0.12" --database="${DATABASE}" --user="${USER}" --password="${PASSWORD}"
|
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 # LINE
|
||||||
|
|
||||||
done # PLUGINS
|
done # PLUGINS
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user