РЕКЛАМА НА ФОРУМХАУС После включения контроллеру ZONT требуется некоторое время для автоматического поиска новых датчиков. У меня этот процесс занял две-три минуты. В результате было найдено четыре новых датчика. Полученный результат удивил. И вот почему. К каналу AN1 был подключен выход 3V3 преобразователя интерфейса. С учетом множителя мы должны были увидеть значение 33 или близко к этому, а не 41. Для канала AN3 в тестовой программе вообще не передавалось никакого значения и откуда взялось значение 1,9 в общем то не понятно. Ну и на канале AN0 по идее должно было быть 0 В. А вместо этого, какие-то прочерки. Радует то, что все нужные нам физические величины выведены правильно, значение канала AN2 соответствует расчетному значению. С остальным буду разбираться.
Ну что же. Изучение документации, мультиметр в зубы и обращение в техническую поддержку позволили расставить все на свои места. Проще всего оказалось разобраться с каналом AN1. Измерение напряжения мультиметром показало значение 4,1В. Поэтому выведенное с учетом умножения на десять значение 41 соответствует результату. А вот почему там именно такое значение, выяснить не удалось. Да, в общем-то, не очень и хотелось. С каналом AN3 все тоже оказалось нормально. При старте каждому каналу присваивается начальное значение, которое потом меняется на реальное значение. Для канала AN3 оно установлено значением 19. С учетом делителя на десять как раз получается 1,9. Так как мы это значение не обновляем, то мы и видим его постоянно. Опрос датчиков в моем случае происходит один раз в секунду. С учетом четырех подключенных датчиков каждый конкретный датчик опрашивается раз в четыре секунды. Обмен данными с сервером контроллер ZONT осуществляет в среднем раз в минуту. Поэтому предустановленное значение в нормально работающей системе увидеть практически не реально. А вот в нашем случае становится сразу (после изучения документации) понятно, что реальные данные для канала не поступают. Начальные значения по каждому каналу различны, но имеется возможность установки других значений в настройках модуля. По поводу канала AN0 все оказалось неоднозначно. Если зайти в настройки контроллера ZONT датчиков температуры, то там данные по каналу выводятся правильно. А вот во вкладке «Отопление» выводятся прочерки. Причем касается это только значения 0,0. Другие значения выводятся нормально. И случилось такое после перехода на новую версию программного обеспечения личного кабинета ZONT. Кстати, где то на форуме по контроллерам MyHeat, читал, что у этих контроллеров тоже проблемы с выводом значения 0,0. Но так как такое значение практически никогда в обычной жизни не встречается, то на это решили не обращать внимания. Тем более на графиках все выводится нормально. В общем, с показаниями разобрались. Теперь попробуем вывести нужные нам значения.
Написание программы для Arduino для меня новый этап в жизни. С одной стороны вроде все понятно. С другой… В общем не сильно пинайте ногами. Первым делом нам нужно восстановить значение счетчика из полученных от него данных. Данные занимают четыре байта. В приемном буфере они располагаются в следующем порядке: 0xC3, 0x08, 0x00, 0x00. Нам же надо получить значение 0x000008C3 = 2243. Сделать это довольно не сложно. byte EZont[3] = { 0x00, 0x00, 0x0C}; byte EBuf[4] = { 0xC3, 0x08, 0x00, 0x00 }; unsigned long EData = (EBuf[0] < 0) & 0xFF) + (EBuf[1] < 8) & 0xFFFF) + (EBuf[2] < 16) & 0xFFFFFF) + (EBuf[3] < 24) & 0xFFFFFFFF); Следующим шагом надо выделить нужную нам часть этого значения. unsigned int ECounter = EData % 10000; Отсекаем значение после запятой. ECounter = ECounter / 10; Вычисляем значение для контроллера ZONT с данными формата DS18S20. byte Temp_L = ECounter / 10; byte Count_Remain = ECounter % 10; switch (Count_Remain) { case 0: EZont[2] = 0x0C; break; case 1: EZont[2] = 0x0A; break; case 2: EZont[2] = 0x08; break; case 3: EZont[2] = 0x07; break; case 4: EZont[2] = 0x05; break; case 5: EZont[2] = 0x04; break; case 6: EZont[2] = 0x02; break; case 7: EZont[2] = 0x00; break; case 8: EZont[2] = 0x0F; Temp_L += 1; break; case 9: EZont[2] = 0x0D; Temp_L += 1; break; default: EZont[2] = 0x0С; } EZont[1] = Temp_L * 2; В общем, как то так. Осталось только проверить на практике. Как проверю и отлажу выложу скетч полностью.
Несколько слов о канале AN3. Вернее о переводе литров в килограммы и метры кубические. На газовых заправках отпускают жидкий газ в литрах, а не в килограммах, что усложняет понимание того, сколько газа заправлено в баллон фактически. Вернее цена указывается за литр, а заправляют баллоны по весу. Если мы берем сжиженный углеводородный газ пропан-бутановой смеси (этот газ называется LPG (Liquified Petroleum Gas) или СПБТ (смесь пропан-бутан техническая), то, в среднем, 1 литр сжиженного газа весит 0,43 кг. И его объем составляет 0,19 м³. Соответственно в счетчике 224 л соответствуют 0,224 м³, что в нашем примере будет соответствовать 0,51 кг. Расчет является условным. В том числе потому, что счетчик предназначен считать расход газа в газопроводе, а там используется, как правило, метан. Если кто-нибудь пробовал использовать такой счетчик для газа в баллонах, поделитесь информацией. Ну а пока будем придерживаться указанных соотношений. Ниже представлен результат работы тестового скетча. Как мы видим, все значения совпадают с предварительно рассчитанными значениями и установленными физическими величинами.
В общем то все необходимые изыскания проведены и проверены на реальном железе. Можно воплощать в жизнь. И здесь у меня нет однозначного решения, на каком конкретном оборудовании это делать. Делать на резинках и шнурках (в смысле на проводках) не хочется. Поэтому будем разрабатывать законченное устройство со своим корпусом и печатной платой. На плате разместятся радиомодуль nRF24L01, модуль связи с контроллером ZONT IMB-2131 и пока не определенный контроллер управления. На роль данного контроллера управления на данный момент рассматривается три претендента. MEGA 2560 PRO MINI, Arduino NANO и модуль на базе STM32. А еще лучше, чтобы можно было использовать любой из этих перечисленных контроллеров. Правда, не уверен, что такое осуществимо при компактной печатной плате. Поэтому хотелось бы узнать у участников форума, какой из вариантов был бы более предпочтителен для Вас? По просьбам выкладываю файл описания на модуль IMB-2131.
Автор кому обещали ? Вы форумом не ошиблись ? Тут дачники сидят, а не айтишники .. 2 страницы многобукв в пустоту. Кому эти счетчики нужны? И кому их надо к зонту подключать? Одному человеку из 1000?
Может и ошибся. Хотя дачником может быть и айтишник. Тем более что сама тема в общем то про дачу. Вернее про контроль и мониторинг потребляемых ресурсов. Кому это нужно? Мне нужно. С учетом что у нас в стране где то 140 000 000 человек, то может быть полезным сотне тысяч человек, если отвечать на последний вопрос. Я был бы рад, если пригодилось бы нескольким людям. Надеюсь ответил на все вопросы.
Если Вы дачник, встретьте 20 Ваших соседей и спросите их они знают что означает слово скетч? Они знают марку счетчика элехант? И Вы поймете о чем я пишу.
В общем то именно сосед по даче и попросил меня сделать устройство контролирующее расход газа и позволяющее определять время, когда закончится газ. Я сделал данное устройство. Работает по всей Москве и окраинам. Единственный недостаток, дорогие комплектующие. Потом он же спросил, а можно ли сделать дешево и массово. Я сказал, что не знаю как. И тут вот подвернулись эти счетчики Элехант. Кстати, уникальные счетчики газа. И дешевые. Так что если получится использовать их не по назначению, то будет счастье очень многим дачникам. Другой вопрос, зачем рассказывать о технических деталях? Ну так я сам не знаю, удастся ли решить поставленную задачу. Поэтому и решил открыть данную тему. Для тех кому интересно.
Пока нет определенности с контроллером управления, давайте рассмотрим подключение к нашему устройству модуль мониторинга электроэнергии на базе PZEM-004T, который позволяет измерять переменные напряжение и ток с помощью токового трансформатора и является, по сути, электросчетчиком, имеющим следующие характеристики: 1. Напряжение 80…220 В с точностью 0,1 В и погрешностью 0,5%. 2. Ток 0…100 А с точностью 0,001 А и погрешностью 0,5%. 3. Активную мощность 0…23 кВт с точностью 0,1 Вт и погрешностью 0,5%. 4. Коэффициент мощности 0…1 с точностью 0,01 и погрешностью 1%. 5. Частоту 45…65 Гц с точностью 0,1 Гц и погрешностью 0,5%. 6. Потребленную электроэнергию 0…9999,99 кВт/ч Про данный модуль есть много информации и различных обзоров, в том числе описание готовых устройств. Поэтому здесь мы не будем рассматривать протокол обмена с данным модулем, а поговорим о том, как полученные данные, в конечном счете, передать контроллеру ZONT. Наше устройство может получить данные от модуля PZEM-004T напрямую через последовательный порт. Это самый простой способ, но не совсем вписывающийся в общую концепцию. Раз уж счетчики воды и газа передают данные по Bluetooth, то было бы логично передавать данные от энергомонитора таким же образом. Как мы выяснили ранее, в пакете для передачи данных есть 17 байт данных. В принципе не вижу проблем использовать их все целиком под данные. Хотя не все так однозначно. Буду собирать новый стенд и тестировать.
Тестирование выявило довольно неожиданные результаты. Но все по порядку. Ниже представлен один из сгенерированных пакетов, имитирующих счетчик. Эксперименты с выносным дисплеем Элехант показали, что на обнаружение дисплеем счетчика тип пакета (были опробованы разные типы) и значение MAC адреса не влияют. Более того, намеренное искажение контрольной суммы пакета так же никак не сказалось. Дисплей уверенно обнаруживал и выводил информацию о счетчике. Зато в пакете данных были найдены два байта, в которых хранится информация о типе счетчика. В представленной картинке они выделены голубым цветом. Первый байт (0x01) указывает на счетчик газа, второй (0x32) на тип счетчика. В данном случае это оказался счетчик СГБД-4,0ТК. Но, если в этих байтах выводить значения, не определенные в дисплее, например, 0x02 0x31, то счетчик не определяется и на экран дисплея выводится информация «НЕТ ДАННЫХ». Сразу оговорюсь, фирменное приложение на смартфоне такой пакет не воспринимает и счетчик не обнаруживает. Продолжая тестирование выносного дисплея я нечаянно установил в заголовке вместо [ 02 1B ] значение [ 02 11 ]. Дисплей проглотил и такой пакет, однако вместо номера счетчика № 00000628 вывел №02705268 и значение счетчика вместо 224,3 л показало 213,0 л. При этом название и тип счетчика вывелись правильно. Вывод пока получается следующий. Передавать таким способом собственные данные можно. А вот передавать одновременно несколько разных значений при использовании выносного дисплея, возможно и не получится, по крайней мере нужно тщательно все протестировать. В заключении несколько изображений имитации разных счетчиков.
Пока обдумывал, как лучше связать воедино всю полученную информацию, появилась информация, что есть такой адаптер OWA-2224. В нем есть встроенный радио модуль nRF24L01. В принципе данный адаптер является как бы аналогом модуля IMB-2131, но данные от датчиков он принимает по радиоканалу. Сразу пришла мысль использовать его напрямую для считывания показаний счетчиков Элехант. Но тут ждал облом. Настройки адаптера не предусматривают работу радио модуля в нужном нам режиме. Вдобавок данный адаптер еще находится в режиме тестирования, и его нет в продаже. Однако мне согласились его дать для тестирования под этот проект. Ну что же, задача несколько упростилась с одной стороны, но и довольно кардинально изменилась. Теперь наше устройство должно периодически считывать информацию со счетчиков Элехант по Bluetooth, обрабатывать полученную информацию и передавать ее по радиоканалу адаптеру OWA-2224, который передаст ее уже контроллеру ZONT. А использоваться для этого будет один и тот же радио модуль nRF24L01. На следующей неделе адаптер будет у меня и можно будет его опробовать.
Что может быть причина экран через раз включаются на газовом счётчике элехант проходит время он работает снова