Отправка значений с одних устройств в другие

Здравствуйте.

Подскажите решение по задаче:

  1. Брать значение CO2 с WB-MSWv4 Slave ID 111
  2. Отправлять это значение в приточную установку по Modbus, Slave ID 999, Holding 8088
  3. Добавлять запись статуса (можно одну и ту же) в ещё один Holding 8181
  4. Всё в цикле, ну, например, раз в 30 секунд.

Всё повторить ещё 4 раза с разными Slave ID MSW и, соответственно разными Holding для приёма значений.

JavaScript не владею, к сожалению.

С уважением.

Добрый день.
А как (каким устройством) описан целевой регистр в установке?

Цитирую разработчиков контроллера приточки:

Показания СО2 умный дом должен писать в регистры Holding по следующим адресам: 8088 - значение показаний для VAV-зоны 1. 8089 - младший байт - статус показаний: 1 - ОК, 3 и выше - ошибка. 8089 - старший байт - тип показаний: 0 - беззнаковый, 0x80 - знаковый.
Чтобы не вникать в наш формат IO_DATA пишите просто в регистр 8089 значение 1 (данные достоверны и беззнаковые).
Для VAV-зоны 2 необходимо добавить к адресам смещение 100. Т.е. у нее адреса будут 8188 и 8189 и т.д. для всех 20-ти VAV-зон: 8088 + (n - 1) * 100, 8089 + (n - 1) * 100, где n - номер VAV-зоны.

У вас в контроллере, для примера, какой контрол (топик) соответствует целевому, относящемуся к “приточке” регистру? Ну и какой топик - к датчику? Я прошу привести чтобы набросать пример на wb-rules, с реальными именами.

Понял, нужно в шаблон приточки добавить целевые регистры.

Например, нужно значение топика /devices/wb-msw-v4_184/controls/CO2 передавать в топик /devices/breezart_1000Aqua_F_1/controls/CO2 VAV Zone 1
Одновременно записывать 1 в топик /devices/breezart_1000Aqua_F_1/controls/Status VAV Zone 1

Подскажите у вас приточная установка с уже установленным заводским набором VAV и нужно прокинуть только показания СО2?

Можете скинуть сам шаблон Breezart для Wirenboard? Вижу по названию топика что вы используете мой шаблон который выложил на форуме Breezart и здесь вроде в сообществе также выкладывал. Но смотрю что вы добавили в него VAV зоны, соответственно интересует как именно у вас подключены эти зоны.

Добрый день.
Да, шаблон Ваш, огромная благодарность за него, заработал сразу. Я сейчас немного ковыряю его, в-основном потому, что Home Assistant не хочет воспринимать данные по энергопотреблению в дашборде Энергия.
VAV пока добавил только для цели передачи данных CO2, положение заслонок после этого мне будет не интересно.
Версии прошивок для приёма сырых данных, по которым управляются зоны - контроллер JL204C7, начиная с версии 1.7.9, JL205 с версии - 1.14.9, JL206M2/M3 - с версии 2.13.1. Для VAV-контроллера JL208/M должна быть версия не ниже 1.6.0.

            {
                "name": "CO2 VAV Zone 1",
                "reg_type": "holding",
                "scale": 1,
                "address": "8088",
                "type": "concentration",
            },
            {
                "name": "Status VAV Zone 1",
                "reg_type": "holding",
                "address": "8089",
            },
            {
                "name": "CO2 VAV Zone 2",
                "reg_type": "holding",
                "scale": 1,
                "address": "8188",
                "type": "concentration",
            },
            {
                "name": "Status VAV Zone 2",
                "reg_type": "holding",
                "address": "8189",
            },
            {
                "name": "CO2 VAV Zone 3",
                "reg_type": "holding",
                "scale": 1,
                "address": "8288",
                "type": "concentration",
            },
            {
                "name": "Status VAV Zone 3",
                "reg_type": "holding",
                "address": "8289",
            },
            {
                "name": "CO2 VAV Zone 4",
                "reg_type": "holding",
                "scale": 1,
                "address": "8388",
                "type": "concentration",
            },
            {
                "name": "Status VAV Zone 4",
                "reg_type": "holding",
                "address": "8389",
            }

Давно не следил за новостями прошивок Breezart, смотрю что уже можно прокинуть все данные для управления в VAV, у меня например все организовано отдельно, те клапаны управляющие по 0-10, показания MSW датчиков, и все это через правила работает.
Но если уже есть возможность теперь прокинуть все данные в родной контроллер ПУ Breezart чтобы она сама всем управляла - это намного интереснее.
Попробую описать у них на форуме задачу чтобы выдали все регистры для этого, и с вашего позволения отпишу в данную тему коллегам в помощь создать правило для передачи данных.
В купе с шаблоном который ранее сделал - можно будет считать полноценной интеграцией не только с ПУ (но и с увлажнителем Carel работающим по модбас), охладителем ККБ (Mitsubishi), а также отопление через SmartWeb - все это я отразил в шаблоне.

Тема на их форуме - CO2, VAV, JL208DP - Форум Breezart
Буду признателен за помощь с правилами.
Я тоже, кстати, с Carel HeatherSteam. Только кондиционеры Gree и на них я застрял с управлением по Modbus Gree ME50-00 EG(M) - #5 от пользователя BrainRoot.

Самый оптимальный вариант, пожалуй тут:Примеры правил — Wiren Board

Так:

//11_07_test_01.js

function transferValue(name, source, destination) {
  defineRule(name, {
      whenChanged: source,
      then: function(newValue, devName, cellName) {
        dev[destination] = newValue;
      }
  });
}

transferValue("rule1_1", "wb-msw-v3_98/CO2", "someDevice/SomeControl_1");
transferValue("rule1_2", "wb-msw-v3_60/CO2", "someDevice/SomeControl_2");


То есть для этих данных:

transferValue("rule1_1", "wb-msw-v4_184/CO2", "breezart_1000Aqua_F_1/CO2 VAV Zone 1");

Спасибо.
А для

что нужно сделать?

В функции укажите еще один параметр для записи.

Так? Но ведь правило срабатывает только при изменении значения источника, которое не будет меняться в случае статуса.

function transferValue(name, value, source, destination) {
  defineRule(name, {
      whenChanged: source,
      then: function(newValue, devName, cellName) {
        dev[destination] = newValue;
      }
  });
}

transferValue("rule1_1",,"wb-msw-v4_184/CO2", "breezart_1000Aqua_F_1/CO2 VAV Zone 1");
transferValue("rule1_2",1,,"/devices/breezart_1000Aqua_F_1/controls/Status VAV Zone 1");

Актуально

Не очень понимаю, честно говоря.
Что называете “статус”?

//11_07_test_01.js

function transferValue(name, source, destination, controldevice) {
  defineRule(name, {
      whenChanged: source,
      then: function(newValue, devName, cellName) {
        dev[destination] = newValue;
        dev[controldevice] = 1;
      }
  });
}

transferValue("rule1_1", "wb-msw-v3_98/CO2", "someDevice/SomeControl_1", "someDevice/Control_1");
transferValue("rule1_2", "wb-msw-v3_60/CO2", "someDevice/SomeControl_2", "someDevice/Control_1");
1 лайк

Работает, спасибо!

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