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

Google Home վերահսկվող լուսադիոդներ ՝ 8 քայլ
Google Home վերահսկվող լուսադիոդներ ՝ 8 քայլ

Video: Google Home վերահսկվող լուսադիոդներ ՝ 8 քայլ

Video: Google Home վերահսկվող լուսադիոդներ ՝ 8 քայլ
Video: wifi հեռակառավարման հաղորդագրություն IR և RF կոդերի համար Broadlink RM4C Pro, Home Assistant 2024, Նոյեմբեր
Anonim
Google Home վերահսկվող լուսադիոդներ
Google Home վերահսկվող լուսադիոդներ
Google Home վերահսկվող լուսադիոդներ
Google Home վերահսկվող լուսադիոդներ

Վերջերս ես շատ ազատ ժամանակ ունեի ձեռքերիս վրա, ուստի աշխատում էի մի շարք նախագծերի վրա:

Այս նախագիծը թույլ կտա Ձեզ վերահսկել RGB LED- ները Google Home- ի միջոցով ՝ օգտագործելով Raspberry Pi- ն: Այժմ նախագծի 3 մաս կա ՝ Raspberry Pi- ի ստեղծում, IFTTT- ի միջոցով անհատական հրամանով Google Home- ի ստեղծում, այնուհետև լույսերի համար միացում ստեղծելը: Ես ինքս արեցի շրջանը, բայց գրազ եմ գալիս, որ դուք կարող եք ինչ -որ բան ստանալ Adafruit- ից, որն անում է այն, ինչ անհրաժեշտ է:

Նյութեր ազնվամորի Պի մասի համար

  • Ազնվամորի Պի - ցանկացածը կաշխատի, բայց ես օգտագործում եմ eroրո
  • Անլար Dongle - եթե Pi- ն չի ներկառուցված Wifi- ում
  • Google Home - Լրացուցիչ, եթե ձեր հեռախոսում ունեք Google Assistant

Շրջանակային մասի նյութեր. Թույլ մի տվեք, որ դա ձեզ հետ պահի … Դա բավականին պարզ է

  • Նախատախտակ
  • Մետաղալար
  • LED ժապավեն
  • 12 Վ էլեկտրամատակարարում - 2 ամպից բարձր ցանկացած բան պետք է լավ լինի
  • DC Barrel Jack - Նույն չափսը, ինչ ձեր էներգիայի աղբյուրը
  • NPN BJT հզորության տրանզիստորներ (x3) - Ես օգտագործում եմ TIP31C- ը
  • Արական և իգական կապի վերնագրեր - ըստ ցանկության, բայց խորհուրդ է տրվում

Քայլ 1: Express- ի ներբեռնում Pi- ի համար

Ներբեռնեք Express- ը Pi- ի համար
Ներբեռնեք Express- ը Pi- ի համար

Ես չեմ պատրաստվում շատ մանրամասնել Pi- ի ստեղծման մասին, քանի որ այնտեղ տեղադրելու համար շատ ձեռնարկներ կան:

Այն, ինչ ձեզ հարկավոր է անել, որը ես չեմ լուսաբանում…

  • Pրամեկուսացման Raspberry Pi նորագույն Raspbian- ով
  • Կարգավորեք ցանցային քարտը, որպեսզի կարողանաք Pi- ից ինտերնետ մուտք գործել
  • Սահմանեք ստատիկ IP Raspberry Pi- ի վրա

Այժմ այստեղ է, որտեղ սկսվում է զվարճանքը: Մենք պետք է տեղադրենք nodeJS, npm, express և express-generator:

sudo apt-get թարմացում

sudo apt-get տեղադրել nodejs npm

Տեղադրվելուց հետո գործարկեք հետևյալը

npm տեղադրել էքսպրես-գեներատոր

Express- ը թույլ է տալիս ստեղծել շատ հիմնական վեբ սերվեր ՝ ձեր Raspberry Pi- ի օգտագործման համար: Express-generator- ը պարզապես ավտոմատ կերպով ֆայլեր է ստեղծում էքսպրես սերվերի համար:

Ստեղծեք տեղեկատու և cd գրացուցակում: Ես իմ անունը դրեցի piWebpage: Այժմ գործարկեք հետևյալը (տես նաև նկարում)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Սա կստեղծի webApp անունով թղթապանակ ՝ դրանում առկա բոլոր էքսպրես ֆայլերով: Եթե հետագայում պլանավորում եք ավելին անել այս վեբ էջի հետ և ձեզ դուր է գալիս PUG- ը, --view = ejs- ը փոխարինեք --view = pug- ով: Մենք չենք շոշափի վեբ էջը, այնպես որ այս հավելվածի համար կարևոր չէ, թե ինչ ենք օգտագործում:

Քայլ 2: Pi սերվերի տեղադրում

Տեղափոխվեք նոր webApp գրացուցակում:

cd webApp

npm տեղադրում

npm- ի տեղադրումը որոշ ժամանակ կպահանջի, քանի որ այն տեղադրում է express- ի բոլոր կախվածությունները:

Տեղադրեք setColor.py- ն webApp պանակում: Այս ֆայլում կան որոշ նախադրյալներ հիմնական գույների համար: Ազատորեն ավելացրեք ավելին, ինչպես ցանկանում եք: Միջակայքը 0 -ից 255 -ն է, որտեղ 255 -ը լիարժեք է: Ինչ -որ պահի, ամենայն հավանականությամբ, ես կավելացնեմ լույսերը մարելու ունակությունը, բայց առայժմ դրանք լիովին պայծառ են:

Տեղափոխվեք երթուղիների մեջ

cd երթուղիներ

Այժմ փոխարինեք index.js- ը կցված ֆայլով: Սա կավելացնի որոշ տողեր `POST հրահանգ ստանալու համար, ինչը կուղարկի Google Home- ը: Այդ POST- ից մենք կստանանք ընտրված գույնը և Pi- ին կասենք, որ գործարկի setColor python սցենարը `լույսերը կարգավորելու համար:

Մի վերջին բան … Վերադառնալ webApp պանակ:

cd ~/piWebpage/webApp

Օգտագործելով ձեր նախընտրած խմբագիրը, տեղադրեք և պահեք ներքևի ծածկագիրը ձեր webApp.js- ում: Whereանկացած տեղ լավ է, քանի դեռ «module.exports = app» - ից առաջ է:

// Կարգավորել LED ապարատային վարորդի կոնստրուկտոր {exec} = պահանջել ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('LED Driver- ը սխալ է բեռնում'); վերադառնալ;} else console.log ('LED վարորդը հաջողությամբ բեռնվել է'); });

Ինչպես ասում է մեկնաբանությունը, pigpiod- ը PWM ազդանշանների ապարատային շարժիչն է, որը մենք կօգտագործենք LED գույնը կարգավորելու համար: Կարծում եմ, որ այն արդեն տեղադրված է Raspbian- ում, բայց եթե ոչ…

sudo apt-get install pigpiod

Հիմա իսկական փորձության համար: Սերվերը գործարկվում է:

DEBUG = webapp:* npm սկիզբ

Քայլ 3: IFTTT կարգավորում (գործարկիչ)

IFTTT կարգավորում (գործարկիչ)
IFTTT կարգավորում (գործարկիչ)
IFTTT կարգավորում (գործարկիչ)
IFTTT կարգավորում (գործարկիչ)

IFTTT- ն շատ բան կարող է անել, և ես խորհուրդ կտայի շուրջը նայել որոշ ծրագրեր:

Նախ, դուք պետք է հաշիվ ստեղծեք: Օգտագործեք նույն Google հաշիվը, որը կապված է ձեր Google Home- ի հետ, հակառակ դեպքում դրանք չեն համաժամեցվի միասին: Ամբողջական լինելուց և մուտք գործելուց հետո կտտացրեք IFTTT էջի վերին աջ կողմում, որտեղ այն ցույց է տալիս ձեր անունը և ավատարը: Այնուհետև բացվող պատուհանից կտտացրեք «Նոր հավելված»:

Եթե հետաքրքրասեր եք, IFTTT- ը նշանակում է IF This Then That, եթե չնկատեք բացվող էկրանին: Այսպիսով, այն, ինչ մենք ուզում ենք, եթե Google Assistant- ն է, ապա Webhook- ը ՝ որպես մեր ընտրանքներ:

Շարունակեք ՝ կտտացնելով +սա, որը կբեռնի որոնման տողը: Որոնման մեջ մուտքագրեք Google Assistant և կտտացրեք որոնման ներքևի պատկերակին:

Ընտրեք ձգան, ընտրեք 3 -րդ տարբերակը, որը կոչվում է Ասեք արտահայտություն տեքստային բաղադրիչով: Այժմ սա թույլ է տալիս ունենալ 3 հրաման, որոնք կկատարեն նույն գործողությունը: Դուք ավելացնում եք $ արտահայտությունը, որտեղ նշեք գույնը: Օրինակ, եթե ես բնականաբար ասեի Hey Google, Set LEDs Blue (որքան բնական է սարքի վրա բղավելը), ապա դաշտում մուտքագրեմ Set LEDs $: Դա արեք հրամանի տարբեր տարբերակներով բոլոր 3 դաշտերի համար:

Իմ օգտագործած 3 -ն էին

Լուսադիոդներ $

Սահմանեք LED- ները $

Սահմանեք LED գույնը $

Վերջին դաշտը այն է, ինչ կցանկանայիք, որ ձեր Google Home- ը պատասխաներ ձեր հրամանը ասելուց հետո: Դա կարող է լինել այն, ինչ ցանկանում եք, բայց ես օգտագործել եմ գույնը $ սահմանելը: $ -Ը նշանակում է, որ նա կվերադառնա գույնը:

Կտտացրեք Ստեղծեք ձգան

Քայլ 4: IFTTT կարգավորում (գործողություն)

IFTTT կարգավորում (գործողություն)
IFTTT կարգավորում (գործողություն)
IFTTT կարգավորում (գործողություն)
IFTTT կարգավորում (գործողություն)

Ստեղծել ձգան սեղմելուց հետո դուք կվերաբեռնեք այն, եթե այն այն դեպքում, բայց այն փոխարինվել է Google Օգնականի պատկերանշանով: Շարունակեք ՝ կտտացնելով +այն

Նույնը, ինչ նախկինում, որտեղ ձեզ բերում է որոնման տող: Մուտքագրեք Webhooks և կտտացրեք որոնման տողից ներքև գտնվող webhook պատկերակին: Ընտրեք գործողություն վեբ -կեռիկների համար, միայն մեկ տարբերակ կա, այնպես որ կտտացրեք Կատարել վեբ հարցում:

Ահա այստեղ ամեն ինչ մի փոքր խճճված է դառնում: Քանի որ Google- ը ձեր տանը այլ համակարգիչ չէ, ձեզ հարկավոր կլինի ձեր արտաքին IP հասցեն: Սա կպահանջի նավահանգստի որոշակի փոխանցում, բայց մենք դրան կանդրադառնանք ավելի ուշ: Ձեր արտաքին IP հասցեն ստանալու համար այցելեք

URL- ի դաշտում մուտքագրեք https://xxx.xxx.xxx.xxx:3000/{{TextField}} (x- ը ձեր արտաքին IP հասցեն է): Եթե դուք հետաքրքրասեր եք, TextField- ը կունենա ձեր ընտրած գույնը հրաման կատարելիս: 3000 -ի օգտագործման պատճառն այն է, որ դա այն նավահանգիստն է, որով աշխատում է Raspberry Pi Express սերվերը: (Դուք կարող եք փոխել նավահանգիստը կոդի մեջ, բայց մենք պարզապես օգտագործում ենք Express- ի կանխադրված կարգավորումները)

Մեթոդի համար ընտրեք POST:

Բովանդակության տիպի համար ընտրեք տեքստ/պարզ:

Մարմնի համար մուտքագրեք {{TextField}}

Ձեզանից նրանք, ովքեր գիտեն, թե ինչպես է աշխատում POST հրահանգը, կմտածեք, որ եթե դուք վերլուծեք խնդրի մարմնի հատկությունը, ապա կստանաք գույնը: Ինչ -ինչ պատճառներով, երբեք ոչինչ չի դրվում հարցման հիմնական դաշտում, ուստի ես իրականում վերլուծում եմ URL- ի գույնը: Հուսով եմ, որ շուտով շտկվում է, քանի որ դա կպարզեցնի իմ կոդը index.js երթուղում: Բայց ես շեղվում եմ:

Վերջապես, կտտացրեք Ստեղծել գործողություն, այնուհետև Ավարտել հաջորդ էջում: (Ես անջատել եմ ծանուցումները, բայց դա նախապատվությունն է)

Քայլ 5. Նավահանգստի փոխանցում

Նավահանգստի առաքում
Նավահանգստի առաքում
Նավահանգստի առաքում
Նավահանգստի առաքում

Այստեղ ամեն ինչ դժվար է բացատրել, քանի որ բոլոր երթուղիչները տարբեր են…

Այժմ մենք ունենք Google, որը հրաման է ուղարկում մեր տուն ՝ օգտագործելով 3000 պորտը, բայց չգիտի, թե LAN- ի որ սարքին պետք է գնալ: Դա շտկելու համար մենք պետք է 3000 նավահանգիստը փոխանցենք ձեր Raspberry Pi- ի տեղական IP հասցեին:

Մուտք գործեք ձեր երթուղիչ ՝ օգտագործելով 10.0.0.1 կամ 192.168.1.1 (ես նաև տեսել եմ այն, որտեղ վերջին թվանշանը 254 է) և գտեք նավահանգստի փոխանցում: Նավահանգստի փոխանցման մեջ, ինչպես պատկերը, դուք կնշեք նոր սարք (IFTTT) և նավահանգիստը (3000) կուղարկեք Pi- ի IP հասցեին (իմ դեպքում `10.0.0.11):

Պահպանեք ձեր նոր կարգավորումը, վերագործարկեք ձեր երթուղիչը և ստուգեք ՝ համոզվելու համար, որ ձեր Raspberry Pi սերվերը դեռ աշխատում է: Եթե այն չի աշխատում, նորից գործարկեք:

Վերադարձեք այդ օգտակար կայք https://canyouseeme.org/: Ձեր IP հասցեից ներքև այն ունի նավահանգստի ստուգիչ: Ենթադրելով, որ նավահանգստի փոխանցումը ճիշտ է, մուտքագրեք 3000 և սեղմեք ստուգման նավահանգիստը: Այն պետք է վերադառնա հաջողությամբ:

Քայլ 6: Մինչ այժմ ստուգեք ձեր աշխատանքը

Ստուգեք ձեր աշխատանքը մինչ այժմ
Ստուգեք ձեր աշխատանքը մինչ այժմ
Ստուգեք ձեր աշխատանքը մինչ այժմ
Ստուգեք ձեր աշխատանքը մինչ այժմ

Այժմ… այն պահը, որին դուք սպասում էիք… Տեղեկացրեք Google- ին այնպիսի հրաման, ինչպիսին է LED- ները ՝ կապույտով (եթե հետևեիք իմ օրինակին):

Ենթադրելով, որ ամեն ինչ ճիշտ է ընթանում, դուք կստանաք նկարում տեսանելի արդյունքը: Մենք դեռ միացում չունենք, ուստի այն ամենը, ինչ կտեսնեք, տեքստ է էկրանին: Սովորաբար կա երկրորդ կամ 2 ուշացում, մինչև այն մշակվի Google- ից և հայտնվի Pi- ում:

(Անցեք հաջորդ քայլին, եթե սա նկարի նման է ստացվել)

Այժմ կան մի քանի բաներ, որոնց պետք է ուշադրություն դարձնել, եթե այն չաշխատի…

Նկարում կա մի տող, որն ասում է

POST /գույն /կապույտ 200 250.458 մվ - 2

200 -ը կարևոր մասն է: Եթե դուք չեք տեսնում 200, ապա այնտեղ կար վատ POST, ինչը նշանակում էր, որ ձեր սերվերը չգիտեր, թե ինչ անել տվյալների հետ: Վերադարձեք Քայլ 2 և ստուգեք ձեր index.js ֆայլը:

Նաև նկարում

stdout: կապույտ

stderr:

Սա պիտոնի ֆայլի ելքն է, որն աշխատում է LED- ները: Եթե այնտեղ սխալ եք տեսնում, գուցե այն է, որ 2 -րդ քայլում վարորդը տեղադրված չէ:

Վերջապես, եթե ընդհանրապես ոչինչ չհայտնվեր … ձեր IFTTT- ը կարող էր ճիշտ տեղադրված չլինել կամ չհաջողվեր միանալ սերվերին: Վերադարձեք IFTTT էջ և վերևի նավարկության վահանակում կտտացրեք Գործունեություն: Այնտեղ դուք կարող եք տեսնել ամեն անգամ, երբ ձեր ծրագիրն աշխատում է, և եթե սխալ է եղել, կարող եք տեսնել, թե ինչ է դա եղել: Ես Google հրամանը կատարեցի Pi սերվերի հետ և ստացա նկարի սխալը:

Քայլ 7: Շղթայի կառուցում

Շրջանի կառուցում
Շրջանի կառուցում
Շրջանի կառուցում
Շրջանի կառուցում
Շրջանի կառուցում
Շրջանի կառուցում

Պատճառը, թե ինչու մենք պետք է դա անենք, այն է, որ Raspberry Pi- ն չունի բավարար ուժ… Այսպիսով, լուծումը… ԱՎԵԼԻ ԻՇԽԱՆՈԹՅՈ (Ն (Թիմը, ով գործիք Թեյլորն է հեռվում հռհռում): AKA մեկ այլ էլեկտրամատակարարում (12V 2A)

Շրջանակային մասի նյութեր

  • Նախատախտակ
  • Մետաղալար
  • RGB LED ժապավեն
  • 12 Վ էլեկտրամատակարարում - 2 ամպից բարձր ցանկացած բան պետք է լավ լինի
  • DC Barrel Jack - Նույն չափսը, ինչ ձեր էներգիայի աղբյուրը
  • NPN BJT հզորության տրանզիստորներ (x3) - Ես օգտագործում եմ TIP31C- ը
  • Արական և իգական կապի վերնագրեր

Օգտագործելով այն հարմար պատկերը, որը ես գողացել եմ Pi Zero- ի GPIO- ի միջքաղաքային ցանցերից, կարող եք տեսնել, որ GPIO17- ը, GPIO18- ը և GPIO 27 -ը բոլորը միմյանց կողքին են `GND- ով: Մենք կօգտագործենք 4 քորոցների այդ քառակուսին (կապում 11, 12, 13, 14):

Նախ, ես խորհուրդ կտայի տղամարդկանց վերնագրերը միացնել ձեր LED շերտի վրա, ինչպես երևում է նկարում (ոչ թե իմ լավագույն աշխատանքը): Սա թույլ է տալիս հեշտ անջատում կատարել, եթե երբևէ դրա կարիքը լինի: Ես օգտագործել եմ կանացի վերնագրեր LED շերտի միացման համար իմ նախատախտակին և արական վերնագրեր ՝ նախատախտակից մինչև Raspberry Pi: (Միշտ օգտագործեք կանացի միացումներ էներգիայի/ազդանշանի աղբյուրի համար): Ձեզ անհրաժեշտ չէ, որ Pi- ի բոլոր կապումներն իրար կողքի տեղափոխեք… Ես պարզապես ուզում էի, որ այն մաքուր տեսք ունենար, բայց դա շատ աշխատանք էր:

Շրջանի բացատրություն

Նրանց համար, ովքեր անծանոթ են տրանզիստորներին, տրանզիստորները հիմնականում թվային անջատիչ են: PiI- ից GPIO կապում են երեք անջատիչները (կարմիր, կանաչ և կապույտ): Շրջանակային դիագրամում հատուկ նայելով RED- ին, երբ GPIO_17- ը միացված է, անջատիչը «փակվում» է RED- ին GND- ին միացնելով ՝ առաջացնելով կարմիր լույսերը: Երբ GPIO_17- ն անջատվում է, ապա անջատիչը բաց է, ուստի լույսերն անջատված են:

Հիմք - GPIO- ներ

Կոլեկցիոներ - Գույներ (Կարմիր, Կանաչ, Կապույտ)

Emitter - Ground (ինչպես էլեկտրամատակարարման, այնպես էլ Pi- ի)

Համոզվեք, որ Pi- ի հիմքը միացնում եք սնուցման աղբյուրին: Լույսերը դեռ կաշխատեն, բայց դրանք շատ աղոտ կհայտնվեն, մինչև գետինը միացված լինի:

Ես ունեմ 4 -րդ տրանզիստորին նայող սարք իմ նախատախտակի վրա: Դա L7805CV է, որն օգտագործվում է 12 Վ -ը 5 Վ փոխակերպելու համար, որպեսզի ես կարողանամ Pi- ն սնուցել նույն սխեմայի վրա: Այն աշխատում էր, բայց շարունակում էր տաքանալ, այնպես որ ես հանեցի դրա միացումները:

Քայլ 8: Փորձարկիր այն:

Միացումն ավարտելուց հետո վերագործարկեք ձեր Pi- ն որևէ կապեր կատարելուց առաջ: Դա պայմանավորված է նրանով, որ կապերը հավանաբար դեռ ակտիվ են սերվերի թեստից: Այլապես, դուք կարող եք սպանել սերվերին և խոզուկի ծառայությանը:

Միացրեք LED- ները և թռիչքները նախատախտակից մինչև Pi: Կրկնակի ստուգեք բոլոր միացումները, նախքան էլեկտրաէներգիա մատակարարելը: Եթե այն սխալ եք միացրել, կարող եք տապակել ձեր Pi- ն (առանց ճնշման):

Ստուգաթերթ

  • Ստուգեք լարերը
  • Power Pi
  • Power Circuit
  • Սկսել սերվերը (DEBUG = webapp:* npm սկսել մինչ while/piWebpage/webApp գրացուցակում)
  • Տեղեկացրեք Google- ին ՝ կատարելու ձեր առաջարկը:

ՇՆՈՐՀԱՎՈՐՈԹՅՈՆ ոչինչ չեք պայթեցրել, և այժմ կարող եք վերահսկել ձեր LED- ները Google Home- ից:

Եթե խնդիրներ ունեք, թողեք մեկնաբանություններ, և ես կանեմ ամեն ինչ, որպեսզի վերադառնամ ձեզ:

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