Мощна самостоятелна система за домашна автоматизация - Pi, Sonoff, ESP8266 и Node -Red: 9 стъпки (със снимки)
Мощна самостоятелна система за домашна автоматизация - Pi, Sonoff, ESP8266 и Node -Red: 9 стъпки (със снимки)
Anonim
Мощна самостоятелна система за домашна автоматизация - Pi, Sonoff, ESP8266 и Node -Red
Мощна самостоятелна система за домашна автоматизация - Pi, Sonoff, ESP8266 и Node -Red

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

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

Тази система изисква препрограмиране на Sonoff устройства със страхотна система с отворен код, наречена Sonoff-Tasmoda. Това може да стане с помощта на специална настройка на Arduino и USB към сериен конвертор. Устройствата Sonoff използват Wi-Fi чип ESP8266, така че можете също да създадете свои собствени устройства, използвайки модули 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 дни! След това изтрих всичко и започнах наново и завърших за по -малко от (дълъг) ден. Това обаче използва по -старата Raspian Jessie. След това намерих начин да използвам текущата и наскоро пусната версия (Stretch) и направих всичко отново. Това ръководство позволява копиране и поставяне на инструкции в Pi. Така че трябва да свършите след няколко часа. Както и да е, надявам се това да ви изведе по -бързо по кривата на обучение и с много по -малко болка. Повярвайте ми, струва си за крайния резултат.

Стъпка 1: Заредете Pi с Rasbian Stretch

Това трябва да е доста ясно. Започнете с 8Gb или 16Gb SD карта. Изтеглете най -новата версия от:

www.raspberrypi.org/downloads/

Основната нишка тук предполага, че пълната версия е заредена. Можете обаче да използвате опростената версия, за да спестите място. Ако използвате Raspbian Stretch Lite, преминете през тази стъпка и след това преминете към стъпка 9 в края.

Разархивирането на изтегления файл дава папка с.img файла. 7Zip се препоръчва за Windows (и The 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. Обърнете внимание, че входът по подразбиране е потребител: pi и парола: малина. Преди да рестартирате, намерете IP адреса на pi. Или щракнете върху иконата „нагоре+стрелка надолу“в горната лента на работния плот или въведете следната инструкция в терминал/терминален прозорец:

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 адреса, отбелязан по -рано. Вижте примера по -долу:

Сега щракнете върху Отваряне

След Вход като: въведете pi

След това въведете паролата си.

Сега следвайте инструкциите тук и по желание стартирайте видеото от 23:35. В повечето случаи можете да копирате и поставите. Маркирайте текста и използвайте ctrl+C за копиране. След това щракнете с десния бутон в PuTTY, за да поставите. Понякога текстът не се появява веднага, така че изчакайте няколко секунди. Ако въведете два пъти, използвайте backspace, за да изтриете втория запис. Натиснете enter, за да изпълните всяка инструкция.

sudo raspi-update

Получих команда, която не е намерена и игнорирах това и следната инструкция за изключване/рестартиране:

sudo shutdown -r сега

sudo apt -get -y актуализация

sudo apt -get -y ъпгрейд

Това отнема известно време ……

sudo apt-get autoremove

sudo apt -get -y актуализация

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.

Така че на този етап имаме заредено и актуализирано пи и с актуализациите, необходими за Node Red. Не е вреда да направите рестартиране преди следващия етап.

sudo shutdown -r сега

Стъпка 3: Инсталиране на Mosquitto MQTT

Ако все още не сте го направили, струва си да гледате видео въведението към MQTT във видеото от 27:00 часа.

Тук трябва да поемем по различен път. Процедурата, описана във видеото, работи само за по -старата версия на Джеси на Raspian. На сайта за комари има дискусия, но не е показан ясен резултат и следователно ще се придържаме към по -прост и безопасен маршрут.

Затова влезте с помощта на PuTTY и въведете следното:

sudo apt-get update

sudo apt-get инсталирайте комари-комари-клиенти

Y

sudo /etc/init.d/mosquitза спиране

sudo /etc/init.d/mosquitза започване

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

За бърз тест отворете още две PuTTY сесии и влезте във всяка.

Вече ще знаете, че MQTT работи от устройството и се нуждае от данни, абонирайки се за „тема“. Брокерът ще изпрати всички данни със същата „тема“. След това устройството, което иска да изпрати данни/инструкции, публикува това на брокера, използвайки същата „тема“.

Така че в една сесия PuTTY въведете:

mosquitto_sub -d -t здравей/свят

Това е инструкция да се абонирате за темата: здравей/свят.

В другото въведете:

mosquitto_pub -d -t здравей/world -m "Здравейте от прозорец 2 на терминала!"

Това е инструкция за публикуване със същата тема със съобщение. Текстът: „Здравейте от прозорец 2 на терминала!“сега трябва да се появи в другия терминал.

Браво, стига се дотук. Вече имаме Pi зареден и актуализиран с актуализации, необходими за Node-Red и с инсталиран и тестван брокер за комари MQTT. Отсега нататък животът става по -лесен и малко по -забавен. Затворете двете сесии PuTTY, използвани за теста MQTT.

Стъпка 4: Настройка на Node Red Interface

Първо трябва да стартираме Node Red. Въведете инструкцията:

node-red-pi --max-old-space-size = 256

Изчакайте да стартира и ще видите текста „Започнали потоци“.

Сега отворете браузър, използвам Chrome и въведете пи IP адреса, отбелязан по -рано, последван от: 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 в секцията Сървър. Щракнете върху Добавяне. Сега, обратно в редактиране на mqtt out възел, въведете нашата тема в раздела Тема: здравей/свят. Задайте QoS на 1. Щракнете върху Готово. Сега щракнете върху Разгръщане. Трябва да видите зелено петно и „свързано“под mqtt възела.

Сега добавете още два възела - input mqtt и output debug и ги свържете заедно. Сега щракнете двукратно върху възела mqtt въвеждане и въведете hello/world в раздела за темата. Сървърът вече трябва да показва localhost: 1883. Задайте QoS на 1. Щракнете върху Готово. След това щракнете върху Разгръщане и щракнете върху раздела за отстраняване на грешки в десния панел. Сега щракнете върху сивия квадрат вляво от възела за инжектиране „Здравей от мен“. Това изпраща текстовия полезен товар към брокера на MQTT с темата hello/world. Брокерът знае, че входният възел mqtt се е абонирал за същата тема и така препраща полезния товар. След това входният възел mqtt изпраща това до раздела за отстраняване на грешки (RHS) и трябва да се появи текстът „Здравей от мен“.

Това отбелязва още едно поле, тъй като Node Red разговаря с нашия MQTT брокер. Обърнете внимание, че Node Red е просто клиент на брокера - подобно на устройствата Sonoff, които ще свържем по -късно. Той обаче позволява сложна автоматизация и осигурява страхотен потребителски интерфейс.

Сега можем да направим няколко малки промени и да настроим потоците за нашия превключвател Sonoff.

Така че изтрийте въвеждащия възел за инжектиране (щракнете, за да маркирате и натиснете клавиша за изтриване). Сега добавете превключвател от раздела на таблото и го свържете към изхода mqtt. Превключвател с двойно щракване. Щракнете върху молива вдясно от Групиране. Въведете в Име: Светлина. След това щракнете върху молива отдясно на Tab и влезте в секцията Име: Lounge. Щракнете върху Добавяне/Актуализиране и Добавяне/Актуализиране отново. Сега, отново в възела за превключване на редактиране, задайте включването и изключването на полезните товари. Използвайте twidlys, за да изберете низ и въведете ON за включен полезен товар и OFF за полезен товар OFF. Щракнете върху Готово

Сега отидете на всеки от mqtt възлите и променете Темата на cmnd/sonoff/POWER. Ако копирате и поставяте, проверете дали не сте включили интервал в края. Това е друга тема и няма да работи със Sonoff. Намирането на бездомно пространство може да отнеме около час - повярвайте ми! Отидох и на таблото за управление> Тема и избрах: Тъмно. Щракнете върху Разгръщане и изберете раздела за отстраняване на грешки.

Сега отворете нова сесия на браузъра в нов прозорец и я оразмерете като мобилен телефон през сесията Node Red. Въведете адреса: вашия IP IP адрес: 1880/ui/#/0, т.е. нещо като 192.168.0.8:1880/ui/#/0. Трябва да видите екран с Lounge и Light и да превключите. Щракнете върху превключвателя и след това изключете. Прозорецът за отстраняване на грешки трябва да показва ON и OFF полезни товари. Сега, ако желаете, влезте и чрез мобилен телефон. Обърнете внимание, че позицията на превключвателя е синхронизирана. Няма значение, че нашият Sonoff все още не е свързан. Когато е така, като се абонира за Темата, тя ще вземе съобщението/полезния товар и ще действа върху него.

Последна малка стъпка е да накарате Node Red да стартира автоматично след стартирането на Pi.

Node Red има ръководство на адрес:

Необходимите файлове обаче вече са заредени, така че не се изисква инсталация.

За да активирате Node-RED да работи автоматично при всяко зареждане и при сривове влезте (отворете PuTTY сесия):

sudo systemctl активира nodered.service

Ако някога се наложи да деактивирате това, въведете:

sudo systemctl деактивирайте nodered.service

Сега изключете pi със sudo изключване сега и изключете захранването.

Сега нашият Pi е заключен и зареден готов за действие. Нашият компютър/мобилен телефон се свързва с Node Red и това говори с нашия MQTT сървър. Това беше дълъг път и си струва голямо потупване по гърба. Много добре. Намерих следващия, малко Arduino, много по -лесен!

Стъпка 5: Настройване на системата Arduino за препрограмиране на Sonoff устройства

Цялата информация за това е в Sonoff-Tasmota GitHub. Единствената част, с която имах затруднения, беше текстът на темата - но аз хитро ви накарах да въведете това вече!

Отидете на

Инструкциите за настройка ще намерите в раздела Wiki в раздела Инструменти за качване:

Вместо да мина през всяка стъпка, просто ще отбележа ключови аспекти, които смятах за важни или заседнали.

Инструкциите са добри, но се нуждаят от внимание към детайлите. Бях препънат поради необходимостта от папка ESP8266 в папка, която беше в друга папка с име ESP8266 и следователно пропуснах две нива.

Следвах препоръката за напълно отделна настройка на Arduino. Създадох нова папка, наречена „ArduinoSonoff“, която е отделна от съществуващата ми папка Arduino. Настройката е доста напреднала и следователно да я държите отделно е много добра идея. Ако това е първата ви настройка на Arduino, уверете се, че сте я инсталирали втори път в „Arduino“или друга папка за всяка друга работа на Arduino, включително работа на ESP8266s.

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

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

Следвайте инструкциите внимателно. Не направих незадължителното: Подгответе се за качване на OTA. Ще оставим това за друг ден.

Сега стартирайте Arduino IDE (щракнете двукратно върху arduino.exe). Заредете скицата на Sonoff-Tasmota чрез File> Sketchbook> sonoff. Няма нужда да правите никакви редакции. Всички настройки се извършват чрез серийна връзка след зареждане на фърмуера. Те се съхраняват в EEPROM. Следователно фърмуерът може да се актуализира и да се запазят всички настройки. Това са доста умни неща. Можете обаче да избегнете нуждата от няколко стъпки тук, като отидете във файла user-config.h и въведете своя wifi SSID и парола и MQTT_HOST (заменете „domus1“-втора препратка с вашия IP IP адрес). По -късно може да искате да въведете MQTT потребител и парола. Преди да изтеглите, проверете настройките на дъската под Инструменти. Те ще се нуждаят от няколко промени, за да отговарят на изискванията, посочени в Wiki. Сега щракнете върху компилиране (икона на отметка). Трябва да се компилира OK. Ако това не стане или ако необходимите настройки на платката не са налични, върнете се и проверете всяка стъпка от настройката.

Стъпка 6: Препрограмиране на превключвател Sonoff

Вече сме готови за изтегляне. На този етап човек може или да премине направо напред и да премигне превключвател Sonoff или първо да премигне ESP8266 модул. Направих последното, отчасти защото моите ключове все още не бяха пристигнали (току -що пристигнаха, докато пиша това!), Но също така и като предпазна мярка, тъй като мигането на превключвателя Sonoff е еднопосочна стъпка, тъй като оригиналният фърмуер не е публично достъпен, доколкото Наясно съм. Имам няколко платки NodeMCU. Те са лесни за свързване, като имат вграден USB към сериен конвертор. Методът за нулиране на nodemcu обаче не работи с тази система. Затова оставете Инструменти> Метод за нулиране зададен на „ck“. Направете нормалната ръчна настройка на светкавицата, като задържите бутона Flash (GPIO 0 към земята), докато натискате и освобождавате Reset (Нулиране на земята). Не съм сигурен дали това има време за изчакване или може би не съм задържал GPIO 0 достатъчно дълго, но имах нужда от няколко опита, включително това, докато Arduino IDE се компилира!

Ако искате да проверите отговорите - релейният изход е D6 на платките NodeMCU. На ESP12 това е GPIO 12. LED изходът е D7 (NodeMCU) или GPIO 13 (ESP12).

Sonoff превключвател.

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

Включващият превключвател Sonoff S20 е добра отправна точка, тъй като не се нуждае от мрежово окабеляване. Това може да се отвори, като премахнете един винт (под защитната пломба) и отворите кутията отворена. Снимката по -долу показва къде са етикетите. Стискането на кутията в тези точки помага.

USB сериен конвертор

Любимият ми конвертор е FTDI версията. Това обаче няма достатъчна възможност да задоволи нуждите на Sonoff 3.3v. Спецификацията на FTDI казва максимум 50ma. Следващата най -добра алтернатива е тази, която използва чип CP2102. Това обаче има ограничение от 100ma, което все още не е достатъчно. Очевидно мнозина използват този преобразувател директно, но има и съобщения за неуспешно зареждане. Бих ограничил времето, когато е свързано, тъй като ще се затопли под товара. Направете това на свой собствен риск. Идеалното решение е да има и 3.3v регулатор, напр. a AMS1117 3.3. Направих малка печатна платка, за да разреша това. Вижте програмист за устройства Sonoff.

Моята последователност за програмиране е следната:

Отворете Arduino IDE.

Под Инструменти проверете настройките като в Wiki.

Направете всички необходими редакции на user_config.h. Зададох Wifi SSID и парола и адрес на брокер на MQTT и подробности за часовата зона/лятното часово време.

Щракнете върху „провери“, за да проверите дали е компилирано ОК.

Включете USB серийния конвертор (самостоятелно) към компютъра. Забележете номера на порта.

Сега изключете серийния USB кабел от компютъра и го свържете към превключвателя Sonoff. Проверете заземяването и връзките 3v3 са правилните (заземяването е свързано към заземяващата равнина на платката Sonoff).

Задръжте програмиста, така че контактите да са сигурни, като същевременно натиснете бутона.

Сега включете USB кабела в компютъра, проверете дали номерът на порта е правилен (в Инструменти), след което щракнете върху изтегляне.

Продължавам да задържам бутона по време на програмирането, защото не искам да нарушавам връзките.

Когато приключите, трябва да видите екран, както е показано по -долу:

Образ
Образ

Sonoff се нуждае от няколко бита информация, за да се свърже с нашата система: SSID и парола за локална мрежа wifi и IP IP адрес на Pi. Има няколко начина да направите това, един от които е да промените файла config.ino, както бе отбелязано по -рано. Ако имате смартфон, можете (след сглобяване на превключвателя) да натиснете бутона Sonoff 4 пъти сравнително бързо, за да го поставите в режим на уеб сървър. LED ще мига. Трябваше да опитам няколко пъти, за да успея. След това на вашия смартфон потърсете новата мрежа Sonoff и се свържете. Ще се появи уеб страница, където можете да зададете необходимите данни. IP IP адресът преминава в име на хост. Също така промених втория SSID и парола на нещо дълго и основно неизползваемо.

Като алтернатива може да се настрои чрез серийна връзка веднага след зареждането. Отворете серийния монитор на Arduino (под Инструменти).

Команди за въвеждане:

SSId yourWiFiSSID

Парола за вашатаWiFiPassword

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

Можете също да въведете SSId1 и Password1, последвани от нещо дълго и неизползваемо, за да деактивирате това ефективно.

Сега можете да поставите в квадратчето превключвателя Sonoff, да отворите Node-Red и Node-red таблото за управление и да щракнете върху бутона за превключване и да погледнете раздела за отстраняване на грешки, който сега трябва да включва отговорите от Sonoff. Така че имаме постигната друга важна стъпка - първият ни превключвател се задвижва от компютър/смартфон.

Досега не сме споменавали сигурността. Има възможност за използване на криптирани комуникации. Това е доста сложно за настройка и вероятно е по -подходящо, когато се използва брокер, базиран на облак. Има и опция за добавяне на потребителски имена и пароли за всички свързани устройства и забраняване на анонимни потребители. Това е доста лесно за настройка. И така сега към сигурността.

Стъпка 7: Сигурност

MQTT позволява потребителски имена и пароли за всеки клиент. Това е лесно за настройка. Вероятно е по -лесно първо да преименувате всяко устройство и след това да зададете техните потребителски имена и пароли. Това може да стане чрез MQTT команди и Node-Red е може би най-лесният начин да ги изпратите. Първо вземете решение за именуване. Една от опциите е да се основават имената на местоположението и функцията. След това ще искате да запишете потребителското име и паролата за името (Тема) заедно с резервната тема. Обърнете внимание, че има и „опция за нулиране“за нулиране на настройките на Sonoff до първоначалното изтегляне (вижте Използване на Wiki> Функционалност на бутоните).

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

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

Въведете следната последователност от настройки в възела за инжектиране.

Първо проверете свързаността с

Тема: cmnd/sonoff/Status

Съобщение: 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 сървъра на комарите да приема само клиенти с потребителски имена и да изброява потребителските имена и пароли, които да бъдат приети.

Процедурата е:

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

Затова влезте с нова сесия PuTTY и изпълнете следните команди:

sudo /etc/init.d/mosquitза спиране

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Това стартира редактора.

Добавете редове:

allow_anonymous false

password_file /etc/mosquitto/conf.d/passwd

require_certificate false

Запазване и излизане (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/mosquitза рестартиране

Обърнете внимание, че когато добавяте ново устройство, ще трябва или да въведете потребителя и паролата през серийния порт и да ги добавите към файла с паролата, или временно да промените конфигурационния файл на mosquitto и да коментирате (добавете # в началото на реда) редовете „allow_anonymous false "и" password_file /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: Първоначални стъпки за разширяване

Имам друг Инструктируем съвет за разработка на LED сензори за сензори Sonoff-Tasmota, който показва някои от допълнителните възможности на фърмуера Sonoff-Tasmota:

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

Откриване на нарушител (превключващ вход)

IR дистанционно (за телевизори и др.)

LED низове - RGB и NeoPixel (индивидуално адресируеми)

I2C сензори

За горното използвам ESP12F и персонализирана печатна платка. NodeMCU и макет могат да се използват еднакво. Това позволява тези допълнителни функции, без да се свързва към Sonoff устройство, и следователно е много по -безопасен подход. С входа на температурата успях да завърша автоматизацията на електрическото одеяло.

Музика и интернет радио могат лесно да се добавят. Това отваря опции за включване на определени станции или албуми в определено време или може би в отговор на откриване на посетител (телефон). Тази свързана инструкция е на висококачествен музикален плейър и интернет радио с контрол на смартфона. Тъй като това също се задвижва от Node-RED, дори би трябвало да е възможно да има повече от една звукова система и да се използва MQTT комуникация за тяхното задвижване.

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

Има няколко трика, които трябва да научите - но те стават мъртви лесно втори път.

Друг път добавя дисплей към pi, за да покаже таблото за управление. Това е „незавършена работа“- или с други думи не съм много щастлив. Дисплеят, който получих, е трудно да се завърти в портретен режим, а браузърът Chromium е болезнено бавен. Алтернатива би била да вземете стар таблет в ebay и да го използвате. Може да опитам с Pi 2 и да видя дали това доставя достатъчно подобрение (модел B, използван за това развитие).

Надявам се, че това ще ви даде началото и ще ви развихри въображението. Потенциалният обхват е огромен. Може дори да се промени кодът на Sonoff за други сензори, ако е необходимо.

Като цяло бях изумен от това, което тази система може да направи. Първоначалната ми цел беше просто да задействам превключвател от смартфон по надежден начин чрез самостоятелна система. Имах видения за необходимостта да управлявам сървъри и клиенти и да пиша html за потребителски интерфейс. Това, което завърши, е много по -напред от това, с по -голяма сигурност, отлична надеждност, фантастичен потребителски интерфейс, програмиране с плъзгане и пускане и огромен потенциал за разширяване. И всичко това с много по -малко усилия.

Майк

Стъпка 9: Допълнение - Зареждане от Raspbian Stretch Lite

Тази опция избягва надутия софтуер, който се предлага с пълната версия на Raspbian Stretch. Повечето от това няма да са необходими, когато използвате Pi за домашна автоматизация. Въпреки това Node-Red трябва да бъде инсталиран.

Продължете както в Стъпка 1, но използвайте Raspbian Stretch Lite вместо Raspbian Stretch.

Вместо стъпка 2 направете следното:

sudo apt -y инсталирате npm

npm -v трябва да се върне: 1.4.21 или по -нова

sudo npm инсталиране -g n

sudo n 8.9.0

Вече можем да използваме node пакет мениджър за инсталиране на Node-Red:

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

Това ще даде няколко съобщения за грешка поради неправилен адрес. Системата обаче прави „източник на компилация“, за да коригира този проблем. Ако повторите горната инструкция (не е необходимо), грешките не възникват.

Вече имаме инсталиран Node-Red и поддържащите му пакети и можем да преминем към Стъпка 3, зареждайки комар.

Безжично състезание
Безжично състезание
Безжично състезание
Безжично състезание

Вицешампион в конкурса за безжична връзка

Препоръчано: