Решил “переехать” на WB7 столкнулся со следующими проблемами:
Не открывается история показаний, выскакивает Ошибка получения данных: MQTT RPC request timed out MqttTimeoutError
в лог сыпятся ошибки invalid crc
перестало работать правило pir.js
доп инфо:
Batch No 7.2.1C 584
Firmware version 201809030833
HW Revision 7.2.1
Manufacturing Date 2022-02-21 14:02:49+00:00
Release name wb-2201
Release suite stable
Short SN ADF4GFHY
WB-MDM3 fw 2.3.0 (126 адрес) messages.zip (213.2 КБ) pir.js (770 Байт)
при сработки датчика движения на входе А1 меняется напряжение с 0,2 на 3 в. На WB6 это приводило к включению 517F_1/DO_05
Существует (пишется) ли история в контроллере? Сам файл базы данных, его размер, состояние службы wb-mqtt-db.
Что передается по ws в браузер при запросе истории?
Какой браузер (и его версия).
Что за устройство, как настроено?
Увидел лог:
Mar 27 09:31:59 wirenboard-ADF4GFHY wb-mqtt-serial[16750]: DEBUG: [port] ReadFrame: 00 7e 04 02 2e f3 f1
Mar 27 09:31:59 wirenboard-ADF4GFHY wb-mqtt-serial[16750]: DEBUG: [port] read noise: 1f
Mar 27 09:31:59 wirenboard-ADF4GFHY wb-mqtt-serial[16750]: WARNING: [modbus] failed to read 1 input(s) @ 121 of device modbus:126: Serial protocol error: malformed response: invalid crc
И тут:
Mar 27 09:32:02 wirenboard-ADF4GFHY wb-mqtt-serial[16750]: DEBUG: [port] ReadFrame: 00 7e 04 02 00 00 ac
Mar 27 09:32:02 wirenboard-ADF4GFHY wb-mqtt-serial[16750]: DEBUG: [port] read noise: fa
Mar 27 09:32:02 wirenboard-ADF4GFHY wb-mqtt-serial[16750]: WARNING: [modbus] failed to read 1 input(s) @ 35 of device modbus:126: Serial protocol error: malformed response: invalid crc
Была остановлена почему-то. Перезапустил, вроде заработала. Буду наблюдать.
WB-MDM3 fw 2.3.0 (126 адрес)
Настроено на работу диммером. Подключено напрямую к выходу RS-485 2. Откуда помехи на шине, самому интересно. Скорость выставлена 115200.
Форум похоже зарубил файл с разрешением js, вот правило:
defineRule("Swich_control", { //название правила - "Включение света в серверной по датчику движения", может быть произвольным
whenChanged: "wb-gpio/A1_IN", //при изменении состояния выключателя А1
then: function (newValue, devName, cellName) { //выполняй следующие действия
if ( newValue == true) { //если кнопка нажата
dev["517F_1/DO_05"] = true; //установи Реле 6 модуля 517 в состояние «включено"
}
else {
dev["517F_1/DO_05"] = false; //установи Реле 6 модуля 517 в состояние «выключено"
}
}
});
Здравствуйте! У WB7 при работе на скорости 115200 возникают ошибки при работе по RS-485. Сейчас работаем на устранением данной проблемы. Как вариант временного решения - понизить скорость работы шины.
Я проверил вот такое правило (изменил только каналы реле) - нормально отарабатывает:
defineRule("Swich_control", { //название правила - "Включение света в серверной по датчику движения", может быть произвольным
whenChanged: "wb-gpio/A1_IN", //при изменении состояния выключателя А1
then: function (newValue, devName, cellName) { //выполняй следующие действия
log("function executed");
if ( newValue == true) { //если кнопка нажата
dev["wb-gpio/EXT2_R3A1"] = true; //установи Реле 6 модуля 517 в состояние «включено"
}
else {
dev["wb-gpio/EXT2_R3A1"] = false; //установи Реле 6 модуля 517 в состояние «выключено"
}
}
});
А сервисы wb-mqtt-gpio и wb-rules работает? Название каналов правильные?
Добавьте в правило вывод сообщения в лог (как у меня в примере) - будет видно вызывается ли правило.
Возможно 3В - это на границе срабатывания входа, напряжение должно быть больше 3В. Попробуйте подать для теста на вход напряжение 5В или 24В (проверьте перед этим, что выход А1 не включен!).
Вот здесь написано про уровни: Wiren Board 7.4 — Wiren Board
Не могу подать больше 3В, там подключен HC-SR501 у него на выходе только 3В.
Может можно переписать правило, что бы отрабатывало, если напряжение больше 2В?
Странно конечно, на WB6 это правило работало несколько лет )
Если у канала не указан тип “switch”, то в истории выводятся его усредненные значения. На сам сигнал могут влиять наводки, поэтому в воздухе его оставлять не рекомендуется.
В правиле в этом случае нужно использовать аналоговое значение входа, например, так:
defineRule("Swich_control", { //название правила - "Включение света в серверной по датчику движения", может быть произвольным
whenChanged: "wb-adc/A1", //при изменении состояния напряжения на входе А1
then: function (newValue, devName, cellName) { //выполняй следующие действия
log("function executed");
if ( newValue >= 3) { //если входное напряжение больше 3 В, то выполнять
dev["wb-gpio/EXT2_R3A1"] = true; //установи Реле 6 модуля 517 в состояние «включено"
dev["buzzer/enabled"] = true;
}
else {
dev["wb-gpio/EXT2_R3A1"] = false; //установи Реле 6 модуля 517 в состояние «выключено"
dev["buzzer/enabled"] = false;
}
}
});