Как подключить второй MQTT брокер к Home Assistant или мостовое (bridge) соединения MQTT брокеров Mosquitto
Привет Пикабу!
В этом посте рассмотрим реализацию подключения второго MQTT брокера к Home Assistant или мостовое (bridge) соединения MQTT брокеров Mosquitto.
Сразу опишу своё исходное ТЗ (задачу), решение которой будет описано в этом посте, чтобы вы могли понять на сколько эта "инструкция" подходит под решение именно вашей задачи (задач).
Имеется:
1) IoT устройства на ESP8266 (ESP32) дома (в локальной сети);
2) IoT устройства на ESP8266 (ESP32) НЕ дома (internet / за nat);
Задача: - собирать данные с датчиков установленных на этих устройствах (и/или управлять подключенными модулями) в единый центр. В качестве единого центра уже выбрана система "Умного дома" Home Assistant.
Дополнительное условие (требование): - порты для взаимодействия с сервером, где установлен "Умный дом" доступны только в локальной сети. Исключение только для портов 80, 433-й для HTTPS для "Яндекс.Станции" и 500, 4500 для VPN, но решения связанные с VPN по ряду причин не рассматриваются.
В качестве решения моей задачи был выбран протокол обмена сообщениями между устройствами - MQTT. А в качестве брокера сообщений был выбран Eclipse Mosquitto.
Установка на локальный сервер (вместе/рядом с "Умным домом") и базовая настройка MQTT брокера Eclipse Mosquitto была проведена по этой инструкции. Все локальные IoT устройства общаются с Home Assistant через него.
В качестве сервера для второго MQTT брокера вне дома был выбран бесплатный VPS - сервер от Oracle. Брокер также был установлен по этой инструкции.
Осталось "научить" Home Assistant "общаться" с двумя MQTT брокерами)))
Для этого был найден "обходной путь" из документации Eclipse Mosquitto, который имеет название bridge (мост). Т.е. фактически мы сделаем мостовое (bridge) соединения внешнего MQTT брокера с локальным (домашним), через которое они будут "общаться". А наш локальный MQTT брокер как и раньше будет "общаться" с Home Assistant, позволяя через себя (мост | bridge) "общаться" Home Assistant со вторым (внешним) брокером.
На этапе написания последних двух предложений мне вспомнился этот комментарий ))))
Итак, поехали выполнять задачу)))
Открываем через WinSCP или PuTTY конфигурационный файл локального Eclipse Mosquitto для редактирования (я предпочитаю для этих целей использовать WinSCP).
Путь к файлу, если вы устанавливали брокер про моей инструкции:
/etc/mosquitto/mosquitto.conf
И вставляем туда, предварительно отредактировав под свои учётные данные, такой текст:
# HUNY External Bridge Configuration
connection external-bridge
address 193.125.125.125:1883
cleansession true
topic +/# in PICABU/ ""
try_private true
remote_username pickabu
remote_password Pikabu1234
address 193.125.125.125:1883 - adress(ip) вашего второго брокера.
remote_username pickabu - логин вашего второго брокера.
remote_password Pikabu1234 - пароль вашего второго брокера.
topic +/# in PICABU/ "" - здесь "+" означает забирать все топики со второго брокера, PICABU - так будет называться топик в первом брокере (в моём случае - локальном), где будут публиковаться все топики со второго.
topic [read|write|readwrite|deny] <topic>Расширенные или просто другие настройки смотрим в документации и делимся в комментариях своими вариантами ;-)
The access type is controlled using "read", "write", "readwrite" or "deny". This parameter is optional (unless <topic> includes a space character) - if not given then the access is read/write. <topic> can contain the + or # wildcards as in subscriptions. The "deny" option can used to explicity deny access to a topic that would otherwise be granted by a broader read/write/readwrite statement. Any "deny" topics are handled before topics that grant read/write access.
ПОСЛЕ ВНЕСЕНИЯ ПРАВОК В КОНФИГ - ПЕРЕЗАПУСТИТЕ ЛОКАЛЬНЫЙ БРОКЕР.
Проверить, что всё работает (Первый брокер публикует все топики второго брокера) переде тем как вносить правки в Home Assistant можно, например, с помощью программы MQTT Explorer:
Напомню, если забыли или не знали ))), базовые настройки Mqtt в Home Assistant:
1) В файле configiration.yaml указываем путь к настройкам mqtt:
mqtt: !include mqtt.yaml
2) В файле mqtt.yaml указываем параметры подключения к своему локальному брокеру:
ВАЖНО СОБЛЮДАТЬ ТАБУЛЯЦИЮ!!!
broker: 192.168.1.150ВАЖНО СОБЛЮДАТЬ ТАБУЛЯЦИЮ!!!
port: 1883
client_id: home-assistant
keepalive: 60
username: Local
password: Local7777
protocol: 3.1
birth_message:
topic: "HomeAssistant"
payload: "Online"
qos: 1
retain: true
will_message:
topic: "HomeAssistant"
payload: "Offline"
qos: 1
retain: true
3) в sensor.yaml указываем свои параметры "топиков" локального и второго брокера:
ВАЖНО СОБЛЮДАТЬ ТАБУЛЯЦИЮ!!!
# Платформа MQTT брокер.
# ESP8266 на улице:
- platform: mqtt
state_topic: "esp-ulica/ESP-ULICA/bmet"
name: Тепература на улице (Самара Дом)
unit_of_measurement: "°C"
device_class: temperature
- platform: mqtt
state_topic: "esp-ulica/ESP-ULICA/bmeh"
name: Влажность на улице (Самара Дом)
unit_of_measurement: "%"
device_class: humidity
- platform: mqtt
state_topic: "esp-ulica/ESP-ULICA/bmep"
name: Давление на улице (Самара Дом)
unit_of_measurement: "mmHg"
device_class: pressure
- platform: mqtt
state_topic: "esp-ulica/ESP-ULICA/bhl"
name: Освещённость на улице (Самара Дом)
unit_of_measurement: "lm"
device_class: illuminance
# ESP8266 в офисе:
- platform: mqtt
state_topic: "esp-office/ESP-OFFICE/dsw1"
name: Тепература на улице (ОФИС)
unit_of_measurement: "°C"
device_class: temperature
- platform: mqtt
state_topic: "esp-office/ESP-OFFICE/bmet"
name: Тепература в ОФИСЕ
unit_of_measurement: "°C"
device_class: temperature
- platform: mqtt
state_topic: "esp-office/ESP-OFFICE/bmeh"
name: Влажность в ОФИСЕ
unit_of_measurement: "%"
device_class: humidity
- platform: mqtt
state_topic: "esp-office/ESP-OFFICE/bmep"
name: Давление на улице (ОФИС)
unit_of_measurement: "mmHg"
device_class: pressure
- platform: mqtt
state_topic: "esp-office/ESP-OFFICE/co2mh"
name: Углекислый газ в ОФИСЕ
unit_of_measurement: "ppm"
ВАЖНО СОБЛЮДАТЬ ТАБУЛЯЦИЮ!!!
Ну и в завершении настройте панель Lovelace в Home Assistant на своё усмотрение.
Например так (тестовый вариант):
На этом у меня В С Ё.
Всем пока и "Бобра"! ;-)
Эмулирование нажатий кнопок на матричной клавиатуре с помощью МК
Всех приветствую. Возникла необходимость эмулировать пользовательское нажатие кнопок с помощью МК на матричной клавиатуре не нарушая работу основной клавиатуры.. НЕ совсем понимаю как это сделать компактно и с наименьшим количеством деталей. Если поделитесь своими мыслями, буду очень благодарен. Привожу изображением данных что я снял с данного девайса. Есть колодка с 14 пинами(с ними я могу взаимодействовать), на [11, 12, 13, 14] контактах по стандарту логическая единица, на [2, 3, 4, 5, 8] по стандарту 0. Все значения при включении кнопок привожу ниже.. Основной вопрос заключается в том, можно ли без реле, герконов, оптопар и транзисторов подмешивать свой сигнал на прямую с МК(по логике их нужно между собой закоротить) на пины к которым подключена клавиатура, и как это сделать?
Бесплатный и Личный MQTT брокер (Mosquitto) для IoT-устройств. На базе Ubuntu 20.04 на Always Free VPS сервер от Oracle
Привет Пикабу!
В этой статье мы сделаем (установим) своего личного MQTT брокера Mosquitto для контроля датчиков IoT-устройств на ESP и их дальнейшей связки с системой умного дома (например Home Assistant). А устанавливать будем на Ubuntu 20.04 установленную на Always Free VPS сервер от Oracle (по аналогии можно и на любом другом сервере).
Вместо предисловия или disclaimer )))
Наполняю не спеша свой аккаунт на Пикабу полезной информацией по тематике "Умный дом". Обращаю Ваше внимание, что это будут не всегда полноценные и пошаговые инструкции и туториалы, а скорее выдержки типа "шпаргалок", на случай посмотреть, если забыл. Ну как бы я буду писать здесь "шпаргалки" и "запоминалки" для себя и на будущее, а Вы можете ими пользоваться или нет, как в старые добрые институтские времена.... ))) Поэтому любой мой пост не претендует на правильность высказанного в нём моего мнения и истину моих умозаключений в конечной инстанции, я просто делюсь своим скромным опытом. Всё что Вы будете делать и повторять по моим постам, Вы делаете на свой страх и риск ;-)
Предпосылки к созданию своего личного MQTT брокера у меня появились после того, как узнал, что скоро сервер брокера (располагающийся ранее по адресу mqtt.wifi-iot.com) которым я пользовался на сайте конструктора прошивок wifi-iot.com выключат (уже):
Бесплатный сервер VPS для установки Linux для нашего MQTT брокера мы уже нашли здесь, и установили на него Ubuntu 20.04 здесь. (далее подразумевается, что всё это или аналоги у вас уже есть).
Ещё одно примечание, MQTT брокер можно поставить и на домашний - локальный сервер (зачастую это проще и логичнее), даже на край на туже самую ESP, здесь рассматривается пример именно для случаев, когда нужен внешний брокер, но способ конечно подходит и для локальной установки.
Итак, приступаем к установке.
Подключаемся через PuTTy по SSH к своему серверу
(Как? По этой ссылке в конце поста мы это уже делали.)
Подготовим систему.
1) Для получения списка и обновления новых пактов, выполните:
sudo apt-get update && apt-get upgrade -y
2) Устанавливаем MQTT брокер Mosquitto:
sudo apt install mosquitto mosquitto-clients -y
3) Сразу настроим для Mosquitto подписку по логину и паролю (пример логина - pikabu):
sudo mosquitto_passwd -c /etc/mosquitto/passwd pikabu
4) Далее, по запросу, нужно ввести два раза ваш пароль для Mosquitto:
Связка логин-пароль будет храниться по следующему пути /etc/mosquitto/passwd
5) Запретим анонимные подключения к Mosquitto. Открываем файл default.conf:
sudo nano /etc/mosquitto/conf.d/default.conf
6) Он должен быть пустой, вставляем туда этот текст:
allow_anonymous false
password_file /etc/mosquitto/passwd
Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
7) Перезагружаем Mosquitto чтобы применить изменения:
sudo systemctl restart mosquitto
Проверим работоспособность брокера.
Войдите на свой сервер через PuTTy ещё раз (откройте второе окно терминала рядом) и введите в него следующую команду (подписка на брокера) со своим логином и паролем:
mosquitto_sub -h localhost -t test -u "pikabu" -P "ваш_пароль"
а в первом открытом окне отправляем топик введя команду вида:
mosquitto_pub -h localhost -t "test" -m "Privet Pikabu" -u "pikabu" -P "ваш_пароль"
Во втором окне терминала у вас должно появиться ваше сообщение (в примере "Privet Pikabu"):
На этом этапе MQTT брокер Mosquitto у нас успешно запущен и защищён паролем.
Ниже пару нюансов для нашей VPS от Oracle:
Настроим брандмауэр IPTABLES (для нашей виртуальной машины на сервере Oracle).
Команды вводим от своего пользователя!
sudo iptables --policy INPUT ACCEPT
sudo iptables -F
sudo iptables -A INPUT -p tcp --dport 1883 -m state --state NEW -j ACCEPT
sudo netfilter-persistent save
sudo ufw disable
Откройте порт 1883 на VPS от Oracle. Для этого открываем ссылку в письме, которая пришла после регистрации в Oracle, вводим логин и пароль и попадаем в свою учетку, где следуем по пути:Сети - Виртуальные облачные сети - vcn- (ВАШ) - Сведения о списках безопасности
Альтернативный способ попасть туда из главного окна: "Настроить сеть с помощью мастера", "Запуск мастера VNC" нужно нажать "отмена", кликаем на свой "VNC-номер", далее в "ресурсах" нажимаем на "Списки безопасности" и кликаем на "Default Security List for vcn-номер"
где добавляем правила для входящего трафика:
Почти В С Ё!!! ;-) ***
*** Настоятельно рекомендую настроить и включить шифрование SSL, например через сертификаты Let Encrypt, ибо если оставить так, то данные через интернет будут передаваться в не зашифрованном виде. В рамках этого поста этой инструкции не будет, только ключевые фразы в предыдущем предложении для поиска информации в интернете .
В заключении несколько примеров применения MQTT брокера Mosquitto:
Для пользователей сервиса wifi-iot.com, у которых в прошивке включен сервис "MQTT клиент" ("ESP" - "Сервисы" - "MQTT клиент") и недавно "всё поломалось" уже можно ввести новые данные только что настроенного вами личного MQTT брокера Mosquitto и радоваться жизни. ;-)
Пример настройки, подробнее здесь:
Для проверки работоспособности брокера можно скачать MQTT Explorer для своей операционной системы.
Вводим данные своего MQTT брокера Mosquitto:
И наблюдаем свои топики (или управляем своим устройством, если настроено).
Ниже мой наглядный пример, который только-что создал.
"ESP-OFICE" это топик ESP8266 c прошивкой на базе конструктора WiFi-IoT, у которой на борту датчик углекислого газа - CO2 (MH-Z19B), датчик температуры давления и влажности BME280 и уличный датчик температуры DS18B20. Моё видео о нём можно посмотреть здесь.
"homeassistant" через плагин, который показывает статус "online" тестовой системы Home Assistant установленной на этом же сервере.
"broker" - это непосредственно сам MQTT брокера Mosquitto, где мы видим, опубликованное ранее в этом посте, сообщение через терминал "Privet Pikabu" )))
На этом пока пожалуй всё по этой теме ;-)
Всем пока и "бобра"! ;-)
Настольный прогноз погоды
Как-то наткнулся в интернете на такую штуку: https://www.tempescope.com/
Насколько я знаю купить что-то подобное сейчас нельзя (но могу и ошибаться), посему решил сделать это сам. Кто захочет повторить - на сайте автора оригинального устройства есть ссылка на исходники: схема, прошивка и, вроде, чертежи корпуса.
В целях упрощения конструкции я схему применил свою, как и корпус, но в целом получилось очень похоже.
Работает это все дело под управлением ESP8266, погоду и время получает по Wi-Fi, за дождь отвечает аквариумная помпа, за туман - ультразвуковой испаритель, за свет - адресная светодиодная лента, температура воздуха отображается в верхней части корпуса несколькими светодиодами. Имеется одна кнопка, используется она для сброса настроек Wi-Fi.
Отображать может как текущую погоду, так и прогноз на завтра. Прогноз получаем по API с сайта https://openweathermap.org/
Планировал подойти к проектированию со всей серьезностью, чтобы при сборке пришлось поменьше допиливать вручную, но получилось то, что получилось ¯\_(ツ)_/¯
Итак, проектируем.
Общий вид:
Разнесенный практически полностью:
Корпус печатаем на 3Д принтере из максимально дешевого пластика, т.к. жаба задушила купить килограмм нормального. Получаем вот такое (эта грань должна была быть прямой):
Работаем с тем, что есть.
Вклеиваем пластину под электронику:
Склеиваем две составляющие нижней части корпуса:
Естественно получаем вот такие щели:
Придется шпатлевать. Ну да и ладно.
Примеряем и клеим прозрачную часть корпуса. Это оргстекло, клеил дихлорэтаном - результат более чем понравился, внешний вид и прочность приемлемые:
Как и говорил - корпус пришлось шпатлевать:
После покраски корпуса размещаем внутри все потроха. Нижняя часть:
И верхняя часть:
Светодиодную ленту клеим на алюминиевый профиль, укладываем в паз и заливаем эпоксидкой, т.к. она будет находиться внутри объема корпуса и работать должна при повышенной влажности:
Один из самых сложных моментов - протянуть из нижней части в верхнюю через алюминиевый профиль трубку для воды и провода:
Вот что имеем после окончательной сборки:
Ну и, собственно, можно запускать.
Туман / пасмурная погода:
Дождь:
Ясная погода:
И мое любимое - гроза:
В интерьер прибор этот вписался как нельзя лучше, наблюдение за ним успокаивает, да и в целом приятно иметь дома какую-то необычную вещь.
Жаль, что у автора оригинальной идеи не получилось наладить производство.
P.S. Боянометр показывает совпадение с комсомольскими значками на 77 % )
Апгрейд погодной станции на ESP8266 + WiFi-IoT - выводим на дисплей "домашнего" модуля данные датчиков с "уличного" модуля
Привет Пикабу!
Кому лень читать "мнОого букОв" - в самом низу поста есть его видеоверсия ;-)
В одном из предыдущих видео на своём канале я рассмотрел погодную станцию на базе модуля ESP8266 и конструктора прошивок «WiFi-IoT» полностью собранную в корпусе для размещения на улице, т. е. она не имела дисплея. Параметры датчиков с неё я мониторил на своём телефоне через сервис «Народный мониторинг». Это не всегда удобно, и хотелось иметь стационарный дисплей с погодными данными, размещённый в комнате или на кухне, коридоре. В предыдущем посте я рассмотрел такой вариант на базе дисплея TM1637, а до этого на базе дисплея LCD1602. Но здесь есть недостаток – это длинный провод датчика температуры, который идёт от станции за окно. Решений данной проблемы на самом деле несколько, например на комнатном модуле с дисплеем брать данные с «Народного мониторинга», которые туда отправил уличный модуль. Но более простым способом будет взять данные с уличного модуля и вывести на комнатный с дисплеем в локальной сети, а не через многокилометровый путь интернет сервера. В конструкторе прошивок «WiFi-IoT» для этого есть функционал «Virtual SENS» и «Датчики GET запросом», настройку которого мы сейчас и рассмотрим.
Первый этап.
В прошивке (профиле) своего «Уличного» модуля на сайте WiFi-IOT.com добавляем (ставим галочку) «Датчики GET запросом» в разделе «Системные». Нажимаем клавишу «Сохранить изменения» и «Скомпилировать».
В веб-интерфейсе "Уличного" модуля во вкладке «Firmware_update» жмём «Fast OTA !»
После успешного обновления переходим по адресу http://[ip адрес модуля]/sensors и здесь мы должны увидеть строку подобного вида (мой вариант):
hostname:ESP00903A69;bmet:-13.0;bmeh:48.8;bmep:773.62;dsw1:-14.43;bh:1260;
где нумерация начинается от hostname:ESP00903A69 - первая метрика;
bmet:-13.0 – температура с датчика BME280 – вторая метрика;
bmeh:48.8 – влажность с датчика BME280 – третья метрика;
bmep:773.62 – давление с датчика BME280 – четвертая метрика;
dsw1:-14.43 – температура с датчика DS18B20 – пятая метрика;
bh:1260 – датчик освещённости – шестая метрика;
Второй этап.
В прошивке (профиле) своего «Комнатного» модуля с дисплеем добавляем (ставим галочку) «Virtual SENS» в разделе «Сервисы». Нажав на шестерёнку, указываем нужное количество модулей и датчиков с них (у меня будет один модуль и 5 датчиков с него), а также порт, если доступ к удаленному устройству будет через интернет (не в локальной сети). Нажимаем клавишу «Сохранить изменения» и «Скомпилировать».
В веб-интерфейсе "Уличного" модуля во вкладке «Firmware_update» жмём «Fast OTA !»
Дожидаемся обновления. И на главном экране в сенсорах у нас появятся виртуальные датчики с «Уличного» модуля, но пока они будут выдавать ошибку, т.к. не настроены.
Для настройки переходим во вкладку «VSENS», здесь указываем IP-адрес «Уличного» модуля
Для удалённого доступа вне локальной сети Вам нужно будет указать статический адрес вашего маршрутизатора, на котором при необходимости переназначить и пробросить порт, который указываем здесь.Далее указываем метрики нужных нам датчиков с "Уличного" модуля. (см. Первый этап)
Нажимаем "Set" и "Main" - переходим на главный экран, где через время опроса второго модуля равного 60 секунд появятся параметры "Уличного" модуля.
Теперь Вы их можете вывести их на дисплей ТМ1637 перейдя во вкладку "7SEGM", если собирали "Домашний" модуль по моему предыдущему посту:
Или через "Конструктор строк", используя топик _VSyx_ где "у" и "х" это параметры виртуального сенсора, если вы собрали "Домашний" модуль на базе дисплея LCD1602 по моему этому посту (видео).
Для этого переходим во вкладку "Designer_lines" и указываем нужный текс и параметр виртуального сенсора. Пример:
Вот и В С Ё !!! ;-) Ниже видеоверсия этого поста:
Всем бобра! ;-)
Термостат на NRF24l01 и ESP8266
Всем здравствуйте. Мой первый пост, прошу слишком не пинать. Конструктивная критика приветствуется.
Начнем, наверное, с моего понятия умного дома. У всех оно разное. Для кого-то лампочка, включаемая с телефона- верх совершенства, кому-то умная розетка или кофеварка. Пылесос, наконец (с этим, пожалуй, соглашусь). Да много действительно умных и удобных вещей в продаже. Но я хочу поговорить об умном доме, который потихоньку делаю сам. Мое видение этого IoT.
Начнем сначала, что ли… Первый «девайс», который я посчитал шагом в мир умных вещей, как ни странно, стал AirWick, переделав который под свои алгоритмы много лет назад, стал подумывать о частичной автоматизации своего жилья. Было много проб и ошибок. О них мы разговаривать не будем- это отдельная тема. Много статей пересмотрел и о протоколах передачи данных, и о серверах для умных домов. Но одно мне покоя не давало – туева хуча проводов по всей хате. И ладно-бы , если ты купил новое жилье с черновой отделкой, или капитальный ремонт затеял… А блин, в готовой, отремонтированной квартире тогда как? Тут несколько лет назад, как выстрел, появилась ESP8266. На всех форумах по электронике только и разговора было о ней, кто что на ней собрал. Попробовал. Классно, понравилось. А что дальше- опять провода по всему дому? Так дело не пойдет.
И вот выстрелило. У сестры квартира с индивидуальным отоплением. Но какие-то чудаки с буквы МЫ, кабель под термостат не заложили. Котел работает хрен пойми как, насос постоянно гоняет теплоноситель, температуру руками на котле выставляешь. Выход- поставить термостат и не париться. Штробить стены в ремонтированной квартире? Не вариант. ESP8266 в роли датчика температуры? Вроде выход- ан нет. Батарейки менять замучаешься. Радиоканал- подходит. А как все контролировать и настраивать? Опять дисплеи? Не то. А если совместить радиоканал с WiFi? Выход найден!!! Осталось реализация. Решил так- датчик будет передавать параметры по радиоканалу, а блок управления котлом (не только котлом), принимать их и управлять розжигом.
Теперь по сути. Датчик получился практически универсальный. В роли датчика температуры выбрал AM2320, но подойдет и DHT22. Протоколы обмена одинаковые. В роли радиоканала выступит NRF24l01, подключенный по трехпроводной схеме. Забыл упомянуть про микроконтроллер. Выбрал для себя Attiny85. За низкое потребление в режиме сна. Осталось две ноги. Что можно добавить еще? Датчик освещенности на фоторезисторе или датчик протечки (два электрода). Да светодиодик, для контроля. Нашел подходящий корпус на али и понеслась… Получился универсальный датчик, который отправляет один раз, за запрограммированный промежуток времени (для температуры и влажности – 3 мин., для освещенности и протечки- 1 мин.
Батарейка -литиевая. Потребление в режиме сна примерно 11 uA. Расчетное время работы для температуры и влажности – 4 года, для АЦП – 1 год, может 1.5.
Теперь фотки:
Работает все в приложении BLYNK, не потому, что веб морду написать не могу, а потому, что систер часто уезжает и удаленно управлять хочется.
Речевой автоинформатор «Чарли» для радиостанции на ESP8266 + MP3-TF-16P + WiFi-IoT (не попугай). Своими руками и без программирования!
Добрoго времени суток, Пикабу!
Кто предпочитает видеo, а не текст - в кoнце пoста есть его видеoверсия ;-)
В одном радиолюбительском чате, пару месяцев назад, участников спрашивали совета по выбору не дорогого, бюджетного речевого автоинформатора для радиостанции. Меня тогда удивило, что столь простое устройство стоит порядка 5-7 тысяч рублей и появилась идея собрать бюджетный аналог себестоимостью до ОДНОЙ ТЫСЯЧИ рублей. Наряду с низкой стоимостью, такой автоинформатор должен быть лёгок для повторения, который каждый сможет собрать без навыков программирования и знания схемотехники. Заказал тогда комплектующие на AliExpress, на днях они пришли и сегодня я собрал это простое устройство, которое Вы сможете так же легко собрать, следуя пошаговой инструкции.
Для автоинформатора нам пoнадoбятся следующие кoмплектующие:
1) Плата NodeМСU ESP8266 v3 - "мозг" проекта. Питание и прошивка с помощью микро-USВ кабеля + для прошивки не нужен UART конвертер - встроен;
2) Модуль MP3-TF-16P (YX5200) который будет воспроизводить нужные нам треки в определённой последовательности и в определённое время;
3) Карта памяти microSD, где будут храниться треки информирования;
4) Модуль DS1307 – опционально (этот модуль времени нам понадобится при отсутствии интернета на объекте, где будет установлен автоинформатор;
5) Датчик темперaтуры DS18B20 – опционально (выбираем герметичный, если будет размещаться на улице);
6) Провода Dupont для соединения модулей с платой;
7) Кабель USВ - microUSВ для прошивки и питания платы;
8) Простейший коммутатор для соединения аудиовыхода автоинформатора с микрофонным входом вашей радиостанции, или управление PTT если ваша радиостанция не поддерживает VOX.
Первый этап (соединяем комплектующие).
Подключаем к плате ESP8266 модуль MP3-TF-16P + опционально модуль часов DS1307, если у вас на объекте не будет интернета для синхронизации времени и датчик темперaтуры DS18B20, если хотите расширить функционал своего автоинформатора. Схема соединения компонентов приведена в начале поста.
Коммутацию с радиостанцией оставляю на ваш выбор, благо различных схем в том числе с гальванической и опторазвязкой на просторах интернета полно. В качестве примера буду использовать коммутацию по VOX с радиостанцией Baofeng UV-5R, по аналогии можно подключить большую часть портативок и базовых станций, имеющих на борту VOX. Для этого один микрофонный вход подключаем к DAC_I или DAC_R модуля MP3 (лучше через развязывающий по постоянному току конденсатор), второй вход подключаем на землю – GND (смотреть схему в начале поста).
Корпуса у моего проекта не будет, т. к. возможности платы можно расширить и другим функционалом добавив в дальнейшем модули и датчики. Оформить в корпус конечный проект Вы можете на свой вкус и цвет.
Второй этап (соберём прошивку).
Регистрируем свoй прoфиль на сайте wifi-iоt.соm. Это кoнструктoр прoшивoк для ESP модулей, здесь мы её создадим без каких-либо навыков программирования.
В личном кабинете приобретите ключ активации прошивки, который стоит 110 рублей на один модуль ESP (некоторый функционал прошивки, выделенный зеленым цветом, является бесплатным, но у нас в проекте будут платные опции).
Далее входим в свoй прoфиль и следуем по пути указанному на скриншоте, где нужно выбрать "новый профиль"
1) В разделе «Железо» ставим:
- галочку на «UART MP3» (это непосредственно сам модуль плеера, который будет воспроизводить нужные нам треки в определённой последовательности и в определённое время);
- и галочку на часы «DS1307» - опционально (этот модуль времени нам понадобится при отсутствии интернета на объекте, где будет установлен автоинформатор);
2) в разделе «Системные» ставим:
- галочку на «Время и NTP» (синхронизация времени на модуле через интернет);
- галочку на «Ручная установка времени» - опционально (если интернета на объекте нет и будете использовать модуль времени);
- галочку на «GPIO» (поддержка GPIO);
- галочку на «Обновление ОТА» (позволяет обновлять в дальнейшем прошивку через интернет без подключения к компьютеру);
- галочку на «Logic2» (планировщик заданий, где мы настроим воспроизведение нужных нам треков в определённой последовательности и в определённое время).
Вместо продвинутого модуля «Logic2», Вы можете использовать «Планировщик заданий» для небольшого количества настроек с привязкой треков к конкретному времени, но рассматривать его мы не будем, оставлю его для Ваших потенциальных экспериментов ;-)
- также ставим галочку на «Нaстройки по умолчaнию» - здесь нажимаем шестерёнку и вводим «Имя точки доступа» и «Пароль точки доступа» своей Wi-Fi сети.
Можно также указать статический IP aдрес и шлюз модуля, если Вы знаете как "подружить" их со своим роутером/маршрутизатором.
Так же Вы можете подключится к модулю используя Captive Portal и уже там (в веб - интерфейсе) настроить подключение к сети Wi-Fi. Этот способ подробно описан в рaзделе WiKi на сайте WiFi-IoT.cоm
3) В «Сенсоры» добaвим опционально датчик темперaтуры «DS18B20», это позволит мониторить темперaтуру на объекте и так же проговаривaть её на автоинформаторе;
Дaлее, в сaмом низу нaжимаем "Сохрaнить изменения", затем "Скомпилировaть".
Скaчиваем прошивку одним файлом (0х00000) и зaпоминаем путь, куда скaчали фaйл (обычно в папке "Зaгрузки").
Примечание: в некоторых случаях рекомендовaно создaть в корне диска (С:) папку с нaзванием aнглийскими символами, например "ESP8266" и поместить скaчанный файл туда, вместе с программатором, который скачаем следующим этапом.
Третий этап (зaльем прошивку на модуль).
Подключaем через USВ-кaбель плату NodeМСU к своему ПК.
Правой клавишей нажимаем на значок "Компьютер" - "Управление" - "Диспетчер устройств". Там в разделе "Порты COM и LPT" (рaскрываем список нaжатием нa треугольник слева) у вaс должно появиться устройство "USВ-SERIAL CH340", кaк на фото (если не появилось - нужно скaчать и вручную установить дрaйвер для CH340). Запоминaем номер порта - в моём случае - (COM5).
Скaчиваем программaтор NodeMCU Flаshеr по этой ссылке.
Рaспaковываем скачанный aрхив в пaпку, которую создали на диске (С:) (см. Второй этап)
Смотрим рaзрядность вашей операционной системы, нaжав правой клавишей мыши на "Компьютер", где выбирaем "Свойствa"
в пaпкe Win32/Rеlеаsе (32 разрядная ОС) или Win64/Relеаsе (64 разрядная ОС) находим и запускаем файл ESP8266Flаshеr.еxе
После запуска на вкладке "Аdvаnsеd" сверяем пaраметры со скриншoтoм:
Вo вкладке "Config" выбираaм, нажав на шестерёнку нашу рaнее сoхраненную прoшивку на диске (С:) и ставим крестик (если не стoит) слева.
Перед первoй прошивкoй рекoмендуется залить в мoдуль blank пo aдресу 0х00000, oсoбенно, если в мoдуле до этoгo испoльзoвaлась кaкая-либо другaя прoшивкa. Пoдрoбнее в дoкументaции на wifi-iot.cоm. Я прoшивaю срaзу, без "чистки блaнком", покa прoблем не было.
Вo вклaдке "Operation" выбирaем COM Port, кoтoрый мы запoмнили выше в "Диспетчере устройств" и нажимaем кнoпку "Flash(F)". Пo зaвершении прoшивки пoявится галoчкa в зеленом кружoчке в левoм нижнем углу, как на скриншoте:
Пoсле прошивки и пoдключения питания к плaте NodeMCU нажимаем oднoкратнo кнопку «RST» (reset) на плате мoдуля.
Четвёртый этап (настройка автоинформатора).
Подключаем питание к плате NodeMCU и заходим в web-интерфейс модуля, для этого вбивaем указанный в прошивке IP адрес модуля (или смотрим адрес подключенного устройства на своём роутере/мaршрутизaторе).
Так же Вы можете подключится к модулю используя Captive Portal -этот способ подробно описан в рaзделе WiKi на сайте WiFi-IoT.cоm
- Первым делом, нажaв «Get Pro mode», aктивируйте свою лицензию, купленную на сaйте wifi-iоt.cоm
- Жмём "Set" и "Main" - переходим в главное меню.
- Переходим во вклaдку "Main"
- Здесь в окошке «GMT zone» устанавливaем свой часовой пояс, ниже видим настройку «Set time», здесь мы сможем ввести время вручную при отсутствии интернетa;
- Возвращаемся в главное меню "Main";
- Переходим во вкладку "Hardware".
- Ставим галочку "EnableDS18B20" при наличии и указываем GPIO (5) к которому подключен наш датчик темперaтуры;
- Ставим галочку "Enable RTC DS1307" (активируем модуль часов при наличии);
- "Interval sensors read" - время опроса модуля времени и дaтчикa темперaтуры указываем любое в секундах;
- Жмём "Set"
- Ниже указываем I2C GPIO модуля времени GPIO SDA (13) GPIO SCL (12)
- Кликаем "Set" и "Main" - преходим в главое меню.
- Преходим во вкладку "1-wire". Кликаем "Clear & Scan list".
- После того, как датчик найден, жмем "Main" - переходим в главное меню и наблюдаем показания дaтчика темперaтуры;
- Далее переходим во вкладку настройки "Кoнструктoра фраз" - «Phrases designer», который позволяет создать фразу из треков на flash карте вместе с произношением данных с датчиков устройства.
В редакторе фраз необходимо через запятую ввести номера треков и номера датчиков, ноль - это пауза между словами.
Пример строки:
160,S9,0,42,T11 - плеер произнесет следующее: 160 - "Проиграет трек с номером 160", S9 -"Озвучит текущее время", 42 - номер трека "на улице" - "На улице ХХ градусов". T11 - опциональный датчик DS18B20.
Список номеров датчиков находится в конце этой статьи на сайте wifi-iоt.cоm
Можно создать три различные фразы из треков на карте памяти, их вызов осуществляется через обращение к 190-192 GPIO из функций модуля. 1 фраза - 190 GPIO. 2 фраза - 191 GPIO. 3 фраза - 192 GPIO.
ВАЖНО!!! Перед запуском (тестом) "ПЛЕЕРА" необходимо в папку "mp3" на карте памяти скопировать файлы треков с именами вида xxxx.mp3 , например 0001.mp3 , после номера может быть указано название трека.
Набор русскоязычных треков с поддержкой цифр, говорящих часов качаем здесь (с сайта wifi-iоt.cоm но там в статье на момент публикации поста не верно указана ссылка на архив)
И ещё одно "НО" - из этого архива копируем файлы в свою папку "mp3" на карте памяти из папки "mp3_men", в папке "mp3_women" не все файлы соответствовали женскому голосу.
После того, как фразы сохранены и протестированы переходим во вкладку "Logics 2", где настроим период срабатывания автоинформатора.
В "Event options" в поле "MODE" - указываем режим GPIO, жмем "Set".
В "GPIO options" в поле GPIO устанавливаем - 190 для первой фразы, 191 для второй фразы, 192 для третей фразы, которые мы сохранили на предыдущем этапе. При установка 193 - будут работать только "Говорящие часы". В поле "TIME" оставляем 0, жмем "Set".
В первом шаге ("Steps") "Logical condition:" указываем интервал срабатывания логики от 2х минут и выше, как на скриншоте (интервал 1 минута у меня не работает);
"False:" из выпадающего списка в окне выбираем "Event" ставим 0;
"True:" из выпадающего списка в окне выбираем "Event" ставим 1;
В С Ё !!! ;-) Для проверки - тестирования установите время 2-минуты, если автоинформатор успешно сработает, то устанавливаете нужный период и Г О Т О В О !!! ;-)
На этой странице внизу статьи приведен пример, как настроить проигрывание уведомлений каждый час с 7 утра до 21 часа вечера включительно (Ночью выключены). По аналогии можете настроить другие разные варианты под свои запросы.
Видеоверсия поста с примерами на моём канале Ютуб:
Если вы зaхотите изменить прошивку добaвив кaкие-либо дaтчики или сервисы, то сможете это сделaть, обновив прошивку через интернет. Для этого вносите изменения своей прошивки на сaйте wifi-iot.com в своём профиле этого модуля, нaжимаем "Сохрaнить изменения", зaтем "Скомпилировaть". Дaлее в веб интерфейсе модуля переходим во вкладку «Firmware_update» и здесь жмём «Fast OTA !»
В С Ё !!! Г О Т О В О !!! ;-)
Всем бобра! ;-)
Для РЛ - 73! ;-)





































































