Оглавление:

Мощная автономная система домашней автоматизации - Pi, Sonoff, ESP8266 и Node-Red: 9 шагов (с изображениями)
Мощная автономная система домашней автоматизации - Pi, Sonoff, ESP8266 и Node-Red: 9 шагов (с изображениями)

Видео: Мощная автономная система домашней автоматизации - Pi, Sonoff, ESP8266 и Node-Red: 9 шагов (с изображениями)

Видео: Мощная автономная система домашней автоматизации - Pi, Sonoff, ESP8266 и Node-Red: 9 шагов (с изображениями)
Видео: Интегрируем Пожарку и Охранку в Умный Дом на Home Assistant 2024, Ноябрь
Anonim
Мощная автономная система домашней автоматизации - Pi, Sonoff, ESP8266 и Node-Red
Мощная автономная система домашней автоматизации - Pi, Sonoff, ESP8266 и Node-Red

Это руководство должно привести вас к первой базе, где вы можете включить / выключить свет или прибор с помощью любого устройства, которое может подключаться к вашей локальной сети, и с помощью отличного настраиваемого веб-интерфейса. Возможности расширения / добавления функций обширны, включая отправку электронных писем, сообщений Twitter, считывание датчиков (например, температуры). Вы можете легко установить правила, например. - при температуре ниже 15С в 23:00 включить электрическое одеяло на 30 мин. Система использует протокол MQTT с TCP, который значительно более надежен, чем UDP - что неожиданно используется некоторыми коммерческими устройствами домашней автоматизации. Как только тяжелая работа по настройке системы, описанная здесь, будет завершена, можно начинать самое интересное. Node Red предоставляет фантастический пользовательский интерфейс, интуитивно понятный, быстрый и простой в настройке, а также потрясающие возможности.

Результатом является мощная система домашней автоматизации, которая полностью находится под собственным контролем и находится полностью в локальной сети. Многие из систем, показанных на Instructables, работают с облачными серверами и, следовательно, представляют угрозу безопасности и могут требовать подписки. Их проще настроить, но они имеют более высокий риск для безопасности и потенциально более дорогостоящие. Я должен добавить, что можно настроить VPN (виртуальную частную сеть) на Pi, чтобы обеспечить безопасное соединение с домашней сетью / системой, если доступ извне будет полезен (Google Pi OpenVPN для инструкций).

Эта система требует перепрограммирования устройств Sonoff с помощью отличной системы с открытым исходным кодом под названием Sonoff-Tasmoda. Это можно сделать с помощью специальной настройки Arduino и преобразователя USB в последовательный порт. В устройствах Sonoff используется чип ESP8266 Wi-Fi, поэтому вы также можете создавать свои собственные устройства с использованием модулей ESP8266 или устанавливать их на другие устройства для обеспечения беспроводной связи.

Самая большая задача - настроить Raspberry Pi в качестве концентратора. Это запускает брокер (или сервер) MQTT, который управляет обменом данными с подключенными устройствами. Pi также запускает систему под названием Node-Red, которая может перехватывать сообщения и данные и выводить команды, например, когда включать электрическое одеяло. Node-Red также предоставляет интерфейс для обслуживания веб-страницы, на которую вы можете войти через смартфон / планшет / ПК / ноутбук, чтобы увидеть, что происходит, включить ручное переключение света и т. Д.

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

Шаги следующие:

  • Загрузите Pi с помощью Rasbian Stretch
  • Обновите и добавьте функции в Node-Red
  • Установите брокер Mosquitto MQTT
  • Настройте среду Arduino для загрузки прошивки Sonoff-Tasmota
  • Перепрограммируйте переключатель Sonoff
  • Настройте интерфейс Node-Red
  • Протестируйте, все работает.

Оборудование вам понадобится:

  • Raspberry Pi и блок питания (а также клавиатура и монитор для начальной настройки) (здесь используется модель B)
  • Переключатель Sonoff
  • Последовательный преобразователь USB
  • Необязательно - плата разработки ESP, такая как NodeMCU.

Мой опыт работы с Raspberry Pi показывает, что настройка чего-либо, кажется, требует значительно больших усилий, чем можно представить, когда что-то не работает или застревает на каком-то тривиальном шаге, где объяснение могло быть лучше. На форумах не всегда можно получить советы, которые работают! Я нашел несколько маршрутов, которые по тем или иным причинам просто не работали. Это стоило 3 дня! Затем я вытер все и начал заново и закончил менее чем за (долгий) день. Однако здесь использовался более старый Распиан Джесси. После этого я нашел способ использовать текущую и недавно выпущенную версию (Stretch) и проделал все это снова. Это руководство позволяет копировать и вставлять инструкции в Pi. Так что вы должны закончить через несколько часов. В любом случае, я надеюсь, что это поможет вам быстрее освоиться и с гораздо меньшими трудностями. Поверьте, это того стоит для конечного результата.

Шаг 1: Загрузите Пи с помощью Rasbian Stretch

Это должно быть довольно просто. Начните с SD-карты 8 ГБ или 16 ГБ. Загрузите последнюю версию с:

www.raspberrypi.org/downloads/

Основной поток здесь предполагает, что загружена полная версия. Однако вы можете использовать облегченную версию для экономии места. Если вы используете Raspbian Stretch Lite, выполните этот шаг, а затем перейдите к шагу 9 в конце.

Распаковка скачанного файла дает папку с файлом.img. 7Zip рекомендуется для Windows (и Unarchiver Mac). Образ необходимо записать на SD-карту, но необходимо использовать специальную программу, поскольку файловая система несовместима с Windows. Рекомендуемое программное обеспечение называется Etcher и может быть загружено с:

etcher.io/

Инструкции для Etcher находятся на их веб-сайте и вряд ли могут быть проще. Выберите образ и диск и нажмите «Flash».

Теперь с нашей прошитой SD-картой можно запустить Pi.

Если вы знаете IP-адрес, который использует ваш Pi, или рады найти его, войдя в свой маршрутизатор, вы можете избежать необходимости в клавиатуре и мониторинге и немедленно использовать SSH. Просто добавьте пустой файл с именем SSH на SD-карту, вставьте, подключитесь к Ethernet и включите питание. В противном случае следуйте инструкциям ниже.

Подключите Pi к Интернету, экрану, мыши и клавиатуре и подключите к источнику питания. Первое, что мы сделаем, это включим SSH, чтобы мы могли выполнять большую часть настройки, не выходя из ПК. Конечно, это можно сделать напрямую, но это очень помогает иметь возможность следовать этому руководству на том же устройстве, что и устройство, управляющее Pi, и использовать копирование и вставку для большинства инструкций. Также в моем случае моя рабочая станция на ПК хороша и удобна, но тоже недостаточно велика для пи.

Есть руководство по работе над видео на YouTube. Вот с чего я начал. Вы можете запустить видео, следуя этим инструкциям. Однако, когда я снова проходил этот процесс, когда писал это, мне было проще просто следовать приведенным здесь инструкциям. Есть существенные отклонения. Есть также некоторые разделы, в которых я посоветовал следить за видео, а не перечислять здесь шаги. Однако я бы порекомендовал взглянуть на него, чтобы понять MQTT, Node-Red и общий процесс настройки. Видео длится 38 минут, так что устраивайтесь поудобнее. Видео начинается с демонстрации того, что может делать Node Red, а затем охватывает установку и настройку Pi, за которым следует обновление Node Red и, наконец, установка Mosquitto. Ключевые тайминги на случай, если вы захотите вернуться в раздел:

00:00 Знакомство с видео

03:00 Демонстрация Node Red

14:14 Импорт элементов панели в Node Red

21:05 Начальная настройка Pi, включая SSH

23:35 Установка кода поддержки Node Red

27:00 Введение в MQTT

29:12 Установка Mosquitto (MQTT) (Примечание работает только для Raspian Jessie)

33:00 Примеры Node Red

Я перечислю команды жирным курсивом (вместо использования «»). Это форматирование игнорируется, когда вы копируете и вставляете их в Pi.

Введение в Node Red даст вам представление о том, что система может делать, и даст представление о том, где мы закончим.

Видео на YouTube находится по адресу:

Следуйте процедуре установки с 21:05 до 23:35. Обратите внимание, что логин по умолчанию - user: pi и пароль: raspberry. Перед перезапуском найдите IP-адрес пи. Либо щелкните значок «стрелка вверх + стрелка вниз» на верхней панели рабочего стола, либо введите следующую инструкцию в терминале / окне терминала:

sudo ifconfig адрес

Затем запишите IP-адрес после: inet addr:. Он будет в виде 192.168.x.y

Запишите этот адрес и перезапустите (введите: sudo shutdown –r сейчас)

Ключевым моментом на этом этапе является то, что SSH был включен, и можно настроить ссылку на Pi с ПК (Mac и Linux включают интерфейсы SSH). Хорошая программа для этого - бесплатная загрузка под названием PuTTY, которая также может использоваться в качестве последовательного интерфейса и может работать с Telnet. Шпаклевка доступна от:

www.chiark.greenend.org.uk/~sgtatham/putty…

Скачайте и установите PuTTY.

Теперь, после перезапуска Pi, запустите PuTTY и введите IP-адрес, указанный ранее. См. Пример ниже:

Теперь нажмите "Открыть"

После входа как: введите пи

Затем введите свой пароль.

Теперь следуйте инструкциям здесь и, при желании, запустите видео с 23:35. В большинстве случаев вы можете скопировать и вставить. Выделите текст и используйте ctrl + C для копирования. Затем щелкните правой кнопкой мыши в PuTTY, чтобы вставить. Иногда текст появляется не сразу, поэтому подождите несколько секунд. Если вы вводите дважды, используйте Backspace, чтобы удалить вторую запись. Нажмите Enter для выполнения каждой инструкции.

sudo raspi-update

Я получил команду, которая не найдена, и проигнорировал эту и следующую инструкцию по выключению / перезапуску:

sudo shutdown -r сейчас

sudo apt-get -y update

sudo apt-get -y обновление

Это займет некоторое время…..

sudo apt-get autoremove

sudo apt-get -y update

sudo shutdown -r сейчас

На данный момент у нас загружена и обновлена операционная система Pi, готовая к следующему шагу.

Шаг 2. Обновите и добавьте функции в Node-Red

Соединение PuTTY будет потеряно при перезапуске в конце предыдущего шага. Итак, закройте PuTTY и, дождавшись загрузки Pi, войдите в систему снова, как раньше.

Я перешел к более простому и надежному способу загрузки Node-Red - следуя подходу https://nodered.org/docs/hardware/raspberrypi. При этом используется сценарий и устанавливается или обновляется Node-Red, поэтому подход такой же, как для полной или облегченной версии Raspbian Stretch. Так введите:

bash <(curl -sL

При появлении запроса введите Y (дважды). Этот сценарий также загружает файлы, необходимые для включения автозапуска Node-Red.

Итак, на данный момент мы загрузили и обновили наш pi, а также обновления, необходимые для Node Red. Сделать перезагрузку перед следующим этапом не помешает.

sudo shutdown -r сейчас

Шаг 3: Установка Mosquitto MQTT

Если вы еще этого не сделали, вам стоит посмотреть ознакомительный видеоролик о MQTT на видео с 27:00.

Здесь нам нужно пойти другим путем. Процедура, описанная в видео, работает только для более старой версии Jessie Raspian. На сайте комаров обсуждают, но нет четкого результата, поэтому мы выберем более простой и безопасный маршрут.

Итак, войдите в систему с помощью PuTTY и введите следующее:

sudo apt-get update

sudo apt-get install mosquitto mosquitto-clients

Y

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitto начать

Последние две инструкции останавливают и запускают mosquitto и показывают, что наш брокер MQTT работает.

Для быстрого тестирования откройте еще два сеанса PuTTY и войдите в каждый из них.

К настоящему времени вы знаете, что MQTT работает с устройством, которое требует данных, подписываясь на «тему». Брокер отправит любые данные с той же «темой». Затем устройство, желающее отправить данные / инструкции, публикует их брокеру, используя ту же «тему».

Итак, в одном сеансе PuTTY введите:

mosquitto_sub -d -t привет / мир

Это инструкция для подписки на тему: hello / world.

В другой введите:

mosquitto_pub -d -t hello / world -m "Привет из окна Терминала 2!"

Это инструкция по публикации в той же теме с сообщением. Текст: «Привет из окна Терминала 2!» теперь должен появиться в другом терминале.

Молодцы, зашли так далеко. Теперь у нас есть Pi загружен и обновлен обновлениями, необходимыми для Node-Red, и с установленным и протестированным брокером mosquito MQTT. Отныне жизнь становится легче и веселее. Закройте два сеанса PuTTY, использованные для теста MQTT.

Шаг 4: Настройка интерфейса Node Red

Сначала нам нужно запустить Node Red. Введите инструкцию:

узел-красный-пи --max-old-space-size = 256

Подождите, пока он запустится, и вы увидите текст «Начатые потоки».

Теперь откройте браузер, я использую Chrome и ввожу указанный ранее IP-адрес pi, за которым следует: 1880, то есть что-то вроде 192.168.0.8:1880.

Теперь у вас должна появиться страница программирования Node Red, как показано ниже:

Теперь вы можете следовать примерам Node Red, начиная с 33:00, или сразу перейти к небольшой дополнительной настройке и загрузке первого потока, который покажет ссылку на MQTT и будет готов управлять нашим коммутатором.

Требуется дополнительная настройка, чтобы добавить элементы панели управления, которые активируют веб-интерфейс.

Они показаны на видео в 14:14.

Следуйте инструкциям, чтобы загрузить node-red-dashboard.

Теперь мы можем немного поиграть и показать, как MQTT работает и управляется Node-Red. Этого нет на видео, но это ключ к этому проекту. Вы можете следовать моим инструкциям и / или импортировать потоки из прикрепленного файла NRtest1.txt.

Сначала добавьте узел ввода ввода и узел вывода mqtt и свяжите их вместе.

Дважды щелкните узел ввода (изначально обозначенный меткой времени). В разделе Payload используйте twiddly, чтобы перейти на строку, и введите: Hello from me. Оставьте тему пустой, так как мы можем ввести ее в узел MQTT. Нажмите Готово

Теперь дважды щелкните узел MQTT. Щелкните значок карандаша справа от раздела Сервер. Это открывает новый диалог. Введите: localhost в разделе Сервер. Щелкните Добавить. Теперь, вернувшись в узел Edit mqtt out, введите нашу тему в раздел Topic: hello / world. Установите QoS на 1. Щелкните Готово. Теперь нажмите «Развернуть». Вы должны увидеть зеленую каплю "connected" под узлом mqtt.

Теперь добавьте еще два узла - входной mqtt и выходной отладочный - и соедините их вместе. Теперь дважды щелкните входной узел mqtt и введите hello / world в разделе темы. На сервере уже должен отображаться localhost: 1883. Установите QoS на 1. Щелкните Готово. Затем нажмите «Развернуть» и перейдите на вкладку отладки на правой панели. Теперь щелкните серый квадрат слева от узла ввода «Привет от меня». Это отправляет текстовые данные брокеру MQTT с темой hello / world. Брокер знает, что входной узел mqtt подписан на ту же тему, и поэтому пересылает полезную нагрузку. Затем узел ввода mqtt отправляет это на вкладку отладки (RHS), и должен появиться текст «Привет от меня».

Это ставит галочку в другом поле, поскольку у нас есть Node Red, который разговаривает с нашим брокером MQTT. Обратите внимание, что Node Red - это просто клиент для брокера, как и устройства Sonoff, которые мы подключим позже. Однако он обеспечивает сложную автоматизацию и отличный пользовательский интерфейс.

Теперь мы можем внести пару небольших изменений и настроить потоки для нашего переключателя Sonoff.

Поэтому удалите узел ввода ввода (щелкните, чтобы выделить, и нажмите клавишу удаления). Теперь добавьте переключатель из раздела дашборда и подключите его к выходу mqtt. Дважды щелкните переключатель. Щелкните карандаш справа от группы. Войдите в Имя: Свет. Затем щелкните карандаш справа от вкладки и войдите в раздел имени: Lounge. Щелкните Добавить / Обновить и еще раз Добавить / Обновить. Теперь, вернувшись в узел переключателя Edit, включите и выключите Payloads. Используйте twidlys для выбора строки и введите ON для полезной нагрузки On и OFF для полезной нагрузки OFF. Нажмите Готово

Теперь перейдите к каждому из узлов mqtt и измените тему на cmnd / sonoff / POWER. При копировании и вставке убедитесь, что вы не добавили пробел в конце. Это другая тема и не будет работать с Sonoff. Поиск бездомного места может занять час или около того - поверьте мне! Я также перешел на панель управления> Тема и выбрал: Темный. Щелкните Развернуть и выберите вкладку отладки.

Теперь откройте новый сеанс браузера в новом окне и установите его размер, как мобильный телефон в сеансе Node Red. Введите адрес: ваш IP-адрес Pi: 1880 / ui / # / 0, то есть что-то вроде 192.168.0.8:1880/ui/#/0. Вы должны увидеть экран с Lounge и Light и выключить. Включите, а затем выключите переключатель. В окне отладки должны отображаться полезные данные ВКЛ и ВЫКЛ. Теперь, если вы хотите, также войдите в систему через мобильный телефон. Обратите внимание, что положение переключателя синхронизировано. Неважно, что наш Sonoff еще не подключен. Когда это так, подписавшись на тему, он получит сообщение / полезную нагрузку и будет действовать в соответствии с ним.

Последний маленький шаг - сделать так, чтобы Node Red запускался автоматически после загрузки Pi.

У Node Red есть руководство по адресу:

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

Чтобы затем включить автоматический запуск Node-RED при каждой загрузке и при сбоях, введите (откройте сеанс PuTTY):

sudo systemctl включить nodered.service

Если вам когда-нибудь понадобится отключить этот ввод:

sudo systemctl отключить nodered.service

Теперь выключите пи с помощью sudo shutdown now и отключите питание.

Теперь наш Pi заблокирован и загружен, готовый к действию. У нас есть компьютер / мобильный телефон, подключенный к Node Red, и он обращается к нашему серверу MQTT. Это был долгий путь и заслужил похвалу по спине. Отличная работа. Я обнаружил, что следующее, немного Arduino, намного проще!

Шаг 5: Настройка системы Arduino для перепрограммирования устройств Sonoff

Вся информация для этого находится на Sonoff-Tasmota GitHub. Единственная часть, с которой у меня возникли трудности, это текст темы - но я хитро уговорил вас ввести это уже!

Перейдите на

Вы найдете инструкции по установке на вкладке Wiki в разделе инструментов загрузки:

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

Инструкции хороши, но требуют особого внимания к деталям. Я был сбит с толку тем, что мне нужна была папка ESP8266 внутри папки, которая находилась в другой папке с именем ESP8266 и, следовательно, пропустила два уровня.

Я последовал рекомендации по совершенно отдельной настройке Arduino. Я создал новую папку под названием «ArduinoSonoff», отдельную от моей существующей папки Arduino. Установка довольно продвинутая, и поэтому держать ее отдельно - очень хорошая идея. Если это ваша первая установка Arduino, убедитесь, что вы установили ее второй раз в «Arduino» или другую папку для любой другой работы с Arduino, включая работу с ESP8266.

Загрузите последнюю версию Arduino IDE с https://www.arduino.cc/en/Main/Software. Разархивируйте файл в новую папку.

Инструкции включают загрузку системы Sonoff-Tasmoda с главной страницы https://github.com/arendst/Sonoff-Tasmota через: Клонировать или Загрузить> Загрузить ZIP. Разархивируйте файл в новую папку.

Внимательно следуйте инструкциям. Я не выполнял действия в разделе "Необязательно: подготовка к загрузке по OTA". Мы оставим это на другой день.

Теперь запустите Arduino IDE (дважды щелкните arduino.exe). Загрузите эскиз Sonoff-Tasmota через File> Sketchbook> sonoff. Нет необходимости вносить какие-либо правки. Все настройки выполняются через последовательное соединение после загрузки прошивки. Они хранятся в EEPROM. Следовательно, микропрограммное обеспечение может быть обновлено, а все настройки сохранены. Это довольно умная штука. Однако вы можете избежать необходимости выполнять здесь пару шагов, перейдя в файл user-config.h и введя свой SSID и пароль Wi-Fi, а также MQTT_HOST (замените «domus1» - вторую ссылку на свой IP-адрес Pi). Позже вы можете также захотеть ввести пользователя и пароль MQTT. Перед загрузкой проверьте настройки платы в разделе Инструменты. Для соответствия требованиям, изложенным в Wiki, потребуется пара изменений. Теперь нажмите "Скомпилировать" (значок галочки). Он должен скомпилироваться. Если это не так или требуемые настройки платы недоступны, вернитесь и проверьте каждый шаг настройки.

Шаг 6: перепрограммирование переключателя Sonoff

Теперь мы готовы к загрузке. На этом этапе можно либо сразу перейти к прошивке переключателя Sonoff, либо сначала прошить модуль ESP8266. Я сделал последнее, отчасти потому, что мои переключатели еще не прибыли (только что прибыли, когда я набираю это!), Но также в качестве меры предосторожности, поскольку мигание переключателя Sonoff является односторонним шагом, поскольку оригинальная прошивка не является общедоступной, поскольку Я в курсе. У меня есть пара плат NodeMCU. Их легко подключить, так как они имеют встроенный преобразователь USB в последовательный порт. Однако метод сброса nodemcu не работает с этой системой. Так что оставьте для Tools> Reset Method значение «ck». Выполните обычную ручную настройку вспышки, удерживая кнопку Flash (GPIO 0 на земле), одновременно нажимая и отпуская Reset (Сброс на землю). Я не уверен, есть ли у этого тайм-аут, или, может быть, я недостаточно долго удерживал GPIO 0 на низком уровне, но мне нужно было несколько попыток, в том числе сделать это во время компиляции Arduino IDE!

Если вы хотите проверить ответы - релейный выход D6 на платах NodeMCU. На ESP12 это GPIO 12. Выход светодиода - D7 (NodeMCU) или GPIO 13 (ESP12).

Переключатель Sonoff.

ВНИМАНИЕ: я должен сказать: «ни при каких обстоятельствах не подключайтесь к сети при открытом корпусе». Обратите внимание, что на печатной плате (по крайней мере, на Sonoff Basic (линейный переключатель) есть только «одиночные изоляционные» расстояния между секцией низкого напряжения и сетью. Поэтому любую часть цепи Sonoff следует рассматривать как сетевое напряжение. Tasmota GitHub действительно показывает подключение датчика температуры и влажности к Sonoff S20. Я бы не стал этого делать из-за проблем с изоляцией. - поэтому, если вы хотите сделать это, получите модуль ESP12 или NodeMCU и настройте его отдельно с соответствующей двойной изоляцией. или заземленный источник питания.

Съемный выключатель Sonoff S20 - хорошая отправная точка, поскольку он не требует подключения к электросети. Его можно открыть, открутив один винт (под защитной пломбой) и приподняв корпус. На фото ниже показано, где находятся теги. Сжатие корпуса в этих точках помогает.

Последовательный преобразователь USB

Мой любимый конвертер - версия FTDI. Однако у него нет достаточных возможностей для обеспечения потребностей Sonoff 3,3 В. В спецификации FTDI указано максимальное значение 50 мА. Следующая лучшая альтернатива - использование микросхемы CP2102. Однако у него есть предел в 100 мА, которого все еще недостаточно. Очевидно, что многие используют этот конвертер напрямую, но также есть сообщения о сбоях загрузки. Я бы ограничил время подключения, так как под нагрузкой он будет нагреваться. Делайте это на свой страх и риск. Идеальное решение - также иметь стабилизатор на 3,3 В, например AMS1117 3.3. Для этого я сделал небольшую печатную плату. См. Программатор для устройств Sonoff.

Моя последовательность программирования следующая:

Откройте IDE Arduino.

В разделе "Инструменты" проверьте, что настройки такие же, как в Wiki.

Внесите необходимые изменения в user_config.h. Я установил Wi-Fi SSID и пароль, а также адрес брокера MQTT и сведения о часовом поясе / летнем времени.

Нажмите «Подтвердить», чтобы убедиться, что он компилируется нормально.

Подключите последовательный преобразователь USB (отдельно) к ПК. Обратите внимание на номер порта.

Теперь отсоедините последовательный USB-кабель от ПК и подключите его к переключателю Sonoff. Убедитесь, что заземление и соединения 3v3 выполнены правильно (земля подключена к заземляющей пластине на печатной плате Sonoff).

Удерживайте программатор так, чтобы контакты были в безопасности, одновременно нажимая кнопку.

Теперь подключите USB-кабель к ПК, проверьте правильность номера порта (в Инструменты), затем нажмите «Загрузить».

Я продолжаю удерживать кнопку во время программирования, потому что не хочу нарушать соединения.

Когда вы закончите, вы должны увидеть экран, как показано ниже:

Изображение
Изображение

Sonoff требуется пара битов информации для подключения к нашей системе: SSID и пароль Wi-Fi локальной сети, а также IP-адрес Pi. Есть несколько способов сделать это, один из которых - изменить файл config.ino, как отмечалось ранее. Если у вас есть смартфон, вы можете (после сборки переключателя) довольно быстро нажать кнопку Sonoff 4 раза, чтобы перевести его в режим веб-сервера. Светодиод будет мигать. Мне пришлось несколько раз попытаться заставить это работать. Затем на своем смартфоне найдите новую сеть Sonoff и подключитесь. Появится веб-страница, на которой вы можете указать необходимые данные. IP-адрес Pi входит в имя хоста. Я также изменил второй SSID и пароль на что-то длинное и в основном непригодное для использования.

В качестве альтернативы его можно настроить через последовательное соединение сразу после загрузки. Откройте последовательный монитор Arduino (в разделе «Инструменты»).

Команды для входа:

SSId yourWiFiSSID

Пароль yourWiFiPassword

MqttHost 192.168.x.y (IP-адрес PI)

Вы также можете ввести SSId1 и Password1, а затем что-то длинное и непригодное для использования, чтобы эффективно отключить это.

Теперь вы можете поместить переключатель Sonoff в коробку, открыть панель управления Node-Red и Node-red, нажать кнопку переключателя и посмотреть на вкладку отладки, которая теперь должна включать ответы от Sonoff. Итак, мы сделали еще один важный шаг - наш первый коммутатор управляется с ПК / смартфона.

До сих пор мы не упоминали о безопасности. Есть возможность использовать шифрованную связь. Это довольно сложно настроить и, вероятно, более уместно, если используется облачный брокер. Также есть возможность добавить имена пользователей и пароли для всех подключенных устройств и запретить анонимным пользователям. Это довольно просто настроить. А теперь о безопасности.

Шаг 7: Безопасность

MQTT позволяет использовать имена пользователей и пароли для каждого клиента. Это легко настроить. Вероятно, проще сначала переименовать каждое устройство, а затем задать им имена пользователей и пароли. Это можно сделать с помощью команд MQTT, и Node-Red, вероятно, является самым простым способом их отправки. Сначала определитесь с соглашением об именах. Один из вариантов - основывать имена на местоположении и функциях. Затем вы захотите записать имя (тему), имя пользователя и пароль вместе с резервной темой. Обратите внимание, что существует также «параметр сброса» для сброса настроек Sonoff до исходных значений загрузки (см. Использование Wiki> Функции кнопок).

Включите пи и через несколько секунд откройте в браузере Node-Red (IP-адрес: 1880).

В Node-Red настройте узел инъекции, свяжите его с выходом mqtt и установите сервер mqtt на localhost. Оставьте поле темы, пользователя и пароля пустыми, так как мы установим их в узле инъекции. Также настройте входной узел mqtt и подключите его к узлу отладки, чтобы мы могли видеть ответы. Установите примечание ввода mqtt на localhost (уже должно быть установлено) и введите + / + / + для темы, чтобы он перехватил весь трафик.

Введите следующую последовательность настроек в узел инъекции.

Сначала проверьте подключение к

Тема: cmnd / sonoff / Статус

Сообщение: 6

нажмите «Ввести один раз при запуске». Развертывать. Мы должны увидеть отладку, включающую 7 строк данных из stat / sonoff / STATUS6.

Введите тему: cmnd / sonoff / Тема и сообщение: loungelight. Развертывать. Это изменяет имя переключателя с sonoff на loungelight

На вкладке отладки должно отображаться перезапуск устройства с новым именем / темой.

Тема: cmnd / loungelight / MqttUser

Сообщение: loungelight

Щелкните развертывание. Отладка должна быть видна из stat / loungelight / RESULT с {«MtqqUser»: «loungelight»}

Тема: cmnd / loungelight / MqttPassword

Сообщение: loungelightPW (заметьте, будьте более изобретательны, чем это!)

Очистите вкладку отладки и разверните.

Ответ должен быть виден из stat / loungelight / RESULT с {"MqttPassword": "loungelightPW"}

Теперь введите NodeRed и NodeRedPW в качестве имени пользователя и пароля в выходном узле mqtt. Это можно сделать с помощью значка карандаша сервера и вкладки безопасности в открывшемся окне. Это автоматически копируется на другие узлы MQTT.

Проверить еще раз с

Тема: cmnd / loungelight / Статус и сообщение: 6. Развертывать.

И вот ответ отправлен.

Итак, на этом этапе мы переименовали наше устройство Sonof, чтобы оно слушало темы cmnd / loungelight / …… и входило на сервер MQTT с именем пользователя loungelight и паролем loungelightPW. Мы также установили имя пользователя и пароль для Node-Red.

Затем мы должны указать серверу MQTT mosquito принимать клиентов только с именами пользователей и указать имена пользователей и пароли, которые должны быть приняты.

Порядок действий такой:

  • Остановить комаров
  • Создать собственный файл конфигурации
  • Редактировать файл конфигурации
  • Создать файл паролей
  • Добавьте пользователей / пароли.

Итак, войдите в новую сессию PuTTY и выполните следующие команды:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Запускает редактор.

Добавьте строки:

allow_anonymous false

файл_паролей /etc/mosquitto/conf.d/passwd

require_certificate ложь

Сохраняем и выходим (Ctrl + X), Y, вводим.

sudo touch passwd При этом создается файл паролей, а в следующих инструкциях добавляются имена и пароли.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitto перезапустить

Обратите внимание, что при добавлении нового устройства вам нужно будет либо ввести пользователя и пароль через последовательный порт и добавить их в файл паролей, либо временно изменить файл конфигурации mosquitto и закомментировать (добавить # в начале строки) строки «allow_anonymous false» "и" файл-пароля /etc/mosquitto/conf.d/passwd ", а затем сбросьте их, когда данные будут отправлены на устройство и добавлены в файл паролей, как указано выше.

Мы изменили имя sonoff на loungelight и обновили выходной узел mqtt (подключенный к коммутатору), чтобы использовать тему cmnd / loungelight / POWER.

Нажмите «Развернуть» и убедитесь, что узлы mqtt показывают «подключено».

Затем попробуйте кнопку переключателя и найдите отладку, показывающую, что переключатель Sonoff отвечает. Вы заметите, что устройство показывает изменение с темой: stat / loungelight / POWER. Итак, теперь измените входной узел, который был установлен на cmnd / sonoff / POWER, на stat / loungelight / POWER. Этим мы можем восполнить пробел в нашей функциональности. Первоначально настроенная система будет синхронизирована со всеми вошедшими в систему пользователями, но не будет синхронизироваться с изменениями переключателя, сделанными нажатием кнопки на переключателе Sonoff. Итак, теперь подключите выход узла ввода stat / loungelight / POWER mqtt к входу переключателя (LHS). Теперь дважды щелкните переключатель и снимите флажок «если сообщение приходит на ввод, переходить к выводу». Это вызывает некоторые новые параметры - выберите «значок переключателя показывает состояние входа». Развертывать. Итак, теперь у нас есть хороший цикл обратной связи. Положение переключателя на приборной панели всегда будет меняться при изменении переключателя Sonoff, независимо от того, где было инициировано изменение.

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

Шаг 8: Начальные шаги для расширения

У меня есть еще одна обучающая плата для разработки светодиодов Sonoff-Tasmota Sensors для домашней автоматизации, которая показывает некоторые из дополнительных возможностей прошивки Sonoff-Tasmota:

Измерение температуры и влажности

Обнаружение вторжения (вход переключателя)

ИК-пульт (для телевизоров и т. Д.)

Светодиодные гирлянды - как RGB, так и NeoPixel (с индивидуальной адресацией)

Датчики I2C

Для вышесказанного я использую ESP12F и специальную печатную плату. В равной степени можно использовать NodeMCU и макетную плату. Это позволяет использовать эти дополнительные функции без подключения к устройству Sonoff и, следовательно, является гораздо более безопасным подходом. С вводом температуры я смог завершить автоматизацию электрического одеяла.

Можно легко добавить музыку и Интернет-радио. Это открывает возможности для включения определенных станций или альбомов в определенное время или, возможно, в ответ на обнаружение посетителя (телефона). Это связанное руководство находится в высококачественном музыкальном проигрывателе и интернет-радио с управлением со смартфона. Поскольку это также управляется Node-RED, должно быть возможно даже иметь более одной звуковой системы и использовать связь MQTT для их управления.

Я также изучаю Node-Red, включая отправку электронных писем и голосовые оповещения. Система также может определять, когда вы входите / выходите, путем проверки связи с IP-адресом вашего мобильного телефона. Node-Red также может получать доступ к погоде и новостям, поэтому можно добавлять информацию, а также выполнять автоматизацию.

Есть несколько уловок, которые нужно изучить, но во второй раз они становятся чертовски легкими.

Еще один способ - добавить отображение к Пи, чтобы показать панель управления. Это «незавершенная работа» - или, другими словами, я не очень доволен. Дисплей, который у меня есть, сложно повернуть в портретный режим, а браузер Chromium очень медленный. Альтернативой было бы купить старый планшет на ebay и использовать его. Я могу попробовать Pi 2 и посмотреть, дает ли это достаточное улучшение (модель B, используемая для этой разработки).

Надеюсь, это поможет вам начать работу и разбудит ваше воображение. Потенциальный размах огромен. При необходимости можно даже изменить код Sonoff для других датчиков.

В целом я был поражен тем, на что способна эта система. Моей первоначальной целью было просто надежно управлять коммутатором со смартфона через автономную систему. У меня было видение необходимости управлять серверами и клиентами и писать html для пользовательского интерфейса. Куда это привело, так это далеко впереди, с большей безопасностью, превосходной надежностью, фантастическим пользовательским интерфейсом, программированием перетаскивания и огромным потенциалом для расширения. И все это с гораздо меньшими усилиями.

Майк

Шаг 9: Приложение - загрузка из Raspbian Stretch Lite

Этот вариант позволяет избежать лишнего ПО, которое поставляется с полной версией Raspbian Stretch. Большая часть этого не понадобится при использовании Pi для домашней автоматизации. Однако Node-Red должен быть установлен.

Действуйте как в шаге 1, но используйте Raspbian Stretch Lite, а не Raspbian Stretch.

Вместо Step2 сделайте следующее:

sudo apt -y установить npm

npm -v должен вернуть: 1.4.21 или новее

sudo npm install -g n

sudo n 8.9.0

Теперь мы можем использовать диспетчер пакетов узлов для установки Node-Red:

sudo npm install node-red --global --unsafe-perm

Это даст пару сообщений об ошибках из-за неправильного адреса. Однако система выполняет «исходную компиляцию», чтобы исправить эту проблему. Если вы повторите приведенную выше инструкцию (не обязательно), ошибки не возникнут.

Теперь у нас установлен Node-Red и поддерживающие его пакеты, и мы можем перейти к шагу 3, загружая mosquitto.

Беспроводной конкурс
Беспроводной конкурс
Беспроводной конкурс
Беспроводной конкурс

Финалист конкурса беспроводных технологий

Рекомендуемые: