Tartalomjegyzék:

Alexa Raspberry Pi relévezérlő: 6 lépés
Alexa Raspberry Pi relévezérlő: 6 lépés

Videó: Alexa Raspberry Pi relévezérlő: 6 lépés

Videó: Alexa Raspberry Pi relévezérlő: 6 lépés
Videó: Csendes zigbee relé nulla vonal nélküli aljzatban, telepítési jellemzők, kondenzátor beszerelése 2024, Július
Anonim
Alexa Raspberry Pi relé vezérlő
Alexa Raspberry Pi relé vezérlő
Alexa Raspberry Pi relé vezérlő
Alexa Raspberry Pi relé vezérlő
Alexa Raspberry Pi relé vezérlő
Alexa Raspberry Pi relé vezérlő

Azért hoztam létre ezt az Instructable -t, hogy megosszam tapasztalataimat az IOT -eszközök integrálásával az Amazon Alexa -val.

Ez a projekt lehetővé teszi a málna pi -hez csatlakoztatott relé tábla vezérlését a smarthome vezérlőről.

Az Alexával tesztelték, de úgy tűnik, hogy jól működik a Samsung Smartthings és más kezelőfelületeken is, mivel egy sor Belkin Wemo aljzatot emulál.

Rengeteg példa található a kiváló FAUXMO kód alapján, de ez a python megtanulását jelentette, és nem adta meg a szükséges részletes vezérlést az eszközeimhez, ezért úgy döntöttem, hogy újra létrehozok egyet a semmiből, a C alapkódolási nyelvként.

Azt sem akartam, hogy a lambda -kód mélyére kelljen mennem az Amazon.com -on, így nagyon egyszerűnek tartottam.

A Githubon közzétettem a forrást és a megjegyzéseket:

github.com/Switchdoctorstu/StuPiMo

Az oktatóanyag valóban lefedi, hogyan kell működésbe hozni, és közzéteszi a jegyzeteimet, hátha másoknak segít.

1. lépés: Kellékek és csatlakozások

Kellékek és csatlakozók
Kellékek és csatlakozók
Kellékek és csatlakozók
Kellékek és csatlakozók
Kellékek és csatlakozók
Kellékek és csatlakozók

A szükséges dolgok könnyen elérhetők az Amazon / EBay -n:

  • Raspberry Pi *
  • Pi tápegység
  • Dupont csatlakozók
  • Relé tábla
  • Régi mikro USB kábel (a felére kell csökkenteni a relé kártya áramellátását)

Bármilyen málna Pi működni fog, ezt teszteltem B és Zero modelleken.

*Ha a Pi Zero -t használja, szüksége lesz egy OTG hálózati adapterre (kivéve, ha megvásárolja a „W” verziót a WiFi -vel)

Csatlakoztatnia kell a Pi -t a hálózathoz.

A dupont connetorok segítségével csatlakoztassa a relé kártyát a Pi -hez.

Vegye figyelembe, hogy a relékártya külső tápellátást használjon (távolítsa el a kapcsolatot, és csatlakoztassa a külső 5 V -hoz). PI -ről fog működni, de nem ajánlott a gyártás.

A beállításhoz külső tápellátású USB HUB -ot használtam. Ez biztosítja a PI áramellátását.

A régi USB -kábel végét is levágtam, és a reléket a második USB -csatlakozóról a hubra tápláltam, hogy biztonságban maradjak. Az én "gyártási" verzióm kicsi 5V 5A kapcsolóüzemű tápegységet használ. Ismét csak félbevágtam egy USB-vezetéket a Pi tápellátásához Micro-USB-n keresztül, és levágtam kettőt a dupont csatlakozókról a relé tábla táplálására. Az USB -vezetékben 4 vezeték található, a legtöbb piros/fekete színt használ az 5 V -os tápegység jelölésére, de ha kétségei vannak, használjon mérőt, hogy megbizonyosodjon arról, hogy a megfelelő vezetékeket kapta -e.

Az alaplapon lévő relécsapok a PI fejléc megfelelő GPIO csapjaihoz vannak csatlakoztatva.

A kód lehetővé teszi a GPIO csapok kiválasztását, de az alapértelmezettet használtam:

  1. 1. relécsap - földelés
  2. 2. relécsap - 1. relé - GPIO 0
  3. 3. relécsap - 2. relé - GPIO 1
  4. 4. relécsap - 3. relé - GPIO 2
  5. 5. relécsap - 4. relé - GPIO 3
  6. 6. relécsap - 5. relé - GPIO 4
  7. 7. relécsap - 6. relé - GPIO 5
  8. 8. relécsap - 7. relé - GPIO 6
  9. 9. relécsap - 8. relé - GPIO 7
  10. Relécsap 10 - +5v a logika érdekében

2. lépés: PI beállítása

Nem fogok újból létrehozni egy oktatóanyagot arról, hogyan lehet a PI-t üzembe helyezni és csatlakoztatni a hálózathoz.

Sok útmutató található, köztük egy kiváló oktatható:

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

El kell jutnia arra a pontra, ahol a PI látható a hálózaton, és csatlakozhat hozzá.

Nem számít, hogy Etherneten vagy vezeték nélkül történik.

Ez a projekt csak a Raspberry PI -vel fejezhető be a Geany Programmers Editor használatával, de személy szerint könnyebben elvégezhetem a kód előkészítését PC -n a Visual Studio vagy az Eclipse (vagy akár a Notepad ++) segítségével, majd feltölthetem a PI -be hibakereséshez VNC csatlakozás. Ismét nem fogok kitérni erre, mivel számos kiváló utasítás található a VNC RPi -n való beállításához.

Mindössze annyit kell tennie, hogy elérje azt a pontot, ahol feltöltheti és összeállíthatja a kódot.

Egy fontos megjegyzés az, hogy mivel az UPNP -kezelő UDP multicastot igényel, a használt interfészeket „Promiscuous” módba kell állítani.

Ezt a parancssorban lehet megtenni:

pi@raspberrypi: ~ $ ifconfig eth0persc

és / vagy

pi@raspberrypi: ~ $ ifconfig wlan0persc

Ezt állandóvá kell tenni, így szerkesztettem az /etc/rc.local fájlt

sudo nano / etc / rc.local

sor beillesztése:

sudo ifconfig eth0persc

az első banner # sor után, hogy megbizonyosodjon arról, hogy az interfészek beállítása indításkor történt.

3. lépés: A kód letöltése és összeállítása

Maga a kód a Github tárolómban található;

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

míg vannak „helyes” módszerek az adattár klónozására. könnyebben találtam csak a Geany szerkesztőt megnyitni a Pi asztalon, és beilleszteni a kódot.

Hasonlóképpen, ha a parancssort használja;

Hozzon létre egy új könyvtárat

mkdir Stu

Válts rá

cd Stu

Készítsen új szövegfájlt

nano StuPiMo.c

Másolja ki a kódot a Github -ból nyersen, és illessze be az új fájlba

Mentés és kilépés.

Miután a fájlt C forráskód objektumként használta, lefordíthatja

gcc -o StuPiMo StuPiMo.c -l wiringPi

vegye figyelembe, hogy az "-l wiringPi" szükséges annak biztosításához, hogy a fordító összekapcsolja a szükséges wiringPi könyvtárat.

A kód ezután a segítségével futtatható

./StuPiMo

Ismételten, ha azt szeretné, hogy ez indításkor fusson, használja a következő parancsot:

sudo nano /etc/rc.local

a következő sor hozzáadásához

sudo/home/pi/Stu/StuPiMo &

az /etc/rc.local fájlba. Ne felejtse el menteni a fájlt kilépéskor.

Ne feledje, hogy az "&" elengedhetetlen annak biztosításához, hogy egy alfolyamat létrejöjjön, hogy a szkript ezen a ponton ne legyen blokkolva.

4. lépés: Használata

Miután elindította a kódot, kérje meg alexát, hogy „Fedezze fel az eszközöket”, és ő megtalálja mind a 8 virtuális Wemo eszközt.

Akkor csak azt kell mondani, hogy: "Alexa kapcsolja be az aljzatot 1" vagy "Alexa kapcsolja ki a 6 -os aljzatot" stb., És a vonatkozó relé megváltozik.

5. lépés: A kód működése

A kód úgy működik, hogy egy sor Belkin Wemo foglalatú eszközt emulál.

Ennek eléréséhez 2 fő funkciót kell ellátnia

  • egy UPNP felfedezéses adáskezelő
  • egy „eszközkezelőt” (egyet virtuális eszközönként) az eszközre küldött parancsok és a szükséges válaszok kezelésére.

A „bónusz” funkció az, hogy weboldalt is közzétesz, amely lehetővé teszi az eszközök vezérlését.

UPNP kezelő

Az UPNP -kezelő megnyit egy aljzatot az SSDP protokollcsomagok figyelésére a 239.255.255.250 1900 -as porton.

Bármilyen „M-SEARCH” lekérdezésre válaszol, egy felfedezési válaszcsomaggal, amely minden egyes kérdezőt közöl az egyéni wemo-emulátorokkal.

Eszközkezelő

Az eszközkezelők (virtuális eszközönként egyet) figyelnek egy sor IP -portot, és válaszolnak a kérésekre.

Kérdés esetén a setup.xml választ fogja kiszolgálni

Kérésre egy eseményleíró fájlt fog kiszolgálni

Válaszol egy GETBINARYSTATE kérésre

Feldolgozza és válaszol a SETBINARYSTATE kérésre

Web szerver

A webszerver egy egyszerű rutin, amely relénként egy gombot tartalmazó HTML -űrlapot készít.

Reagál a gombok megnyomására, és ennek megfelelően változtatja a relé állapotát.

6. lépés: Testreszabás és barátságos nevek

Testreszabás és barátságos nevek
Testreszabás és barátságos nevek

Nem haragudtam a kódra, hogy egyszerű és szerkeszthető legyen.

Az alapok testreszabhatók a kód elején található definíciókkal:

// globális definíciók#define WEBPORT 5353 // port a webszerver futtatásához

#define NUMDEVICES 8 // Létrehozandó virtuális eszközök száma

#define PORTBASE 43450 // alap IP -port, amelyről növelni kell

A WEBPORT az a portszám, amelyen a beépített webszerver fut. Ezt a 80 -as ülésre is fel lehet állítani, hogy megkönnyítsük a dolgokat, de azt tapasztaltam, hogy ütközik a tomcat vagy más, helyben futó szolgáltatásokkal.

A NUMDEVICES határozza meg az indítandó egyedi WEMO emulátorok számát. Ha 2 portos relé kártyája van, akkor állítsa ezt 2, 4 port = 4 stb. Értékre.

Az eszközök barátságos nevei a setup_names nevű rutinban vannak megadva:

int setup_names (karakterbarát [NUMDEVICES] [NAMELEN]) {int i = 0;

// használja ezt a ciklust

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

sprintf (barátságos , "Socket %d", i + 1);

}

// vagy az alábbi kézikönyvtáblát az eszköznevek kitöltéséhez

/*

strcpy (barátságos [0], "hálószobás TV");

strcpy (barátságos [1], "Elektromos takaró");

strcpy (barátságos [2], "Hálószoba lámpa");

strcpy (barátságos [3], "Socket 4");

strcpy (barátságos [4], "Socket 5");

strcpy (barátságos [5], "Socket 6");

strcpy (barátságos [6], "Socket 7");

strcpy (barátságos [7], "Socket 8");

*/

vissza i;

}

Egy hurkot használtam minden eszköz „Socket n” hívására, de törölheti ezt a hurkot, és helyette saját barátságos neveket adhat hozzá (csak győződjön meg arról, hogy ugyanazt a számot adja hozzá, mint a NUMDEVICES), ha törli a / * * /

Ne felejtse el újra összeállítani a kódot, ha módosításokat hajt végre.

Ajánlott: