Супперовый ивент “Kyiv Mini Maker Faire” будет совсем скоро. Специально под него решил подготовить демостенд с моим ЭнергоМонитором и за одно поставить эксперимент - адаптировать его чтобы он мог работать локально, без внешних серверов.
Т.е. дома ставится коробочка – Raspberry PI, которая собирает данные со счетчика, со специальных датчиков и по желанию можно подключить экран, чтобы сразу все было видно :) или заходить удаленно, как на локальный вебсервер.
ЗЫ Ищу – волонтера , готового поучаствовать в этой выставке (20-21 мая) в Киев, посидеть на стенде Море интересных впечатлений, гарантируется! Пишите, будет интересно!
Желание контролировать и управлять есть у многих :). Но какие-же мы Наполеоны, если квитанция за электричество или газ приводит нас в недоумение. А почему столько? Почему я заранее не знал, что будет такая сумма! Это все я столько потребил или кто-что в мое отсутствие?
Мейкерский подход, тем и хорош, что можно на коленке собрать, пусть топорный, но дающие результат девайс. Мне нужно было простое и эффективное устройство, хотя бы отчасти отвечающее на эти вопросы и главное - за пару дней и в продакшен.
Перелопатив интернет, наткнулся на информацию, что многие электросчетчики имеют светодиод для отображение кол-ва прошедшей энергии. Очевидное прямо перед глазами! Так родился энергомонитор, который, в базовой версии собирает показания потребленных квт*ч за единицу времени.
Стоит сказать, что это не ноу-хау, есть несколько украинских решений, к примеру ecoisme. Есть opensource решения в том числе достаточно известные emoncms. Но одно - не доступно и дорого, другое - чересчур сложное в настройке. Многие подключают подобные решения к системам умных домов (openHAB или MajorDoMo). Но тут оказалось, что визуализация страдает, периодическая агрегация данных за месяц, год делается как-то очень сложно. Добавить расчет стоимости превращается в проблему.
Поэтому за основы были взяты крайне популярные и гибкие средства для визуализации графиков и работы с метриками, часто используемые для мониторинга высоконагруженных систем.
Краткий принцип работы: esp8266 собирает кол-во импульсов за единицу времени, производит первоначальные расчеты и отправляет через wifi по MQTT на сервер, где mosquitto mqtt broker принимает эти данные, mqttwarn фильтрует и перенаправляет необходимы сообщения с данными в базу influxdb(time-series database), и финальное отображение происходит с помощью grafana (платформа для аналитики и мониторинга).
Более подробно работа устройства, код и схемотехника будут описаны в следующих постах.
В итоге: получилось полезное устройство, выявившее интересные закономерности в потреблении электричества. К примеру, насколько затратно мыть посуду руками, при наличии электробойлера и т.д.
Данную штуку можно использовать для мониторинга обесточенности объектов (дом, офис, склад и т.д.), планировать и оценивать результаты разных энергоэфективных подходов, обнаруживать неучтенные источники потребления и т.д.
В планах - добавить несколько разных способов съема данных: через токовый трансформатор, с умных розеток и т.д.
Если у вас есть идеи, как можно еще использовать данное устройство или предложения по монетизации, то я буду участвовать в Kyiv Mini Maker Faire 20-21 мая 2017г, где и можно будет лично пообщаться. Или пишите. Всегда рад новым знакомствам.
Решил, на себя примерить известный стереотип, ты же "ит-шник, можешь работать где угодно". Понятно, что это трудно достижимая цель. Для нормальной работы, кроме самой возможности, должна быть свежая голова, приемлемое окружение и правильные задачи не требующие длительного погружения в процесс. По феншую: не нужно мешать мухи с котлетами, совсем, отдельно дела - отдельно отдых.
Я сейчас сотрудничаю с #Upwork, если кто не знает, то большая часть разработчиков в этой компании работают удаленно. Сам Upwork активно проповедует удаленный способ работы и немало для этого сделал. В общем решил пробовать, итак мелкий трип по Европе, с остановками во Львове Варшаве, Берлине, Лейпциге, Кракове.
Супперская идея - сеть коворкингов. Удобно, платишь однажды, работаешь в любом коворкинге. Первый чекин во Львовском #ihub.
ЗЫ: Какой коворкинг в центре Варшаве самый супперовый?
Двух проходной выключатель с обратной связью на основе esp8266
Часто наборы для создания умных домов, страдают излишнем упрощением. К примеру, я бы хотел, чтобы выключатель контролировался не только удаленно, но и непосредственно самим выключателем, как мы привыкли, вкл/вкл прямо на месте. Более того, мне важно знать статус этого выключателя, вдруг я его включил и забыл выключить? И конечно, это IoT должно подключаться к моему серверу, управления дома, чтобы все контролы были под рукой и могли участвовать в общей цепочке принятия решений.
Корпус
В качества корпуса я использовал готовый, который можно купить на http://kosmodrom.com.ua/el.php?name=UNI-M-BOX-050-01BE Состоит из двух алюминиевых профилей и двух пластмассовых щечек. В разобраном виде это выглядит, вот так:
Схемотехника
Здесь все достаточно просто: из интересного - я обнаружил, что при загрузке esp8266 имеет высокий уровень на GPIO и только потом устанавливается в заданный уровень. Чтобы избежать “мигания” при включении, я использовал логический инвертер 74HC04. (Подозреваю, что это пушкой по воробьям и можно было использовать MOSFET. А что вы используете для таких целей?) Таким образом, логическая единица на GPIO 5 у меня инвертируется и далее нужно использовать в коде LOW для включения и HIGH для выключения.
Для отрисовки схемы я использовал KiCad. А что вы используете? В качестве управляющего реле используется реле SSR-40DA. Никто не мешает использовать любую другую которую вытянет 74HC04.
Дополнительную проблему составила дальность действия устройства. Мне необходимо было, чтобы он мог работать на расстоянии порядка 40 метров и сигнал мог проходить через разнообразные перекрытия из дома на улицу. Эксперименты с esp-12 показали, что он не вытягивает это расстояние и пришлось использовать esp-07, у которого есть возможность подключить внешнюю антенну. Интересной особенностью esp-07, является то, что для работы внешней антенны нужно отпаять конденсатор идущий к внутренней - керамической антенне. Вот тут подробное обсуждение.
Плата
Не мудрствуя долго, я собрал все схему на макетной платне 4x6см.
Практически в собранном виде это выглядит вот так
По плану предполагалось что блок питания будет внутри корпуса, но пока я его подключал, он умер смертью храбрых и я решил подключить внешний, чтобы не тратить время на поиск нового.
Кроме того я не припаивал MCU для того, чтобы иметь возможность ее просто перепрограммировать. К сожалению в esp-07 всего 1M памяти и удаленное обновление OTA мне недоступно.
Home Automation Server
С програмной частью оказалось все сложнее. У меня был ряд требований:
Работа по mqtt протоколу
Включение/выключение возможно как удаленно, так и выключателем
Необходимо постоянно знать статус выключателя
И самое главное, работа выключателя без сети или без mqtt брокера. С этим оказалось все сложнее
Совместная работа с home-automation сервером
Работа по доменным именам, а не ip
Так как я планирую сделать несколько устройств и все они должны дополнять друг друга и работать совместно. Мне нужно было использовать, какой-то общий сервер для визуализации и отслеживания всей информации от этих устройств. В качестве него я выбрал home-assistant.io, опенсорсное решение на питоне, которое поддерживает много полезных протоколов. Все это было установленно на Raspberry PI 2, там же стоит mqtt брокер, DHСP и DNS сервисы, через которые я управляю IP адресами всех устройств.
Программа
Исходники доступны на GitHub. Код более менее очевиден (disclaimer: нуждается в рефакторинге и вылизывании, но он рабочий :)
Из интересных моментов:
Я использовал библиотеку PubSubClient для работы с MQTT и отталкивался от примера с неблокирующим реконектом к брокеру. Но в действительности реконект блокирует loop и если вы в этот момент, нажмете кнопку, с большой вероятностью, что это событие будет пропущено. По этому поводу я создал тикет и автор подтвердил, что это действительно так. (Как бы это обойти?) Чтобы оптимизировать работу, я увеличил время между попытками реконекта, таким образом вероятность попасть на реконект уменьшается, а также использую вместо кнопки именно выключатель - это увеличивает время подачи необходимого сигнал для обнаружения его в loop()
Инсталяция
Инсталяция состоит из двух частей:
Установка окружения
Необходимо установит home-assistan.io (HA)
Поставить MQTT брокер, сконфигурировать его и подключить к HA. Я использую mosqutto broker
Добавить в конфиг секцию HA, конфигурацию для этого выключателя
Заливка скетча
Необходимо поправить credentials, согласно настроек вашей сети
Скомпилировать и залить на esp8266 c помощью Arduino IDE или PlatformIO, ну или еще как-то :)
Ссылки
Вся техническая документация на github https://github.com/glebv/esp8266-wifi-relay-2way-switch
Буду рад обсудить все замечание по этому проекту или помочь с инсталяцией и сборкой!
Для моего ирригационного проекта, потребовался малопотребляющий контроллер. После краткого изучения, я остановился на attiny85. Все профессионалы давно с ним знакомы, но я не они, поэтому ниже постоянно обновляемый пост с полезными ссылками, которые мне пригодились.