Ну и сюда выложите пожалуйста, добавим со ссылкой в поддерживаемые.
Хорошее описание именно VAV системы вы найдете вот в этом Видео: https://www.youtube.com/watch?v=Wb5Q1uifIcA
Таймер исполнения текущей операции находится в 0x07(07) регистре. (у меня не выведен). При правке файла учитывайте пожалуйста смещение (на самом деле 0x06 (06) вместо указанного в карте).
По кода ошибки, необходимо делать дополнительную обработку, поскольку контролер Syberia отдает обычную битовую последовательность как флаги состояния ошибок.
Для того чтобы понять какую именно ошибку выдает контроллер делаем следующее:
Берем код ошибки и вносим в windows калькулятор в виде программиста как Dec (4096). Затем меняем отображение на Bin. Получаем битовую маску: 1000000000000
Видим что у нас есть 13й бит (считаем справа налево). Остальные 0. Смотрим в карту регистров и видим:
Bit 12 – температура рекуператора больше заданной (начиная с версии 1.0.18)
Иначе говоря температура подачи воздуха больше заданной (должен на пульте гореть соответствующий индикатор.)
Насчет State_0 делаем аналогично… (111000001) 0 ,6,7,8 биты выставлены.
Смотрим в карту:
State_0 – Состояние устройства: слово 0 (битовое поле)
Bit 0 – установка включена (1) / выключена (0)
Bit 1 – переход к состоянию, указанному в «Bit 0»
Bit 2…Bit 5 – резерв
Bit 6 – режим нагрева есть (1) / нет (0)
Bit 7 – режим охлаждения есть (1) / нет (0)
Bit 8 – текущий режим работы системы: нагрев (1) / охлаждение (0)
Bit 9 – таймер на ближайшие сутки есть (1) / нет (0)
Bit 10 – таймер на ближайшую неделю есть (1) / нет (0)
Bit 11…Bit 12 – приоритеты
0 – нет
1 – влажность
2 – СО2
3 – давление
Bit 13…Bit 15 – резерв
Видим:
1 - установка включена.
6 - режим нагрева есть.
7 - режим охлаждения есть.
8 - текущий режим работы - нагрев.
Остальные регистры по образу и подобию… Очень надеюсь что описал достаточно точно для самостоятельного воспроизведения.
Обязательно. Но боюсь без спецов команды Wiren и допиливания wb_mqtt_serial не обойтись… Текущий метод хранения флагов у контроллера Syberia не нативен для wiren. Либо нет, либо я пока не разобрался как привести шаблон к пониманию формата битовой маски что применена в контроллере Cyberia. Остальные параметры без проблем всосались и работают штатно фактически по всей карте регистров.
Мужик ты крут, а не пробывал это прикидывать в HomeKit через nodered
Это несколько другой уровень абстракции нежели тот о котором идет речь в этом топике. Позднее, на базе обрабатываемых данных от MQTT конечно можно будет прикрутить и Nodered и прочие системы. Но пока, речь идет лишь о низкоуровневой интеграции исполнительного устройства и контроллера в роли “церебральной” части системы.
Обновленный шаблон для контроллера Syberia 5. Поправил пару регистров, которые отдавали некалиброванные значения.
Usage:
- Залить в /usr/share/wb-mqtt-serial/templates
- Добавить в списке устройств шаблон “Syberia5”
- … профит.
Важно: Контроллер 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 загрузить не удается.
Сделаем. Может в Вики страничку завести?
Можно. Как я погляжу контроллер Syberia не очень активно меняется… На долго хватит.
Исправленная версия. config-syberia5.json (4.5 КБ)
Устранен баг. Исправлено отображение отрицательных значений температуры на входе в установку.
Добавлю кое-чего своего полезного, в т.ч. разбирая по дороге битовые слова.
Это для версии 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; //выключаем
}
});
А так в принципе накидал для себе такой же дубовый и неэлегантный кусочек кода, который обратно из массива битов собирает значение битового слова, которое можно отправить обратно в мозги.
Интересный вариант. А вот такой способ описания в шаблоне применим для 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 обещали поправить. Имхо это решение чуть проще. Менее грузит контроллер , а вывести можно фактически любой параметр состояния контроллера сразу в топик, минуя правила.
Если так работает (а я не знал, что так можно) то работает на трешке. На holding регистры запись так не сработает?
У меня сейчас одновременное и трешка, и пятерка. К пятерке пока не подключался, идет пуско-наладка всего климата (приточка, кондей, увлажнитель).
У меня вентмашина Колибри 500 с автоматикой от GTC. Так как к контролеру подключен пульт управления оазис, то правильно я понимаю что Syberia 5 к WB6 я уже не подключу так как в Modbus может быть только один мастер?
в пятой сибири же есть еще один порт modbus, вроде бы
Не правильно. В системе OASIS от GTC, мастером является не установка а пульт. Иначе говоря, при такой конфигурации управляющих устройств может быть несколько. Как раз для решения этой задачи и выполнен отдельный порт RS485 на установке.
Доброго времени суток, уважаемое сообщество.
По счастливой случайности перепала мне приточка под управлением контроллера GTC v.1. на борту контроллера имеется лишь один порт rs485. Я так понимаю в таком случае пульт является мастером и имеет адрес 1. Для того что б подключить данную приточку, я поставил дополнительный модуль rs485 в порт расширения контроллера wirenboard, сконфигурил модуль в соответствием с настройками пульта 19200/2/n, добавил на шару темлейт от 5 сибири и оно заработало, но связь не стабильная постоянно отваливается пульт. Я так понимаю что это происходит от того что модуль wirenboard сам евляется мастером и происходит конфликт с пультом. Вопрос можно ли это побороть?
Можно “в лоб” - убрать пульт совсем.
есть еще негуманный способ - купить пятую сибирь за 14к
тут есть момент, тк контроллер старый, нет карты регистров (и производитель сказал поищем…), а в текущем шаблоне не работает вкл/выкл, если только пускатель ставить…