Переезд WB6 => WB7. Проблемы

Решил “переехать” на WB7 столкнулся со следующими проблемами:

  1. Не открывается история показаний, выскакивает Ошибка получения данных: MQTT RPC request timed out MqttTimeoutError
  2. в лог сыпятся ошибки invalid crc
  3. перестало работать правило 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 — Wiren Board

Не могу подать больше 3В, там подключен HC-SR501 у него на выходе только 3В.
Может можно переписать правило, что бы отрабатывало, если напряжение больше 2В?
Странно конечно, на WB6 это правило работало несколько лет )


вот лог

и что за странные 1.3 и 1.4 в истории?

Если у канала не указан тип “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;
    }
  }
});

установил newValue >= 1 нормально начал отрабатывать. Спасибо!

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.