Агуулгын хүснэгт:

Alexa Raspberry Pi буухиа хянагч: 6 алхам
Alexa Raspberry Pi буухиа хянагч: 6 алхам

Видео: Alexa Raspberry Pi буухиа хянагч: 6 алхам

Видео: Alexa Raspberry Pi буухиа хянагч: 6 алхам
Видео: Autarkie erhöhen Exterer Dimmer für Wasserkocher, Bügeleisen, Waffeleisen, kleiner Backofen Solar PV 2024, Долдугаар сарын
Anonim
Alexa Raspberry Pi буухиа хянагч
Alexa Raspberry Pi буухиа хянагч
Alexa Raspberry Pi буухиа хянагч
Alexa Raspberry Pi буухиа хянагч
Alexa Raspberry Pi буухиа хянагч
Alexa Raspberry Pi буухиа хянагч

Би Amazon -ийн Alexa -д IOT төхөөрөмжүүдийг нэгтгэх туршлагаа хуваалцах зорилгоор энэхүү зааварчилгааг бүтээсэн.

Энэхүү төсөл нь бөөрөлзгөнө pi -тэй холбогдсон буухиа самбарыг smarthome контроллероос удирдах боломжийг олгодог.

Энэ нь Alexa -д туршиж үзсэн боловч хэд хэдэн Belkin Wemo залгуурыг дуурайдаг тул Samsung Smartthings болон бусад хяналтын интерфэйстэй сайн ажилладаг юм шиг санагддаг.

Маш сайн FAUXMO код дээр үндэслэсэн маш олон жишээ бий, гэхдээ энэ нь питон сурах гэсэн утгатай бөгөөд төхөөрөмжүүдэд маань шаардлагатай нарийвчилсан хяналтыг надад өгөөгүй тул би кодчиллын үндсэн хэл болгон С-ийг ашиглан эхнээс нь дахин бүтээхээр шийдсэн юм.

Би Amazon.com дээр lambda кодын гүн рүү орохыг хүсээгүй тул үүнийг маш энгийн болгосон.

Би Github дээр эх сурвалж, тэмдэглэлээ оруулсан болно.

github.com/Switchdoctorstu/StuPiMo

Энэ заавар нь үүнийг хэрхэн яаж ажиллуулах, бусдад тустай бол миний тэмдэглэлийг нийтлэх явдал юм.

Алхам 1: Хангамж ба холболт

Хангамж ба холболт
Хангамж ба холболт
Хангамж ба холболт
Хангамж ба холболт
Хангамж ба холболт
Хангамж ба холболт

Танд хэрэгтэй зүйлсийг Amazon / EBay дээрээс авах боломжтой.

  • Бөөрөлзгөнө PI *
  • Pi цахилгаан хангамж
  • Dupont холбогч
  • Релений самбар
  • Хуучин микро USB тугалга

Аливаа бөөрөлзгөнө Pi ажиллах болно, би үүнийг Model B ба Zero дээр туршиж үзсэн.

*Хэрэв Pi Zero ашиглаж байгаа бол танд OTG сүлжээний адаптер хэрэгтэй болно (хэрэв та 'W' хувилбарыг WiFi дээр buit ашиглан худалдаж авахгүй бол)

Та Pi -г сүлжээнд холбох хэрэгтэй болно.

Релей картыг Pi руу холбохын тулд дупонт холбогчийг ашиглана уу.

Реле карт нь гадаад хүчийг ашиглах ёстой гэдгийг анхаарна уу (холбоосыг салгаад гадаад 5v -тэй холбоно уу). Энэ нь PI -ээр ажилладаг боловч үйлдвэрлэл явуулахыг зөвлөдөггүй.

Миний тохиргооны хувьд би гаднаас тэжээгддэг USB HUB ашигласан. Энэ нь PI -ийн хүчийг өгдөг.

Би мөн хуучин USB кабелийн үзүүрийг хайчилж, аюулгүй байдлыг хангах үүднээс 2 -р USB холболтоос төв рүү релейгээ тэжээв. Миний "үйлдвэрлэлийн" хувилбарт жижиг 5V 5A унтраалгатай тэжээлийн хангамжийг ашигладаг. Дахин хэлэхэд би бичил USB-ээр дамжуулан Pi-г асаахын тулд USB утсыг хагасаар нь огтолж, реле самбарыг тэжээх хоёр дупонт холбогчийг таслав. USB залгуурт 4 утас байдаг бөгөөд ихэнх нь 5V тэжээлийг илэрхийлэхийн тулд улаан/хар өнгийг ашигладаг боловч эргэлзэж байвал тоолуур ашиглан зөв утсыг авсан эсэхээ шалгаарай.

Самбар дээрх реле зүү нь PI толгой дээрх холбогдох GPIO зүүтэй холбогдсон байна.

Код нь GPIO тээглүүрийг сонгох боломжийг олгодог боловч миний анхдагчаар ашигладаг байсан:

  1. Релений зүү 1 - Газар
  2. Релений зүү 2 - Реле 1 - GPIO 0
  3. Релений зүү 3 - Реле 2 - GPIO 1
  4. Релений зүү 4 - Реле 3 - GPIO 2
  5. Релений 5 -р pin - 4 -р буухиа - GPIO 3
  6. Релений 6 -р pin - 5 -р буухиа - GPIO 4
  7. Релений зүү 7 - Реле 6 - GPIO 5
  8. Релений зүү 8 - Реле 7 - GPIO 6
  9. Релений зүү 9 - Реле 8 - GPIO 7
  10. Релей зүү 10 - +5v логик

Алхам 2: PI тохиргоо

Би таны PI-ийг хэрхэн ажиллуулах, сүлжээнд холбогдох талаар зааварчилгаа дахин бичихгүй.

Маш сайн зааварчилгаа өгөх олон гарын авлага байдаг:

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

Та сүлжээнд PI харагдах цэг рүү хүрэх хэрэгтэй бөгөөд та түүнтэй холбогдох боломжтой болно.

Энэ нь Ethernet эсвэл Wireless -ээр хийгдсэн эсэх нь хамаагүй.

Энэ төслийг Geany Programmers Editor ашиглан зөвхөн Raspberry PI -ээр хийж дуусгах боломжтой боловч Visual Studio эсвэл Eclipse (эсвэл Notepad ++) ашиглан компьютер дээрээ кодоо бэлдэж, дараа нь дибаг хийх зорилгоор PI -д байршуулах нь надад илүү хялбар байдаг. VNC холболт. Дахин хэлэхэд би RPi дээр VNC -ийг тохируулах талаар маш сайн зааварчилгаа өгч байгаа тул энд дурдахгүй.

Танд хэрэгтэй зүйл бол кодыг байршуулж эмхэтгэх цэгт хүрэх явдал юм.

UPNP зохицуулагч нь UDP олон дамжуулалтыг шаарддаг тул ашигладаг интерфэйсийг 'Promiscuous' горимд тохируулсан байх ёстой.

Үүнийг тушаалын мөрөнд хийж болно:

pi@raspberrypi: ~ $ ifconfig eth0 promisc

ба / эсвэл

pi@raspberrypi: ~ $ ifconfig wlan0 promisc

Үүнийг байнгын болгох ёстой тул би /etc/rc.local -ийг засварлав

sudo nano / etc / rc.local

мөрийг оруулах:

sudo ifconfig eth0 promisc

интерфэйсийг эхлүүлэх үед тохируулсан эсэхийг баталгаажуулахын тулд баннер # шугамын эхний багцыг хийсний дараа.

Алхам 3: Кодыг татаж авах, эмхэтгэх

Код өөрөө миний Github мэдээллийн санд байрладаг;

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

репозиторийг хуулбарлах "зөв" аргууд байдаг. Pi ширээний компьютер дээр Geany редакторыг нээж кодыг буулгах нь надад илүү хялбар болсон.

Үүний нэгэн адил, хэрэв та командын мөрийг ашиглаж байгаа бол;

Шинэ лавлах үүсгэх

mkdir Stu

Үүнийг өөрчил

cd Stu

Шинэ текст файл үүсгэх

нано StuPiMo.c

Github -аас кодыг хуулж аваад шинэ файл руу буулгана уу

Хадгалж, гарна уу.

Файлыг C эх кодын объект болгосны дараа та үүнийг ашиглан хөрвүүлж болно

gcc -o StuPiMo StuPiMo.c -l утаснуудPi

"-l wiringPi" нь шаардлагатай wiringPi номын санд гомдол гаргагчийг холбохыг баталгаажуулах шаардлагатайг анхаарна уу.

Дараа нь кодыг ашиглан ажиллуулж болно

./StuPiMo

Дахин хэлэхэд, хэрэв та үүнийг эхлүүлэх үед ажиллуулахыг хүсч байвал дараах тушаалыг ашиглана уу.

sudo нано /etc/rc.local

дараах мөрийг нэмэх

sudo/home/pi/Stu/StuPiMo &

таны /etc/rc.local файл руу. Гарахдаа файлаа хадгалахаа бүү мартаарай.

Энэ үед скриптийг хаахгүй байхын тулд дэд процесс үүсэхийг баталгаажуулахын тулд '&' тэмдэглэх нь чухал гэдгийг анхаарна уу.

Алхам 4: Үүнийг ашиглах

Кодыг ажиллуулсны дараа alexa -аас 'Discover Devices' гэж асуухад тэр бүх 8 виртуал Wemo төхөөрөмжийг олох ёстой.

Дараа нь энэ нь "Alexa сокет 1 -ийг асаах" эсвэл "Alexa сокет 6 -ийг унтраах" гэх мэтээр хэлэх бөгөөд холбогдох реле өөрчлөгдөх болно.

Алхам 5: Код хэрхэн ажилладаг талаар

Код нь Belkin Wemo залгуурын цуврал төхөөрөмжийг дуурайлган ажиллуулдаг.

Үүнийг хэрэгжүүлэхийн тулд 2 үндсэн функцийг гүйцэтгэх ёстой

  • UPNP нээлтийн нэвтрүүлгийн зохицуулагч
  • төхөөрөмж рүү илгээсэн командууд болон шаардлагатай хариултуудыг удирдах "төхөөрөмж зохицуулагч" (виртуал төхөөрөмж тутамд нэг).

"Урамшууллын" онцлог нь төхөөрөмжүүдийг хянах боломжийг олгодог вэб хуудсыг нийтэлдэг явдал юм.

UPNP зохицуулагч

UPNP зохицуулагч нь 239.255.255.250 порт 1900 дээр SSDP протокол пакетуудыг хянах сокетийг нээдэг.

Энэ нь ирсэн бүх "M-SEARCH" асуултанд хариулж, wemo эмуляторыг асуусан хүнд мэдэгддэг.

Төхөөрөмжийн зохицуулагч

Төхөөрөмжийн зохицуулагчид (виртуал төхөөрөмж тутамд нэг ширхэг) хэд хэдэн IP портуудыг хянаж, хүсэлтэд хариу өгдөг.

Энэ нь асуухад setup.xml хариулт өгөх болно

Энэ нь асуухад үйл явдлын тайлбар файлд үйлчилнэ

Энэ нь GETBINARYSTATE хүсэлтэд хариу өгөх болно

Энэ нь SETBINARYSTATE хүсэлтийг боловсруулж, хариу өгөх болно

Вэб сервер

Вэб сервер бол реле тутамд нэг товчлуур агуулсан HTML хэлбэрийг бий болгодог энгийн ажил юм.

Энэ нь товчлууруудыг дарахад хариу өгөх бөгөөд релений төлөв байдлыг тохируулах болно.

Алхам 6: Өөрчлөлт ба найрсаг нэрс

Өөрчлөлт ба найрсаг нэрс
Өөрчлөлт ба найрсаг нэрс

Би кодоо энгийн, засварлахын тулд уурлаагүй.

Үндсэн ойлголтуудыг кодын эхэнд байгаа тодорхойлолтоор өөрчилж болно.

// дэлхийн тодорхойлолтууд#WEBPORT 5353 // вэб серверийг ажиллуулах портыг тодорхойлно

#Define NUMDEVICES 8 // Үүсгэх виртуал төхөөрөмжийн тоо

#PORTBASE 43450 // -аас дээш IP IP портыг тодорхойлно

WEBPORT нь вэб сервер дээр ажилладаг портын дугаар юм. Үүнийг 80 болгохын тулд ажлыг хялбарчлах боломжтой байсан ч энэ нь tomcat эсвэл орон нутагт ажилладаг бусад үйлчилгээтэй зөрчилдөж байгааг олж мэдэв.

NUMDEVICES нь эхлүүлэх WEMO эмуляторуудын тоог тодорхойлдог. Хэрэв танд 2 порттой реле карт байгаа бол үүнийг 2, 4 порт = 4 гэх мэтээр тохируулна уу.

Төхөөрөмжүүдэд ээлтэй нэрийг тохируулах_хэсэг гэж тогтоосон байдаг.

int setup_names (char ээлтэй [NUMDEVICES] [NAMELEN]) {int i = 0;

// энэ хүрдийг ашиглана уу

for (i = 0; i <NUMDEVICES; i ++) {

sprintf (нөхөрсөг , "Socket %d", i + 1);

}

// эсвэл төхөөрөмжийн нэрийг бөглөх гарын авлагын хүснэгт

/*

strcpy (ээлтэй [0], "Унтлагын өрөөний ТВ");

strcpy (ээлтэй [1], "Цахилгаан хөнжил");

strcpy (нөхөрсөг [2], "Унтлагын өрөөний гэрэл");

strcpy (нөхөрсөг [3], "Socket 4");

strcpy (нөхөрсөг [4], "Socket 5");

strcpy (нөхөрсөг [5], "Socket 6");

strcpy (нөхөрсөг [6], "Socket 7");

strcpy (нөхөрсөг [7], "Socket 8");

*/

буцах i;

}

Би төхөөрөмж бүрийг 'Socket n' гэж дуудахын тулд гогцоо ашигласан боловч та энэ давталтыг устгаад оронд нь өөрийн ээлтэй нэрийг нэмж болно (хэрэв та NUMDEVICES -тэй ижил тоог нэмж оруулсан бол) / * * /

Хэрэв та ямар нэгэн өөрчлөлт хийвэл кодыг дахин эмхэтгэхээ мартуузай.

Зөвлөмж болгож буй: