Syberia 5

Обязательно. Но боюсь без спецов команды Wiren и допиливания wb_mqtt_serial не обойтись… Текущий метод хранения флагов у контроллера Syberia не нативен для wiren. Либо нет, либо я пока не разобрался как привести шаблон к пониманию формата битовой маски что применена в контроллере Cyberia. Остальные параметры без проблем всосались и работают штатно фактически по всей карте регистров.

Мужик ты крут, а не пробывал это прикидывать в HomeKit через nodered

Это несколько другой уровень абстракции нежели тот о котором идет речь в этом топике. Позднее, на базе обрабатываемых данных от MQTT конечно можно будет прикрутить и Nodered и прочие системы. Но пока, речь идет лишь о низкоуровневой интеграции исполнительного устройства и контроллера в роли “церебральной” части системы.

Обновленный шаблон для контроллера Syberia 5. Поправил пару регистров, которые отдавали некалиброванные значения.

Usage:

  1. Залить в /usr/share/wb-mqtt-serial/templates
  2. Добавить в списке устройств шаблон “Syberia5”
  3. … профит.

Важно: Контроллер syberia 5 адекватно работает только на скоростях 115200.

P/S Выключение вентустановки выполняется переключением “Power_ON_OFF”
сначала в “On” и затем сразу в “Off”. Пока этот баг в прошивке не исправлен, однако авторы контроллера обещали поправить.

PP/S Регистры группы “Error_Code_X” предлагается анализровать программно так как это указано выше. В Шаблоне они добавлены.

файл шаблона:
config-syberia5.json (4.5 КБ)

PPP/S Прошу администраторов форума разрешить загружать файлы *.pdf.
Карту регистров для контроллера syberia 5 загрузить не удается.

6 лайков

Сделаем. Может в Вики страничку завести?

Можно. Как я погляжу контроллер Syberia не очень активно меняется… На долго хватит.

Список регистров Оазис v.5.pdf (758.0 КБ)

Исправленная версия. config-syberia5.json (4.5 КБ)
Устранен баг. Исправлено отображение отрицательных значений температуры на входе в установку.

1 лайк

Добавлю кое-чего своего полезного, в т.ч. разбирая по дороге битовые слова.
Это для версии 3 мозгов, но, почти уверен, для 5й версии будет аналогично.

Читаем состояние приточки, в т.ч. вкл/выкл и состояние перехода между ними

defineRule("GTC_state", { //накидываем правило, которое будет менять состояние обозначенных выше контролов после парсинга значения регистра модбас
  whenChanged: "GTCController/System State", //когда меняется контрол, считывающий регистр состояния приточки
  then: function (newValue, devName, cellName) {

var tempOutput = parseInt(newValue,10); //для начала силой переводим строку в десятичное целое
tempOutput = tempOutput.toString(2); //переводим число в двоичную систему
while (tempOutput.length < 16) { //добиваем слева нули для полного 16-символьного слова
tempOutput = '0' + tempOutput;
	}
tempOutput = tempOutput.split(''); //из 16-символьного слова делаем массив
	dev["GTC_state"]["Power"] = parseInt(tempOutput[15]); //переводим состояние контроля вкл-выкл к значению бита 0 из слова (считам с конца массива)
	dev["GTC_state"]["In transit"] = parseInt(tempOutput[14]); //то же самое для контрола транзита по биту 1 из слова    
  }
});

Разбирать ошибки можно аналогично разибирая слова на биты.

К счастью, единственный регистр обозванный битовым полем, в которой имеет какой-то смысл что-либо писать, это включить и выключить, и внутри него единственный бит незарезервиован и стоит в позиции “0”, поэтому разбирать на биты этот регистр необязательно. Он, кстати, не меняет своего значения с нуля в зависимости от того, что в него записать, но на запись реагирует адекватно.
Включаю и выключаю пока что так:

defineRule("GTC_state_set_on", { //накидываем правило, которое по кнопкам будет менять параметры приточки
  	whenChanged: "GTC_state/Turn ON", //при нажатии на эту кнопку
  	then: function (newValue, devName, cellName) {
    dev["GTCController"]["Power h2"] = 1; //включаем
  }
});

defineRule("GTC_state_set_off", { //накидываем правило, которое по кнопкам будет менять параметры приточки
  	whenChanged: "GTC_state/Turn OFF", //при нажатии на эту кнопку
  	then: function (newValue, devName, cellName) {
    dev["GTCController"]["Power h2"] = 0; //выключаем
  }
});

А так в принципе накидал для себе такой же дубовый и неэлегантный кусочек кода, который обратно из массива битов собирает значение битового слова, которое можно отправить обратно в мозги.

1 лайк

Интересный вариант. А вот такой способ описания в шаблоне применим для 3й версии?:

{
    "name": "Status",
    "type": "switch",
    "reg_type": "input",
    "address": "2:0:1",        // нулевой бит маски в регистре 2 (регистр включения)
    "format": "u16"
}, {
    "name": "In progress",
    "type": "switch",
    "reg_type": "input",
    "address": "2:1:1",      // первый бит маски в регистре 2  (контроллер занят)
    "format": "u16"
}

Обратите внимание на параметр “address”, где указываются через двоеточие сразу регистр:смещение в битах:длина в битах
Таким образом каждый конкретный бит маски можно сразу вывести в нужный топик.

Что же касается бага с самопроизвольным переключением регистра 3 (Power_ON_OFF) разработчики софта для контроллера syberia обещали поправить. Имхо это решение чуть проще. Менее грузит контроллер , а вывести можно фактически любой параметр состояния контроллера сразу в топик, минуя правила.

1 лайк

Если так работает (а я не знал, что так можно) то работает на трешке. На holding регистры запись так не сработает?

У меня сейчас одновременное и трешка, и пятерка. К пятерке пока не подключался, идет пуско-наладка всего климата (приточка, кондей, увлажнитель).

У меня вентмашина Колибри 500 с автоматикой от GTC. Так как к контролеру подключен пульт управления оазис, то правильно я понимаю что Syberia 5 к WB6 я уже не подключу так как в Modbus может быть только один мастер?

в пятой сибири же есть еще один порт modbus, вроде бы

1 лайк

Не правильно. В системе OASIS от GTC, мастером является не установка а пульт. Иначе говоря, при такой конфигурации управляющих устройств может быть несколько. Как раз для решения этой задачи и выполнен отдельный порт RS485 на установке.

Доброго времени суток, уважаемое сообщество.
По счастливой случайности перепала мне приточка под управлением контроллера GTC v.1. на борту контроллера имеется лишь один порт rs485. Я так понимаю в таком случае пульт является мастером и имеет адрес 1. Для того что б подключить данную приточку, я поставил дополнительный модуль rs485 в порт расширения контроллера wirenboard, сконфигурил модуль в соответствием с настройками пульта 19200/2/n, добавил на шару темлейт от 5 сибири и оно заработало, но связь не стабильная постоянно отваливается пульт. Я так понимаю что это происходит от того что модуль wirenboard сам евляется мастером и происходит конфликт с пультом. Вопрос можно ли это побороть?

Можно “в лоб” - убрать пульт совсем.

есть еще негуманный способ - купить пятую сибирь за 14к

тут есть момент, тк контроллер старый, нет карты регистров (и производитель сказал поищем…), а в текущем шаблоне не работает вкл/выкл, если только пускатель ставить…

тоже вариант, учитывая рыночную стоимость подобных систем вполне себе гуманный

сдается мне, что ничего не должно было принципиально поменяться в регистрах
В шаблоне тут действительно не работает выключатель, но он сработает, если заставить силой поверх нуля записать еще раз ноль в соответствующий регистр.