|
Одна из важных функций Умного Дома - учет и анализ расхода ресурсов. Некоторое время назад я подключил с помощью USB/CAN адаптера свой электросчетчик Меркурий 230 и написал собственную программу считывания показаний. Это позволило не только вести учет расхода электроэнергии в целом и отдельно по фазам, но и воочию, детально наблюдать параметры электроснабжения. Записывая все значения в базу данных и используя такие библиотеки как jpGraph и Open Flash Chart 2, в Web-интерфейсе Умного Дома я вывел несколько полезных графиков. Таким образом я имею возможность отслеживать потребление не только по месяцам, но и по дням, часам, минутам и даже секундам! Совсем другое дело обстоит с учетом потребления газа. Механический газовый счетчик не имеет никаких интерфейсов, поэтому считывание и запись показаний в БД возможна только вручную. Но если раз в месяц, если не забывать, еще можно записать показания счетчика, то делать это каждый день крайне утомительно. Таким образом появился вопрос - можно ли как-то учитывать потребление газа автоматически? Безусловно, существуют системы автоматического учета потребления газа со всеми необходимыми интерфейсами и протоколами, но стоимость такого оборудования, программного обеспечения, согласования монтажа этой системы со всеми газовыми инстанциями и собственно самого монтажа выльется в копеечку. Оптическое считывание информации с табло счетчика в принципе возможно. Квитанции об уплате штрафа за нарушение правил дорожного движения с фотографией на память тому подтверждение. И ведь в целом не обязательно фотографировать и распознавать целиком табло (для чего требуется фотокамера и освещение), можно привязать какое-нибудь устройство к конкретной точке или сектору на дисковом табло. Например, часто проход через ноль закрашен красным (более темным) цветом. Но вид увешенного проводами счетчика вряд ли будет воспринят представителем газоснабжающей организации с энтузиазмом. Как еще можно учитывать потребление газа? У меня появилась идея подключить модуль на базе DS2406P (точно так же как я это уже делал с насосом Grundfos MQ) параллельно с газовым клапаном котла. Газовый клапан открыт только в процессе сжигания газа, а значит учитывая время его работы и зная номинальное расход газа котлом (указано в документации и постоянно для немодулирующих горелок) можно довольно точно учитывать потребление газа. Выход? Конечно. Но мой котел оснащен продвинутой электроникой. Может быть он сам ведет учет работы газового клапана? Оказывается ведет! Детально изучив документацию я нашел регистр, который отвечает за такой учет. Называется он "Время работы котла в режиме отопления" и измеряется в часах. Зная, что мой котел потребляет 4,7м3 газа в час необходимо только перемножить эти значения. Конечно, такой учет не будет абсолютно точным, поскольку, по всей вероятности, номинальное потребление зависит от давления в магистрали. Также не стоит забывать, что могут быть другие потребители, такие как газовая плита. Однако сделав расчеты я пришел к выводу, что газовое отопление потребляет по меньшей мере 90% от всего потребления газа в год. А если прибавить 10% к тому, что потребил котел, получится фактически то число, которое отображается счетчиком. Но тут случилась загвоздка. Я не знал какой командой получить значение этого регистра... В предыдущей статье я рассказал о том, как мне удалось подключить котел Vaillant atmoVIT к персональному компьютеру посредством RS-232 интерфейса. У меня также получилось заглянуть в протокол общения между программой vrDIALOG и котлом. И хотя у меня по-прежнему нет описания протокола, эмпирически получен некоторый список команд, с помощью которых я могу получать многие параметры работы котла, а также и задавать свои значения в те регистры, которые допускают запись. И все дело в том, что программа vrDIALOG, видимо, адаптируется к варианту (модели) оборудования. И хотя в демо-режиме программа отображала регистр, отвечающий за время работы котла в режиме отопления, будучи подключенной к моему котлу, она это значение в закладке Диагностика не отображала. Поэтому мне пришлось немного глубже коснуться протокола Vaillant и представить более детальное описание с указанием фактических команд и регистров системы DIA. Напомню, что котлу посылаются команды вида: x07x00x00x00xC2x01x7C vrDIALOG формирует команды размером 7 байт 1 байт: длина команды, включая контрольную сумму 2 байт: запрос значения 00h или запись значения 80h, 03h в ответе котла означает ошибку 3-... байты: команды котлу и ответы котла последний байт: 8-bit CRC За что отвечает 6 байт стандартной команды выяснить не удалось, так как независимо от значения этого поля, котел возвращает одинаковые значения. В немецких источниках есть предположение, что это длина ожидаемых данных, но котел, видимо, игнорирует это поле. Алгоритм CRC я бы назвал нестандартным. Во всяком случае ничего подобного мне никогда не попадалось. Пример на PHP (переделать на C займет 2,5 секунды) Таким образом, диапазон значений, который используется для передачи команд от 0 до 256. С помощью vrDIALOG удалось выяснить только некоторые команды. Имея функцию работы с CRC я написал простейшую программу, которая по очереди отправляет котлу команды из всего диапазона возможных значений. Конечно, PHP не лучший вариант для написания такого рода "драйверов", но иногда и микроскопом гвозди забивают. В результате работы программы получены следующие результаты. Как видно из Проведя анализ предлагаю следующую интерпретацию команд и значений. В таблице отсутствуют те команды, в ответ на которые котел вернул ошибку. Кроме вышеперечисленных ответов, котел может вернуть сообщения типа: 030602 - Значение успешно записано в регистр. 030107 - Возможно, ошибка контрольной суммы. 030305 - Ошибка. Некорректная команда. Отдельный интерес представляет команда ABh, с помощью которой можно получить информацию о текущем статусе котла. Этот статус в документации Vaillant описан как S.01, S.02. Таким образом можно обращаться как к отдельным регистрам (элементам) котла, так и запрашивать самодиагностические коды электроники. Несколько слов о кодировании температуры. В части регистров это простое преобразование HEX->BIN. Например команда e7h (максимальная температура бойлера). Значение 46h нужно понимать как 70 градусов. Сложнее с командой 18h (температура подачи). Котел возвращает данные 060003c400fd. Читать это значение нужно так: 3C -> 60 градусов 40 -> 64/255 -> 0,25 градуса Значение температуры 60,25 градуса. Примечательно, что это информация разнесена по 3 байтам: 03 c4 00 Значения типа 00h и 01h очевидны без пояснений. Но встречаются также значения вида 0Fh и F0h. Это состояние активности элемента - активен или не активен. Полезными для меня показались такие параметры котла как общее состояние котла системы самодиагностики, общее количество часов работы котла, состояние горелок, температура подающей линии котла, температура отходящих газов (выхлопа), значения среднего и максимального времени розжига, а также общее количество неудачного розжига с первой попытки. С помощью простейшей программы я считываю эти параметры котла и записываю в базу данных системы Умный Дом. Далее эти данные используются в программе управления отоплением и для отображения работы системы в Web-интерфейсе. Но самым главным результатом этой работы стала возможность считывать значение, определяющее время работы котла в режиме отопления, а значит потребление газа. Конечно, разрешающая способность такого учета низкая. Минимальное величина учета - час, а значит почти 5 м3 газа. Но это, согласитесь, лучше, чем ничего. Да и с учетом тех расходов, которые происходят в зимние месяцы (от 50 до 70 м3 в сутки) такая шкала вполне приемлема. Как только наберется достаточная статистика обязательно сообщу о том, насколько полученные данные расходятся с показанием счетчика. В котлах Vaillant, как, впрочем и в некоторых других марках, таких как Protherm, Wolf, имеется поддержка шины E-Bus. В приведенном выше примере видно, что котел Vaillant atmoVIT поддерживает работу с портом RS-232, но это не единственный способ общения с котлом. Более прогрессивным и гибким способом коммуникации является подключение компьютера, также как и других принадлежностей - регулятора calorMATIC и модулей расширения к единой шине E-Bus. При подключении к общей шине применяется принципиально иной подход. Например, при наличии двух котлов и регулятора calorMATIC 630 с помощью компьютера можно получать данные и управлять всеми этими устройствами, имея всего один адаптер, подключенный к любому свободному разъему E-BUS в колодке котла или регулятора. Есть данные что адаптер TTL-RS232 работает не со всеми котлами марки Vaillant. Возможно в последних моделях и вовсе нет прямой поддержки RS232, поэтому единственным вариантом подключения котла к компьютеру остается цифровая шина E-Bus. Для тех, кто интересуется этой темой приведу некоторые документы на тему шины E-Bus. Нужно понимать, что компьютер к шине E-Bus подключается не напрямую, а через адаптер. Для E-Bus существуют адаптеры как для USB, так и для RS232 интерфейса. Стандартная для E-Bus скорость 2400 бод. При использовании шины e-Bus для управления котлом требуется совершенно иные подходы в программировании, чем те, что описаны в этой статье. Так как у меня успешно работает прямое подключение котла к порту RS232, я не стал детально разбираться в протоколе и не использовал адаптеры eBUS, однако буду признателен за любую полезную информацию по теме управления котлами Vaillant и шине E-Bus.
|