Исправил логику работы. В режиме off разово отключает реле и больше не должен трогать, будет только обновлять текущую температуру.
И еще вопросик, предложение.
так же столкнулся с поздней загрузкой serial-mqtt
если менять настройки для systemd, чтобы wb-rules загружался с задержкой, то при обновление они слетают.
можно ли в сам скрипт wb-engine сделать исполнение с задержкой?
Ага, работает! спасибо!
Эта проблема на стороне ВБ. Нужно, чтобы кто-то им написал об этом, и они придумали правильное решение. По-хорошему, wb-rules
должен запускаться только после того, как все устройства, которые запускает wb-mqtt-serial
, уже активны. Я не силён в systemd
, но, насколько понимаю, там есть механизм, позволяющий сервису становиться активным не просто после запуска, а когда он сам решит, что выполнил все необходимые действия.
Написал сообщение
BrainRoot ответил, что они не планируют делать механизм оповещения сервисом о своем состоянии (что все устройства инициализировны), я их уговаривать не буду. Рекомендация для Вас включить persistence в mosquitto, тогда при старте системы уже будут топики MQTT Discovery
и Home Assitant должен все увидеть.
Жаль. Понял, принял. Спасибо за помощь!
аааа, только сейчас доперло почему эта проблема вылезла, и так мало жалоб на нее
persistence - выключен только в новой версии 2501. до этого он был по умолчанию включен.
persistence вешал WB7, по крайней мере у меня 10тыс топиков, если grafana с которой он связан в bridge уходила в аут минут на 10 - WB повисал намертво, и только хард ресет спасал. Причем ограничение по времени сохранения базы не спасало.
Надо бы попробовать новую прошивку может ситуация поменялась. Хочу попробовать на Home Asisstant через Bridge повышать чтобы освободить Z2M.
@alexey_a Подскажите как корректно подключиться чтобы передавать данные?
а есть какой нибудь FAQ? перелистывать эту огромную тему очень долго.
Влпрос: как у одного термостата подключить несколько исполнительных устроиств?
то есть один термометр - несколько реле.
только через повторитель в правилах?
Нету
Попробуйте сделать несколько зон с одинаковым датчиком, должно сработать.
обновление = новой установке?
wget https://github.com/4mr/wb-engine/releases/latest/download/wb-engine_armhf.deb
dpkg -i wb-engine_armhf.deb
rm wb-engine_armhf.deb
Да
Решил попробовать добавить термостат, в качестве датчика - zigbee датчик, в качестве реле - MR6.
Почему Zone Temperature может не видеть показания датчика? Горит красным и пишет 0, хотя в HA и в MQTT и в интерфейсе WB показания есть
Такая работа в принципе не предполагалась. Показания zigbee датчика каким образом в WB попадают? Надо полную картину увидеть, что за скрипт показания зигби передает в ВБ, какие топики при этом в ВБ создаются, какие настройки указаны в wb-engine для термостата, без этих данных я помочь не смогу.
Так обычный датчик температуры с штатным WBE2R-R-ZIGBEE v.2, в вб данные попадают через mqtt. Скрипт видит сами датчики если выбирать создание термостата, но я обратил внимание вот на что:
Топик температуры у датчика выглядит следующим образом:
В скрипте же при выборе датчика топик выглядит следующим образом:
Скрипт будто дописывает в топик лишний пункт? Или может я все таки что-то не так делаю?
Я предполагаю, что у Вас скрипт стоит который данные из топиков zigbee2mqtt перекидывает в /devices/.
Покажите содержимое файла /etc/wb-rules/wb-engine.conf
Вечерком сделаю, на работу убежал
wb-engine.conf (77,0 КБ)
{
"script_type": "thermostat",
"enabled": true,
"hass_enabled": true,
"device_name": "default",
"mode": "heat",
"inverted_control": false,
"name": "Temp",
"title": "kmk",
"temperature_target": 50,
"temperature_min": 10,
"temperature_max": 100,
"hysteresis": 1,
"zones": [
{
"name": "",
"relay": "wb-gpio/EXT2_R3A5",
"sensor": "Спальня датчик температуры/temperature"
}
]
}
На первый взгляд ничего криминального нет. Вам необходимо проверить, будет ли доступна температура в wb-rules по названию сенсора Спальня датчик температуры/temperature
, создайте правило и запустите, в логах должна будет появиться запись с температурой:
var temp = dev["Спальня датчик температуры/temperature"]
log.info("temperature is {}".format(temp))
Смотреть через ssh с помощью команды journalctl -f -t wb-rules
. В скрипте используется штатный механизм получения событий на изменения сенсоров defineRule.whenChanged
и получение значений через dev[sensor]
.
Для теста я бы переименовал сенсор, используя только английские буквы и без пробелов.
Я сделал проще, создал виртуальный девайс дублирующий показания датчиков, и уже с него просрочил данные в термостат)