Предлагаемое решение («костыль») позволяет обойтись минимум ручных операций именно на этом этапе. Контроллер датчиков подключается к MQTT-брокеру и сам рассказывает про свои датчики и устройства в определенном формате в специальных топиках, затем небольшой скрипт на сервере умного дома создает соответствующие этим датчикам файлы конфигурации, после чего нужно только вручную определить их в специфичные для дома группы и можно приступать к созданию сценариев управления.
Конкретно эта прошивка работает на модулях с ESP-8266 (в том числе и на Sonoff Basic Switch и Sonoff Touch Wallswitch) с P&P скриптами для OpenHAB и HomeAssistant, но сам способ выдачи plug&play информации можно использовать и в других проектах.
Таким вот простым и прозрачным способом — мы избавляемся от довольно большой головной боли, если нужно подключать большое количество управляемых по сети устройств в нашем самодельном умном доме.
Немного поподробнее расскажу про собственно прошивку для ESP-8266. Ее исходные коды (и скрипты поддержки для OpenHAB и HomeAssistant) можно найти на Github (конкретно скрипты поддержки лежат здесь).
Она работает на стандартных модулях ESP-8266 (а также на Sonoff Basic Switch и Sonoff Touch Wallswitch), поддерживает обновление прошивки на лету (ArduinoOTA), а также имеет простейший веб-сервер для первоначального конфигурирования параметров WiFi-сети и задания IP-адреса MQTT-брокера.
Структура прошивки модульная и можно довольно легко добавлять свои датчики/устройства. Текущий список включает в себя:
После выбора необходимых устройств в esp-sensors.h, компиляции и прошивки — модуль переключится в режим конфигурирования — поднимет свою WiFi-сеть с именем типа «espx-0023cb541», к которой нужно подключиться (можно любым смартфоном) с паролем из того же файла, затем зайти на 192.168.4.1 и задать логин и пароль сети, а также IP-адрес брокера. Эти параметры сохранятся во флеше, так что второй раз не понадобиться этого делать. При невозможности подключиться к заданной сети в течении одной минуты — оно снова переключится в режим конфигурирования на три минуты, а потом будет повторять этот цикл до успешного подключения.
Для тех кто соберется править эту прошивку, упомяну, что каждый модуль датчиков/устройств разбит на шесть функций:
habr.com
В этой части я расскажу какие недостатки были выявлены за четыре года эксплуатации системы и какие еще полезные штуки удалось внедрить.
Ну и небольшой спойлер: под катом будет краткое описание “очередной поделки на esp8266 с преферансом и куртизанками”.
Итак, прошло четыре года (с начала эксплуатации первых модулей так вообще шесть) В целом система показала себя хорошо, но всплыли два недостатка, впрочем, вполне ожидаемых.
Первый — централизованность. Да, это плохо, да, об этом я знал, но опыта производства конечных автономных устройств не было, да и выбранный в качестве основного протокол 1-Wire такой возможности не предоставлял.
Соответственно, центральный сервер стал узким местом. Пять раз по вине выхода из строя “железа” вся система не работала больше суток (а то и двух-трех) и приходилось пользоваться резервной (включать освещение рубильниками в щитке, обходиться без теплого пола, вентиляции, производить повторную калибровку водяных счетчиков и т. д.).
Плюс к этому, в доме участились случаи отключения электропитания более чем на час. Заряд ИБП кончался и сервер производил аварийное отключение, а, точнее говоря, весьма грубо вырубался. После чего его подъем не всегда проходил гладко, главным образом потому, что MySQL не очень любит столь хамское к себе отношение. Восстановление таблиц (а там вся история по всем датчикам за многие годы) иногда занимало часы и не всегда ему удавалось сделать это без постороннего вмешательства. Да, эту проблему, теоретически, можно решить купив более умный ИБП, подключив его к серверу и научив сервер штатно выключаться при потере питания. Но мой текущий ИБП вполне еще бодрый старичок, да и материнка сервера, почему-то не захотела нормально работать в режиме, автоматического включения после подачи питания, если до этого была штатно выключена.
Второй — ограничение на топологию шины 1-Wire + моя неопытность.
Да, я читал что должен быть центральный ствол и лишь небольшие ответвления, об этом много где написано. Но проект расширялся весьма непредсказуемо и при этом все вроде как работало. А потом, в один “прекрасный” момент, работать перестало. Т. е. отключаешь часть устройств, все нормально, включаешь опять и сигнал начинает “плавать”. Заменил часть основных линий на экранированные, минимизировал ответвления, но сделать полноценную единую шину без перфоратора и существенной порчи отделки уже нет возможности. В итоге разбил сеть на два сегмента, вывел на два отдельных контроллера, но, тем не менее, раз в пару месяцев опять возникала проблема когда устройства начинали выпадать из сети. Помогало только полное выключение всей системы с последующим включением, а эта процедура весьма не тривиальная и без меня мои домашние провести ее не в состоянии.
Тем временем, около двух лет назад, я натолкнулся на статью и у меня возникла идея сделать своеобразный подарок на день рождения своему отцу. Он увлекается разведением на приусадебном участке различных экзотических растений и ему нужен постоянный контроль температуры в разных климатических зонах его сада. Собственно, до внедрения системы, это осуществлялось обходом вполне (теплых ламповых 🙂 ) аналоговых спиртовых термометров дважды в сутки. Вынашивал я эту идею несколько месяцев, потом заказал в одном известном (тогда еще только в узких кругах) китайском интернет-магазине необходимые компоненты, сделал плату, написал прошивку. В общем, получилось как-то так:
Вся система размещается в стандартной телефонной розетке.
Разводка четырехжильным телефонным проводом.
Питание пассивное. Для бассейна заказал водонепроницаемую версию датчика.
Теперь папа смотрит температуру на компьютере.
Вот так:
Ну и с графиками:
Схема модуляИтак, вашему вниманию представляется “esp07_4PIO_6S v2”.
Вид сверху:
Вид снизу:
В прошлый раз большой проблемой было подбор корпуса, так что в этот раз я плясал именно от корпуса. Поскольку в наличии были корпуса от старых моделей медиаплеера Dune, выбор пал на них. После доработки напильником (отверстия под входы и выходы у медиаплеера немного другие, завести 220v на разъем HDMI не удалось 🙂 ) подошло идеально. Только датчик температуры пришлось снаружи делать, так как внутри начинка нагревает воздух.
Входы и выходы на 220v
Входы и выходы на 5v и 12v
Что может данный модуль и почему он лучше чем старая система?
Учитывая пожелания к прошлым статьям, схемы и код доступны на github. Старые тоже там есть, вдруг кому пригодятся.
Как-то так. Ставьте лайки и подписывайтесь на новые видео 🙂 Шутка, все равно новая статья если будет, то через пару лет, чукча не писатель 😛
Хотя, если появятся вопросы по прошивке и архитектуре esp07_4PIO_6S, напишу детальную статью об этой поделке, есть там, на мой взгляд, несколько интересных решений.
habr.com
В канун Рождества дети во всю ожидают подарков от Санты. Некоторые могут…
Вы узнаете как подключить последовательный I2C 16×2 ЖК-дисплей к модулю…
Итак, вы создали потрясающий проект, используя аппаратное обеспечение ESP8266,…
В этой статье Вы узнаете как сделать счетчик электроэнергии своими руками,…
В этой статье вы узнаете как управлять модулем реле с помощью приложения BLYNK…
В настоящее время вы можете управлять чем угодно с помощью вашего телефона. В…
Давайте начнем с установки драйверов ESP8266 для Arduino и сделаем проект…
Итак, я решил построить свой собственный переключатель термостата с помощью…
ESP8266-01 имеет лишь ограниченное количество контактов ввода / вывода (только…
ESP8266-01: Если у Вас ее нет, покупайте ESP8266-12. она не…
Интернет вещей ( IoT ) имеет много возможностей для подключения устройств к…
В этой статье вы узнаете как сделать ваш дом еще лучше, еще умнее и еще…
Quickbird представляет собой автоматизированную систему мониторинга и…
ngin.pro
Всем привет!
Тема умного дома (да и вообще всего умного) меня интересовала давно, но сделать хоть что-нибудь автоматизированное вечно что-то мешало. Примерно год назад, просматривая сайты-хвасты покупок из Китая, наткнулся на WiFi-модули ESP8266. Не удержался, заказал себе парочку (ESP-07 и ESP-12E). С тех пор лежали они у меня, ждали своей очереди, которая наконец до них дошла.
Вкратце, ESP8266 — революция в мире интернета-вещей (IoT). Приведу выдержку с сообщества разработчиков:
Этот чип, esp8266, не делает ничего нового, он просто позволяет подключиться к доступной WiFi сети или другому WiFi устройству.Такие решения были доступны и раньше. Но дело в том, что цена готовых модулей на чипе esp8266 , даже в розницу, составляет менее 5$. Кроме низкой цены этот чип имеет малые размеры, сравнительно низкое энергопотребление. Модули на базе esp8266 имеют минимальное количество дополнительных компонентов обвязки. Что всё это означает для людей, далеких от электроники? Буквально через несколько месяцев практически каждое электрическое устройство будет подключаться к Вашей домашней сети WiFi. И наступит, наконец, эра интернета вещей (IoT, Internet of Things). Чайники, микроволновки и холодильники будут подключены к интернету, начнут стучаться к Вам в социальных сетях, будут посылать письма по электронной почте и много всего еще.
Идея разговора с чайником в социальной сети показалась мне заманчивой, тем более на данный момент цена на чипы упала еще ниже, и составляет 2-3$.
Но так бы и остались эти модули в Китае, если бы не одно обстоятельство — сообщество любителей ESP8266 написало несколько альтернативных прошивок для модуля, помимо официальной. Чем же они так хороши, что кардинально изменили мое мнение о модулях?
Официальная прошивка ESP8266 Espressif SDK работает на АТ-командах, что подразумевает наличие дополнительного микроконтроллера в системе управления. На каждый модуль — свой микроконтроллер для общения по UART. В моем понятии конечное устройство должно иметь маленькие габариты, чтобы умещаться например в подрозетнике, в разводной коробке, или еще где — но не быть на виду у всех. Дом должен быть умным, но невидимым. Дополнительный микроконтроллер увеличивает габариты устройства, влечет за собой дополнительную обвязку.
Альтернативные прошивки модуля ESP8266 позволяют обойтись без дополнительного контроллера, программируя непосредственно сам чип. Благо у того на борту имеются вкусняшки вроде GPIO, SPI, I2C, ADC, и прочее. Только использовать их надо с умом 🙂 У разных исполнений модулей выведено разное количество ног процессора, но самые ходовые ESP-07 и ESP-12E. У последнего на борту 4 мб флеш-памяти, хотя как говорят, у последних версий 07 тоже (сам еще не подключал, начал с 12E).
Разработано несколько альтернативных прошивок, но самые популярные среди них NodeMCU и Arduino IDE. Последнюю я даже не рассматривал из-за своей ненависти ко всему, что имеет в своем название «Arduino». Привык я писать программы для микроконтроллеров своими ручками, а не чужими, которые уже разработали для разных ардуин готового кода чуть менее, чем до}{`/@. Не хочу никого обидеть, но как-то так сложилось исторически ))).
В общем выбор пал на NodeMCU. В сети про эту прошивку ходит куча мнений, от плохих до хороших. У каждого своя правда ))) У кого-то получилось, у кого-то не срослось.
Немного поковырявшись с ней, я понял, что при желании можно на ней сделать много чего, но подойти к написанию кода надо очень грамотно, об этом в следующей части.
Кстати не могу не отметить, что сделана прошивка довольно удобно — есть код прошивки, в которую заливаются готовые скрипты, написанные на языке LUA. Прошивка поддерживает работу с файловой системой, так что скрипты можно заливать как отдельные файлы, запускать на выполнение, редактировать, удалять.
Собирать прошивку можно как самому ручками, так и пользоваться конструктором. Я не люблю готовое, но усложнять себе жизнь не стал.
Конструкторов я нашел два:
Отечественным я не пользовался, хотя советую. Парни подошли к вопросу грамотно, в конструктор включено много дополнительных расширений, как платных, так и бесплатных, и продолжают развиваться. В прошивку можно интегрировать много чего интересного, например готовый модуль для MajorDoMo, к которому я собираюсь подключать все устройства. Платные возможности стоят всего 2$, что я считаю копейки. И обязательно бы воспользовался данным сервисом, если бы не хотел разобраться сам, как что работает. Не исключаю, что в конечно итоге я все же вернусь к ним, но пока что буду пользоваться бесплатным сервисом от https://nodemcu-build.com/
Данный конструктор позволяет добавить в прошивку также дополнительные расширения, но в меньшем количестве. Думаю для знакомства с ESP8266 мне их хватит.
Собирается прошивка легко — в форму вписывается свой email (2 раза), на который потом придет уведомление. Выбираются необходимые расширения, которые будут включены в прошивку, одобряется нажатием кнопки «Start your build». Когда прошивка будет скомпилирована, на указанную почту придет уведомление с ссылкой, перейдя по которой можно скачать прошивку.
По-умолчанию включены модули file, gpio, net, node, timer, UART, WiFi. Не советую их отключать, это минимальный функционал. Я оставил себе следующий функционал:
Кроме того в следующем блоке можно выбрать дополнительные опции, такие как поддержка SSL, включение режима отладки или поддержки FatFS для чтения с SD-карт.
После компилирования прошивки на почту придет письмо, содержащее две версии прошивки: float и integer.
Я оставил себе версию integer, т.к. на данный момент работа с float-числами мне не нужна, а места она занимает больше, и по-слухам медленнее работает.
Прошивать ESP8266 будем утилитой «XTCOM_UTIL». Взять можно с сообщества в разделе «esp8266 Утилиты».В меню TOOLS выбираем пункт «Config Device»
Выбираем порт, к которому подключен ESP8266, скорость ставим 115200. Нажимаем кнопку «Open»
Выскочит следующее окно. Нажимаем кнопку ОК, после чего в новом окне нажимаем кнопку CONNECT.
При успешном соединении увидим окно «Connect with target OK!»
Закрываем это окно, после чего в меню API TEST выбираем пункт «Flash Image DownLoad»
Выбираем нашу скомпилированную прошивку (у меня они называется nodemcu-master-16-modules-2016-12-23-13-56-19-integer), нажимаем Download. Прошивка начнет заливаться в чип. В конце выскочит окно об окончании передачи.
Еще один ньюанс — на данном сайте рекомендуют сделать следующее:С учетом того, что последняя версия прошивки NodeMCU ESP8266 реализована на SDK v1.5.4.1, то для корректной работы отладочной платы NodeMCU ESP8266 и для перехода на новую версию SDK нам необходимо дополнительно перезаписать файл esp_init_data_default.bin. Новый esp_init_data_default.bin возьмем из патча расположенного на официальном сайте https://espressif.com/sites/default/files/sdks/esp8266_nonos_sdk_v1.5.4.1_patch_20160704.zip
Кроме того необходимо дополнительно указать адрес куда будет помещен этот файл. Существует несколько фиксированных вариантов адресов в зависимости от размера памяти модуля ESP:
0x7C000 для 512 кБ (модули типа ESP-01, -03, -07 и т.п.)
0xFC000 для 1 МБ (модули типа ESP8285, PSF-A85)
0x1FC000 для 2 МБ
0x3FC000 для 4 МБ (модули типа ESP-12E, NodeMCU, WeMos D1 mini)
Я не знаю, на каком SDK собирается прошивка в конструкторе, но решил все-таки повторить вышеописанные действия, хуже не будет. Примечание от меня — читал где-то, что последние версии ESP-07 имеют на борту 4 Мб памяти, так что перед прошивкой проверяйте.
Выбираем файл «esp_init_data_default.bin». У меня чип ESP-12E, так что начальный адрес будет 0x3FC000. Нажимаем «Download».
Ну в принципе и все. Наш чип ESP8266 залит прошивкой NodeMCU, и готов к созданию и заливке скриптов.
Чтобы проверить его готовность к работе, скачаем утилиту ESPlorer с сайта https://esp8266.ruESPlorer — прекрасная утилита для написания скриптов и заливке их в ESP8266.
Открываем ее, устанавливаем параметры порта (не забываем закрыть XTCOM_UTIL, она использует тот же порт). Нажимаем OPEN. Видим в правом окне «PORT OPEN 115200 Communication with MCU..»
Кратковременно замыкаем пин RST модуля ESP8266 на землю.
Программа соединится с чипом, и в последней строчке мы увидим «lua: cannot open init.lua».
Файл init.lua является первичным загружаемым файлом в NodeMCU (автозагрузка), и сейчас он у нас отсутствует. Про написание скриптов и заливку их в контроллер поговорим в следующих статьях.
my-diy.iam.by
Этим полукреслом мастер Гамбс начинает… В общем, попросили меня описать опыт работы с некоторыми железками, модными нынче в среде DIYселфщиков. Все началось с того что на старой работе мне понадобилось контролировать температуру в серверной. Было это давно и пришлось искать специализированную железяку у которой можно было забирать данные для Заббикса через SNMP. Через некоторое время после этого я узнал что в среде молодой потенциальной интеллигенции стало модно использовать Ардуино в качестве учебного пособия. Оказалось, что на всем известном китайском сайте цена на это изделие и периферию к нему несколько смешна. И понеслось…
Началось все с экспериментов – датчики температуры, давления, влажности, прием и передача IR сигналов, считывание и передача кодов с радиобрелков, вывод разных данных на LCD экраны и т.п.
Затем, как и положено, создание простенькой метеостанции. Правда, здесь пришлось немного поизвращаться, поскольку мне захотелось иметь данные об изменении давления в виде графика. В итоге, получилось вот такое:
Затем, понадобилось проверить пару автомобильных аккумуляторов, доставшихся в наследство. Нагрузочной вилки не было, зато была ардуина с аналоговыми датчиками тока и напряжения. Сделал нагрузку из нихромовой спирали для электроплитки в расчете на 6-7 ампер, нарисовал скетч, который подключает нагрузку, периодически пишет данные на SD карту и в порт в формате LogView и показывает на LCD отданную емкость. А при понижении напряжения ниже определенного значения отключает нагрузку и завершает работу. Как ни странно, заработало :). Теперь своего времени ждут цифровые датчики – с ними работать проще, не нужно учитывать в расчетах опорное напряжение, да и точность должна быть повыше.
Ардуино, конечно, хорошо, но связывать их в сеть по проводу не совсем удобно. Можно, конечно, использовать приемо-передатчики на 433 МГц или что-то типа NRFf24l01, но это как-то не спортивно. Поэтому пришлось взять ESP8266. Как оказалось, в случае ее использования, ардуина вообще не нужна, поскольку внутри этой маленькой хреньки есть все что душа пожелает – процессор, память, входы-выходы и даже совершенно не нужный светодиод. Про разновидности этих модулей я писать не буду, поскольку в инете много инфы, но могу сказать что даже самый простой ESP-01 позволяет полноценно работать с кучей датчиков на I2C шине.
Итак, есть несколько ESP, датчики и всякая мелочь. Что с ними делать? Наверное, что-то типа системы недоумного дома. Недоумного потому что пока будут использоваться только данные с датчиков – управлять особо нечем.
Посмотрел, пощупал разные прошивки, остановился на ESP Easy и WiFi-IoT. После тестовой эксплуатации выбрал ESP Easy – мне она показалась наиболее гибкой. Правда, в ней нет поддержки RF приемопередатчиков, но пока в них необходимости нет.
Теперь о софте. Поскольку без MQTT обойтись трудно, то пришлось сразу использовать полноценный брокер – Mosquitto. В качестве платформы сначала поставил широко распространенный Domoticz, но он мне не понравился – на входе требует данные определенного формата, да и интерфейс особо не вдохновил. А вот ioBroker оказался тем что нужно. Работает он под node.js, поддерживает кучу устройств и позволяет выводить данные в различных видах. Погонял все это на тестовой машине, вычистил косяки, не описанные в документации и перенес все это хозяйство в инет, на выделенный сервак, для дальнейшего тестирования. На текущий момент это выглядит так:
Интерфейс заточен под мобильный телефон.
Кроме этого, система сообщает в Telegram о разных событиях, по запросу может выдавать в тот же Telegram данные с датчиков, моргать IR светодиодом, включая/выключая то что нужно.
А еще, прошивка ESP Easy позволяет через MQTT собирать данные с других датчиков и выводить их на свой LCD.
Тестовый пример:
Здесь ESP-01 отображает температуру со своего датчика, а так же данные с 2-х других устройств в разных местах квартиры.
Система получилась гибкая, позволяющая настроить практически все под свои нужды.
Если есть интерес – пишите, расскажу более подробно 🙂
orktos.ru