Indholdsfortegnelse:

Kraftfuldt standalone hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red: 9 trin (med billeder)
Kraftfuldt standalone hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red: 9 trin (med billeder)

Video: Kraftfuldt standalone hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red: 9 trin (med billeder)

Video: Kraftfuldt standalone hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red: 9 trin (med billeder)
Video: Потрясающие Строительные Инструменты и Гениальные Рабочие Изобретения ▶34 2024, November
Anonim
Kraftfuldt standalone hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red
Kraftfuldt standalone hjemmeautomatiseringssystem - Pi, Sonoff, ESP8266 og Node -Red

Denne vejledning skal bringe dig til første base, hvor du kan tænde/slukke en lampe eller et apparat via enhver enhed, der kan oprette forbindelse til dit lokale netværk og med en fantastisk brugerdefineret webgrænseflade. Muligheden for udvidelse/ tilføjelse af funktioner er stor, herunder afsendelse af e -mails, twitterbeskeder, læsesensorer (f.eks. Temperatur). Du kan nemt sætte regler f.eks. - hvis temperaturen er under 15C ved 23:00 tænd det elektriske tæppe i 30 minutter. Systemet bruger MQTT -protokollen med TCP, der er betydeligt mere pålidelig end UDP - der overraskende bruges af nogle kommercielle hjemmeautomatiseringsenheder. Når det hårde arbejde med at konfigurere systemet, beskrevet her, er gjort, kan det sjove starte. Node Red giver en fantastisk brugergrænseflade, der er intuitiv, hurtig og let at konfigurere og giver en fantastisk kapacitet.

Resultatet er et kraftfuldt hjemmeautomatiseringssystem, der er fuldt ud under egen kontrol og udelukkende er på et lokalt netværk. Mange af de systemer, der vises på Instructables, fungerer med cloud -baserede servere og er derfor en sikkerhedsrisiko og kan kræve abonnement. Disse er lettere at konfigurere, men har en højere sikkerhedsrisiko og potentielt højere omkostninger. Jeg skal tilføje, at man kan oprette en VPN (virtuelt privat netværk) til Pi for at muliggøre sikker forbindelse til hjemmenetværket/-systemet, hvis adgang udefra ville være nyttig (Google Pi OpenVPN for instruktioner).

Dette system kræver omprogrammering af Sonoff-enheder med et fantastisk open source-system kaldet Sonoff-Tasmoda. Dette kan gøres ved hjælp af en særlig Arduino -opsætning og en USB til seriel konverter. Sonoff-enhederne bruger ESP8266 Wi-Fi-chippen, så du kan også lave dine egne enheder ved hjælp af ESP8266-moduler eller tilpasse dem til andre ting for at levere trådløs forbindelse.

Den største opgave er at oprette en Raspberry Pi som hub. Dette kører MQTT -mægleren (eller serveren), der administrerer kommunikationen med de tilsluttede enheder. Pi kører også et system kaldet Node-Red, der kan opfange meddelelser og data og kommandoer-f.eks. Hvornår man skal tænde det elektriske tæppe. Node-Red giver også en grænseflade til at betjene websiden, som du kan logge på via smartphone/tablet/pc/bærbar computer, for at se hvad der foregår og muliggøre manuel skift af lys og så videre.

Mit mål med denne instruerbare er at give hvert trin detaljerede detaljer, så en nybegynder kan få systemet til at fungere.

Trinene er:

  • Indlæs en Pi med Rasbian Stretch
  • Opdater og tilføj funktioner til Node-Red
  • Installer Mosquitto MQTT -mægleren
  • Konfigurer Arduino-miljøet til upload af Sonoff-Tasmota firmware
  • Omprogrammer en Sonoff-switch
  • Opsæt Node-Red-grænsefladen
  • Test det hele virker.

Hardware du skal bruge:

  • Hindbær Pi og strømforsyning (og tastatur og skærm til første opsætning) (model B bruges her)
  • Sonoff -switch
  • USB seriel konverter
  • Valgfrit - ESP -udviklingskort, f.eks. NodeMCU.

Min erfaring med Raspberry Pi er, at opsætning af alt ser ud til at indebære betydeligt mere smerte, end man nogensinde kunne forestille sig muligt med ting, der ikke fungerer eller sidder fast på et eller andet trivielt trin, hvor forklaringen kunne have været bedre. Fora får ikke altid råd, der virker! Jeg fandt flere ruter, der simpelthen ikke virkede af en eller anden grund. Det kostede 3 dage! Jeg tørrede derefter alt og begyndte på ny og afsluttede på mindre end en (lang) dag. Dette brugte imidlertid den ældre Raspian Jessie. Efter dette fandt jeg en måde at bruge den nuværende og for nylig udgivne version (Stretch) og gjorde det hele igen. Denne vejledning gør det muligt at kopiere og indsætte instruktioner i Pi. Så du burde være færdig om et par timer. Alligevel håber jeg, at dette får dig hurtigere op i indlæringskurven og med meget mindre smerte. Tro mig det er det værd for slutresultatet.

Trin 1: Indlæs en Pi med Rasbian Stretch

Dette burde være ret ligetil. Start med et 8 GB eller 16 GB SD -kort. Download den nyeste version fra:

www.raspberrypi.org/downloads/

Hovedtråden her forudsætter, at den fulde version er indlæst. Du kan dog bruge lite versionen til at spare plads. Hvis du bruger Raspbian Stretch Lite, skal du fortsætte gennem dette trin og derefter gå til trin 9 i slutningen.

Udpakning af den downloadede fil giver en mappe med.img -filen. 7Zip anbefales til Windows (og The Unarchiver Mac). Billedet skal brændes på SD -kortet - men et specielt program skal bruges, da filsystemet ikke er kompatibelt med Windows. Den anbefalede software kaldes Etcher og kan downloades fra:

etcher.io/

Instruktionerne til Etcher er på deres websted og kunne næsten ikke være enklere. Vælg billedet og drevet, og klik på Flash.

Nu med vores blinkede SD -kort med kan få Pi til at køre.

Hvis du kender den IP -adresse, din Pi bruger eller er glad for at finde den ved at logge på din router, kan du undgå behovet for tastatur og skærm og bruge SSH med det samme. Tilføj bare en tom fil med navnet SSH til SD -kortet, indsæt, tilslut til Ethernet og tænd for strømmen. Ellers følg vejledningen herunder.

Tilslut Pi til internet, skærm, mus og tastatur og tilslut strøm. Den første ting, vi vil gøre, er at aktivere SSH, så vi kan udføre størstedelen af opsætningen fra komforten på en pc. Det kan selvfølgelig gøres direkte, men det hjælper rigtig meget at kunne følge denne vejledning på den samme enhed som en, der kører Pi, og bruge kopier og indsæt til de fleste instruktioner. Også i mit tilfælde er min pc -arbejdsstation dejlig og behagelig, men også ikke stor nok til en pi.

Der er en guide til en god del af arbejdet med en YouTube -video. Det er her, jeg startede. Du kan køre videoen ved siden af disse instruktioner. Men da jeg løb igennem processen igen, mens jeg skrev dette, fandt jeg det lettere at bare følge instruktionerne her. Der er nogle betydelige afvigelser. Der er også nogle sektioner, hvor jeg har anbefalet at følge videoen frem for at angive trinene her. Jeg vil dog anbefale at kigge på det for at få en forståelse af MQTT, Node-Red og den brede installationsproces. Videoen er 38 minutter lang, så gør dig godt tilpas. Videoen starter med at vise, hvad Node Red kan, og dækker derefter Pi -installationen og opsætningen, efterfulgt af opgradering af Node Red og endelig installation af Mosquitto. Nøgletider, hvis du vil gå tilbage til et afsnit:

00:00 Introduktion til video

03:00 Node Rød demonstration

14:14 Import af dashboardelementer til Node Red

21:05 Pi første opsætning, inklusive SSH

23:35 Installation af Node Red understøttende kode

27:00 Introduktion til MQTT

29:12 Mosquitto (MQTT) installation (Note fungerer kun for Raspian Jessie)

33:00 Node Red eksempler

Jeg vil liste kommandoerne med fed kursiv (frem for at bruge “”). Denne formatering ignoreres, når du kopierer og indsætter dem i Pi.

Introduktionen til Node Red vil give dig en idé om, hvad systemet kan og give et billede af, hvor vi ender.

YouTube -videoen er på:

Følg installationsproceduren fra 21:05 til 23:35. Bemærk standard login er bruger: pi og adgangskode: hindbær. Inden genstart finder pi's IP -adresse. Klik enten på ikonet ‘op+pil ned’ i øverste bjælke på skrivebordet, eller indtast følgende instruktion i terminal-/terminalvinduet:

sudo ifconfig adresse

Bemærk derefter IP -adressen efter: inet addr:. Det vil være i formen 192.168.x.y

Bemærk denne adresse, og genstart (indtast: sudo shutdown –r now)

Nøglen på dette tidspunkt er, at SSH er blevet aktiveret, og man kan oprette et link til Pi fra en pc (Mac og Linux inkluderer SSH -grænseflader). Et godt program til at gøre dette er en gratis download kaldet PuTTY, der også kan bruges som et serielt interface og kan gøre Telnet. Kitt fås fra:

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

Download og installer PuTTY.

Nu, hvor Pi genstartes, skal du starte PuTTY og indtaste den tidligere angivne IP -adresse. Se eksempel herunder:

Klik nu på Åbn

Efter login som: indtast pi

Indtast derefter din adgangskode.

Følg nu instruktionerne her og start eventuelt videoen fra 23:35. Du kan i de fleste tilfælde kopiere og indsætte. Fremhæv teksten, og brug ctrl+C til at kopiere. Højreklik derefter på PuTTY for at indsætte. Nogle gange vises teksten ikke med det samme, så vent et par sekunder. Hvis du indtaster to gange, skal du bruge backspace til at slette den anden post. Tryk på enter for at udføre hver instruktion.

sudo raspi-opdatering

Jeg fik en kommando ikke fundet og ignorerede dette og følgende nedlukning/genstart instruktion:

sudo shutdown -r nu

sudo apt -get -y opdatering

sudo apt -get -y opgradering

Dette tager et stykke tid ….

sudo apt-get autoremove

sudo apt -get -y opdatering

sudo shutdown -r nu

På dette tidspunkt har vi Pi -operativsystemet indlæst og opdateret, klar til det næste trin.

Trin 2: Opdater og tilføj funktioner til Node-Red

PuTTY -forbindelsen er gået tabt ved genstart i slutningen af det foregående trin. Så luk PuTTY, og efter at have ventet på, at Pi'en skal starte, skal du logge på igen som før.

Jeg er flyttet til en enklere og mere pålidelig metode til at indlæse Node-Red-efter fremgangsmåden på https://nodered.org/docs/hardware/raspberrypi. Dette bruger et script og installerer eller opgraderer Node-Red-så tilgangen fungerer på samme måde som hele eller lite versioner af Raspbian Stretch. Så indtast:

bash <(curl -sL

Indtast Y, når du bliver bedt om det (to gange). Dette script indlæser også de filer, der er nødvendige for at aktivere Autostart af Node-Red.

Så på dette tidspunkt har vi vores pi indlæst og opdateret og med de nødvendige opdateringer til Node Red. Det er ingen skade at genstarte inden næste trin.

sudo shutdown -r nu

Trin 3: Mosquitto MQTT Installation

Hvis du ikke allerede har gjort det, er det værd at se videoindledningen til MQTT på videoen fra 27:00.

Det er her, vi skal gå en anden vej. Proceduren beskrevet i videoen fungerer kun for den ældre Jessie -version af Raspian. Der er en diskussion om mygstedet, men der er ikke vist noget klart resultat og vil derfor holde fast i en enklere og sikrere rute.

Så log på med PuTTY og indtast følgende:

sudo apt-get opdatering

sudo apt-get install mosquitto myg-klienter

Y

sudo /etc/init.d/mosquitto for at stoppe

sudo /etc/init.d/mosquitto for at starte

De to sidstnævnte instruktioner stopper og starter myg og viser, at vores MQTT -mægler arbejder.

For en hurtig test skal du åbne yderligere to PuTTY -sessioner og logge på hver.

Du ved nu, at MQTT fungerer ved hjælp af enheden med de behovsdata, der abonnerer på et 'emne'. Mægleren sender alle data med det samme 'emne'. Derefter offentliggør enheden, der ønsker at sende data/instruktion, dette til mægleren ved hjælp af det samme 'emne'.

Så indtast i en PuTTY -session:

myg_sub -d -t hej/verden

Dette er en instruktion om at abonnere på emnet: hej/verden.

I den anden indtast:

mosquitto_pub -d -t hello/world -m "Hej fra terminalvindue 2!"

Dette er en udgivelsesinstruktion med det samme emne med et budskab. Teksten: "Hej fra terminalvindue 2!" skulle nu vises i den anden terminal.

Godt gået med at komme så langt. Vi har nu indlæst og opdateret Pi med opdateringer, der er nødvendige til Node-Red og med myg MQTT-mægleren installeret og testet. Fra nu af bliver livet lettere og sjovere. Luk de to PuTTY -sessioner, der blev brugt til MQTT -testen.

Trin 4: Opsætning af Node Red Interface

Først skal vi starte Node Red. Indtast instruktionen:

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

Vent på, at det kører, og du ser teksten 'Startede flyder'.

Åbn nu en browser, jeg bruger Chrome, og indtast den pi IP -adresse, der blev noteret tidligere efterfulgt af: 1880 dvs. noget som 192.168.0.8:1880

Du skal nu have Node Red -programmeringssiden vist som nedenfor:

Du kan nu følge Node Red -eksemplerne fra kl. 33:00 eller gå direkte videre til en lille smule ekstra opsætning og indlæse det første flow, der viser linket til MQTT og være klar til at køre vores switch.

Den ekstra opsætning, der er nødvendig, er at tilføje de dashboardelementer, der muliggør en webgrænseflade.

Disse vises på videoen kl. 14:14.

Følg instruktionerne for at indlæse node-red-dashboard.

Nu kan vi få en lille leg og vise MQTT, der arbejder og bliver drevet af Node-Red. Dette er ikke på videoen, men er nøglen til dette projekt. Du kan enten følge mine instruktioner og/eller importere flowene fra den vedhæftede fil NRtest1.txt.

Tilføj først en inputinjektionsknude og en outputmqtt -knude og knyt dem sammen.

Dobbeltklik på injektionsknudepunktet (der oprindeligt er mærket tidsstempel). I sektionen Nyttelast skal du bruge twiddly til at skifte til streng og indtaste: Hej fra mig. Lad emnet være tomt, da vi kan indtaste dette i MQTT -noden. Klik på Udført

Dobbeltklik nu på MQTT -noden. Klik på blyantikonet til højre for serverafsnittet. Dette åbner en ny dialog. Indtast: localhost i serverafsnittet. Klik på Tilføj. Nu, tilbage i noden Rediger mqtt ud, skal du indtaste vores emne i emnet afsnit: hej/verden. Indstil QoS til 1. Klik på Udført. Klik nu på Implementér. Du skal se en grøn klat og 'forbundet' under mqtt -noden.

Tilføj nu yderligere to noder - input mqtt og output debug, og forbind disse sammen. Dobbeltklik nu på input mqtt node og indtast hej/verden i emnesektionen. Serveren skulle allerede vise localhost: 1883. Indstil QoS til 1. Klik på Udført. Klik derefter på Deploy, og klik på fanen Debug i højre rude. Klik nu på den grå firkant til venstre for injektionsnoden ‘Hej fra mig’. Dette sender tekst nyttelast til MQTT -mægleren med emnet hej/verden. Mægleren ved, at mqtt -inputnoden har abonneret på det samme emne og derfor videresender nyttelasten. Mqtt -inputnoden sender dette derefter til fanen Debug (RHS), og teksten 'Hello from me' skulle vises.

Dette markerer en anden boks, da vi har Node Red, der taler med vores MQTT -mægler. Bemærk, at Node Red kun er en klient til mægleren - ligesom Sonoff -enhederne forbinder vi senere. Det muliggør imidlertid sofistikeret automatisering og giver en fantastisk brugergrænseflade.

Nu kan vi foretage et par små ændringer og konfigurere strømmen til vores Sonoff -switch.

Så slet inputinjektionsnoden (klik for at markere, og tryk på slet -tasten). Tilføj nu en switch fra dashboard sektionen og slut den til mqtt output. Dobbeltklik switch. Klik på blyanten til højre for gruppen. Indtast Navn: Lys. Klik derefter på blyanten til højre for fanen og indtast afsnittet Navn: Lounge. Klik på Tilføj/opdater og Tilføj/opdater igen. Nu, tilbage i knappen Rediger switch node, skal du aktivere og deaktivere nyttelast. Brug twidlysene til at vælge streng, og indtast ON for On -nyttelasten og OFF for OFF -nyttelasten. Klik på Udført

Gå nu til hver af mqtt -noder og ændr emnet til cmnd/sonoff/POWER. Hvis du kopierer og indsætter, skal du kontrollere, at du ikke har inkluderet et mellemrum i slutningen. Dette er et andet emne og fungerer ikke med Sonoff. Det kan tage en time eller deromkring at finde et omstrejfende rum - tro mig! Jeg gik også til instrumentbrættet> Tema og valgte: Mørk. Klik på Deploy, og vælg fanen Debug.

Åbn nu en ny browsersession i et nyt vindue og størr den som en mobiltelefon over Node Red -sessionen. Indtast adressen: din Pi IP -adresse: 1880/ui/#/0, dvs. noget som 192.168.0.8:1880/ui/#/0. Du bør se en skærm med Lounge og Light og switch. Klik på kontakten til og derefter fra. Debug -vinduet skal vise ON og OFF nyttelast. Nu kan du også logge på via en mobil, hvis du ønsker det. Bemærk, at kontaktens position er synkroniseret. Det gør ikke noget, at vores Sonoff endnu ikke er forbundet. Når det er, ved at abonnere på emnet, vil det opfange beskeden/nyttelasten og handle på det.

Et sidste lille skridt er at få Node Red til at starte automatisk, når Pi starter op.

Node Red har en guide på:

Men de nødvendige filer er allerede indlæst, så ingen installation er påkrævet.

For derefter at aktivere Node-RED til at køre automatisk ved hver opstart og indtast ved nedbrud (åben PuTTY-session):

sudo systemctl aktivere nodered.service

Hvis du nogensinde skal deaktivere denne indtastning:

sudo systemctl deaktiver nodered.service

Luk nu pi'en med sudo -lukning nu, og fjern strømmen.

Dette har nu vores Pi låst og indlæst klar til handling. Vi har vores pc/mobiltelefon, der opretter forbindelse til Node Red, og dette taler til vores MQTT -server. Dette har været et langt træk og et stort klap på skulderen værd. Godt klaret. Jeg fandt den næste, Arduino bit, en hel del lettere!

Trin 5: Opsætning af Arduino -systemet til omprogrammering af Sonoff -enheder

Al information for at gøre dette er på Sonoff-Tasmota GitHub. Den eneste del, jeg havde svært ved, var emneteksten - men jeg har listigt fået dig til at indtaste dette allerede!

Gå til

Du finder installationsvejledningen på fanen Wiki i afsnittet Uploadværktøjer:

I stedet for at gennemgå hvert trin vil jeg bare notere vigtige aspekter, som jeg følte var vigtige eller sad fast på.

Instruktionerne er gode, men kræver omhyggelig opmærksomhed på detaljer. Jeg blev snublet af, at der var behov for en ESP8266 -mappe i en mappe, der lå i en anden mappe ved navn ESP8266, og derfor gik jeg glip af to niveauer.

Jeg fulgte anbefalingen om et helt separat Arduino -setup. Jeg oprettede en ny mappe kaldet 'ArduinoSonoff', der er adskilt fra min eksisterende Arduino -mappe. Opsætningen er ret avanceret, og derfor er det en meget god ide at holde den adskilt. Hvis dette er din første Arduino -opsætning, skal du installere den en anden gang i en 'Arduino' eller anden mappe til ethvert andet Arduino -arbejde, herunder arbejde på ESP8266s.

Download den nyeste Arduino IDE fra https://www.arduino.cc/en/Main/Software. Pak filen ud i din nye mappe.

Instruktionerne inkluderer download af Sonoff-Tasmoda-systemet fra https://github.com/arendst/Sonoff-Tasmota hovedside via: Klon eller Download> Download ZIP. Pak filen ud i din nye mappe.

Følg instruktionerne omhyggeligt. Jeg gjorde ikke Valgfrit: Forbered dig på OTA -upload sektion. Vi lader dette stå en anden dag.

Start nu Arduino IDE (dobbeltklik på arduino.exe). Indlæs Sonoff-Tasmota-skitsen via Filer> Skitsebog> sonoff. Det er ikke nødvendigt at foretage ændringer. Alle indstillinger udføres via en seriel forbindelse, efter at firmwaren er indlæst. Disse gemmes i EEPROM. Derfor kan firmwaren opdateres og alle indstillinger bevares. Dette er ret smarte ting. Du kan dog undgå behovet for et par trin her ved at gå til filen user-config.h og indtaste dit wifi SSID og adgangskode og MQTT_HOST (erstat ‘domus1’– anden reference med din Pi IP-adresse). Senere vil du måske også indtaste en MQTT -bruger og adgangskode. Inden du downloader, skal du kontrollere tavleindstillingerne under Værktøjer. Disse skal have et par ændringer for at matche kravene i Wiki. Klik nu på kompiler (kryds ikon). Det skal kompilere OK. Hvis det ikke gør det, eller hvis de nødvendige kortindstillinger ikke er tilgængelige, skal du gå tilbage og kontrollere hvert trin i opsætningen.

Trin 6: Omprogrammering af en Sonoff -switch

Vi er nu klar til at downloade. På dette stadium kan man enten gå lige frem og blinke en Sonoff -switch, eller man kan først blinke et ESP8266 -modul. Jeg gjorde sidstnævnte, dels fordi mine kontakter endnu ikke var ankommet (lige ankommet, mens jeg skriver dette!), Men også som en sikkerhedsforanstaltning, da blinkningen af Sonoff -kontakten er et envejstrin, da den originale firmware ikke er offentligt tilgængelig, så vidt Jeg er opmærksom. Jeg har et par NodeMCU -tavler. Disse er nemme at tilslutte med deres indbyggede USB til serielle konverter. Metoden til nulstilling af nodemcu fungerer dog ikke med dette system. Så lad Værktøjer> Nulstil metode indstilles til "ck". Gør den normale manuelle flashopsætning ved at holde Flash -knappen (GPIO 0 til jorden) nede, mens du trykker på og slipper Reset (Reset to ground). Jeg er ikke sikker på, om dette har en timeout, eller måske jeg ikke holdt GPIO 0 lavt længe nok, men jeg havde brug for flere forsøg, herunder at gøre dette, mens Arduino IDE kompilerer!

Hvis du vil kontrollere svarene - relæudgangen er D6 på NodeMCU -kort. På ESP12’er er dette GPIO 12. LED -udgangen er D7 (NodeMCU) eller GPIO 13 (ESP12’er).

Sonoff switch.

ADVARSEL: Jeg må sige "tilslut ikke til lysnettet under nogen omstændigheder, hvor kabinettet er åbent". Bemærk, at printkortet (i det mindste på Sonoff Basic (in-line switch) kun har 'enkelt isolation' afstande mellem lavspændingsdelen og lysnettet. Så man bør behandle enhver del af Sonoff kredsløbet som netspænding. Sonoff- Tasmota GitHub viser tilslutning af en temperatur- og fugtighedsføler til en Sonoff S20. Jeg ville ikke gøre dette på grund af isolationsproblemer. - så hvis du vil gøre dette, skal du få et ESP12- eller NodeMCU -modul og konfigurere dette separat med en ordentlig dobbeltisoleret eller jordet strømforsyning.

Sonoff S20 plug-in-kontakten er et godt udgangspunkt, da den ikke har brug for ledningsføring. Dette kan åbnes ved at fjerne en skrue (under sikkerhedsforseglingen) og prise sagen åben. Billedet herunder viser, hvor mærkerne er. At klemme sagen på disse punkter hjælper.

USB seriel konverter

Min yndlingsomformer er FTDI -versionen. Dette har imidlertid ikke tilstrækkelig kapacitet til at dække Sonoff 3.3v behov. FTDI -specifikationen siger maksimalt 50ma. Det næstbedste alternativ er et, der bruger CP2102 -chippen. Dette har dog en 100ma grænse, der stadig ikke er nok. Det er klart, at mange bruger denne konverter direkte, men der er også rapporter om, at indlæsning mislykkedes. Jeg ville begrænse den tid, den er tilsluttet, da den vil varme op under belastningen. Gør dette på egen risiko. Den ideelle løsning er også at have en 3.3v regulator, f.eks. en AMS1117 3.3. Jeg lavede en lille print til at aktivere dette. Se Programmer for Sonoff -enheder.

Min sekvens til programmering er som følger:

Åbn Arduino IDE.

Under Værktøjer skal du kontrollere indstillingerne som på Wiki.

Foretag de nødvendige ændringer af user_config.h. Jeg indstiller Wifi SSID og adgangskode og MQTT -mægleradresse og tidszone/sommertid detaljer.

Klik på 'verificer' for at kontrollere, at den kompilerer OK.

Tilslut USB seriel konverter (alene) til pc'en. Bemærk portnummeret.

Afbryd nu USB -serieledningen fra pc'en, og slut den til Sonoff -kontakten. Kontroller, at jorden og 3v3 -forbindelser er den rigtige vej (jorden er forbundet til jordplanet på Sonoff -printkortet).

Hold programmereren, så kontakterne er sikre, mens du også trykker på knappen.

Sæt nu USB -kablet i pc'en, kontroller, at portnummeret er korrekt (i Værktøjer), og klik derefter på download.

Jeg fortsætter med at holde knappen inde under hele programmeringen, fordi jeg ikke vil forstyrre forbindelserne.

Når du er færdig, skal du se en skærm som nedenfor:

Billede
Billede

Sonoff har brug for et par oplysninger for at oprette forbindelse til vores system: det lokale netværk wifi SSID og adgangskode og Pi IP -adressen. Der er flere måder at gøre dette på, hvoraf den ene er at ændre filen config.ino som tidligere bemærket. Hvis du har en smartphone, kan du (efter genmontering af kontakten) trykke på Sonoff-knappen 4 gange ret hurtigt for at sætte den i en webserver-tilstand. LED'en blinker. Jeg måtte prøve flere gange for at få dette til at fungere. Derefter skal du kigge efter det nye Sonoff -netværk på din smartphone og oprette forbindelse. Der vises en webside, hvor du kan angive de nødvendige data. Pi IP -adressen går ind i værtsnavn. Jeg ændrede også det andet SSID og password til noget langt og stort set ubrugeligt.

Alternativt kan den opsættes via den serielle forbindelse lige efter indlæsning. Åbn Arduino Serial Monitor (under Værktøjer).

Kommandoer for at indtaste:

SSId ditWiFiSSID

Adgangskode til dit WiFiPassword

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

Du kan også indtaste SSId1 og Password1 efterfulgt af noget langt og ubrugeligt for effektivt at deaktivere dette.

Nu kan du bokse Sonoff-kontakten op, åbne Node-Red og Node-red dashboard og klikke på switch-knappen og se på debug-fanen, der nu skal indeholde svarene fra Sonoff. Så vi har et andet stort skridt opnået - vores første switch blev drevet fra en pc/smartphone.

Indtil nu har vi ikke nævnt sikkerhed. Der er mulighed for at bruge krypteret kommunikation. Dette er ret komplekst at oprette og sandsynligvis mere passende, hvor en skybaseret mægler bruges. Der er også mulighed for at tilføje brugernavne og adgangskoder til alle de tilsluttede enheder og ikke tillade anonyme brugere. Dette er ret simpelt at konfigurere. Og så nu til Sikkerhed.

Trin 7: Sikkerhed

MQTT tillader brugernavne og adgangskoder til hver klient. Dette er let at opsætte. Det er sandsynligvis lettere at først omdøbe hver enhed og derefter indstille deres brugernavne og adgangskoder. Dette kan gøres via MQTT-kommandoer, og Node-Red er sandsynligvis den nemmeste måde at sende disse på. Beslut først om en navngivningskonvention. En mulighed er at basere navne på placering og funktion. Derefter vil du gerne registrere navnet (emne) brugernavn og adgangskode sammen med tilbagevendingsemnet. Bemærk, at der også er en 'nulstillingsmulighed' for at nulstille Sonoff -indstillingerne til original download (se Wiki -brug> Knapfunktionalitet).

Tænd for pi'en, og åbn efter et par sekunder en browser til Node-Red (IP-adresse: 1880).

I Node-Red skal du oprette en injiceringsknude og knytte dette til et mqtt-output og indstille mqtt-serveren til localhost. Lad emne, bruger og adgangskode stå tomme, da vi sætter disse i injektionsknudepunktet. Opsæt også en mqtt inputnode og tilslut dette til en fejlfindingsnode, så vi kan se svarene. Indstil mqtt input note til localhost (burde allerede være indstillet) og indtast+/+/+for emne, så det fanger al trafik.

Indtast følgende sekvens af indstillinger i injektionsknudepunktet.

Kontroller først forbindelsen med

Emne: cmnd/sonoff/Status

Besked: 6

klik på 'Injicér én gang ved start'. Indsætte. Vi skulle se fejlfinding inklusive 7 linjer med data fra stat/sonoff/STATUS6

Indtast emne: cmnd/sonoff/emne og meddelelse: loungelight. Indsætte. Dette ændrer switch -navnet fra sonoff til loungelight

Fanen Debug skal vise enheden genstart med sit nye navn/emne

Emne: cmnd/loungelight/MqttUser

Besked: loungelight

Klik på implementer. En fejlretning skal ses fra stat/loungelight/RESULT med {"MtqqUser": "loungelight"}

Emne: cmnd/loungelight/MqttPassword

Besked: loungelightPW (vær mere fantasifuld end dette!)

Ryd debug -fanen, og implementer.

Et svar skal ses fra stat/loungelight/RESULT med {"MqttPassword": "loungelightPW"}

Indtast nu NodeRed og NodeRedPW som brugernavn og adgangskode i mqtt out -noden. Dette er via ikonet Server blyant og fanen sikkerhed i vinduet, der åbnes. Dette bliver automatisk kopieret til de andre MQTT -noder.

Tjek igen med

Emne: cmnd/loungelight/Status og meddelelse: 6. Indsætte.

Og at svaret er sendt.

Så på dette tidspunkt har vi omdøbt vores Sonof -enhed, så den vil lytte til cmnd/loungelight/…… emner og logge på MQTT -afskærmningen med brugernavn loungelight og password loungelightPW. Vi har også angivet et brugernavn og en adgangskode til Node-Red.

Dernæst skal vi fortælle myg -MQTT -serveren kun at acceptere klienter med brugernavne og angive brugernavne og adgangskoder, der skal accepteres.

Proceduren er:

  • Stop myg
  • Opret egen konfigurationsfil
  • Rediger konfigurationsfil
  • Opret adgangskodefil
  • Tilføj brugere/adgangskoder.

Så log ind med en ny PuTTY -session, og kør igennem følgende kommandoer:

sudo /etc/init.d/mosquitto for at stoppe

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Dette starter editoren.

Tilføj linjer:

tillad_anonym falsk

password_file /etc/mosquitto/conf.d/passwd

require_certificate false

Gem og afslut (Ctrl+X), Y, indtast.

sudo touch passwd Dette opretter en adgangskodefil og følgende instruktioner tilføjer navne og adgangskoder.

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 at genstarte

Bemærk, når du tilføjer en ny enhed, skal du enten indtaste brugeren og adgangskoden via den serielle port og tilføje disse til adgangskodefilen eller midlertidigt ændre mygkonfigurationsfilen og kommentere (tilføj # ved starten af linjen) linjerne "allow_anonymous false "og" password_file /etc/mosquitto/conf.d/passwd "og nulstil derefter disse, når detaljerne er blevet sendt til enheden og tilføjet til adgangskodefilen som ovenfor.

Vi har ændret sonoff -navnet til loungelight og opdaterer derfor mqtt -outputnoden (forbundet til kontakten) for at bruge emnet cmnd/loungelight/POWER.

Klik på Deploy, og kontroller, at mqtt -noder viser 'tilsluttet'.

Prøv derefter switch -knappen, og kig efter fejlfinding, der viser Sonoff -kontakten, der reagerer. Du vil bemærke, at enheden viser ændringen med et emne: stat/loungelight/POWER. Så skift nu inputnoden, der var indstillet til cmnd/sonoff/POWER til stat/loungelight/POWER. Vi kan bruge dette dække et hul i vores funktionalitet. Systemet som oprindeligt opsat vil blive synkroniseret med alle loggede brugere, men synkroniseres ikke med switchændringer foretaget ved at trykke på knappen på Sonoff -kontakten. Så tilslut nu output fra stat/loungelight/POWER mqtt inputnoden til switchindgangen (LHS). Dobbeltklik nu på kontakten, og fjern markeringen i "hvis der kommer msg ved input, skal du gå videre til output". Dette giver nogle nye muligheder - vælg 'switch -ikonet viser tilstanden for input'. Indsætte. Så nu har vi en god feedback loop. Kontrolpositionen på instrumentbrættet ændres altid, når Sonoff -kontakten ændres, uanset hvor ændringen blev påbegyndt.

Så vi har nu et sikkert, selvstændigt hjemmeautomatiseringssystem i gang og klar til udvidelse til, hvad du nu vil have det til at gøre. I det næste afsnit vil jeg dække nogle af mine eksperimenter indtil nu og udfordringer, jeg planlægger at tackle.

Trin 8: Indledende trin til udvidelse

Jeg har en anden Instructable Home Automation Sonoff-Tasmota Sensors LEDs Development Board, der viser nogle af de yderligere muligheder for Sonoff-Tasmota firmware:

Måling af temperatur og luftfugtighed

Indtrængningsdetektering (switchindgang)

IR -fjernbetjening (til fjernsyn osv.)

LED -strenge - både RGB og NeoPixel (kan adresseres individuelt)

I2C sensorer

Til ovenstående bruger jeg en ESP12F og et brugerdefineret printkort. Et NodeMCU og brødbræt kunne ligeledes bruges. Dette muliggør disse ekstra funktioner uden at være forbundet til en Sonoff -enhed, og derfor er en langt mere sikker tilgang. Med temperaturindgangen har jeg været i stand til at fuldføre min elektriske tæppe automatisering.

Musik og internetradio kan nemt tilføjes. Dette åbner muligheder for at få bestemte stationer eller album til at komme på bestemte tidspunkter eller måske som reaktion på, at en besøgende (telefon) bliver opdaget. Denne tilknyttede instruerbare er på musikafspiller og internetradio i høj kvalitet med Smartphone Control. Da dette også er drevet af Node-RED, burde det endda være muligt at have mere end et lydsystem og bruge MQTT-kommunikation til at drive dem.

Jeg har også undersøgt Node-Red, herunder at sende e-mails og foretage stemmeaviser. Der er også potentiale for, at systemet kan registrere, når du er ind/ud - ved at pinge din mobiltelefons IP -adresse. Node -Red kan også få adgang til vejr og nyheder - så man kan tilføje oplysninger samt foretage automatisering.

Der er et par tricks, der skal læres - men det bliver let let for anden gang.

En anden vej er at tilføje en skærm til pi'en for at vise instrumentbrættet. Dette er 'work in progress' - eller med andre ord er jeg ikke så glad. Det display, jeg fik, er svært at rotere til portrættilstand, og Chromium -browseren er smertefuldt langsom. Et alternativ ville være at hente en gammel tablet på ebay og bruge den. Jeg kan prøve med en Pi 2 og se om det giver en forbedring nok (model B bruges til denne udvikling).

Jeg håber, at dette får dig i gang og får din fantasi til at summe. Det potentielle omfang er enormt. Man kan endda ændre Sonoff -koden for andre sensorer, hvis det er nødvendigt.

Generelt har jeg været overrasket over, hvad dette system kan. Mit oprindelige mål var bare at køre en switch fra en smartphone på en pålidelig måde via et selvstændigt system. Jeg havde haft visioner om at skulle administrere servere og klienter og skrive html til en brugergrænseflade. Hvor dette endte er langt foran dette, med større sikkerhed, fremragende pålidelighed, fantastisk brugergrænseflade, træk og slip programmering og stort potentiale for ekspansion. Og alt dette med meget mindre indsats.

Mike

Trin 9: Addendum - Indlæser fra Raspbian Stretch Lite

Denne mulighed undgår bloatware, der følger med den fulde Raspbian Stretch -version. Det meste af dette vil ikke være nødvendigt, når du bruger en Pi til hjemmeautomatisering. Node-Red skal dog installeres.

Fortsæt som i trin 1, men brug Raspbian Stretch Lite frem for Raspbian Stretch.

Gør følgende i stedet for trin 2:

sudo apt -y installer npm

npm -v skulle returnere: 1.4.21 eller nyere

sudo npm install -g n

sudo n 8.9.0

Vi kan nu bruge node packet manager til at installere Node-Red:

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

Dette vil give et par fejlmeddelelser på grund af en forkert adresse. Systemet laver imidlertid en 'kildekompilering' for at rette op på dette problem. Hvis du gentager instruktionen ovenfor (ikke nødvendigt) opstår fejlene ikke.

Vi har nu Node-Red og dets understøttende pakker installeret og kan gå videre til trin 3 og indlæse myg.

Trådløs konkurrence
Trådløs konkurrence
Trådløs konkurrence
Trådløs konkurrence

Nummer to i den trådløse konkurrence

Anbefalede: