Բովանդակություն:

Alexa Raspberry Pi ռելեի վերահսկիչ ՝ 6 քայլ
Alexa Raspberry Pi ռելեի վերահսկիչ ՝ 6 քայլ

Video: Alexa Raspberry Pi ռելեի վերահսկիչ ՝ 6 քայլ

Video: Alexa Raspberry Pi ռելեի վերահսկիչ ՝ 6 քայլ
Video: How I built an Alexa Smart Outlet using a Raspberry Pi and a relay 2024, Նոյեմբեր
Anonim
Alexa Raspberry Pi ռելեի վերահսկիչ
Alexa Raspberry Pi ռելեի վերահսկիչ
Alexa Raspberry Pi ռելեի վերահսկիչ
Alexa Raspberry Pi ռելեի վերահսկիչ
Alexa Raspberry Pi ռելեի վերահսկիչ
Alexa Raspberry Pi ռելեի վերահսկիչ

Ես ստեղծեցի այս Instructable- ը `կիսելու իմ փորձը IOT սարքերը Amazon- ի Alexa- ի հետ:

Այս նախագիծը թույլ է տալիս ազնվամորի պիին միացված ռելեային տախտակին կառավարել smarthome վերահսկիչից:

Այն փորձարկվել է Alexa- ի հետ, բայց, կարծես, լավ է աշխատում նաև Samsung Smartthings- ի և կառավարման այլ միջերեսների հետ, քանի որ այն ընդօրինակում է Belkin Wemo վարդակների մի շարք:

Կան բազմաթիվ օրինակներ, որոնք հիմնված են FAUXMO հիանալի ծածկագրի վրա, բայց դա նշանակում էր պիթոն սովորել և ինձ չտրամադրեց իմ սարքերի համար անհրաժեշտ մանրամասն վերահսկողությունը, ուստի որոշեցի զրոյից նորից ստեղծել մեկը ՝ օգտագործելով C- ն ՝ որպես իմ հիմնական կոդավորման լեզու:

Ես նաև չէի ուզում գնալ Amazon.com- ի lambda ծածկագրի խորքերը, ուստի այն իսկապես պարզ պահեցի:

Ես տեղադրել եմ աղբյուրը և գրառումները Github- ում.

github.com/Switchdoctorstu/StuPiMo

Ուսումնական ձեռնարկը, իրոք, պետք է լուսաբանի, թե ինչպես այն սկսել աշխատել և հրապարակել իմ գրառումները, եթե դա օգնի ուրիշներին:

Քայլ 1: Սարքավորումներ և միացումներ

Սարքավորումներ և միացումներ
Սարքավորումներ և միացումներ
Սարքավորումներ և միացումներ
Սարքավորումներ և միացումներ
Սարքավորումներ և միացումներ
Սարքավորումներ և միացումներ

Ձեզ անհրաժեշտ բաները մատչելի են Amazon / EBay- ում.

  • Ազնվամորի PI *
  • Pi էներգիայի մատակարարում
  • Dupont միակցիչներ
  • Ռելեային տախտակ
  • Հին միկրո USB միակցիչ (ռելեի քարտի հզորությունը կիսով չափ կրճատելու համար)

Raանկացած ազնվամորի Pi կաշխատի, ես դա փորձարկել եմ B և Zero մոդելների վրա:

*Pi Zero- ից օգտվելու դեպքում ձեզ հարկավոր կլինի OTG ցանցի ադապտեր (եթե չեք գնում «W» տարբերակը WiFi- ի միջոցով)

Դուք պետք է միացնեք Pi ցանցին:

Օգտագործեք dupont connetors- ը `ռելեի քարտը Pi- ին միացնելու համար:

Ուշադրություն դարձրեք, որ ռելեի քարտը պետք է օգտագործի արտաքին էներգիա (հեռացրեք հղումը և միացեք արտաքին 5 վ -ին): Այն կաշխատի PI- ից սնուցվող, սակայն խորհուրդ չի տրվում արտադրել այն:

Իմ տեղադրման համար ես օգտագործեցի արտաքին սնուցման USB HUB: Սա ուժ է տալիս PI- ին:

Ես նաև կտրեցի հին USB մալուխի ծայրը և ռելեները սնուցեցի 2 -րդ USB միացումից դեպի հանգույց `ապահով մնալու համար: Իմ «արտադրության» տարբերակը օգտագործում է փոքր 5V 5A անջատիչ ռեժիմի սնուցման աղբյուր: Կրկին ես կիսով չափ USB միակցիչ կտրեցի ՝ Pi- ն Micro-USB- ի միջոցով սնուցելու համար և կտրեցի երկու dupont միակցիչները `ռելեի տախտակը սնուցելու համար: USB լարում կա 4 լար, որոնցից շատերն օգտագործում են կարմիր/սև ՝ 5 վ լարման հաղորդումը նշելու համար, բայց եթե կասկածի դեպքում օգտագործում են մետր ՝ համոզվելու համար, որ ճիշտ լարերը ստացել եք:

Գրատախտակին տեղադրված ռելեի կապերը միացված են PI վերնագրի համապատասխան GPIO կապերին:

Կոդը թույլ է տալիս ընտրել GPIO կապում, բայց կանխադրվածը, որն օգտագործել եմ, հետևյալն էր.

  1. Էստաֆետա 1 - գետնին
  2. Էստաֆետա 2 - Ռելե 1 - GPIO 0
  3. Էստաֆետա 3 - Ռելե 2 - GPIO 1
  4. Էստաֆետա 4 - Ռելե 3 - GPIO 2
  5. Էստաֆետա 5 - Ռելե 4 - GPIO 3
  6. Էստաֆետա 6 - Ռելե 5 - GPIO 4
  7. Էստաֆետա 7 - Ռելե 6 - GPIO 5
  8. Էստաֆետա 8 - Ռելե 7 - GPIO 6
  9. Էստաֆետա 9 - Ռելե 8 - GPIO 7
  10. Ռելեի Pin 10 - +5v տրամաբանության համար

Քայլ 2: PI- ի կարգավորում

Ես չեմ պատրաստվում նորից ստեղծել ձեռնարկ, թե ինչպես կարելի է գործարկել ձեր PI- ն և միանալ ցանցին:

Կան բազմաթիվ ուղեցույցներ, ներառյալ հիանալի ուսուցանվող ՝

www.instructables.com/id/Ultimate-Raspberr…

Ձեզ հարկավոր է հասնել այն կետին, երբ PI- ն տեսանելի է ցանցում և կարող եք միանալ դրան:

Կարևոր չէ ՝ դա Ethernet- ով է, թե անլար:

Այս նախագիծը կարող է ավարտվել միայն Raspberry PI- ով ՝ օգտագործելով Geany Programmers Editor- ը, բայց ես անձամբ ավելի հեշտ եմ համարում համակարգչում կոդերի պատրաստումը Visual Studio- ի կամ Eclipse- ի (կամ նույնիսկ Notepad ++) միջոցով, այնուհետև այն վերբեռնել PI ՝ կարգաբերման միջոցով: VNC միացում: Կրկին ես չեմ պատրաստվում դա լուսաբանել այստեղ, քանի որ կան շատ հիանալի հրահանգներ VPC- ի վրա RPi- ի տեղադրման վերաբերյալ:

Ձեզ անհրաժեշտ է միայն հասնել այն կետին, որտեղ կարող եք վերբեռնել և կազմել ծածկագիրը:

Կարևոր է նշել, որ քանի որ UPNP կարգավորիչը պահանջում է UDP մուլտիմաստավորում, օգտագործվող միջերեսները պետք է սահմանվեն «Անառարկելի» ռեժիմի:

Դա կարելի է անել հրամանի տողում.

pi@raspberrypi: if $ ifconfig eth0 promisc

և / կամ

pi@raspberrypi: if $ ifconfig wlan0 promisc

Սա պետք է մշտական դարձնել, այնպես որ ես խմբագրել եմ /etc/rc.local- ը

sudo nano / etc / rc.local

տողը ներառելու համար.

sudo ifconfig eth0 promisc

դրոշի # տողերի առաջին փաթեթից հետո `ապահովելու համար, որ միջերեսները տեղադրված են գործարկման ժամանակ:

Քայլ 3: Ներբեռնեք և կազմեք ծածկագիրը

Կոդն ինքնին տեղավորված է իմ Github repsoitory- ում.

github.com/Switchdoctorstu/StuPiMo/blob/ma…

մինչդեռ պահեստը կլոնավորելու «ճիշտ» եղանակներ կան: Ես ավելի հեշտ գտա պարզապես բացել Geany խմբագրիչը Pi աշխատասեղանին և տեղադրել կոդը:

Նմանապես, եթե դուք օգտագործում եք հրամանի տողը.

Ստեղծեք նոր գրացուցակ

mkdir Stu

Փոխել դրան

cd Ստու

Ստեղծեք նոր տեքստային ֆայլ

նանո StuPiMo.c

Պատճենեք ծածկագիրը Github- ից և տեղադրեք այն նոր ֆայլում

Պահել և դուրս գալ:

Երբ ֆայլը ունենաք C աղբյուրի կոդի օբյեկտ, կարող եք այն կազմել ՝ օգտագործելով

gcc -o StuPiMo StuPiMo.c -l wiringPi

նշեք, որ «-l wiringPi»-ն անհրաժեշտ է ապահովելու համար, որ կոմպիլյատորը կապի պահանջվող wiringPi գրադարանում:

Կոդն այնուհետև կարող է գործարկվել ՝ օգտագործելով

./StuPiMo

Կրկին, եթե ցանկանում եք, որ սա գործարկվի գործարկման ժամանակ, օգտագործեք հրամանը.

sudo nano /etc/rc.local

ավելացնել հետևյալ տողը

sudo/home/pi/Stu/StuPiMo &

ձեր /etc/rc.local ֆայլին: Մի մոռացեք պահել ձեր ֆայլը ելքի վրա:

Նկատի ունեցեք, որ «&»-ն էական նշանակություն ունի ՝ ենթածրագրի ստեղծման համար, որպեսզի ապահովվի, որ սցենարը այս պահին արգելափակված չէ:

Քայլ 4: Օգտագործելով այն

Երբ գործարկեք կոդը, խնդրեք alexa- ին «Բացահայտեք սարքերը», և նա պետք է գտնի վիրտուալ Wemo սարքերի բոլոր 8 -ը:

Այնուհետև դա ընդամենը մի դեպք է, երբ ասում են. «Alexa միացրեք վարդակից 1» կամ «Alexa անջատեք վարդակից 6» և այլն, և համապատասխան ռելեն կփոխվի:

Քայլ 5: Ինչպես է գործում ծածկագիրը

Կոդն աշխատում է ընդօրինակելով մի շարք Belkin Wemo վարդակների սարքեր:

Դրան հասնելու համար այն պետք է կատարի 2 հիմնական գործառույթ

  • UPNP հայտնագործությունների հեռարձակման կառավարիչ
  • «սարքի կառավարիչ» (մեկ վիրտուալ սարքի համար) ՝ սարքին ուղարկված հրամանները և պահանջվող պատասխանները կառավարելու համար:

«Բոնուս» գործառույթն այն է, որ այն նաև հրապարակում է վեբ էջ, որը թույլ է տալիս վերահսկել սարքերը:

UPNP կառավարիչ

UPNP կարգավորիչը բացում է վարդակ ՝ SSDP արձանագրության փաթեթները վերահսկելու համար 239.255.255.250 1900 նավահանգստում:

Այն պատասխանում է «M-SEARCH»-ի ցանկացած հարցմանը, որը գալիս է հայտնագործման պատասխան փաթեթով, որը հայտարարում է wemo- ի անհատական էմուլյատորներին բոլոր նրանց, ովքեր հարցնում են:

Սարքի կառավարիչ

Սարքի մշակողները (մեկը վիրտուալ սարքի համար) վերահսկում են մի շարք IP պորտեր և արձագանքում են հարցումների:

Այն կծառայի setup.xml- ի պատասխանի դեպքում

Հարցման դեպքում այն կծառայի իրադարձության նկարագրության ֆայլին

Այն կպատասխանի GETBINARYSTATE- ի հարցմանը

Այն կմշակի և կարձագանքի SETBINARYSTATE- ի հարցմանը

Վեբ սերվեր

Վեբ սերվերը պարզ ռեժիմ է, որը կառուցում է HTML ձև, որը պարունակում է մեկ ռելեի կոճակ:

Այն կարձագանքի սեղմված կոճակներին և համապատասխանաբար կփոխի ռելեի վիճակը:

Քայլ 6: Անհատականացում և ընկերական անուններ

Անհատականացում և ընկերական անուններ
Անհատականացում և ընկերական անուններ

Ես չեմ խելագարվել կոդի վրա `այն պարզ և խմբագրելի պահելու համար:

Հիմունքները կարող են հարմարեցվել ծածկագրի սկզբում սահմանումներով.

// գլոբալ սահմանումներ#սահմանել WEBPORT 5353 // պորտ ՝ վեբ սերվերը գործարկելու համար

#սահմանեք NUMDEVICES 8 // Ստեղծելու համար վիրտուալ սարքերի քանակը

#սահմանեք ՄՈORTՏՔԱՅԻՆ 43450 // բազային IP նավահանգիստ ՝ ավելացնելու համար

WEBPORT- ը նավահանգստի համարն է, որի վրա ներկառուցված վեբ սերվերն աշխատում է: Սա կարող է նստել 80 -ի վրա ՝ ամեն ինչ հեշտացնելու համար, բայց ես պարզեցի, որ այն հակասում է կատուների կամ տեղական ծառայությունների հետ:

NUMDEVICES- ը սահմանում է գործարկման ենթակա WEMO- ի առանձին էմուլյատորների քանակը: Եթե ունեք 2 պորտի ռելեի քարտ, ապա սահմանեք այն 2, 4 նավահանգիստ = 4 և այլն:

Սարքերի բարեկամական անունները սահմանվում են ռեժիմում, որը կոչվում է setup_names:

int setup_names (char char [NUMDEVICES] [NAMELEN]) {int i = 0;

// օգտագործել այս հանգույցը

համար (i = 0; i <NUMDEVICES; i ++) {

sprintf (ընկերական , «Socket %d», i + 1);

}

// կամ հետևյալ ձեռնարկի աղյուսակը `սարքերի անունները լրացնելու համար

/*

strcpy (ընկերական [0], «Ննջասենյակի հեռուստատեսություն»);

strcpy (ընկերական [1], «Էլեկտրական վերմակ»);

strcpy (ընկերական [2], «Ննջասենյակի լամպ»);

strcpy (ընկերական [3], «վարդակից 4»);

strcpy (ընկերական [4], «վարդակից 5»);

strcpy (ընկերական [5], «վարդակից 6»);

strcpy (ընկերական [6], «վարդակից 7»);

strcpy (ընկերական [7], «վարդակից 8»);

*/

վերադարձնել;

}

Ես օգտագործել եմ մի հանգույց ՝ սարքերից յուրաքանչյուրին «Socket n» կոչելու համար, բայց դուք կարող եք ջնջել այս օղակը և փոխարենը ավելացնել ձեր սեփական ընկերական անունները (պարզապես համոզվեք, որ ավելացնում եք նույն թիվը, ինչպես NUMDEVICES), եթե ջնջեք / * * /

Հիշեք, որ փոփոխություններ կատարելու դեպքում նորից կազմեք ծածկագիրը:

Խորհուրդ ենք տալիս: