Innholdsfortegnelse:
- Trinn 1: Last inn en Pi med Rasbian Stretch
- Trinn 2: Oppdater og legg til funksjoner i Node-Red
- Trinn 3: Mosquitto MQTT -installasjon
- Trinn 4: Konfigurere Node Red Interface
- Trinn 5: Sette opp Arduino -systemet for omprogrammering av Sonoff -enheter
- Trinn 6: Omprogrammering av en Sonoff -bryter
- Trinn 7: Sikkerhet
- Trinn 8: Innledende trinn for utvidelse
- Trinn 9: Tillegg - Laster fra Raspbian Stretch Lite
Video: Kraftig frittstående hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red: 9 trinn (med bilder)
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Denne veiledningen bør bringe deg til første base hvor du kan slå et lys eller et apparat på/av via en hvilken som helst enhet som kan koble til ditt lokale nettverk, og med et flott tilpassbart webgrensesnitt. Omfanget for utvidelse/ legge til funksjoner er stort, inkludert sending av e -post, twittermeldinger, lesesensorer (f.eks. Temperatur). Du kan enkelt sette regler f.eks. - hvis temperaturen er under 15C kl. 23:00, slå på det elektriske teppet i 30 minutter. Systemet bruker MQTT -protokollen med TCP som er betydelig mer pålitelig enn UDP - som overraskende brukes av noen kommersielle hjemmeautomatiseringsenheter. Når det harde arbeidet med å sette opp systemet, beskrevet her, er gjort, kan moroa starte. Node Red gir et fantastisk brukergrensesnitt som er intuitivt, raskt og enkelt å sette opp, og gir fantastisk evne.
Resultatet er et kraftig hjemmeautomatiseringssystem som er helt under egen kontroll og er helt på et lokalt nettverk. Mange av systemene som vises på Instructables fungerer med skybaserte servere og er derfor en sikkerhetsrisiko og kan kreve abonnement. Disse er enklere å sette opp, men har en høyere sikkerhetsrisiko og potensielt høyere kostnader. Jeg bør legge til at man kan sette opp et VPN (virtuelt privat nettverk) til Pi for å muliggjøre sikker tilkobling til hjemmenettverket/systemet hvis tilgang fra utsiden ville være nyttig (Google Pi OpenVPN for instruksjoner).
Dette systemet krever omprogrammering av Sonoff-enheter med et flott open source-system kalt Sonoff-Tasmoda. Dette kan gjøres ved hjelp av et spesielt Arduino -oppsett og en USB til serieomformer. Sonoff-enhetene bruker ESP8266 Wi-Fi-brikke, slik at du også kan lage dine egne enheter ved hjelp av ESP8266-moduler eller passe dem til andre elementer for å levere trådløs tilkobling.
Den største oppgaven er å sette opp en Raspberry Pi som hub. Dette kjører MQTT -megleren (eller serveren) som administrerer kommunikasjonen med de tilkoblede enhetene. Pi kjører også et system kalt Node-Red som kan fange opp meldinger og data og kommandoer-for eksempel når du skal slå på det elektriske teppet. Node-Red gir også et grensesnitt for å betjene websiden som du kan logge deg på via smarttelefon/nettbrett/PC/bærbar PC, for å se hva som skjer og muliggjøre manuell bytte av lys og så videre.
Målet mitt med dette instruerbare er å gi hvert trinn så detaljert at en nybegynner kan få systemet til å fungere.
Trinnene er:
- Last inn en Pi med Rasbian Stretch
- Oppdater og legg til funksjoner i Node-Red
- Installer Mosquitto MQTT -megleren
- Sett opp Arduino-miljøet for opplasting av Sonoff-Tasmota-fastvaren
- Omprogrammer en Sonoff-bryter
- Sett opp Node-Red-grensesnittet
- Test alt fungerer.
Maskinvare du trenger:
- Bringebær Pi og strømforsyning (og tastatur og skjerm for første oppsett) (modell B brukes her)
- Sonoff -bryter
- USB seriell omformer
- Valgfritt - ESP -utviklingstavle som NodeMCU.
Min erfaring med Raspberry Pi er at det å sette opp noe ser ut til å innebære betydelig mer smerte enn man noen gang kunne forestille seg mulig med ting som ikke fungerer eller sitter fast på et trivielt trinn der forklaringen kunne vært bedre. Forumene får ikke alltid råd som fungerer! Jeg fant flere ruter som rett og slett ikke fungerte av en eller annen grunn. Dette kostet 3 dager! Jeg tørket deretter alt og begynte på nytt og fullførte på mindre enn en (lang) dag. Dette brukte imidlertid den eldre Raspian Jessie. Etter dette fant jeg en måte å bruke den nåværende og nylig utgitte versjonen (Stretch) og gjorde alt igjen. Denne veiledningen gjør det mulig å kopiere og lime inn instruksjonene i Pi. Så du bør være ferdig om noen timer. Uansett håper jeg at dette får deg raskere opp i læringskurven og med mye mindre smerte. Tro meg det er verdt det for sluttresultatet.
Trinn 1: Last inn en Pi med Rasbian Stretch
Dette burde være ganske greit. Start med et 8 GB eller 16 GB SD -kort. Last ned den siste versjonen fra:
www.raspberrypi.org/downloads/
Hovedtråden her forutsetter at hele versjonen er lastet. Du kan imidlertid bruke lite -versjonen til å spare plass. Hvis du bruker Raspbian Stretch Lite, går du gjennom dette trinnet og går deretter til trinn 9 på slutten.
Hvis du pakker ut den nedlastede filen, får du en mappe med.img -filen. 7Zip anbefales for Windows (og The Unarchiver Mac). Bildet må brennes på SD -kortet - men et spesielt program må brukes ettersom filsystemet ikke er kompatibelt med Windows. Den anbefalte programvaren heter Etcher og kan lastes ned fra:
etcher.io/
Instruksjonene for Etcher er på nettstedet deres og kan neppe være enklere. Velg bildet og stasjonen, og klikk på Flash.
Nå med vårt blinkede SD -kort med kan få Pi til å kjøre.
Hvis du kjenner IP -adressen din Pi bruker eller er glad for å finne den ved å logge deg på ruteren din, kan du unngå behovet for tastatur og skjerm og bruke SSH umiddelbart. Bare legg til en tom fil med navnet SSH på SD -kortet, sett inn, koble til Ethernet og slå på strømmen. Ellers følg guiden nedenfor.
Koble Pi til internett, skjerm, mus og tastatur og koble til strøm. Det første vi vil gjøre er å aktivere SSH, slik at vi kan gjøre det meste av oppsettet fra komforten på en PC. Det kan selvfølgelig gjøres direkte, men det hjelper veldig godt å kunne følge denne veiledningen på samme enhet som en som kjører Pi og bruke kopier og lim inn for de fleste instruksjonene. Også i mitt tilfelle er PC -arbeidsstasjonen min fin og komfortabel, men ikke stor nok til en pi også.
Det er en guide for en god del av arbeidet med en YouTube -video. Det var her jeg begynte. Du kan kjøre videoen ved siden av disse instruksjonene. Men da jeg kjørte gjennom prosessen igjen mens jeg skrev dette, fant jeg det lettere å bare følge instruksjonene her. Det er noen vesentlige avvik. Det er også noen seksjoner der jeg har anbefalt å følge videoen i stedet for å vise trinnene her. Jeg vil imidlertid anbefale å se på det for å få en forståelse av MQTT, Node-Red og den brede oppsettprosessen. Videoen er 38 minutter lang, så vær komfortabel. Videoen starter med å vise hva Node Red kan gjøre, og dekker deretter Pi -installasjonen og -oppsettet, etterfulgt av oppgradering av Node Red og til slutt installering av Mosquitto. Nøkkeltider i tilfelle du vil gå tilbake til en seksjon:
00:00 Introduksjon til video
03:00 Node Red demonstrasjon
14:14 Importere dashbordelementer til Node Red
21:05 Pi første oppsett, inkludert SSH
23:35 Installasjon av Node Red -støttekode
27:00 Introduksjon til MQTT
29:12 Mosquitto (MQTT) installasjon (Merk fungerer bare for Raspian Jessie)
33:00 Node Red eksempler
Jeg vil liste kommandoene med fet kursiv (i stedet for å bruke “”). Denne formateringen ignoreres når du kopierer og limer dem inn i Pi.
Introduksjonen til Node Red vil gi deg en ide om hva systemet kan gjøre og gi et bilde av hvor vi ender.
YouTube -videoen er på:
Følg installasjonsprosedyren fra 21:05 til 23:35. Vær oppmerksom på at standard pålogging er bruker: pi og passord: bringebær. Finn pi's IP -adresse før du starter på nytt. Klikk enten på "opp+pil ned" -ikonet på den øverste linjen på skrivebordet, eller skriv inn følgende instruksjon i terminal-/terminalvinduet:
sudo ifconfig adresse
Legg deretter merke til IP -adressen etter: inet addr:. Det vil være i skjemaet 192.168.x.y
Legg merke til denne adressen og start på nytt (skriv inn: sudo shutdown –r now)
Nøkkelen på dette tidspunktet er at SSH er aktivert, og man kan sette opp en kobling til Pi fra en PC (Mac og Linux inkluderer SSH -grensesnitt). Et godt program for å gjøre dette er en gratis nedlasting kalt PuTTY som også kan brukes som et serielt grensesnitt og kan gjøre Telnet. Kitt er tilgjengelig fra:
www.chiark.greenend.org.uk/~sgtatham/putty…
Last ned og installer PuTTY.
Nå, med Pi på nytt, start PuTTY og skriv inn IP -adressen som er nevnt tidligere. Se eksempel nedenfor:
Klikk nå Åpne
Etter pålogging som: skriv inn pi
Skriv deretter inn passordet ditt.
Følg nå instruksjonene her og start eventuelt videoen fra 23:35. Du kan i de fleste tilfeller kopiere og lime inn. Marker teksten og bruk ctrl+C for å kopiere. Høyreklikk deretter i PuTTY for å lime inn. Noen ganger vises ikke teksten umiddelbart, så vent noen sekunder. Hvis du angir to ganger, bruker du tilbaketasten for å slette den andre oppføringen. Trykk enter for å utføre hver instruksjon.
sudo raspi-oppdatering
Jeg fikk en kommando som ikke ble funnet og ignorerte dette og følgende instruksjoner for avslutning/omstart:
sudo shutdown -r nå
sudo apt -get -y oppdatering
sudo apt -get -y oppgradering
Dette tar en stund ….
sudo apt-get autoremove
sudo apt -get -y oppdatering
sudo shutdown -r nå
På dette tidspunktet har vi Pi -operativsystemet lastet og oppdatert, klart for neste trinn.
Trinn 2: Oppdater og legg til funksjoner i Node-Red
PuTTY -tilkoblingen vil ha gått tapt ved omstart på slutten av forrige trinn. Så lukk PuTTY, og etter å ha ventet på at Pi skal starte opp, logger du på igjen som før.
Jeg har flyttet til en enklere og mer pålitelig metode for å laste Node-Red-etter tilnærmingen på https://nodered.org/docs/hardware/raspberrypi. Dette bruker et skript og installerer eller oppgraderer Node-Red-så tilnærmingen fungerer på samme måte som hele eller lite versjon av Raspbian Stretch. Så skriv inn:
bash <(curl -sL
Skriv inn Y når du blir bedt om det (to ganger). Dette skriptet laster også inn filer som trengs for å aktivere Autostart av Node-Red.
Så på dette tidspunktet har vi pi lastet og oppdatert og med oppdateringene som trengs for Node Red. Det er ingen skade å starte på nytt før neste trinn.
sudo shutdown -r nå
Trinn 3: Mosquitto MQTT -installasjon
Hvis du ikke allerede har gjort det, er det verdt å se videoinnledningen til MQTT på videoen fra 27:00.
Det er her vi må gå en annen vei. Prosedyren beskrevet i videoen fungerer bare for den eldre Jessie -versjonen av Raspian. Det er en diskusjon om myggstedet, men ingen klare resultater er vist, og vil derfor holde seg til en enklere og sikrere rute.
Så logg deg på med PuTTY og skriv inn følgende:
sudo apt-get oppdatering
sudo apt-get install mosquitto mygg-klienter
Y
sudo /etc/init.d/mosquitto for å stoppe
sudo /etc/init.d/mosquitto for å starte
De to sistnevnte instruksjonene stopper og starter mygg og viser at vår MQTT -megler jobber.
For en rask test, åpne ytterligere to PuTTY -økter og logg på hver.
Du vil nå vite at MQTT fungerer etter enheten med behovsdataene som abonnerer på et "emne". Megleren sender alle data med samme 'emne'. Deretter publiserer enheten som ønsker å sende data/instruksjoner dette til megleren ved hjelp av det samme 'emnet'.
Så skriv inn i en PuTTY -økt:
mygg_sub -d -t hei/verden
Dette er en instruksjon for å abonnere på emnet: hei/verden.
I den andre skriver du inn:
mosquitto_pub -d -t hello/world -m "Hei fra terminalvindu 2!"
Dette er en publiseringsinstruksjon med samme tema med en melding. Teksten: "Hei fra terminalvindu 2!" skal nå vises i den andre terminalen.
Godt gjort å komme så langt. Vi har nå lastet Pi og oppdatert med oppdateringer som trengs for Node-Red og med mygg-MQTT-megleren installert og testet. Fra nå av blir livet litt lettere og morsommere. Lukk de to PuTTY -øktene som ble brukt til MQTT -testen.
Trinn 4: Konfigurere Node Red Interface
Først må vi starte Node Red. Skriv inn instruksjonen:
node-red-pi --max-old-space-size = 256
Vent til den kjører, og du ser teksten "Startet flyter".
Åpne nå en nettleser, jeg bruker Chrome, og skriv inn pi IP -adressen som er nevnt tidligere etterfulgt av: 1880 dvs. noe som 192.168.0.8:1880
Du bør nå ha programmeringssiden Node Red slik:
Du kan nå følge Node Red -eksemplene fra kl. 33:00, eller gå videre til et lite tilleggsoppsett og laste den første flyten som viser koblingen til MQTT og være klar til å kjøre bryteren.
Det ekstra oppsettet som trengs er å legge til dashbordelementene som muliggjør et webgrensesnitt.
Disse vises på videoen klokken 14:14.
Følg instruksjonene for å laste inn node-red-dashboard.
Nå kan vi spille litt og vise MQTT som fungerer og blir drevet av Node-Red. Dette er ikke på videoen, men er nøkkelen til dette prosjektet. Du kan enten følge instruksjonene mine og/eller importere flyter fra filen NRtest1.txt som er vedlagt.
Legg først til en input -injeksjonsnode og en output -mqtt -node og koble dem sammen.
Dobbeltklikk på injeksjonsnoden (som opprinnelig er merket med tidsstempel). I nyttelast -delen bruker du twiddly til å bytte til streng og angi: Hei fra meg. La emnet stå tomt, da vi kan skrive dette inn i MQTT -noden. Klikk Ferdig
Dobbeltklikk nå på MQTT -noden. Klikk på blyantikonet til høyre for serverdelen. Dette åpner en ny dialog. Skriv inn: localhost i Server -delen. Klikk på Legg til. Nå, tilbake i noden Rediger mqtt ut, skriv inn emnet vårt i emnet: hallo/verden. Sett QoS til 1. Klikk Ferdig. Klikk nå Distribuer. Du bør se en grønn klatt og "tilkoblet" under mqtt -noden.
Legg til ytterligere to noder - input mqtt og output debug, og koble disse sammen. Dobbeltklikk nå på input mqtt -noden og skriv hei/verden i emneseksjonen. Serveren skal allerede vise localhost: 1883. Sett QoS til 1. Klikk Ferdig. Klikk deretter Distribuer og klikk på feilsøkingsfanen i ruten til høyre. Klikk nå den grå firkanten til venstre for injeksjonsnoden ‘Hei fra meg’. Dette sender tekst nyttelast til MQTT megleren med emnet hallo/verden. Megleren vet at mqtt -inngangsnoden har abonnert på det samme emnet og viderefører nyttelasten. Mqtt -inngangsnoden sender dette til feilsøkingsfanen (RHS), og teksten "Hei fra meg" skal vises.
Dette merker en annen boks ettersom vi har Node Red som snakker med vår MQTT -megler. Vær oppmerksom på at Node Red bare er en klient til megleren - i likhet med Sonoff -enhetene vil vi koble til senere. Det muliggjør imidlertid sofistikert automatisering og gir et flott brukergrensesnitt.
Nå kan vi gjøre et par små endringer og sette opp flyter for Sonoff -bryteren.
Så slett input -injeksjonsnoden (klikk for å markere og trykk på slettasten). Legg nå til en bryter fra dashborddelen og koble den til mqtt -utgangen. Dobbeltklikk bryter. Klikk på blyanten til høyre for Gruppe. Skriv inn Navn: Lys. Klikk deretter blyanten til høyre for Tab og gå inn i Navn -delen: Lounge. Klikk på Legg til/oppdater og Legg til/oppdater igjen. Nå, i Rediger bryternoden, sett på og av nyttelast. Bruk twidlysene for å velge streng og angi PÅ for På nyttelast og AV for Nyttelast AV. Klikk Ferdig
Gå nå til hver av mqtt -nodene og endre emnet til cmnd/sonoff/POWER. Hvis du kopierer og limer, må du kontrollere at du ikke har tatt med et mellomrom på slutten. Dette er et annet tema og vil ikke fungere med Sonoff. Det kan ta en time eller så å finne et bortkommen plass - tro meg! Jeg gikk også til dashbordet> Tema og valgte: Dark. Klikk på Distribuer og velg feilsøkingsfanen.
Åpne nå en ny nettlesersession i et nytt vindu og størr den som en mobiltelefon over Node Red -økten. Skriv inn adressen: din Pi IP -adresse: 1880/ui/#/0 dvs. noe som 192.168.0.8:1880/ui/#/0. Du bør se en skjerm med Lounge og Light og switch. Klikk bryteren på og deretter av. Feilsøkingsvinduet skal vise nyttelastene PÅ og AV. Hvis du ønsker det, kan du også logge deg på via en mobil. Vær oppmerksom på at bryterposisjonen er synkronisert. Det spiller ingen rolle at vår Sonoff ikke er tilkoblet ennå. Når det er, ved å abonnere på emnet, vil det plukke opp meldingen/nyttelasten og handle på den.
Et siste lille skritt er å få Node Red til å starte automatisk etter at Pi starter opp.
Node Red har en guide på:
Imidlertid er de nødvendige filene allerede lastet inn, så ingen installasjon er nødvendig.
For deretter å aktivere Node-RED til å kjøre automatisk ved hver oppstart og ved krasj, gå inn (åpen PuTTY-økt):
sudo systemctl aktivere nodered.service
Hvis du noen gang trenger å deaktivere denne tasten:
sudo systemctl deaktiver nodered.service
Slå nå av pi -en med sudo -avslutning nå og fjern strømmen.
Dette har nå vår Pi låst og lastet klar til handling. Vi har vår PC/mobiltelefon koblet til Node Red, og dette snakker med vår MQTT -server. Dette har vært en lang reise og verdt et stort klapp på skulderen. Bra gjort. Jeg fant den neste, Arduino -bit, en god del lettere!
Trinn 5: Sette opp Arduino -systemet for omprogrammering av Sonoff -enheter
All informasjon for å gjøre dette er på Sonoff-Tasmota GitHub. Den eneste delen jeg hadde problemer med var emneteksten - men jeg har listig fått deg til å skrive inn dette allerede!
Gå til
Du finner installasjonsinstruksjonene på Wiki-fanen i delen Last opp verktøy:
I stedet for å gå gjennom hvert trinn, vil jeg bare merke til viktige aspekter som jeg følte var viktige eller ble sittende fast på.
Instruksjonene er gode, men trenger nøye oppmerksomhet på detaljer. Jeg ble snublet av at det var behov for en ESP8266 -mappe i en mappe som var i en annen mappe som het ESP8266, og derfor gikk jeg glipp av to nivåer.
Jeg fulgte anbefalingen for et helt eget Arduino -oppsett. Jeg opprettet en ny mappe kalt 'ArduinoSonoff' som er atskilt fra min eksisterende Arduino -mappe. Oppsettet er ganske avansert, og det er derfor en veldig god idé å holde det atskilt. Hvis dette er ditt første Arduino -oppsett, må du installere det en gang til i en 'Arduino' eller annen mappe for annet Arduino -arbeid, inkludert arbeid på ESP8266s.
Last ned den nyeste Arduino IDE fra https://www.arduino.cc/en/Main/Software. Pakk ut filen til den nye mappen.
Instruksjonene inkluderer nedlasting av Sonoff-Tasmoda-systemet fra https://github.com/arendst/Sonoff-Tasmota hovedside via: Klon eller Last ned> Last ned ZIP. Pakk ut filen til den nye mappen.
Følg instruksjonene nøye. Jeg gjorde ikke det valgfrie: Forbered deg på OTA -opplastingsdelen. Vi lar dette stå en dag til.
Start nå Arduino IDE (dobbeltklikk på arduino.exe). Last Sonoff-Tasmota-skissen via Fil> Skissebok> sonoff. Det er ikke nødvendig å gjøre noen endringer. Alle innstillingene gjøres via en seriell tilkobling etter at fastvaren er lastet inn. Disse lagres i EEPROM. Derfor kan fastvaren oppdateres og alle innstillingene beholdes. Dette er ganske smarte ting. Du kan imidlertid unngå behovet for et par trinn her ved å gå til filen user-config.h og skrive inn wifi SSID og passord og MQTT_HOST (erstatt ‘domus1’– andre referanse, med din Pi IP-adresse). Senere vil du kanskje også skrive inn en MQTT -bruker og passord. Kontroller brettinnstillingene under Verktøy før du laster ned. Disse trenger et par endringer for å matche kravene i Wiki. Klikk nå på kompiler (kryssikon). Det bør kompilere OK. Hvis den ikke gjør det, eller hvis de nødvendige brettinnstillingene ikke er tilgjengelige, kan du gå tilbake og sjekke hvert trinn i oppsettet.
Trinn 6: Omprogrammering av en Sonoff -bryter
Vi er nå klare til å laste ned. På dette stadiet kan man enten gå rett frem og blinke med en Sonoff -bryter, eller man kan først blinke en ESP8266 -modul. Jeg gjorde det sistnevnte, delvis fordi bryterne mine ennå ikke hadde kommet (akkurat kommet når jeg skriver dette!), Men også som en forhåndsregel, ettersom blinkingen av Sonoff -bryteren er et enveiskjøring ettersom den opprinnelige fastvaren ikke er offentlig tilgjengelig så langt som Jeg er klar over. Jeg har et par NodeMCU -kort. Disse er enkle å koble til, og har innebygd USB til serieomformer. Metoden for tilbakestilling av nodemcu fungerer imidlertid ikke med dette systemet. Så la Verktøy> Tilbakestill metode være satt til "ck". Gjør det vanlige manuelle blitsoppsettet ved å holde Flash -knappen (GPIO 0 til bakken) mens du trykker og slipper Reset (Reset to ground). Jeg er ikke sikker på om dette har en timeout eller kanskje jeg ikke holdt GPIO 0 lavt lenge nok, men jeg trengte flere forsøk, inkludert å gjøre dette mens Arduino IDE kompilerer!
Hvis du vil kontrollere svarene - reléutgangen er D6 på NodeMCU -kort. På ESP12 er dette GPIO 12. LED -utgangen er D7 (NodeMCU) eller GPIO 13 (ESP12).
Sonoff -bryter.
ADVARSEL: Jeg må si "ikke koble til strømnettet under noen omstendigheter der kabinettet er åpent". Vær oppmerksom på at kretskortet (i det minste på Sonoff Basic (in-line switch) bare har "enkelt isolasjons" avstander mellom lavspenningsdelen og strømnettet. Så man bør behandle enhver del av Sonoff-kretsen som nettspenning. Sonoff- Tasmota GitHub viser tilkobling av en temperatur- og fuktighetssensor til en Sonoff S20. Jeg ville ikke gjort dette på grunn av isolasjonsproblemer. - så hvis du vil gjøre dette, få en ESP12- eller NodeMCU -modul og sett opp denne separat med en riktig dobbel isolert eller jordet strømforsyning.
Sonoff S20 plug-in-bryteren er et godt utgangspunkt ettersom den ikke trenger ledninger. Denne kan åpnes ved å fjerne en skrue (under sikkerhetsforseglingen) og sette saken på plass. Bildet nedenfor viser hvor taggene er. Å klemme saken på disse punktene hjelper.
USB seriell omformer
Min favorittomformer er FTDI -versjonen. Dette har imidlertid ikke tilstrekkelig evne til å dekke Sonoff 3.3v -behovene. FTDI -spesifikasjonen sier maks 50ma. Det nest beste alternativet er et som bruker CP2102 -brikken. Dette har imidlertid en 100ma grense som fremdeles ikke er nok. Det er klart at mange bruker denne omformeren direkte, men det er også rapporter om at innlasting mislyktes. Jeg vil begrense tiden den er tilkoblet, da den vil varme opp under belastningen. Gjør dette på egen risiko. Den ideelle løsningen er å ha en 3.3v regulator også, f.eks. en AMS1117 3.3. Jeg laget en liten PCB for å aktivere dette. Se Programmer for Sonoff -enheter.
Sekvensen min for programmering er som følger:
Åpne Arduino IDE.
Under Verktøy, sjekk innstillingene som på Wiki.
Gjør eventuelle endringer som kreves for user_config.h. Jeg angir Wifi SSID og passord og MQTT megleradresse og tidssone/sommertid detaljer.
Klikk "bekreft" for å kontrollere at den kompilerer OK.
Koble USB -seriekonverteren (alene) til PCen. Legg merke til portnummeret.
Koble nå USB -seriekabelen fra PC -en og koble den til Sonoff -bryteren. Kontroller at bakken og 3v3 -tilkoblingene er riktig vei (bakken er koblet til jordplanet på Sonoff PCB).
Hold programmereren slik at kontaktene er sikre mens du også trykker på knappen.
Koble nå USB -kabelen til PC -en, kontroller at portnummeret er riktig (i Verktøy), og klikk deretter på nedlasting.
Jeg fortsetter å holde knappen under hele programmeringen fordi jeg ikke vil forstyrre tilkoblingene.
Når du er ferdig, bør du se en skjerm som nedenfor:
Sonoff trenger et par biter av informasjon for å koble til systemet vårt: det lokale nettverket wifi SSID og passord, og Pi IP -adressen. Det er flere måter å gjøre dette på, hvorav en er å endre config.ino -filen som nevnt tidligere. Hvis du har en smarttelefon, kan du (etter å ha satt på bryteren igjen) trykke på Sonoff-knappen 4 ganger ganske raskt for å sette den i en webservermodus. LED -lampen blinker. Jeg måtte prøve flere ganger for å få dette til å fungere. Se deretter etter det nye Sonoff -nettverket på smarttelefonen og koble til. En webside vil vises der du kan angi nødvendige data. Pi IP -adressen går inn i vertsnavn. Jeg endret også den andre SSID og passord til noe langt og i utgangspunktet ubrukelig.
Alternativt kan den konfigureres via den serielle tilkoblingen like etter lasting. Åpne Arduino Serial Monitor (under Verktøy).
Kommandoer for å angi:
SSId dinWiFiSSID
Passord dittWiFiPassword
MqttHost 192.168.x.y (PI IP -adresse)
Du kan også skrive inn SSId1 og Password1 etterfulgt av noe langt og ubrukelig for å effektivt deaktivere dette.
Nå kan du bokse opp Sonoff-bryteren, åpne Node-Red og Node-red dashbordet og klikk på bryteren-knappen og se på feilsøkingsfanen som nå skal inneholde svarene fra Sonoff. Så vi har oppnådd et annet stort skritt - vår første switch ble kjørt fra en PC/smarttelefon.
Hittil har vi ikke nevnt sikkerhet. Det er mulighet for å bruke kryptert kommunikasjon. Dette er ganske komplekst å sette opp og sannsynligvis mer passende der en skybasert megler brukes. Det er også muligheten til å legge til brukernavn og passord for alle de tilkoblede enhetene og tillate anonyme brukere. Dette er ganske enkelt å sette opp. Og så nå til Sikkerhet.
Trinn 7: Sikkerhet
MQTT tillater brukernavn og passord for hver klient. Dette er enkelt å sette opp. Det er sannsynligvis lettere å først gi nytt navn til hver enhet og deretter angi brukernavn og passord. Dette kan gjøres via MQTT-kommandoer, og Node-Red er sannsynligvis den enkleste måten å sende disse på. Bestem deg først for en navnekonvensjon. Ett alternativ er å basere navn på plassering og funksjon. Deretter vil du registrere navnet (emnet) brukernavn og passord sammen med tilbakeleveringsemnet. Vær oppmerksom på at det også er et tilbakestillingsalternativ for å tilbakestille Sonoff -innstillingene til original nedlasting (se Wiki -bruk> Knappefunksjonalitet).
Slå på pi og åpne noen nettlesere til Node-Red etter noen sekunder (IP-adresse: 1880).
I Node-Red setter du opp en injeksjonsnode og kobler denne til en mqtt-utgang og setter mqtt-serveren til localhost. La emne, bruker og passord stå tomt, da vi vil sette disse i injeksjonsnoden. Sett også opp en mqtt -inngangsnode og koble denne til en feilsøkingsnode slik at vi kan se svarene. Sett mqtt -inndatanotatet til localhost (skal allerede være angitt) og skriv inn+/+/+for emnet, slik at det fanger all trafikk.
Skriv inn følgende sekvens av innstillinger i injeksjonsnoden.
Sjekk først tilkoblingen med
Emne: cmnd/sonoff/Status
Melding: 6
klikk på "Injiser en gang ved start". Utplassere. Vi bør se feilsøking inkludert 7 linjer med data fra stat/sonoff/STATUS6
Skriv inn emne: cmnd/sonoff/emne og melding: salonglys. Utplassere. Dette endrer bryternavnet fra sonoff til salonglys
Feilsøkingsfanen skal vise enheten som starter på nytt med sitt nye navn/emne
Emne: cmnd/loungelight/MqttUser
Melding: salonglys
Klikk distribuer. En feilsøking bør sees fra stat/loungelight/RESULT med {"MtqqUser": "loungelight"}
Emne: cmnd/loungelight/MqttPassword
Melding: loungelightPW (vær mer fantasifull enn dette!)
Slett feilsøkingsfanen og distribuer.
Et svar bør sees fra stat/loungelight/RESULT med {"MqttPassword": "loungelightPW"}
Skriv nå inn NodeRed og NodeRedPW som brukernavn og passord i mqtt out -noden. Dette er via ikonet Server blyant og fanen sikkerhet i vinduet som åpnes. Dette blir automatisk kopiert til de andre MQTT -nodene.
Sjekk igjen med
Emne: cmnd/loungelight/Status og melding: 6. Utplassere.
Og at svaret er sendt.
Så på dette tidspunktet har vi omdøpt Sonof -enheten vår, slik at den vil lytte til cmnd/loungelight/…… emner og logge seg på MQTT -kuttet med brukernavn loungelight og passord loungelightPW. Vi har også angitt et brukernavn og passord for Node-Red.
Deretter må vi fortelle mygg -MQTT -serveren å bare godta klienter med brukernavn og liste opp brukernavn og passord som skal godtas.
Fremgangsmåten er:
- Stopp mygg
- Lag din egen konfigurasjonsfil
- Rediger konfigurasjonsfil
- Lag passordfil
- Legg til brukere/passord.
Så logg inn med en ny PuTTY -økt og kjør gjennom følgende kommandoer:
sudo /etc/init.d/mosquitto for å stoppe
cd /etc/mosquitto/conf.d/
sudo nano mosquitto.conf Dette starter redaktøren.
Legg til linjer:
allow_anonymous false
password_file /etc/mosquitto/conf.d/passwd
require_certificate false
Lagre og avslutt (Ctrl+X), Y, skriv inn.
sudo touch passwd Dette oppretter en passordfil og følgende instruksjoner legger til navn og passord.
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 for å starte på nytt
Vær oppmerksom på at når du legger til en ny enhet, må du enten angi brukeren og passordet via serieporten og legge disse til i passordfilen eller midlertidig endre myggkonfigurasjonsfilen og kommentere (legg til # ved begynnelsen av linjen) linjene "allow_anonymous false "og" password_file /etc/mosquitto/conf.d/passwd "og tilbakestill disse når detaljene er sendt til enheten og lagt til i passordfilen som ovenfor.
Vi har endret sonoff -navnet til loungelight og oppdaterer derfor mqtt -utgangsnoden (koblet til bryteren) for å bruke emnet cmnd/loungelight/POWER.
Klikk på Distribuer og sjekk mqtt -nodene som viser "tilkoblet".
Prøv deretter bryteren og se etter feilsøkingen som viser Sonoff -bryteren som reagerer. Du vil legge merke til at enheten viser endringen med et emne: stat/loungelight/POWER. Så nå endre inngangsnoden som var satt til cmnd/sonoff/POWER til stat/loungelight/POWER. Vi kan bruke dette til å dekke et hull i funksjonaliteten vår. Systemet som opprinnelig satt opp vil bli synkronisert med alle påloggede brukere, men vil ikke synkronisere med bytteendringer gjort ved å trykke på knappen på Sonoff -bryteren. Så koble nå utgangen til stat/loungelight/POWER mqtt inngangsnoden til bryterinngangen (LHS). Nå dobbeltklikker du på bryteren og fjerner merket for "hvis meldingen kommer på input, passerer du til output". Dette gir noen nye alternativer - velg 'bryterikonet viser tilstanden til inngangen'. Utplassere. Så nå har vi en god tilbakemeldingssløyfe. Dashbordbryterposisjonen vil alltid endres når Sonoff -bryteren endres, uavhengig av hvor endringen ble startet.
Så vi har nå et sikkert, frittstående hjemmeautomatiseringssystem i gang og klar for utvidelse til hva du vil at det skal gjøre. I den neste delen vil jeg dekke noen av eksperimentene mine så langt og utfordringer jeg har tenkt å takle.
Trinn 8: Innledende trinn for utvidelse
Jeg har en annen Instructable Home Automation Sonoff-Tasmota Sensors LEDs Development Board som viser noen av de andre egenskapene til Sonoff-Tasmota firmware:
Måling av temperatur og fuktighet
Innbruddsdeteksjon (bryterinngang)
IR -fjernkontroll (for TVer osv.)
LED -strenger - både RGB og NeoPixel (individuelt adresserbare)
I2C sensorer
For ovennevnte bruker jeg en ESP12F og en tilpasset PCB. En NodeMCU og brødbrett kan like godt brukes. Dette muliggjør disse tilleggsfunksjonene uten å koble til en Sonoff -enhet, og er derfor en mye tryggere tilnærming. Med temperaturinngangen har jeg vært i stand til å fullføre min automatiserte teppe.
Musikk og internettradio kan enkelt legges til. Dette åpner muligheter for å få bestemte stasjoner eller album til å angi på bestemte tidspunkt eller kanskje som svar på at en besøkende (telefon) blir oppdaget. Denne tilknyttede instruksen er på høykvalitets musikkspiller og internettradio med smarttelefonkontroll. Siden dette også drives av Node-RED, burde det til og med være mulig å ha mer enn ett lydsystem og bruke MQTT-kommunikasjon for å drive dem.
Jeg har også utforsket Node-Red, inkludert å sende e-post og lage talevarsler. Det er også potensial for systemet å oppdage når du er inn/ut - ved å pinge mobiltelefonens IP -adresse. Node -Red kan også få tilgang til vær og nyheter - slik at man kan legge til informasjon og gjøre automatisering.
Det er noen få triks å lære - men disse blir helt enkle for andre gang.
En annen måte er å legge en skjerm til pi for å vise dashbordet. Dette er 'work in progress' - eller med andre ord er jeg ikke så glad. Skjermen jeg fikk er vanskelig å rotere til portrettmodus, og Chromium -nettleseren er smertefullt treg. Et alternativ ville være å plukke opp en gammel nettbrett på ebay og bruke den. Jeg kan prøve med en Pi 2 og se om det gir nok av forbedringer (modell B brukt til denne utviklingen).
Jeg håper dette setter deg i gang og at fantasien din summer. Det potensielle omfanget er stort. Man kan til og med endre Sonoff -koden for andre sensorer om nødvendig.
Totalt sett har jeg blitt overrasket over hva dette systemet kan gjøre. Mitt opprinnelige mål var å bare bytte fra en smarttelefon på en pålitelig måte via et frittstående system. Jeg hadde visjoner om å måtte administrere servere og klienter og skrive html for et brukergrensesnitt. Hvor dette havnet er langt foran dette, med større sikkerhet, utmerket pålitelighet, fantastisk brukergrensesnitt, dra og slipp programmering og stort potensial for utvidelse. Og alt dette med mye mindre innsats.
Mike
Trinn 9: Tillegg - Laster fra Raspbian Stretch Lite
Dette alternativet unngår bloatware som følger med den fullstendige Raspbian Stretch -versjonen. Det meste av dette vil ikke være nødvendig når du bruker en Pi for hjemmeautomatisering. Node-Red må imidlertid installeres.
Fortsett som i trinn 1, men bruk Raspbian Stretch Lite i stedet for Raspbian Stretch.
Gjør følgende i stedet for trinn 2:
sudo apt -y installer npm
npm -v skal returnere: 1.4.21 eller nyere
sudo npm install -g n
sudo n 8.9.0
Vi kan nå bruke node packet manager til å installere Node-Red:
sudo npm installer node-red --global --unsafe-perm
Dette vil gi et par feilmeldinger på grunn av feil adresse. Systemet lager imidlertid en "kildekompilering" for å rette opp dette problemet. Hvis du gjentar instruksjonene ovenfor (ikke nødvendig), oppstår ikke feilene.
Vi har nå Node-Red og tilhørende pakker installert og kan gå videre til trinn 3 og laste mygg.
Andreplass i den trådløse konkurransen