Снятие показаний счетчиков в домашних условиях

в 19:29, , рубрики: android, diy или сделай сам, esp8266, умный дом

Снятие показаний счетчиков в домашних условиях - 1 В прошлой статье я рассказывал как снимал показания со счетчиков воды. С тех пор прошло уже несколько лет. Устройство так и продолжает работать и за все это время я его не трогал. Но мне этого показалось мало, т.к. в доме были другие устройства, с которых необходимо было снимать показания. Об этом я и хочу поговорить.

Счетчик электроэнергии

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

Снятие показаний счетчиков в домашних условиях - 2

На каждом счетчике указано какое кол-во импульсов он совершает на 1кВт*ч. У меня установлен старый счетчик электроэнергии и у него нет специальных выводов для подсчета этих импульсов. Но у него есть светодиод, который мигает в такт этим импульсам. Значит нам надо как-то определять, что светодиод мигнул. Для этого я решил использовать фототранзистор, который меняет свое сопротивление в зависимости от его освещенности. Чтобы он реагировал только на светодиод, фототранзистор был установлен во фрагмент квадратного деревянного бруска и приклеен скотчем к счетчику. Как получилось видно на фото ниже.

Снятие показаний счетчиков в домашних условиях - 3

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

Датчик протечки воды

В качестве образца взял обычный датчик протечки GIDROLOCK WSP. Его принцип работы схож с фототранзистором, только он меняет свое сопротивление от попадания на него воды.

Доработка платы

Я немного доработал старую плату. Теперь схема выглядит следующим образом

Снятие показаний счетчиков в домашних условиях - 4

Были сделаны следующие изменения:

  1. В схему добавлена микросхема CP2102, чтобы к плате можно было подключаться напрямую без переходников
  2. Увеличено кол-во выводов до 4(М1, М2, М3, М4), что позволяет одновременно подключить большее кол-во счетчиков
  3. Добавлены вспомогательные резисторы(R1..R8), что позволило конфигурировать выводы как необходимо

Теперь каждый вывод можно настроить для:

  • подключения светодиода
  • подключения кнопки
  • подключение счетчиков(датчиков)

При использовании фототранзистора и датчика протечки их минимального сопротивления может быть недостаточно, чтобы напряжение опустилось до уровня логического нуля. Для этого к каждому выводу был добавлен делитель напряжения.

Снятие показаний счетчиков в домашних условиях - 5

Давайте на примере датчика протечки рассчитаем делитель напряжения. Допустим датчик подключен к выводу M1. У него вспомогательные резисторы R1 и R2. Напряжение питания(U) ESP 3.3V. Сопротивление датчика протечки(Rd) при попадании на него воды становится 10кОм. Нам необходимо добиться, чтобы напряжение $U_2$ было ниже напряжения уровня логического нуля. Для ESP это 0.8V, возьмем 0.6V. $R_1$ нам не нужно, соответственно примем равным 0. Формула для расчета напряжения $U_2$:

$U_2=Ufrac{R_d}{R_2+R_d}$

Выделим $R_2$:

$R_2=R_dfrac{U-U_2}{U_2}$

, где $R_d$ — это сопротивление датчика

Подставим известные значения в формулу

$R_2=10000cdotfrac{3.3 - 0.6}{0.6}=45000 Ом$

, округляем до ближайшего большего и получаем 47кОм.
Для фототранзистора расчет делается аналогично, только Rd равно сопротивлению фототранзистора при освещении его светодиодом.

Прошивка

Как и раньше, прошивка собрана при помощи online-конструктора. Старый скрипт был модифицирован под 2 режима работы: снятие показаний счетчиков воды и снятие показаний электросчетчика. Соответственно есть 2 окна настройки:

Снятие показаний счетчиков в домашних условиях - 14 Снятие показаний счетчиков в домашних условиях - 15

При желании можно все объединить и добавить что-то свое. При отладке у меня одновременно были подключены 2 счетчика воды, датчик протечки и светодиод.
В режиме снятия показаний счетчиков воды, данные передаются каждые 60 секунд при условии если были какие-либо изменения в показаниях. В режиме снятия показаний счетчика электроэнергии, данные передаются каждые 20 секунд без каких либо условий. Данные по-прежнему передаются на thingspeak.com
Т.к. в новой схеме отсутствует кнопка для перехода в режим настроек, было принято решение при загрузке переводить устройство в режим настройки на 60 секунд. Если в течение 60 секунд никто не подключился к устройству, то дальше стартуем режим снятия показаний. Если кто-то подключился, то выход из режима настроек либо по сохранению данных на странице либо перезагрузив устройство.

Доработка приложения

Показания счетчика электроэнергии необходимо было передавать в отдельный канал, поэтому в новой версии приложения я добавил возможность добавлять несколько каналов. Все данные хранятся в локальной SQL базе, чтобы можно было легко и быстро строить графики. Т.к. данные по электросчетчику я отправлял каждые 20 сек это отразилось на кол-ве данных, а следовательно, и скорости их получения. Для сравнения, за все время снятия показаний по водосчетчикам накопилось около 72000 записей, а по электросчетчику примерно за 7 месяцев около 2,6 млн. После оптимизации запросов в базу, удалось увеличить скорость выборки в несколько тысяч раз(сам не ожидал такого прироста).
В новой версии были добавлены:

  1. виджет электросчетчика
  2. линейные графики
  3. возможность поделиться виджетом или графиком с другими людьми
  4. возможность работы с несколькими каналами
  5. оптимизация скорости работы

Итого

После всех доработок, я могу получить следующую информацию:

  1. текущее показание счетчика
  2. текущее потребление
  3. информацию по потреблению и расходу электроэнергии за какой-то промежуток времени

Конечно, напрашивается вопрос почему я не сделал устройство автономным(на хабре есть несколько статей на эту тему). Если делать устройство автономный, то необходимо передавать данные несколько раз в день, а я же хотел видеть данные почти в режиме реального времени.
Приложение можно использовать не только с моим устройством, но и просто как клиент к thingspeak.com для отображения каких либо графиков или значений. На данный момент приложение красиво отображает показания счетчиков воды и электроэнергии, если у кого-то будут другие идеи, что можно добавить, то пишите мне в личку.

Полезные ссылки

Фото устройства

Снятие показаний счетчиков в домашних условиях - 16
Снятие показаний счетчиков в домашних условиях - 17

Автор: LAVElek

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js