Обязательно. Но боюсь без спецов команды 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к
тут есть момент, тк контроллер старый, нет карты регистров (и производитель сказал поищем…), а в текущем шаблоне не работает вкл/выкл, если только пускатель ставить…
тоже вариант, учитывая рыночную стоимость подобных систем вполне себе гуманный
сдается мне, что ничего не должно было принципиально поменяться в регистрах
В шаблоне тут действительно не работает выключатель, но он сработает, если заставить силой поверх нуля записать еще раз ноль в соответствующий регистр.