реклама

Интелигентните електрически контакти са най-простият начин за автоматизиране на вашия дом, но при около 40 долара всеки за гнездо, базиран на Wi-Fi или ZWave, няма да купите повече от няколко.

Вече може да имате някои евтини RF базирани гнезда - видът, който се предлага със собствено персонално дистанционно управление, и имат някои селектори за канали и идентификатори на гърба. За съжаление няма интелигентни домашни хъбове на пазара Battle of the Smart Home Hubs: Какво има там и какво предстои? Прочетете още които работят с тези. Не би ли било чудесно, ако бихте могли да ги свържете по някакъв начин в системата си за домашно интелигентно изкуство? Е, можете - доста лесно всъщност - с около $ 10 на части.

С малко повече работа можете да интегрирате и някои други поръчани от RF базиран хардуер, като например този бюджетен кино екран.

От какво имаш нужда:

  • ESP8266 NodeMCU v12E платка за разработка (точният модел няма значение, v1 или v3 също трябва да са добре). Причината да използваме платка NodeMCU е, защото искаме лесната Wi-Fi връзка по-късно. Връзката е за пакет от 2, който работи по 7 долара всеки.
    instagram viewer
  • Пакет от 433Mhz предавател и приемник (около $ 3).
  • RCSwitch и MQTT библиотеки, и нашият код - всички на разположение за изтегляне от Github.
  • MQTT сървър, локален или отдалечен.
  • Някои RF контролирани гнезда, работещи в обхват 433 mHz (трябва да се каже на дистанционното управление). Купих мина от Maplin като пакет от 3 за около £ 20 ($ 25.89).

Ако за първи път програмирате платката NodeMCU, ще трябва да изтеглите Arduino плъгините за нея: следвайте заедно с първата част от нашия Arduino Killer уводно ръководство Запознайте се с Arduino Killer: ESP8266Ами ако ви кажа, че има съвместим с Arduino плат за разработка с вграден Wi-Fi за по-малко от 10 долара? Е, има. Прочетете още за чипа NodeMCU / ESP8266 Вие също ще трябва CH430 драйвери. Можете да намерите подписани тук драйвери за macOS CH430, или Windows тук.

Използвах v1.6.5 от Arduino, защото всичко по-високо създава повече проблеми, отколкото решава. Понижавайте, ако още не сте го направили

Преди да продължите, ще приема основно ниво на познание Ардуино програмиране Програмиране на Arduino за начинаещи: Ръководство за проектиране на светофариИзграждането на контролер на светофар Arduino ви помага да развиете основни умения за кодиране! Започваме ви. Прочетете още и че имате вашата настройка на NodeMCU в мениджъра на дъските и сте в състояние правилно да качите някои демо код. Трябва също да добавите библиотеките, включени в нашето изтегляне, към вашата Ардуино / библиотеки папка.

Ако имате съществуващ PubSubClient или MQTT библиотека, архивирайте го и го премахнете - този, който съм включил в изтеглянето, е единственият, където мога надеждно да получавам съобщения в NodeMCU, и пробвах много!

RF Sniffing (незадължително)

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

Ако имате други радио дистанционни, които бихте искали да опитате да добавите, първо трябва да „подушите“ RF кодовете, които се предават. За целта заредете ReceiveDemo_Advanced скица от Меню -> Примери -> RCSwitch папка и променете следния ред от 0

mySwitch.enableReceive (0); // Приемник при прекъсване 0 => това е пин №2

до 2.

mySwitch.enableReceive (2); // Приемник на GPIO 2 / D4.

Свържете модула на приемника, както следва. Гледайки предната част на приемната платка (тя е по-дългата от двете, предавателят е квадратен) - отстрани с компонентите на:

  • Крайно вдясно е БНД. Свържете се с GND на платката NodeMCU.
  • Край вляво е VCC. Свържете се към VIN на платката NodeMCU.
  • Средните два пина са сигналът. Свържете или единия към D4 в NodeMCU (те са свързани заедно, така че няма значение кой).
433 окабеляване-1

Сега качете променените ReceiveDemo_Advancedи когато свърши, отворете серийния монитор и започнете да натискате бутони на дистанционното управление. Копирайте десетичната (включително битовата дължина), дължината на импулса и протокола, когато натиснете бутон.

екранно радио РФ

След като направих това, открих, че екранът на моя проектор използва

  • SCREEN UP: Получени 8694273 / 24bit; Дължина на пулса: 355 или 356; Протокол: 1
  • ЕКРАН ДОЛУ: Получени 8694276 / 24bit;Дължина на пулса: 355 или 356; Протокол: 1

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

Тестване на предавателя

След това ще опитаме да изпратим кодове с помощта на предавателя. Свържете модула на предавателя (квадратния), както следва. Внимавайте: етикетирането на тези щифтове е зверско.

VCC щифтът всъщност е в средата, а не от лявата страна. Унищожих един модул в процеса на намиране на това. Това, което казва „ATAD“, всъщност е „DATA“, изписано назад. Отново данните отиват към D4, VCC към VIN и GND към GND (махнете приемния модул, вече нямате нужда от него).

433 окабеляване-2

Заредете Примери -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesи отново променете щифта за данни:

mySwitch.enableTransmit (10);

да се

mySwitch.enableTransmit (2);

Забележете, в библиотеката са включени най-различни примери и кой от тях работи за вас ще зависи от точния тип превключвател, който имате. Тип A (потопи превключватели) и B (циферблати или плъзгачи) са най-често срещаните - вижте снимките на страницата RCSwitch. За тип B включването и изключването на гнездото е толкова просто, колкото:

mySwitch.switchOn (1, 4); mySwitch.switchOff (1, 4);

където 1 е идентификаторът на канала (горният циферблат), а 4 е идентификаторът на гнездото (долният диск). Те бяха написани с римски цифри на гнездата ми. Следователно могат да бъдат адресирани максимум 16 индивидуални гнезда, въпреки че няколко гнезда могат да използват един и същ адрес, ако имате няколко устройства, за да се включите наведнъж.

Екранът на моя проектор обаче беше малко по-различен - използваше различна дължина на импулса. Така че, за да работят тези, работи следното. Забележете, че можете също да определите различен протокол, ако вашето дистанционно се нуждае от него, НО, уверете се, че сте определили протокола ПРЕДИ дължината на импулса. Дължината на импулса се презаписва при смяна на протокола.

// Обърнете внимание, че екранът ми всъщност изисква ДВА натискания на бутона (не дълго натискане, но две физически натиска), така че закъснявам малко след това изпращам същия сигнал отново невалиден screenUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (десетичен код, брой битове) забавяне (2000); mySwitch.send (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); забавяне (2000 г.); mySwitch.send (8694276,24); }

Тествайте всички кодове, които работят първо, преди да преминете към следващата стъпка.

Контрол чрез MQTT

Отворете скицата, която сте изтеглили от името на Github mqtt_rcswitch.inoи започнете с промяна на мрежовия SSID и паролата за вашия дом. След това променете името на канала, ако желаете, и задайте MQTT сървъра. Ако все още нямате MQTT сървър, работещ на вашата инсталация на OpenHAB, прочетете част 2 от нашето ръководство за начинаещи на OpenHAB Ръководство за начинаещи на OpenHAB Част 2: ZWave, MQTT, правила и диаграмиOpenHAB, софтуерът за домашна автоматизация с отворен код, далеч надхвърля възможностите на други системи за домашна автоматизация на пазара - но не е лесно да се настрои. Всъщност това може да бъде направо разочароващо. Прочетете още . Обърнете внимание, че кодът ми е предназначен за гнезда тип B (въртящ се превключвател), въпреки че можете лесно да го промените и за DIP превключватели.

Най-важната част от кода е съобщението прието() функция, която отговаря на входящите MQTT команди. В тази функция първо проверяваме основната ключова дума - избрах „превключвател“ и „екран“. В случай на „превключване“, след това анализираме идентификатора на канала и щепсела; след това проверете тялото на полезния товар за командата.

void messageReceived (Тема на низовете, Натоварване на стринг, char * байтове, неподписана int дължина) {if (topic.indexOf ("превключвател")> = 0) {// превключване на контрола, анализиране на канала и включване на id int канал = getValue (Тема, "/", 3) .toInt (); int plug = getValue (тема, '/', 4) .toInt (); if (payload == "on") {mySwitch.switchOn (канал, щепсел); } else {mySwitch.switchOff (канал, щепсел); }} else if (topic.indexOf ("екран")> = 0) {// контрол на екрана, ако (полезен товар == "нагоре") {screenUp (); } else if (payload == "down") {screenDown (); }} / * добавете друга, ако тук, за да слушате повече команди (или просто променете тази по-горе, ако не искате екрана) * / }

По подразбиране след това работят следните команди MQTT:

хол / управление / превключвател / X / Y (където X е канал, а Y е ID на щепсела; с включено или изключено тяло на съобщението)
хол / контрол / екран (с тялото на съобщението нагоре или надолу)

Използвайте командния ред или GUI MQTT клиент, за да тествате устройствата си, преди да добавите към OpenHAB.

Добавяне към OpenHAB

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

/ * RF433mHz устройства * / Превключете CinemaScreen "Екран" (Кино) {mqtt = "> [брокер: хол / контрол / екран: команда: ВКЛ.: Надолу],> [брокер: хол / контрол / екран: команда: ИЗКЛ.: Нагоре]"} Превключвател41 "Switch41" (Кино) {mqtt = "> [брокер: хол / управление / превключвател / 4/1: команда: ВКЛ.: включено],> [брокер: хол / управление / превключвател / 4/1: команда: ИЗКЛ.: изключено] "} Превключвател42 "Switch42" (Кино) {mqtt = "> [брокер: хол / управление / превключвател / 4/2: команда: ВКЛ.: включено],> [брокер: хол / управление / превключвател / 4/2: команда: ИЗКЛ.: изключено] "}

Вече трябва да можете да контролирате вашите RF устройства от OpenHAB! Едно нещо, от което бях приятно изненадан, беше обхватът - един възел успя да покрие по-голямата част от къщата ми. Разбира се, можете да добавите друг възел, като слушате същия канал, който просто повтаря едни и същи команди, ако се нуждаете от допълнително покритие.

Единственото ограничение, което трябва да имате предвид, е, че самите гнезда не могат да отчитат състоянието си, така че ако сте вие използвайте оригиналното дистанционно, контролирайте състоянието на гнездото може да не бъде отразено точно в него OpenHAB. Придържайте се да използвате само интерфейса OpenHAB и трябва да сте добре.

Въпроси или проблеми? Попитайте в коментарите и аз ще направя всичко възможно да ви помогна. Ако искате да подобрите кода ми, не се колебайте да изпратите заявка за изтегляне.

Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.