Update files/mqtt_ha_discovery.sh
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Sends MQTT Discovery configs, publishes temperature,
|
# Отправляет конфигурацию для MQTT Discovery, публикует температуру
|
||||||
# and initializes device states ONLY on the first run after reboot.
|
# и инициализирует состояния устройств ТОЛЬКО при первом запуске после перезагрузки
|
||||||
|
|
||||||
MQTT_HOST=$(uci get openwrt_ha.main.host)
|
MQTT_HOST=$(uci get openwrt_ha.main.host)
|
||||||
MQTT_PORT=$(uci get openwrt_ha.main.port)
|
MQTT_PORT=$(uci get openwrt_ha.main.port)
|
||||||
@@ -32,6 +32,7 @@ convert_state() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# === ИНИЦИАЛИЗАЦИЯ СОСТОЯНИЙ (только при первом запуске) ===
|
||||||
INIT_DONE_FILE="${STATES_DIR}/.initialized"
|
INIT_DONE_FILE="${STATES_DIR}/.initialized"
|
||||||
|
|
||||||
if [ ! -f "$INIT_DONE_FILE" ]; then
|
if [ ! -f "$INIT_DONE_FILE" ]; then
|
||||||
@@ -75,15 +76,18 @@ if [ ! -f "$INIT_DONE_FILE" ]; then
|
|||||||
logger -t "wifi_tracker" "Initialization complete."
|
logger -t "wifi_tracker" "Initialization complete."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# === ТЕМПЕРАТУРА (каждый запуск) ===
|
||||||
TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null)
|
TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null)
|
||||||
if [ -n "$TEMP_RAW" ]; then
|
if [ -n "$TEMP_RAW" ]; then
|
||||||
TEMP_C=$(echo "$TEMP_RAW" | awk '{ printf "%.1f", $1 / 1000 }')
|
TEMP_C=$(echo "$TEMP_RAW" | awk '{ printf "%.1f", $1 / 1000 }')
|
||||||
$PUB -t "${BASE_TOPIC}/sensor/temperature/state" -m "$TEMP_C"
|
$PUB -t "${BASE_TOPIC}/sensor/temperature/state" -m "$TEMP_C"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DISCOVERY_TEMP="{\"name\":\"OpenWrt Temperature\",\"stat_t\":\"${BASE_TOPIC}/sensor/temperature/state\",\"dev_cla\":\"temperature\",\"unit_of_meas\":\"°C\",\"uniq_id\":\"openwrt_temp\",\"dev\":{\"ids\":\"openwrt_router\",\"name\":\"OpenWrt Router\",\"mf\":\"OpenWrt\",\"mdl\":\"Router\"}}"
|
# === DISCOVERY ДЛЯ ТЕМПЕРАТУРЫ (каждый запуск) ===
|
||||||
$PUB -t "homeassistant/sensor/openwrt_router/temp/config" -m "$DISCOVERY_TEMP"
|
DISCOVERY_TEMP="{\"name\":\"OpenWrt Temperature\",\"stat_t\":\"${BASE_TOPIC}/sensor/temperature/state\",\"dev_cla\":\"temperature\",\"unit_of_meas\":\"°C\",\"uniq_id\":\"${BASE_TOPIC}_temp\",\"dev\":{\"ids\":\"${BASE_TOPIC}_router\",\"name\":\"OpenWrt Router\",\"mf\":\"OpenWrt\",\"mdl\":\"Router\"}}"
|
||||||
|
$PUB -t "homeassistant/sensor/${BASE_TOPIC}_router/temp/config" -m "$DISCOVERY_TEMP"
|
||||||
|
|
||||||
|
# === DISCOVERY ДЛЯ УСТРОЙСТВ (каждый запуск) ===
|
||||||
i=1
|
i=1
|
||||||
while true; do
|
while true; do
|
||||||
device_name="device${i}"
|
device_name="device${i}"
|
||||||
@@ -98,12 +102,12 @@ while true; do
|
|||||||
|
|
||||||
if [ "$DEVICE_TYPE" = "alarm" ]; then
|
if [ "$DEVICE_TYPE" = "alarm" ]; then
|
||||||
STATE_TOPIC="${BASE_TOPIC}/alarm/device_${i}/state"
|
STATE_TOPIC="${BASE_TOPIC}/alarm/device_${i}/state"
|
||||||
DISCOVERY="{\"name\":\"${DEVICE_NAME_TEXT}\",\"stat_t\":\"${STATE_TOPIC}\",\"pl_on\":\"online\",\"pl_off\":\"offline\",\"dev_cla\":\"connectivity\",\"uniq_id\":\"openwrt_alarm_${DEVICE_ID}\",\"dev\":{\"ids\":\"openwrt_router\",\"name\":\"OpenWrt Router\",\"mf\":\"OpenWrt\",\"mdl\":\"Router\"}}"
|
DISCOVERY="{\"name\":\"${DEVICE_NAME_TEXT}\",\"stat_t\":\"${STATE_TOPIC}\",\"pl_on\":\"online\",\"pl_off\":\"offline\",\"dev_cla\":\"connectivity\",\"uniq_id\":\"${BASE_TOPIC}_alarm_${DEVICE_ID}\",\"dev\":{\"ids\":\"${BASE_TOPIC}_router\",\"name\":\"OpenWrt Router\",\"mf\":\"OpenWrt\",\"mdl\":\"Router\"}}"
|
||||||
$PUB -t "homeassistant/binary_sensor/openwrt_router/${DEVICE_ID}/config" -m "$DISCOVERY"
|
$PUB -t "homeassistant/binary_sensor/${BASE_TOPIC}_router/${DEVICE_ID}/config" -m "$DISCOVERY"
|
||||||
else
|
else
|
||||||
STATE_TOPIC="${BASE_TOPIC}/device_tracker/device_${i}/state"
|
STATE_TOPIC="${BASE_TOPIC}/device_tracker/device_${i}/state"
|
||||||
DISCOVERY="{\"name\":\"${DEVICE_NAME_TEXT}\",\"stat_t\":\"${STATE_TOPIC}\",\"pl_home\":\"home\",\"pl_not_home\":\"not_home\",\"src_type\":\"router\",\"uniq_id\":\"openwrt_tracker_${DEVICE_ID}\",\"dev\":{\"ids\":\"openwrt_router\",\"name\":\"OpenWrt Router\",\"mf\":\"OpenWrt\",\"mdl\":\"Router\"}}"
|
DISCOVERY="{\"name\":\"${DEVICE_NAME_TEXT}\",\"stat_t\":\"${STATE_TOPIC}\",\"pl_home\":\"home\",\"pl_not_home\":\"not_home\",\"src_type\":\"router\",\"uniq_id\":\"${BASE_TOPIC}_tracker_${DEVICE_ID}\",\"dev\":{\"ids\":\"${BASE_TOPIC}_router\",\"name\":\"OpenWrt Router\",\"mf\":\"OpenWrt\",\"mdl\":\"Router\"}}"
|
||||||
$PUB -t "homeassistant/device_tracker/openwrt_router/${DEVICE_ID}/config" -m "$DISCOVERY"
|
$PUB -t "homeassistant/device_tracker/${BASE_TOPIC}_router/${DEVICE_ID}/config" -m "$DISCOVERY"
|
||||||
fi
|
fi
|
||||||
i=$((i + 1))
|
i=$((i + 1))
|
||||||
done
|
done
|
||||||
Reference in New Issue
Block a user