Добрый день !
Подскажите, можно ли через правила wb-rules отслеживать подключение “таблетски” iButton к шине 1-wire ?
В каталоге /sys/bus/w1/devices - папка с именем ID появляется.
Как опубликовать значение ID в топик MQTT ?
Добрый день,
Думаю, вам будут полезны следующие статьи:
Если останутся вопросы, уточняйте.
Добрый день, удалось ли решить вопрос?
Добрый день!
К сожалению через правило wb-rules не получилось это сделать.
Попытался через Bash, id пробросить в mqtt в моменте получилось, но само по себе решение мне не понравилось. Поскольку задача оказалась трудоёмкой, решил пока отложить этот вопрос в сторону.
Если поможете, буду очень признателен.
#!/bin/bash
# /usr/local/bin/ibutton_watcher.sh
DEVICE_PATH="/sys/devices/w1_bus_master2/01-0000016e3cfe"
ID_FILE="$DEVICE_PATH/id"
MQTT_TOPIC="/devices/ibutton/controls/last_id/on"
LOG_FILE="/var/log/ibutton_watcher.log"
SLEEP_INTERVAL=0.5
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
read_hex_id() {
# Читаем 8 байт в бинарном виде и конвертируем в HEX
dd if="$ID_FILE" bs=8 count=1 2>/dev/null | xxd -p | tr -d '\n'
}
publish_id() {
local hex_id=$(read_hex_id)
if [ -n "$hex_id" ]; then
mosquitto_pub -t "$MQTT_TOPIC" -m "$hex_id" -r
log "Published ID: $hex_id"
return 0
fi
return 1
}
main_loop() {
while true; do
if [ -d "$DEVICE_PATH" ]; then
if [ -r "$ID_FILE" ]; then
if ! publish_id; then
log "Failed to read ID from $ID_FILE"
fi
else
log "ID file not found: $ID_FILE"
fi
else
mosquitto_pub -t "$MQTT_TOPIC" -m "" -r
log "Device directory missing"
fi
sleep "$SLEEP_INTERVAL"
done
}
Это на то, на чём остановился…
Удалось реализовать только мониторинг определённой папки (id), по маске не работает.
И SLEEP_INTERVAL=0.5 тоже не нравится, вообщем не рабочая схем ((.
Добрый день,
К сожалению, релевантного опыта по данному вопросу у меня нет.
Если потребуется помощь в других аспектах, рад буду помочь.
Добрый день,
Удалось ли решить вопрос?