Mainos

Älykkäät pistorasiat ovat yksinkertaisin tapa automatisoida kotisi, mutta kun hinta on noin 40 dollaria Wi-Fi- tai ZWave-pohjaisesta pistorasiasta, et todennäköisesti osta muutamaa.

Saatat jo olla jo halpoja RF-pohjaisia ​​pistorasioita - sellaisia, jotka toimitetaan omilla mukautetuilla kaukosäätimillä, ja joiden takana on joitain kanava- ja ID-valitsimia. Valitettavasti niitä ei ole älykkään kodin navat markkinoilla Älykkään kodin keskittymien taistelu: mitä siellä on ja mitä on tulossa? Lue lisää jotka toimivat niiden kanssa. Eikö olisi hienoa, jos voisit linkittää ne jotenkin DIY-älykotijärjestelmääsi? No, voit tosiasiallisesti melko helposti saada noin 10 dollaria osittain.

Hieman lisätyöllä voit integroida myös muita räätälöityjä RF-pohjaisia ​​etälaitteita, kuten tämän budjetin elokuvanäyttö.

Mitä tarvitset:

  • ESP8266 NodeMCU v12E dev -kortti (tarkalla mallilla ei ole väliä, myös v1: n tai v3: n pitäisi olla hieno). Syy siihen, että käytämme NodeMCU-korttia, on se, että haluamme helpon Wi-Fi-yhteyden myöhemmin. Linkki on 2 pakkaukselle, jonka hinta on 7 dollaria.
  • instagram viewer
  • Pakkaus 433MHz lähetin ja vastaanotin (noin 3 dollaria).
  • RCSwitch- ja MQTT-kirjastot ja koodimme - kaikki ladattavissa Githubista.
  • MQTT-palvelin, paikallinen tai etäyhteys.
  • Jotkut RF-ohjattavat pistorasiat, jotka toimivat 433 mHz: n kaistalla (sen pitäisi sanoa kaukosäätimestä). Ostin kaivoksen Maplinilta kolmen pakkauksena noin 20 puntaa (25,89 dollaria).

Jos tämä on ensimmäinen kerta, kun ohjelmoit NodeMCU-aluetta, joudut lataamaan Arduino-laajennukset sitä varten: seuraa meidän ensimmäisen osan kanssa Arduino Killerin johtava opas Tapaa Arduino Killer: ESP8266Entä jos kerroin sinulle, että siellä on Arduino-yhteensopiva dev-levy, jossa on sisäänrakennettu Wi-Fi, alle 10 dollaria? No, siellä on. Lue lisää NodeMCU / ESP8266-sirulle. Tarvitset myös CH430 ajurit. Voit löytää allekirjoittaneet macOS CH430 -ohjaimet täällätai Windows täällä.

Olen käyttänyt Arduinon versiota 1.6.5, koska mikä tahansa korkeampi tuo enemmän ongelmia kuin se ratkaisee. Alenna palkkiota, jos et vielä ole.

Ennen kuin jatkat, aion olettaa perustiedot siitä Arduino-ohjelmointi Arduino-ohjelmointi aloittelijoille: Liikennevalo-ohjaimen projektiohjeetArduinon liikennevalo-ohjaimen rakentaminen auttaa sinua kehittämään koodaustaitoja! Aloitamme sinut. Lue lisää , ja että sinulla on NodeMCU-asetukset paneelin hallinnassa ja pystyt lataamaan demo-koodin oikein. Sinun olisi pitänyt lisätä myös lataukseen sisältyvät kirjastot omaan Arduino / kirjastot kansio.

Jos sinulla on olemassa PubSubClient- tai MQTT-kirjasto, varmuuskopioi se ja poista se - sisällyttämäni tiedosto on ainoa, jossa voin luotettavasti vastaanottaa viestejä NodeMCU: lla, ja yritin paljon!

RF-nuuske (valinnainen)

Tätä vaihetta ei tarvita, jos haluat ohjata vain DIP-kytkimen tai valintakytkimen pistorasioita - niitä tuetaan laatikosta ja tarvitaan vähän koodin muokkausta (tämä on silti mielenkiintoista tehdä ensin, joten ymmärrät mitä tapahtuu kohtauksia).

Jos sinulla on muita RF-kaukosäätimiä, jotka haluat kokeilla lisäämistä, sinun on ensin "nuuskettava" lähetettävät RF-koodit. Lataa se ReceiveDemo_Advanced luonnos Valikko -> Esimerkit -> RCSwitch -kansio ja muuta seuraava rivi nollasta

mySwitch.enableRevasta (0); // Vastaanotin keskeytyksessä 0 => eli nasta 2

2: een.

mySwitch.enableRevasta (2); // GPIO 2 / D4-vastaanottimen vastaanotin.

Kytke vastaanotinmoduuli seuraavasti. Vastaanotinkortin edestä katsottuna (se on kummastakin pidempi, lähetin on suorakaiteen muotoinen) - puoli, jossa komponentit ovat:

  • Äärioikeisto on GND. Yhdistä GND: hen NodeMCU-kortilla.
  • Vasemmalla vasemmalla on VCC. Yhdistä VIN-verkkoon NodeMCU-kortilla.
  • Kaksi keskimmäistä nastaa ovat signaali. Yhdistä jompikumpi NodeMCU: n D4: ään (ne on kytketty toisiinsa, joten ei ole väliä kumpi).
433 johdotus-1

Lataa nyt muokattu ReceiveDemo_Advanced, ja kun se on valmis, avaa sarjamonitori ja aloita kaukosäätimen painikkeiden painaminen. Kopioi desimaali (mukaan lukien bitin pituus), pulssin pituus ja protokolla, kun painat painiketta.

näytön RF-nuuskaaminen

Tämän jälkeen löysin projektorin näytön käyttävän

  • NÄYTÖSTÄ: Vastaanotettu 8694273 / 24bit; Pulssin pituus: 355 tai 356; Pöytäkirja: 1
  • NÄYTÖN ALAS: Vastaanotettu 8694276 / 24bit;Pulssin pituus: 355 tai 356; Pöytäkirja: 1

Jatka niin monta painiketta kuin tarvitset.

Lähettimen testaaminen

Seuraavaksi yritämme lähettää koodeja lähettimen avulla. Kytke lähetinmoduuli (nelikulmainen) seuraavasti. Ole varovainen: näiden tappien merkinnät ovat hirvittäviä.

VCC-nasta on oikeastaan ​​keskellä, ei vasemmalla puolella. Tuhonnin yhden moduulin tämän selvittämisessä. Se asia, joka sanoo ”ATAD”, on oikeastaan ​​”DATA”, kirjoitettu taaksepäin. Data siirtyy jälleen D4: ään, VCC: stä VIN: ään ja GND: stä GND: hen (poista vastaanotinmoduuli, et enää tarvitse sitä).

433 johdotus-2

Lataa Esimerkkejä -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesja vaihda uudelleen datatappi:

mySwitch.enableTransmit (10);

että

mySwitch.enableTransmit (2);

Huomaa, että kirjastossa on useita erilaisia ​​esimerkkejä, ja mikä niistä toimii sinulle, riippuu tarkalleen kytkimen tyypistä. Tyyppi A (dip-kytkimet) ja B (valitsimet tai liukusäätimet) ovat yleisimmät - katso RCSwitch-sivun kuvia. Tyypille B pistorasian kytkeminen päälle ja pois päältä on yhtä helppoa kuin:

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

missä 1 on kanavan tunnus (ylempi valitsin) ja 4 on holkin tunnus (alavalitsin). Nämä oli kirjoitettu roomalaisin numeroin pistorasioihini. Siksi voidaan osoittaa korkeintaan 16 yksittäistä pistorasiaa, vaikka useat pistorasiat voivat käyttää samaa osoitetta, jos sinulla on useita laitteita käynnistyäksesi kerralla.

Projektorinäyttöni oli kuitenkin hieman erilainen - siinä käytettiin erilaista pulssipituutta. Joten, jotta ne toimisivat, seuraavat toimivat. Huomaa, että voit myös määrittää toisen protokollan, jos kaukosäädin sitä tarvitsee, mutta muista määritellä protokolla ENNEN pulssin pituutta. Pulssin pituus korvataan, kun protokollaa vaihdetaan.

// Huomaa, että näytöni todella vaatii KAIKKI painikkeet (ei pitkä painallus, vaan kaksi fyysistä) painaa), joten viivyn vähän lähettämällä saman signaalin uudelleen tyhjä screenUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (desimaalikoodi, bittien lukumäärä) viive (2000); mySwitch.send (8694273,24); } tyhjä screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); viive (2000); mySwitch.send (8694276,24); }

Testaa kaikki koodisi toimivat ensin, ennen kuin siirryt seuraavaan vaiheeseen.

Ohjaus MQTT: n kautta

Avaa Github-nimeltä lataamasi luonnos mqtt_rcswitch.inoja aloita muokkaamalla kotiisi verkon SSID-tunnusta ja salasanaa. Vaihda sitten haluamasi kanavan nimi ja aseta MQTT-palvelin. Jos sinulla ei vielä ole MQTT-palvelinta käynnissä OpenHAB-asennuksessa, lue OpenHAB-aloittelijan oppaan osa 2 OpenHAB-aloittelijan opas, osa 2: ZWave, MQTT, säännöt ja kaaviotOpenHAB, avoimen lähdekoodin kotiautomaatio-ohjelmisto, ylittää huomattavasti muiden markkinoilla olevien kotiautomaatiojärjestelmien mahdollisuudet - mutta käyttöönotto ei ole helppoa. Itse asiassa se voi olla suoraan turhauttavaa. Lue lisää . Huomaa, että koodini on suunniteltu tyypin B (kiertokytkin) -liitäntöihin, vaikka voit muuttaa sitä helposti myös DIP-kytkimiin.

Koodin tärkein osa on viesti vastaanotettu() toiminto, joka vastaa saapuviin MQTT-komentoihin. Tässä toiminnossa tarkistamme ensin tärkeimmän avainsanan - valitsin “kytkin” ja “näyttö”. ”Kytkimen” tapauksessa jäsentämme sitten kanavan ja pistokkeen tunnuksen; tarkista sitten hyötykuormakappale komennon saamiseksi.

tyhjä viestiVastaanotettu (merkkijono, merkkijonon hyötykuorma, char * tavu, allekirjoittamaton sisäpituus) {if (topic.indexOf ("switch")> = 0) {// kytkinohjaus, jäsentä kanava ja liitä tunnus int channel = getValue (Aihe, '/', 3) .toInt (); int plug = getValue (aihe, '/', 4) .toInt (); if (hyötykuorma == "päällä") {mySwitch.switchOn (kanava, pistoke); } else {mySwitch.switchOff (kanava, pistoke); }} muuten jos (topic.indexOf ("screen")> = 0) {// näytön ohjaus if (payload == "up") {screenUp (); } else if (hyötykuorma == "alas") {screenDown (); }} / * lisää toinen toinen, jos haluat kuunnella lisää komentoja (tai muuta vain yllä olevaa, jos et halua näyttöä) * / }

Oletuksena sitten seuraavat MQTT-komennot toimivat:

olohuone / ohjaus / kytkin / X / Y (missä X on kanava ja Y on pistotunnus; viestin runko päällä tai pois)
olohuone / ohjaus / näyttö (viestin runko ylös tai alas)

Testaa laitteesi komentorivillä tai GUI MQTT -asiakkaalla ennen lisäystä OpenHAB: iin.

Lisäys OpenHAB: iin

Viimeisenä askeleena meidän on vain luotava joitain kohteita näille kytkimille OpenHAB: ssa. Olen määritellyt seuraavat kohteet toistaiseksi, mutta sinun pitäisi pystyä selvittämään, kuinka lisätä lisää:

/ * RF433mHz-laitteet * / Vaihda CinemaScreen "Screen" (Cinema) {mqtt = "> [välittäjä: olohuone / ohjaus / näyttö: komento: ON: alas],> [välittäjä: olohuone / ohjaus / näyttö: komento: OFF: ylös]"} Kytkin Kytkin41 "Kytkin41" (Cinema) {mqtt = "> [välittäjä: olohuone / ohjaus / kytkin / 4/1: komento: PÄÄLLÄ: päällä],> [välittäjä: olohuone / ohjaus / kytkin / 4/1: komento: POIS: vinossa]"} Kytkinkytkin42 "Kytkin42" (Cinema) {mqtt = "> [välittäjä: olohuone / ohjaus / kytkin / 4/2: komento: PÄÄLLÄ: päällä],> [välittäjä: olohuone / ohjaus / kytkin / 4/2: komento: POIS: vinossa]"}

Sinun pitäisi nyt pystyä ohjaamaan radiotaajuuslaitteitasi OpenHAB: lta! Yksi asia, josta olin iloisesti yllättynyt, oli alue - yksi solmu pystyi peittämään suurimman osan talostani. Voit tietysti lisätä toisen solmun kuunnellessasi samaa kanavaa, joka yksinkertaisesti toistaa samat komennot, jos tarvitset lisätietoa.

Ainoa rajoitus, joka on pidettävä mielessä, on se, että pistorasiat eivät itse pysty ilmoittamaan tilaa, joten jos sinä Käytä alkuperäistä kaukosäädintä, pistorasian tilan hallinta ei välttämättä heijastu tarkasti sisällä OpenHAB. Pidä kiinni vain OpenHAB-käyttöliittymän käytöstä ja sinun pitäisi olla kunnossa.

Kysymyksiä tai ongelmia? Kysy kommentteista, ja teen parhaani auttaakseni. Jos haluat parantaa koodini, lähetä pyyntö pyynnöstä.

Jamesilla on teknisen älykunnan kandidaatin tutkinto ja hän on CompTIA A + ja Network + -sertifioitu. Hän on MakeUseOfin johtava kehittäjä ja viettää vapaa-aikansa pelaamalla VR-paintballia ja lautapelejä. Hän on rakennettu tietokoneita lapsuudestaan ​​asti.