Как подключить esp8266 к majordomo
videooko.net
Создание системы обнаружения протечек своими руками из готовых модулей на ESP8266 и подключение к MajorDoMo.
Итак, для работы потребуется:
— NodeMcu V3 Lua;
— DC-DC LM2596;
— разьемы;
— сенсор воды (протечек);
— любая кнопка с фиксацией;
— драйвер мотора ;
— угловые клемники, (похожий товар );
— електропривод крана.
Переработав предыдущую плату, с учетом того, что для корректного старта ESP необходимо обеспечить (во время старта!) высокий уровень на GPIO0, GPIO2, а также низкий уровень на GPIO15 получил вот такую плату 100х75 мм.
Кнопка подключена на GPIO15 и через резистор притянута к земле для обеспечения корректной загрузки модуля. Платки компараторов напряжения к которым подключаются датчики протечек в нормальном состоянии дают высокий уровень на порту, по этому их можно подключать на GPIO0 и GPIO2.
На первой плате были установлены клеммные колодки, для отладки всех модулей без их запаивания.
Вот так выглядит готовая плата первой версии.
Все модули пришли с припаянными штырьками вверх, и после их перепаивания на первом модуле вниз — у меня отпала охота этим заниматься. Все оставил как есть — штырьки вверх, модули лицом вниз. Нужно будет сделать отверстия для регулировки резисторов.
Драйвер мотора так же установлен «лицом» вниз. Из-за высоких его клемников запаять не хватает высоты. По этому, или ставить разъем или обрезать плату под клемниками, но тогда эти клемники будут выходить за уровень платы, что тоже не есть хорошо.
На самих датчиках протечки нужно сточить выступающие контакты для более плотного соприкосновения с полом.
Немного задев дорожки и стерев верхний слой, под ним показалась медь.
Касательно использования в таком виде датчиков с последующим их окислением — не знаю на сколько их хватит, но заменить пока нечем, а реальная работа покажет как они будут себя вести. Все равно таким элементам необходимо будет делать ТО.
Так, как разводка у меня 12 В, то для работы модулей установлен DC-DC преобразователь, который единственный запаян на плате ))).
Привод оборот делает за 7-8 сек. для перестраховки подаю на него напряжение на 10 сек.
Алгоритм пока такой.
1. При старте модуля кран закрывается.
2. Соединяемся с WIFI и отправляем письмо о старте системы.
3. Проверяем все сенсоры и если нету ни на одном сработок — открывается кран.
4. Идет постоянный мониторинг датчиков, и если есть сработка запускается отсчет 15 секунд, после чего кран закрывается. Это на случай мойки пола или случайного разлива жидкости и т.д. Также отправляется письмо с указанием какие датчики сработали.
5. После срабатывания сенсоров и закрытия крана если сенсоры восстановились в норму — кран автоматически открывается.
6. Кнопкой можно произвести принудительное закрытия крана и его открытие (при условии, что все сенсоры сухие. ).
Следующий этап — подключение к MajorDoMo.
Это третья железка, которую я подключаю, как подключать и настраивать, можно почитать на форуме MajorDoMo. Остановлюсь на нюансах с сервоприводом. Обычные выключатели, датчики и т.д. получают отправку и получение информации почти мгновенно, а вот сервоприводу нужно определенное время на выполнение команды. То есть, у него состояние — получил команду — команда выполняется — команда выполнена. Правильно будет на объекте в сценах показывать все 3 состояния. На данный момент все сделано проще и быстро, чтобы заработало.
Добавил иконку отображения статуса сервопривода, которая обновляется после выполнения его закрытия или открытия. В процессе тренировок вылезла трабла — скрипт отрабатывает и отправляем смену статуса (это видно в сериале), но иконка не отображает смену статуса. По этому, каждые 5-10 сек контрольно выполняется отправка последнего состояния задвижки.
Иконка «Управление задвижкой» это просто кнопка без статуса, для открытия или закрытия задвижки.
Кнопка»Закрыть кран» меняет состояние и надпись на «Открыть кран» в зависимости от состояния задвижки.
Все правильно отрабатывает, если нажимать на них, а вот если задвижка закроется по сработке сенсоров, то кнопка «Закрыть кран» не отрабатывает смену состояние, хотя иконка состояния «Задвижка закрыта» отрабатывает автоматическое открытие и закрытие.
Вот такие нюансы, на данном этапе. В скетче используется библиотека отправки Email через свой почтовый сервер. В сети жалуются, что через публичные сервера она перестала работать, я не проверял. Если у вас стоит MajorDoMo то на этом же железе можно поднять и свой почтовый сервер и проблем с отправкой не будет.
Что нужно реализовать далее, перед постановкой в боевую работу?
1. Обеспечить работу при отсутствии подключения у WIFI.
2. Убрать delay из кода. Лично самого коробит от его вида, а тут сам втулил ((( (только для отработки логики 🙂 работы ).
3. Вычистить говнокод ))).
Работа над проектом продолжается…
Обсуждение и предложения на форуме
Уникальных посетителей темы: 743
Majordomo включение/выключение света по Wi-Fi
• 19-11-2018 •
Быстрые ссылки на Aliexpress
Тут больше будет про протокол MQTT, контроллер ESP8266 и Majordomo. Начинать нужно с малого, с самого принципа работы, и когда вы разберетесь с основой, вы без проблем сможете сделать более сложные проекты.
В этой записи, мы попробуем с приложения Majordomo управлять двумя светодиодами с помощью протокола mqtt.
Что нам для этого потребуется :
Сервер majordomo
Если вы еще не знакомы, что такое majordomo, то обязательно к прочтению Умный дом своими руками.
Если вы еще не скачали и не установили на ваш компьютер, перейдите по ссылке и следуйте инструкции. После того как вы установили, зайдите в браузер по ссылке localhost. Если вы все правильно установили, то вы увидите перед собой следующее:
Дальше вам нужно нажать на Панель управления, сверху справа. Вы перейдете на страницу настроек умного дома. Нам понадобятся 2 вкладки, Устройства и Объекты.
Первым делом перейдем в Устройства->MQTT.
Скорей всего перед вами уже будут несколько добавленных примеров для ознакомления, они нам не понадобятся.
Теперь нам надо добавить свои значения, которые будут передаваться в контроллер esp8266. С помощью данной процедуры мы будем передавать значения Вкл/Выкл с определенным названием, чтобы наш контроллер понимал, что мы обращаемся именно к нему и чтобы он понимал что делать дальше и какой светодиод включать/выключать, мы создадим 2 ветки. Одна будет отвечать за красный светодиод, другая ветка за зеленый.
Нажмите на кнопку добавить, справа сверху.
Достаточно заполнить 2 поля. Название (любое, какое захотите). И путь, его важно запомнить и писать только латинскими буквами. Все остальное пропускаем и нажимаем добавить.
Дальше создаем ветку для зеленого, называем как хотим, а путь прописываем следующим образом:
Пока этого достаточно, переходим к настройке контроллера.
Настройка ESP8266
Если вы не разу не работали с контроллером esp8266, то обязательно к прочтению подключение ESP8266 И DHT22
Устанавливаем на макетную плату 2 светодиода и присоединяем провода.
У светодиода минус — это короткая ножка и соответственно плюс — длинная.
После того, как мы все подсоединили, подключаем наш контроллер по USB к компьютеру, для того, чтобы его запрограммировать.
После того как вы ознакомились с кодом и скопировали его в Arduino IDE, нужно загрузить код.
Осталось запустить MQTT сервер и проверять работу. Если вы не знаете как запустить MQTT, то обязательно к прочтению: Установка и запуск MQTT
После того, как вы загрузили код, запустили MQTT. Вам нужно снова зайти в
Начать редактировать одну из вами созданных веток (Справа от ветки кнопка с карандашом). И в поле установить ввести цифру 1 и нажать сохранить. Если вы все правильно сделали, то у вас должен загореться светодиод. Если же не загорелся, то вы что то сделали не верно, попробуйте проверить все с начало.
Если же загорелся, то это здорово! Теперь мы настроем так, чтобы можно было управлять светодиодом с главной страницы Majordomo.
Для того, чтобы управлять с главной страницы, нам понадобиться объект. Можно использовать любой из созданных, но для практики лучше создать свой.
Для удобства сделаем и отдельный класс, нажимаем сверху кнопку Добавить новый класс. Где поле название, пишем любое название, у меня оно Test и нажимаем добавить.
Дальше нажимаем на кнопку, добавить объект, называем объект Led и класс выбираем тот, который только что создали.
Переходим в только что созданный объект и добавляем 2 свойства как на скриншоте. Один Green, другой Red.
После того как мы все добавили, переходим в настройки MQTT, где мы ранее создавали пути (один для зеленого, другой для красного). Начинаем их редактировать и где поле «Связанный объект» выбираем из списка нами созданный, после того как выбрали, в поле свойство выберите соответствующее свойство.
Отлично! Теперь последний штрих. Переходим в
Снизу вы увидите дочерние пункты
Выбираем любой из пунктов и присваиваем нами созданный объект Led и его свойство, к примеру Red. Готово! Теперь можно проверять!
Переходим на главную страницу Majordomo на вкладку управления и щелкаем тумблеры!
Эти тумблеры и есть дочерние пункты, которые мы редактировали. Вот и все дела.
Подписывайтесь на новости, чтобы не пропустить новые записи про Majordomo, а если остались вопросы, задавайте в комментариях!
Подключение ESP8266 И DHT22 и отправка температуры на Majordomo
• 14-11-2018 •
Быстрые ссылки на Aliexpress
Что нам понадобиться:
Подключение
Настройка
Для того, чтобы запрограммировать контроллер, нам нужна программа, программу мы будем использовать IDE Arduino. После того, как вы установили программу, вам понадобиться еще две библиотеки. А так же настроить программу IDE Arduino так, чтобы она видела контроллер ESP8266.
Поставьте галочки в соответствии с картинкой выше!
Первая библиотека, это Adafruit_Sensor. Воспользуйтесь поиском, как на картинке:
И вторая библеотека:
После того, как вы все установили, можно приступать к коду:
Код, подключаем датчик DHT22 и выводим данные в консоль
Когда плата выбрана, нажимаем сверху слева на галочку (Проверить код). Если проверка прошла успешно, можно загружать (стрелочка, рядом с галочкой). Если нет, то нужно исправить ошибку в коде.
Если вы все правильно сделали, то вы увидите список, где каждые 2 секунды добавляется строчка с данной температурой.
Все это здорово, но теперь нужно передать всю информацию в majordomo, где можно ввести график вашей температуры или влажности.
Отправка данных по Wi-Fi
Перед тем как приступать к отправке данных, убедитесь что у вас уже работает протокол MQTT, если нет, то эта статья обязательна к прочтению!
Вот и все дела, данные отправляются. Это хороший вариант, только в том случае, если ваш контроллер будет работать от розетки. А если же будет работать от батарейки, то данный вариант не подходит. С таким вариантом батарейка сядет за пару недель. Чтобы батарейка служила пол года, а то и год нужно использовать Deep sleep. А об этом мы уже поговорим в следующих записях.
6 thoughts on “ Подключение ESP8266 И DHT22 и отправка температуры на Majordomo ”
при проверке дает ошибку и останавливается на этой строчке
PubSubClient client(mqtt_server, 1883, callback, wifiClient);
Да, извиняюсь, видимо случайно удалил фигурную скобку, сейчас проверил, 100% рабочий код
Спасибо за статью. Я бы не советовал использовать VIN для подключения датчика! Данный пин не для этого.
Статья устарела сейчас используется ArduinoJson version 6…
я так понял никто скетч не грузил, потому как без dht.begin() в setup() получить данные с датчика невозможно
У меня на брокере стоит логин и пароль, как добавить в программу идентификацию при подключении к брокеру? Где прописать этот логин и пароль?
Умный дом на ESP8266+MajorDoMo. Часть 3. Настройка MajorDoMo.
В прошлой части мы остановились на том, что написали скрипты LUA для работы с преобразователем движения HC-SR501. Устройство получилось автономным, при срабатывании отправляло данные по UART, а также отслеживать состояние устройства можно было на поднятом веб-сервере. В этой статье привяжем устройство к MajorDoMo.
Открываем в браузере адрес сервера МДМ, заходим в панель управления.
Слева в меню выбираем пункт ОБЪЕКТЫ
MajorDoMo представляет собой систему объектно-ориентированного программирования, со всеми вытекающими, что очень удобно. У меня в планах привязать все датчики движения, температуры, влажности, давления и т.д. к беспроводной связи, т.е. к ESP8266. Поэтому для начала создадим класс с названием «ESP8266», общий для всех чипов ESP без привязки к конкретным данным датчиков.
После добавления класса добавим несколько общих свойств для каждого из всех ESP8266. Я пока что решил, что необходимый минимум — это 4 свойства: IP-адрес, уровень сигнала, количество свободной памяти, и команда-ping. Последняя под сомнением, надо ли будет. Точнее надо будет 100%, но с реализацией еще не определился, поэтому пока просто оставил свойство. Все эти свойства выходят за пределы данной статьи, так что все они останутся нереализованными, просто висеть в воздухе. В дальнейших статьях они будут добавлены.
Переходим в пункт «Свойства» созданного класса, нажимаем кнопку «Добавить новое свойство».
И поочередно добавляем вышеперечисленные 4 свойства, как на картинках ниже.
В конечном итоге все будет выглядеть так:
В классе «MotionSensor» создадим одно-единственное свойство «alarm», в которое мы будем записывать состояние преобразователя движения.
Теперь создадим метод, который будет вызываться при изменении свойства «alarm», т.е. при сработке преобразователя движения (тут будет один момент, я расскажу о нем ниже). Переходим на вкладку «Методы», нажимаем кнопку «Добавить новый метод». Вводим название метода, описание. После добавления метода откроются расширенные настройки, как на рисунке ниже.
При срабатывании преобразователя движения чип ESP8266 установит значение свойства «alarm» в «1». После обработки этого события нам нужно вернуть его в «0», что мы и делаем методом выше.
В конечном итоге вид класса «MotionSensor» будет выглядеть так:
Все, два общих класса созданы, теперь можно создать непосредственно объект. В классе «MotionSensor» создадим объект «KitchenHCSR501» (преобразователь движения HCSR501, расположенный на кухне). В качестве месторасположения соответственно выберем кухню)
Объект «KitchenHCSR501» обладает всеми свойствами и методами классов «ESP8266» и «MotionSensor», т.к. унаследован от них. Соответственно у него будет свойство «alarm» и метод «MethodAlarm». Метод, созданный ранее может только устанавливать свойство «alarm» в «0», а нам нужно что-то более динамичное. Сделаем так, чтобы при сработке датчика движения (т.е. при установке свойства «alarm» в «1») Алиса произносила голосом, что датчик сработал. Для этого выбираем пункт «Методы» в объекте «KitchenHCSR501», и нажимаем кнопку «Настроить».
Теперь после выполнения родительского метода (установки свойства «alarm» в «0») Алиса произнесет голосом о проникновении в святая святых. Точнее сделает это после назначения этого метода изменению свойства «alarm». Переходим в свойства класса «MotionSensor», выбираем свойство «alarm», и в пункте «Запускать метод при изменении (не обязательно)» выбираем наш метод «MethodAlarm», сохраняемся.
В принципе и все. Пока включать наш ранее настроенный модуль ESP8266 не будем, а разберемся, что мы тут сделали, для чего мы это сделали, и как это все будет работать.
Во главе всего у нас стоит класс «ESP8266» с 4 свойствами, которые не отвечают за показания датчиков, а служат только для проверки работоспособности самих чипов (в данной статье не реализованы). От этого класса наследуется класс «MotionSensor», который имеет еще одно дополнительное свойство, отвечающее за статус преобразователя движения. Классов, подобному этому, может быть несколько. Например TemperatureSensor (отвечающий за вывод/регулирование температуры), HumiditySensor (отвечающий за вывод/регулирование влажности), и т.д. Каждый новый класс будет иметь свои свойства, которые присущи только ему (температурный класс — имеет свойство температуры, влажностный — влажности).
Самым последним идет объект — так сказать физическая реализация всех этих классов. У нас это «KitchenHCSR501» — преобразователь движения HCSR501, установленный на кухне. Объектов тоже может быть несколько, например «HallHCSR501» — преобразователь движения, установленный в прихожей. Но у всех будет свойство «alarm» — сработка датчика, т.к. все они будут унаследованы от класса «MotionSensor».
Как же это работает?
MajorDoMo — прекрасный фреймворк для создания умного дома. Получение/установку свойств, вызов методов и прочее можно производить как из командной строки, так и HTTP-запросами. На последних мы и реализуем весь функционал. На странице «Интеграция сторонних программ и сервисов» написано, как именно через http можно брать значение свойства объекта или устанавливать новое.
Вернемся к нашим баранам. У нас есть объект «KitchenHCSR501» со свойством «alarm». При установке данного свойства в «1» вызывается метод «MethodAlarm», который заставит Алису сообщить о проникновении на территорию. На самом деле метод «MethodAlarm» будет вызываться при любом изменении значения, но чип ESP8266 из прошлой части будет его устанавливать только в «1», а сбрасывать в «0» мы будем в самом методе.
Проверить работоспособность можно, выполним следующий запрос из браузера:
Тут мы как раз и устанавливаем свойство «alarm» объекта «KitchenHCSR501» в «1». При этом MajorDoMo у нас находится по адресу 192.168.1.15. Нажав ENTER мы увидим в текущем окне ответ «ОК», что говорит о удачном выполнении запроса.
Алиса в свою очередь голосом уведомит нас, что датчик сработал, и запишет это в истории сообщений
Данный запрос выполняет чип ESP8266 из прошлой части, при срабатывании датчика движения.
За это отвечает функция «alarmMotion()» в файле «main.lua»:
В 7-й строке можно увидеть наш запрос на установку свойства в «1».
MQTT управление реле Sonoff Basic в MajorDoMo
MQTT управление реле Sonoff Basic. Детальный мануал
Завод в MajorDoMo беспроводных реле Sonoff Basic сводится к их перепрошивке и настройке на них MQTT. Так же потребуется установить сам плагин MQTT на MajorDoMo если он у Вас не был установлен ранее.
Прошивал я релюшки на Tasmota еще давно. Завести можно любые релехи ESP. Басики на чипе ESP8266. В принципе у меня модули уже готовы к перенастройке после Domoticz (раньше был на этой системе), но если у Вас они еще «заводского» исполнения, то инструкция по их прошивке здесь.
Пункт обязательный. В штатной прошивке MQTT нет. Выбор прошивки для реле, дело индивидуальное. Принцип настройки в них сильно не различается. Мне приглянулась Tasmota в самом начале пути. Работает стабильно уже больше года, сбоев нет. Доступно ее обновление непосредственно из Web интерфейса. У меня прекрасно работают на версии 6.6.0. Обновлять не стал. Кстати в инструкции по ссылке выше файл именно с этой версией прошивки.
MQTT на MajorDoMo
Настройка MQTT на Sonoff Basic
Переходим в вебморду Tasmota по IP адресу реле. Питание от программатора или от сети 220V не важно, реле стартанет. Главное их не совмещать)))
Смотрим топики MQTT на MajorDoMo
Возвращаемся в плагин MQTT MjDM. Я завел сразу все свои релешки. Были обнаружены топики cmnd, stat, tele. Управлять здесь мы ничем не можем, только просмотр информации. Состояние питания реле в первом топике (скриншот). Расшифруем одну из строчек.
Например: Vannaya/Power 0 (Ванная.Power)
Перед привязкой выключателя к данным MQTT необходимо его создать на вкладке объекты и задать ему свойство. Привязка выполняется в пунктах связанный объект/свойство. Их будет видно когда я щелкну на Vannaya/Power 0.
Теперь в объектах я могу вручную изменить свойство Power и пошелкать релешкой. Удачной настройки.