INHOUDSOPGAWE:

Kragtige selfstandige tuisautomatiseringstelsel - Pi, Sonoff, ESP8266 en Node -Red: 9 stappe (met foto's)
Kragtige selfstandige tuisautomatiseringstelsel - Pi, Sonoff, ESP8266 en Node -Red: 9 stappe (met foto's)

Video: Kragtige selfstandige tuisautomatiseringstelsel - Pi, Sonoff, ESP8266 en Node -Red: 9 stappe (met foto's)

Video: Kragtige selfstandige tuisautomatiseringstelsel - Pi, Sonoff, ESP8266 en Node -Red: 9 stappe (met foto's)
Video: Part 1 - Ann Veronica Audiobook by H. G. Wells (Chs 01 -03) 2024, Julie
Anonim
Kragtige selfstandige tuisautomatiseringstelsel - Pi, Sonoff, ESP8266 en Node -Red
Kragtige selfstandige tuisautomatiseringstelsel - Pi, Sonoff, ESP8266 en Node -Red

Hierdie gids lei u na die eerste basis, waar u 'n lamp of 'n toestel aan/af kan skakel via enige toestel wat met u plaaslike netwerk kan skakel, en met 'n wonderlike aanpasbare webkoppelvlak. Die ruimte vir uitbreiding/ toevoeging van funksies is groot, insluitend die stuur van e -pos, Twitter -boodskappe, leessensors (bv. Temperatuur). U kan maklik reëls opstel, bv. - as die temperatuur om 23:00 onder 15C is, skakel die elektriese kombers vir 30 minute aan. Die stelsel gebruik die MQTT -protokol met TCP wat aansienlik meer betroubaar is as UDP - wat verrassend gebruik word deur sommige kommersiële huistomotasietoestelle. Sodra die harde werk van die opstel van die stelsel, wat hier beskryf word, klaar is, kan die pret begin. Node Red bied 'n fantastiese gebruikerskoppelvlak wat intuïtief, vinnig en maklik is om op te stel en ongelooflike vermoëns bied.

Die resultaat is 'n kragtige tuisautomatiseringstelsel wat volledig onder u eie beheer is en volledig op 'n plaaslike netwerk is. Baie van die stelsels wat op Instructables verskyn, werk met wolkgebaseerde bedieners en is dus 'n veiligheidsrisiko en kan intekening vereis. Dit is makliker om op te stel, maar het 'n hoër veiligheidsrisiko en moontlik hoër koste. Ek moet byvoeg dat u 'n VPN (virtuele privaat netwerk) op die Pi kan instel om 'n veilige verbinding met die tuisnetwerk/stelsel moontlik te maak as toegang van buite nuttig sou wees (Google Pi OpenVPN vir instruksies).

Hierdie stelsel vereis herprogrammering van Sonoff-toestelle met 'n wonderlike open source stelsel genaamd Sonoff-Tasmoda. Dit kan gedoen word met behulp van 'n spesiale Arduino -opstelling en 'n USB na reeksomskakelaar. Die Sonoff-toestelle gebruik die ESP8266 Wi-Fi-chip, sodat u ook u eie toestelle kan maak met behulp van ESP8266-modules of dit by ander items pas om draadlose verbinding te lewer.

Die grootste taak is om 'n Raspberry Pi as die hub op te stel. Dit bestuur die MQTT -makelaar (of bediener) wat die kommunikasie met die gekoppelde toestelle bestuur. Die Pi bedryf ook 'n stelsel genaamd Node-Red wat boodskappe en data en uitvoeropdragte kan onderskep-soos wanneer u die elektriese kombers moet aanskakel. Node-Red bied ook 'n koppelvlak om die webblad te bedien waarop u via 'n slimfoon/tablet/rekenaar/skootrekenaar kan aanmeld, om te sien wat aan die gang is en om ligte met die hand te skakel, ens.

My doel met hierdie instruksies is om elke stap in detail te gee sodat 'n beginner die stelsel kan laat werk.

Die stappe is:

  • Laai 'n Pi met Rasbian Stretch
  • Opdateer en voeg funksies by Node-Red
  • Installeer die Mosquitto MQTT -makelaar
  • Stel die Arduino-omgewing in vir die oplaai van die Sonoff-Tasmota-firmware
  • Herprogrammeer 'n Sonoff-skakelaar
  • Stel die Node-Red-koppelvlak op
  • Toets dit werk alles.

Hardeware wat u benodig:

  • Framboos Pi en kragtoevoer (en sleutelbord en monitor vir aanvanklike opstelling) (model B word hier gebruik)
  • Sonoff -skakelaar
  • USB -reeksomskakelaar
  • Opsioneel - ESP -ontwikkelingsbord, soos die NodeMCU.

My ervaring met die Raspberry Pi is dat die opstel van enigiets aansienlik meer pyn behels as wat 'n mens ooit kon dink as dinge nie werk nie, of dat dit vasloop op 'n onbenullige stap, waar die verduideliking beter kon gewees het. Die forums kry nie altyd advies wat werk nie! Ek het verskeie roetes gevind wat om een of ander rede eenvoudig nie gewerk het nie. Dit kos 3 dae! Ek vee toe alles af en begin weer en voltooi dit in minder as 'n (lang) dag. Dit het egter die ouer Raspian Jessie gebruik. Hierna het ek 'n manier gevind om die huidige en onlangs vrygestelde weergawe (Stretch) te gebruik en dit alles weer gedoen. Met hierdie gids kan u instruksies in die Pi kopieer en plak. U moet dus binne 'n paar uur klaar wees. Ek hoop in elk geval dat dit u vinniger op die leerkurwe bring en met baie minder pyn. Glo my, dit is die moeite werd vir die eindresultaat.

Stap 1: Laai 'n Pi met Rasbian Stretch

Dit behoort redelik eenvoudig te wees. Begin met 'n 8 GB of 16 GB SD -kaart. Laai die nuutste weergawe af vanaf:

www.raspberrypi.org/downloads/

Die hoofdraad hier veronderstel dat die volledige weergawe gelaai is. U kan egter die lite -weergawe gebruik om ruimte te bespaar. As u Raspbian Stretch Lite gebruik, gaan deur met hierdie stap en gaan dan aan die einde na stap 9.

As u die afgelaaide lêer uitpak, kry u 'n lêergids met die.img -lêer. 7Zip word aanbeveel vir Windows (en The Unarchiver Mac). Die prentjie moet op die SD -kaart verbrand word - maar 'n spesiale program moet gebruik word, aangesien die lêerstelsel nie met Windows versoenbaar is nie. Die aanbevole sagteware heet Etcher en kan afgelaai word vanaf:

etcher.io/

Die instruksies vir Etcher is op hul webwerf en kan beswaarlik eenvoudiger wees. Kies die prent en die skyf en klik op Flash.

Nou kan ons Pi met ons flitsende SD -kaart aan die gang kom.

As u die IP -adres ken wat u Pi gebruik of dit graag vind deur aan te meld by u router, kan u die noodsaaklikheid van sleutelbord en monitor vermy en SSH onmiddellik gebruik. Voeg net 'n leë lêer met die naam SSH by die SD -kaart, plaas dit, koppel aan Ethernet en skakel aan. Andersins, volg die onderstaande gids.

Koppel die Pi aan die internet, die skerm, die muis en die sleutelbord en maak 'n verbinding met die krag. Die eerste ding wat ons sal doen, is om SSH in staat te stel, sodat ons die grootste deel van die opstelling vanaf die gemak op 'n rekenaar kan doen. Dit kan natuurlik direk gedoen word, maar dit help baie om hierdie gids op dieselfde toestel as die een wat die Pi bestuur, te kan volg en vir die meeste instruksies kopieer en plak. In my geval is my rekenaarwerkstasie ook lekker en gemaklik, maar ook nie groot genoeg vir 'n pi nie.

Daar is 'n gids vir 'n groot deel van die werk aan 'n YouTube -video. Dit is waar ek begin het. U kan die video saam met die volgende instruksies uitvoer. Maar toe ek die proses weer deurloop terwyl ek dit skryf, vind ek dit makliker om die instruksies hier te volg. Daar is 'n paar beduidende afwykings. Daar is ook 'n paar gedeeltes waar ek aangeraai het om die video te volg, eerder as om die stappe hier te noem. Ek sou egter aanbeveel om daarna te kyk om 'n begrip te kry van MQTT, Node-Red en die breë opstelproses. Die video is 38 minute lank, so voel gemaklik. Die video begin met wys wat Node Red kan doen, en dek dan die installering en opstelling van Pi, gevolg deur die opgradering van Node Red en laastens die installering van Mosquitto. Belangrike tydsberekening as u na 'n afdeling wil terugkeer:

00:00 Inleiding tot video

03:00 Node Red demonstrasie

14:14 Die invoer van dashboard -items in Node Red

21:05 Pi se aanvanklike opstelling, insluitend SSH

23:35 Installasie van Node Red -ondersteunende kode

27:00 Inleiding tot MQTT

29:12 Mosquitto (MQTT) installasie (Nota werk slegs vir Raspian Jessie)

33:00 Node Red voorbeelde

Ek sal die opdragte vetdruk kursief noem (eerder as om "" te gebruik). Hierdie opmaak word geïgnoreer as u dit in die Pi kopieer en plak.

Die inleiding tot Node Red sal u 'n idee gee van wat die stelsel kan doen en 'n beeld gee van waar ons eindig.

Die YouTube -video is op:

Volg die installasieprosedure van 21:05 tot 23:35. Let op: die standaard aanmelding is user: pi en wagwoord: framboos. Soek die pi se IP -adres voordat u weer begin. Klik óf op die 'op+af -pyltjie' -ikoon in die boonste balk van die lessenaar, of voer die volgende instruksie in die terminaal/terminale venster in:

sudo ifconfig adres

Let dan op die IP -adres na: inet addr:. Dit sal in die vorm 192.168.x.y wees

Let op hierdie adres en herbegin (tik: sudo shutdown –r nou)

Die sleutel op hierdie punt is dat SSH aangeskakel is en 'n skakel na die Pi vanaf 'n rekenaar kan opstel (Mac en Linux sluit SSH -koppelvlakke in). 'N Goeie program om dit te doen is 'n gratis aflaai genaamd PuTTY, wat ook as 'n seriële koppelvlak gebruik kan word en Telnet kan doen. Putty is beskikbaar by:

www.chiark.greenend.org.uk/~sgtatham/putty…

Laai PuTTY af en installeer dit.

As die Pi weer begin, begin PuTTY en voer die IP -adres in wat vroeër opgemerk is. Sien voorbeeld hieronder:

Klik nou op Open

Na aanmelding as: voer pi in

Voer dan u wagwoord in.

Volg nou die instruksies hier en begin die video opsioneel vanaf 23:35. U kan in die meeste gevalle kopieer en plak. Merk die teks en gebruik ctrl+C om te kopieer. Klik dan met die rechtermuisknop in PuTTY om te plak. Soms verskyn die teks nie onmiddellik nie, wag 'n paar sekondes. As u twee keer ingevoer het, gebruik backspace om die tweede inskrywing te verwyder. Druk enter om elke instruksie uit te voer.

sudo raspi-opdatering

Ek het 'n opdrag gekry wat ek nie gevind het nie en dit en die volgende afsluiting/herlaai -instruksie geïgnoreer:

sudo shutdown -r nou

sudo apt -get -get -update

sudo apt -get -get -opgradering

Dit neem 'n rukkie ….

sudo apt-get outoremove

sudo apt -get -get -update

sudo shutdown -r nou

Op hierdie punt het ons die Pi -bedryfstelsel gelaai en bygewerk, gereed vir die volgende stap.

Stap 2: Werk en voeg funksies by Node-Red by

Die PuTTY -verbinding sal tydens die herbegin aan die einde van die vorige stap verlore gegaan het. Maak PuTTY toe, en nadat u gewag het dat die Pi moet begin, meld u weer aan soos voorheen.

Ek het oorgegaan na 'n eenvoudiger en meer betroubare metode om Node-Red te laai-volgens die benadering op https://nodered.org/docs/hardware/raspberrypi. Dit gebruik 'n script en sal Node-Red installeer of opgradeer-dus werk die benadering dieselfde as die volledige of klein weergawes van Raspbian Stretch. Tik dus in:

bash <(curl -sL

Voer Y in wanneer gevra word (twee keer). Hierdie skrip laai ook lêers wat nodig is om outomatiese begin van Node-Red moontlik te maak.

Op hierdie stadium het ons ons pi gelaai en bygewerk en met die opdaterings wat nodig is vir Node Red. Dit is geen kwaad om voor die volgende fase weer te begin nie.

sudo shutdown -r nou

Stap 3: Mosquitto MQTT -installasie

As u dit nog nie gedoen het nie, is dit die moeite werd om vanaf 27:00 die video -inleiding tot MQTT op die video te kyk.

Dit is hier waar ons 'n ander pad moet inslaan. Die prosedure wat in die video uiteengesit word, werk slegs vir die ouer Jessie -weergawe van Raspian. Daar is 'n bespreking oor die muskietterrein, maar geen duidelike uitkoms word getoon nie en sal dus by 'n eenvoudiger en veiliger roete bly.

Meld dus aan met PuTTY en voer die volgende in:

sudo apt-get update

sudo apt-get install mosquitto mosquitto-kliënte

Y

sudo /etc/init.d/mosquitto om te stop

sudo /etc/init.d/mosquitto om te begin

Laasgenoemde twee instruksies stop en begin die muskiet en wys dat ons MQTT -makelaar werk.

Open nog twee PuTTY -sessies vir 'n vinnige toets en meld by elkeen aan.

U sal nou weet dat MQTT volgens die toestel die data benodig wat op 'n 'onderwerp' inskryf. Die makelaar sal enige data met dieselfde 'onderwerp' stuur. Dan publiseer die toestel wat data/instruksies wil stuur dit aan die makelaar met dieselfde 'onderwerp'.

So voer in een PuTTY -sessie in:

mosquitto_sub -d -t hallo/wêreld

Dit is 'n instruksie om in te skryf op die onderwerp: hallo/wêreld.

Tik in die ander:

mosquitto_pub -d -t hello/world -m "Hallo van Terminal venster 2!"

Dit is 'n publikasie -instruksie met dieselfde onderwerp met 'n boodskap. Die teks: "Hallo vanaf terminale venster 2!" moet nou in die ander terminaal verskyn.

Welgedaan om so ver te kom. Ons het nou die Pi gelaai en opgedateer met opdaterings wat nodig is vir Node-Red en met die muskiet MQTT makelaar geïnstalleer en getoets. Van nou af word die lewe makliker, 'n bietjie lekkerder. Sluit die twee PuTTY -sessies wat vir die MQTT -toets gebruik is.

Stap 4: Die opstel van die Node Red -koppelvlak

Eerstens moet ons Node Red begin. Voer die instruksie in:

node-red-pi --max-old-space-size = 256

Wag totdat dit aan die gang is, en u sien die teks 'Begin vloei'.

Maak nou 'n blaaier oop, ek gebruik Chrome, en voer die pi IP -adres in wat vroeër opgemerk is, gevolg deur: 1880 dws iets soos 192.168.0.8:1880

U behoort nou die Node Red -programmeringsbladsy soos volg te sien:

U kan nou vanaf 33:00 die Node Red -voorbeelde volg, of direk na 'n klein bietjie ekstra opset gaan en die eerste stroom laai wat die skakel na MQTT wys en gereed wees om met ons skakelaar te skakel.

Die addisionele opstelling wat nodig is, is om die dashboard -items by te voeg wat 'n webkoppelvlak moontlik maak.

Dit word om 14:14 op die video gewys.

Volg die instruksies om node-red-dashboard te laai.

Nou kan ons 'n bietjie speel en wys hoe MQTT werk en bestuur word deur Node-Red. Dit is nie op die video nie, maar is die sleutel tot hierdie projek. U kan my instruksies volg en/of die vloei invoer uit die aangehegte NRtest1.txt -lêer.

Voeg eers 'n invoer -inspuitknoop en 'n uitvoer -mqtt -knoop by en koppel dit aan mekaar.

Dubbelklik op die inspuitknoop (wat aanvanklik die tydstempel genoem word). In die Payload -afdeling, gebruik die twiddly om na string te verander en voer: Hello from me. Laat die onderwerp leeg, aangesien ons dit in die MQTT -knoop kan invoer. Klik op Klaar

Dubbelklik nou op die MQTT -knoop. Klik op die potlood -ikoon regs van die bedienerseksie. Dit maak 'n nuwe dialoog oop. Tik: localhost in die bedienerafdeling. Klik op Voeg by. Nou, terug in die Edit mqtt out -knoppie, voer ons onderwerp in die afdeling Onderwerp in: hallo/wêreld. Stel QoS op 1. Klik op Klaar. Klik nou op Ontplooi. U moet 'n groen blob onder die mqtt -knoop sien en 'verbind' wees.

Voeg nou nog twee nodusse by - invoer mqtt en output debug, en koppel dit aan mekaar. Dubbelklik nou op die invoer mqtt -knoop en voer hallo/wêreld in die onderwerpafdeling in. Die bediener moet reeds localhost: 1883 wys. Stel QoS op 1. Klik op Klaar. Klik dan op Ontplooi en klik op die ontfout -oortjie in die regterkantste venster. Klik nou op die grys vierkant links van die 'Hello from me' inspuitknoop. Dit stuur die teksvrag na die MQTT -makelaar met die onderwerp hallo/wêreld. Die makelaar weet dat die mqtt -invoerknooppunt op dieselfde onderwerp ingeteken het en die loonvrag dus deurstuur. Die mqtt -invoerknooppunt stuur dit dan na die debug -oortjie (RHS) en die teks 'Hello from me' moet verskyn.

Dit merk nog 'n boks, aangesien ons met Node Red met ons MQTT -makelaar praat. Let daarop dat Node Red slegs 'n kliënt by die makelaar is - net soos die Sonoff -toestelle sal ons later aansluit. Dit maak egter gesofistikeerde outomatisering moontlik en bied 'n uitstekende gebruikerskoppelvlak.

Nou kan ons 'n paar klein veranderinge aanbring en die vloei opstel vir ons Sonoff -skakelaar.

Vee dus die invoer -inspuitknoop uit (klik om dit uit te lig en druk op die verwyderingsknop). Voeg nou 'n skakelaar van die paneelbordafdeling by en koppel dit aan die mqtt -uitvoer. Dubbelklik -skakelaar. Klik op die potlood regs van Groep. Tik in Naam: Lig. Klik dan op die potlood regs van die oortjie en gaan in die naamafdeling: sitkamer. Klik op Add/Update en Add/Update weer. Nou, terug in die wysig -skakelknooppunt, stel die aan- en afskakel -vrag in. Gebruik die twidlys om 'n string te kies en voer AAN in vir die Aan -laai en UIT vir die AF -laai. Klik op Klaar

Gaan nou na elk van die mqtt -nodusse en verander die onderwerp na cmnd/sonoff/POWER. As u dit kopieer en plak, kyk of u nie 'n spasie aan die einde bevat nie. Dit is 'n ander onderwerp en sal nie met die Sonoff werk nie. Dit kan 'n uur of wat neem om 'n verdwaalde ruimte te vind - glo my! Ek het ook na die paneelbord> Tema gegaan en gekies: Donker. Klik op Ontplooi en kies die ontfout -oortjie.

Maak nou 'n nuwe blaaiersessie in 'n nuwe venster oop en maak dit soos 'n selfoon oor die Node Red -sessie. Voer die adres in: u Pi IP -adres: 1880/ui/#/0, dit wil sê iets soos 192.168.0.8:1880/ui/#/0. U moet 'n skerm met sitkamer en lig sien en skakelaar. Klik die skakelaar aan en dan uit. Die ontfoutingsvenster moet die AAN- en UIT -laai laai. As u wil, moet u ook via 'n selfoon aanmeld. Let daarop dat die skakelaarposisie gesinchroniseer is. Dit maak nie saak dat ons Sonoff nog nie verbind is nie. As dit die geval is, sal dit deur die inskrywing op die onderwerp op te tel, die boodskap/vrag opneem en daarop reageer.

'N Laaste klein stap is om Node Red outomaties te laat begin nadat die Pi begin het.

Node Red het 'n gids by:

Die nodige lêers is egter reeds gelaai, dus is geen installasie nodig nie.

Om Node-RED dan in staat te stel om outomaties by elke opstart te werk en by ineenstortings in te gaan (maak PuTTY-sessie oop):

sudo systemctl aktiveer nodered.service

As u ooit hierdie funksie wil deaktiveer:

sudo systemctl deaktiveer nodered.service

Sluit nou die pi af met sudo -afskakeling en verwyder die krag.

Hierdeur is ons Pi gesluit en gelaai gereed vir aksie. Ons rekenaar/selfoon het verbinding met Node Red en dit praat met ons MQTT -bediener. Dit was 'n lang pad en 'n groot klop op die skouer werd. Wel gedaan. Ek vind die volgende, Arduino -bietjie, baie makliker!

Stap 5: Die opstel van die Arduino -stelsel vir herprogrammering van Sonoff -toestelle

Al die inligting hiervoor is by die Sonoff-Tasmota GitHub. Die enigste deel waarmee ek gesukkel het, was die onderwerp -teks - maar ek het u op 'n listige manier al laat inskryf!

Gaan na

U vind die opstelinstruksies op die Wiki-oortjie in die afdeling Oplaai gereedskap:

Eerder as om deur elke stap te gaan, sal ek net aandag gee aan die belangrikste aspekte waarvan ek gevoel het dat dit belangrik was of vasgeval het.

Die instruksies is goed, maar moet noukeurig aandag gegee word aan detail. Ek het die rede gekry dat daar 'n ESP8266 -lêergids nodig was in 'n gids wat in 'n ander gids met die naam ESP8266 was, en dus twee vlakke misgeloop het.

Ek het die aanbeveling vir 'n heeltemal aparte Arduino -opstelling gevolg. Ek het 'n nuwe gids met die naam 'ArduinoSonoff' geskep wat apart is van my bestaande Arduino -gids. Die opstelling is redelik gevorderd en daarom is dit baie goed om dit apart te hou. As dit u eerste Arduino -opstelling is, moet u dit 'n tweede keer in 'n 'Arduino' of 'n ander gids installeer vir enige ander Arduino -werk, insluitend werk op ESP8266's.

Laai die nuutste Arduino IDE af van https://www.arduino.cc/en/Main/Software. Pak die lêer uit in u nuwe gids.

Die instruksies bevat die aflaai van die Sonoff-Tasmoda-stelsel vanaf https://github.com/arendst/Sonoff-Tasmota se hoofblad via: Clone of Download> Download ZIP. Pak die lêer uit in u nuwe gids.

Volg die instruksies noukeurig. Ek het nie die opsioneel gedoen nie: berei u voor op die OTA -oplaai -afdeling. Ons laat dit vir 'n ander dag.

Begin nou die Arduino IDE (dubbelklik op arduino.exe). Laai die Sonoff-Tasmota-skets via File> Sketchbook> sonoff. Dit is nie nodig om enige wysigings aan te bring nie. Al die instellings word gedoen via 'n seriële verbinding nadat die firmware gelaai is. Dit word in EEPROM gestoor. Daarom kan die firmware opgedateer word en al die instellings behoue bly. Dit is redelik slim dinge. U kan hier egter 'n paar stappe vermy deur na die user-config.h-lêer te gaan en u wifi-SSID en wagwoord en MQTT_HOST in te voer (vervang 'domus1'– tweede verwysing, met u Pi IP-adres). Later kan u ook 'n MQTT -gebruiker en wagwoord invoer. Voordat u dit aflaai, kyk na die bordinstellings onder Tools. Dit benodig 'n paar veranderinge om aan die vereistes in die Wiki te voldoen. Klik nou op compile (merk ikoon). Dit moet OK saamstel. As dit nie die geval is nie, of as die vereiste bordinstellings nie beskikbaar is nie, gaan dan terug en kyk na elke stap van die opstelling.

Stap 6: Herprogrammeer 'n Sonoff -skakelaar

Ons is nou gereed om af te laai. In hierdie stadium kan u óf reguit vorentoe gaan met 'n Sonoff -skakelaar, of u kan eers 'n ESP8266 -module flits. Ek het laasgenoemde gedoen, deels omdat my skakelaars nog nie aangekom het nie (net aangekom terwyl ek dit tik!), Maar ook as 'n voorsorgmaatreël, aangesien die flits van die Sonoff -skakelaar 'n eenrigtingstap is, aangesien die oorspronklike firmware nie in die openbaar beskikbaar is nie Ek is bewus. Ek het 'n paar NodeMCU -borde. Dit is maklik om aan te sluit, met hul ingeboude USB na reeksomskakelaar. Die nodemcu -herstelmetode werk egter nie met hierdie stelsel nie. Laat die Tools> Reset Method dus op "ck" staan. Doen die normale handmatige flitsopstelling deur die flitsknoppie (GPIO 0 tot op die grond) te hou terwyl Reset (Reset to ground) ingedruk word. Ek is nie seker of dit 'n tydsduur het nie, of dat ek GPIO 0 nie lank genoeg laag gehou het nie, maar ek het verskeie probeerslae nodig gehad, insluitend om dit te doen terwyl die Arduino IDE saamstel!

As u die antwoorde wil kontroleer, is die relaisuitset D6 op NodeMCU -borde. Op ESP12's is dit GPIO 12. Die LED -uitset is D7 (NodeMCU) of GPIO 13 (ESP12's).

Sonoff -skakelaar.

WAARSKUWING: Ek moet sê "moenie onder die omstandighede waar die omhulsel oop is, geen aansluiting op die elektrisiteitsnet maak nie". Let daarop dat die PCB (ten minste op die Sonoff Basic (inlynskakelaar) slegs 'enkele isolasie'-afstande het tussen die laagspanningsgedeelte en die net).' N Mens moet dus enige deel van die Sonoff-stroombaan as netspanning behandel. Tasmota GitHub toon 'n verbinding tussen 'n temperatuur- en humiditeitssensor aan 'n Sonoff S20. Ek sou dit nie doen nie weens isolasie. of geaarde kragtoevoer.

Die Sonoff S20-inpropskakelaar is 'n goeie beginpunt, aangesien dit geen aansluiting nodig het nie. Dit kan oopgemaak word deur een skroef (onder die veiligheidsseël) te verwyder en die kas oop te maak. Die onderstaande foto wys waar die etikette is. Om die saak op hierdie punte te druk, help.

USB -reeksomskakelaar

My gunsteling converter is die FTDI weergawe. Dit het egter nie voldoende vermoë om aan die Sonoff 3.3v -behoeftes te voorsien nie. Die FTDI -spesifikasie sê maksimum 50ma. Die volgende beste alternatief is een wat die CP2102 -chip gebruik. Dit het egter 'n limiet van 100 m wat nog steeds nie genoeg is nie. Dit is duidelik dat baie hierdie omskakelaar direk gebruik, maar daar is ook berigte dat laai misluk het. Ek sal die tyd wat dit verbind is beperk, aangesien dit onder die las sal opwarm. Doen dit op eie risiko. Die ideale oplossing is om ook 'n 3.3v -reguleerder te hê, bv. 'n AMS1117 3.3. Ek het 'n klein PCB opgestel om dit moontlik te maak. Sien programmeerder vir Sonoff -toestelle.

My volgorde vir programmering is soos volg:

Maak die Arduino IDE oop.

Onder Tools, kyk na die instellings soos op die Wiki.

Maak die nodige wysigings aan user_config.h. Ek stel die Wifi SSID en wagwoord en MQTT -makelaarsadres en tydsone/dagligbesparingsbesonderhede in.

Klik op 'verifieer' om te sien of dit goed is.

Koppel die USB -reeksomskakelaar (op sy eie) aan die rekenaar. Let op die poortnommer.

Koppel nou die USB -seriële kabel van die rekenaar af en koppel dit aan die Sonoff -skakelaar. Kontroleer of die grond- en 3v3 -verbindings die regte pad is (grond is gekoppel aan die grondvlak op die Sonoff PCB).

Hou die programmeerder vas sodat die kontakte veilig is terwyl u ook op die knoppie druk.

Sluit nou die USB -kabel aan op die rekenaar, kyk of die poortnommer korrek is (in Tools) en klik dan op download.

Ek hou die knoppie deur die hele programmering ingedruk omdat ek nie die verbindings wil steur nie.

As u klaar is, moet u 'n skerm soos hieronder sien:

Beeld
Beeld

Die Sonoff benodig 'n paar stukkies inligting om aan te sluit op ons stelsel: die wifi -SSID en wagwoord van die plaaslike netwerk en die Pi -IP -adres. Daar is verskillende maniere om dit te doen, waarvan een is om die config.ino -lêer te verander, soos vroeër opgemerk. As u 'n slimfoon het, kan u (nadat u die skakelaar weer saamgestel het) redelik vinnig op die Sonoff-knoppie druk om dit in 'n webbedienermodus te plaas. Die LED sal flikker. Ek moes verskeie kere probeer om dit te laat werk. Soek dan op u slimfoon na die nuwe Sonoff -netwerk en maak verbinding. 'N Webbladsy verskyn waar u die vereiste data kan stel. Die Pi -IP -adres gaan in die gasheernaam. Ek het ook die tweede SSID en wagwoord verander na iets lank en basies onbruikbaar.

Alternatiewelik kan dit opgestel word via die seriële verbinding net na laai. Maak die Arduino Serial Monitor (onder Tools) oop.

Opdragte om in te skryf:

SSId jouWiFiSSID

Wagwoord vir u WiFi -wagwoord

MqttHost 192.168.x.y (PI IP -adres)

U kan ook SSId1 en Password1 invoer, gevolg deur iets lank en onbruikbaar om dit effektief uit te skakel.

Nou kan u die Sonoff-skakelaar oopmaak, Node-Red en die Node-red dashboard oopmaak en op die skakelaar-knoppie klik en na die ontfout-oortjie kyk wat nou die antwoorde van die Sonoff moet bevat. Ons het dus nog 'n belangrike stap bereik - ons eerste skakelaar word van 'n rekenaar/slimfoon af bestuur.

Tot dusver het ons nie melding gemaak van veiligheid nie. Daar is die moontlikheid om geïnkripteer kommunikasie te gebruik. Dit is redelik ingewikkeld om op te stel en waarskynlik meer gepas waar 'n wolkgebaseerde makelaar gebruik word. Daar is ook die opsie om gebruikersname en wagwoorde vir al die gekoppelde toestelle by te voeg en anonieme gebruikers toe te laat. Dit is redelik eenvoudig om op te stel. En so nou na Sekuriteit.

Stap 7: Sekuriteit

MQTT laat gebruikersname en wagwoorde vir elke kliënt toe. Dit is maklik om op te stel. Dit is waarskynlik makliker om eers elke toestel te hernoem en dan hul gebruikersname en wagwoorde in te stel. Dit kan gedoen word via MQTT-opdragte, en Node-Red is waarskynlik die maklikste manier om dit te stuur. Besluit eers oor 'n naamkonvensie. Een opsie is om name op ligging en funksie te baseer. Dan sal u die naam (onderwerp) gebruikersnaam en wagwoord saam met die terugval -onderwerp wil opneem. Let daarop dat daar ook 'n 'herstelopsie' is om die Sonoff -instellings na die oorspronklike aflaai terug te stel (sien Wiki -gebruik> knoppie -funksionaliteit).

Skakel die pi aan en maak na 'n paar sekondes 'n blaaier oop vir Node-Red (IP-adres: 1880).

Stel in Node-Red 'n inspuitknoop op en koppel dit aan 'n mqtt-uitvoer en stel die mqtt-bediener op localhost. Laat onderwerp, gebruiker en wagwoord leeg, aangesien ons dit in die inspuitknoop sal plaas. Stel ook 'n mqtt -invoerknoop op en koppel dit aan 'n ontfoutingsknoop sodat ons die antwoorde kan sien. Stel die mqtt -invoernota op localhost (moet reeds ingestel wees) en voer+/+/+in vir die onderwerp, sodat dit alle verkeer kry.

Voer die volgende reeks instellings in die inspuitknoop in.

Kontroleer eers die verbinding met

Onderwerp: cmnd/sonoff/Status

Boodskap: 6

klik op die 'Spuit een keer by die aanvang'. Ontplooi. Ons moet ontfouting insluitend 7 reëls data van stat/sonoff/STATUS6 sien

Voer onderwerp in: cmnd/sonoff/onderwerp en boodskap: sitkamer. Ontplooi. Dit verander die skakelaarnaam van sonoff na loungelight

Die ontfout -oortjie moet wys dat die toestel weer begin met sy nuwe naam/onderwerp

Onderwerp: cmnd/loungelight/MqttUser

Boodskap: sitkamerlig

Klik op implementeer. 'N Ontfouting moet gesien word vanaf stat/loungelight/RESULT met {"MtqqUser": "loungelight"}

Onderwerp: cmnd/loungelight/MqttPassword

Boodskap: loungelightPW (let op dat u meer verbeeldingryk is as dit!)

Maak die ontfout -oortjie skoon en implementeer.

'N Antwoord moet gesien word vanaf stat/loungelight/RESULT met {"MqttPassword": "loungelightPW"}

Voer nou NodeRed en NodeRedPW in as gebruikersnaam en wagwoord in die mqtt out node. Dit gebeur via die bedienerpotlood -ikoon en die oortjie veiligheid in die venster wat oopmaak. Dit word outomaties oorgedra na die ander MQTT -nodusse.

Kontroleer weer met

Onderwerp: cmnd/loungelight/Status en boodskap: 6. Ontplooi.

En dat die reaksie gestuur word.

Op hierdie stadium het ons ons Sonof -toestel hernoem, sodat dit na cmnd/loungelight/…… onderwerpe sal luister en sal aanmeld by die MQTT -skewer met gebruikersnaam loungelight en wagwoord loungelightPW. Ons het ook 'n gebruikersnaam en wagwoord vir Node-Red ingestel.

Vervolgens moet ons die muskiet MQTT -bediener sê om slegs kliënte met gebruikersname te aanvaar en die gebruikersname en wagwoorde te lys wat aanvaar moet word.

Die prosedure is:

  • Stop muskiet
  • Skep u eie konfigurasielêer
  • Wysig config -lêer
  • Skep wagwoordlêer
  • Voeg gebruikers/wagwoorde by.

Meld dus aan met 'n nuwe PuTTY -sessie en voer die volgende opdragte uit:

sudo /etc/init.d/mosquitto om te stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Dit begin die redakteur.

Voeg reëls by:

allow_anonymous vals

password_file /etc/mosquitto/conf.d/passwd

vereis_sertifikaat vals

Stoor en verlaat (Ctrl+X), Y, voer in.

sudo touch passwd Dit skep 'n wagwoordlêer en die volgende instruksies voeg name en wagwoorde by.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitto om weer te begin

Let op: as u 'n nuwe toestel byvoeg, moet u die gebruiker en wagwoord via die seriële poort invoer en dit by die wagwoordlêer voeg, of die konfigurasielêer van die muskiet tydelik verander en kommentaar lewer (voeg # by die begin van die reël by) die reëls "allow_anonymous false "en" password_file /etc/mosquitto/conf.d/passwd "en stel dit dan terug as die besonderhede na die toestel gestuur is en bygevoeg is tot die wagwoordlêer soos hierbo.

Ons het die sonoff -naam verander na loungelight en werk dus die mqtt -uitsetknoop (gekoppel aan die skakelaar) by om die onderwerp cmnd/loungelight/POWER te gebruik.

Klik op Ontplooi en kyk of die mqtt -nodusse 'verbind' is.

Probeer dan die skakelaarknoppie en soek die ontfouting waarin die Sonoff -skakelaar reageer. U sal sien dat die toestel die verandering toon met 'n onderwerp: stat/loungelight/POWER. Verander dus nou die invoerknooppunt wat op cmnd/sonoff/POWER gestel is na stat/loungelight/POWER. Ons kan hierdie dekking 'n leemte in ons funksionaliteit gebruik. Die stelsel soos aanvanklik ingestel, sal gesinchroniseer word met alle aangemelde gebruikers, maar sal nie sinchroniseer met veranderings deur die skakelaar wat deur die knoppie op die Sonoff -skakelaar gedruk word nie. Koppel dus nou die uitset van die stat/loungelight/POWER mqtt -invoerknooppunt aan die skakelaaringang (LHS). Dubbelklik nou op die skakelaar en merk die "as boodskap op die invoer verskyn, gaan deur na uitvoer". Dit bied 'n paar nuwe opsies - kies 'skakelaar -ikoon toon die toestand van die invoer'. Ontplooi. So nou het ons 'n goeie terugvoerlus. Die skakelbord se skakelaarposisie sal altyd verander wanneer die Sonoff -skakelaar verander, ongeag waar die verandering begin is.

Ons het dus nou 'n veilige, selfstandige tuisautomatiseringstelsel aan die gang en gereed vir uitbreiding na wat u ook al wil doen. In die volgende afdeling behandel ek 'n paar van my eksperimente tot dusver en uitdagings wat ek beplan om aan te pak.

Stap 8: Aanvanklike stappe vir uitbreiding

Ek het nog 'n Instructable Home Automation Sonoff-Tasmota Sensors LED's Development Board wat 'n paar van die verdere moontlikhede van die Sonoff-Tasmota firmware toon:

Temperatuur- en humiditeitsmeting

Indringeropsporing (skakelinvoer)

IR -afstandsbediening (vir TV's, ens.)

LED -snare - beide RGB en NeoPixel (individueel aanspreekbaar)

I2C sensors

Vir die bogenoemde gebruik ek 'n ESP12F en 'n pasgemaakte PCB. 'N NodeMCU en broodbord kan ook gebruik word. Dit maak hierdie bykomende funksies moontlik sonder om aan te sluit op 'n Sonoff -toestel, en daarom is dit 'n baie veiliger benadering. Met die temperatuurinvoer kon ek my outomatiese elektriese kombers voltooi.

Musiek en internetradio kan maklik bygevoeg word. Dit bied opsies oop om spesifieke stasies of albums op 'n vasgestelde tydstip te laat verskyn, of miskien as 'n besoeker (telefoon) opgespoor word. Hierdie gepaardgaande instruksies is van hoë kwaliteit musiekspeler en internetradio met slimfoonbeheer. Aangesien dit ook deur Node-RED aangedryf word, moet dit selfs moontlik wees om meer as een klankstelsel te hê en MQTT-kommunikasie te gebruik om dit aan te dryf.

Ek het ook Node-Red ondersoek, insluitend die stuur van e-posse en die maak van stemwaarskuwings. Daar is ook die moontlikheid dat die stelsel kan opspoor wanneer u in/uit is - deur die IP -adres van u selfoon te ping. Node -Red het ook toegang tot weer en nuus - sodat u inligting kan byvoeg en outomatisering kan doen.

Daar is 'n paar truuks wat u moet leer, maar dit word vir die tweede keer maklik.

'N Ander manier is om 'n skerm by die pi te voeg om die paneelbord te wys. Dit is 'work in progress' - of met ander woorde ek is nie te gelukkig nie. Die skerm wat ek gekry het, is moeilik om in die portretmodus te draai, en die Chromium -blaaier is pynlik stadig. 'N Alternatief sou wees om 'n ou tablet op eBay op te tel en dit te gebruik. Ek probeer dalk met 'n Pi 2 en kyk of dit genoeg verbetering bied (model B wat vir hierdie ontwikkeling gebruik word).

Ek hoop dat dit u aan die gang sit en dat u verbeelding aan die gons is. Die potensiële omvang is groot. Indien nodig, kan u selfs die Sonoff -kode vir ander sensors verander.

Oor die algemeen was ek verbaas oor wat hierdie stelsel kan doen. My oorspronklike doel was om net op 'n betroubare manier oor te skakel van 'n slimfoon via 'n selfstandige stelsel. Ek het visioene gehad dat ek bedieners en kliënte moet bestuur en html vir 'n gebruikerskoppelvlak moet skryf. Waar dit eindig, is dit ver vooruit, met groter sekuriteit, uitstekende betroubaarheid, fantastiese gebruikerskoppelvlak, sleep -en -laat -programmering en groot uitbreidingspotensiaal. En dit alles met veel minder moeite.

Mike

Stap 9: Bylae - Laai vanaf Raspbian Stretch Lite

Hierdie opsie vermy die bloatware wat by die volledige Raspbian Stretch -weergawe kom. Die meeste hiervan is nie nodig as u 'n Pi vir tuisautomatisering gebruik nie. Node-Red moet egter geïnstalleer word.

Gaan soos in stap 1, maar gebruik Raspbian Stretch Lite eerder as Raspbian Stretch.

In plaas van Stap2, doen die volgende:

sudo apt -y installeer npm

npm -v moet terugkeer: 1.4.21 of later

sudo npm installeer -g n

sudo n 8.9.0

Ons kan nou nodepakketbestuurder gebruik om Node-Red te installeer:

sudo npm installeer node-red --global --unsafe-perm

Dit sal 'n paar foutboodskappe gee as gevolg van 'n verkeerde adres. Die stelsel doen egter 'n 'bronsamestelling' om hierdie probleem reg te stel. As u die instruksies hierbo herhaal (nie nodig nie), kom die foute nie voor nie.

Ons het nou Node-Red en sy ondersteuningspakkette geïnstalleer en kan verder gaan na stap 3 om die muskiet te laai.

Draadlose kompetisie
Draadlose kompetisie
Draadlose kompetisie
Draadlose kompetisie

Naaswenner in die draadlose kompetisie

Aanbeveel: