Innehållsförteckning:
- Steg 1: Ladda en Pi med Rasbian Stretch
- Steg 2: Uppdatera och lägg till funktioner i Node-Red
- Steg 3: Mosquitto MQTT -installation
- Steg 4: Konfigurera det röda nodgränssnittet
- Steg 5: Konfigurera Arduino -systemet för omprogrammering av Sonoff -enheter
- Steg 6: Omprogrammering av en Sonoff -omkopplare
- Steg 7: Säkerhet
- Steg 8: Inledande steg för expansion
- Steg 9: Tillägg - Ladda från Raspbian Stretch Lite
Video: Kraftfullt fristående hemautomationssystem - Pi, Sonoff, ESP8266 och Node -Red: 9 steg (med bilder)
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Den här guiden ska ta dig till första basen där du kan slå på/stänga av en lampa eller en apparat via vilken enhet som helst som kan ansluta till ditt lokala nätverk och med ett fantastiskt anpassningsbart webbgränssnitt. Utrymmet för tillägg/ tilläggsfunktioner är stort, inklusive att skicka e -post, twittermeddelanden, lässensorer (t.ex. temperatur). Du kan enkelt ställa in regler t.ex. - om temperaturen är under 15C vid 23:00 slår du på den elektriska filten i 30 minuter. Systemet använder MQTT -protokollet med TCP som är betydligt mer tillförlitligt än UDP - som överraskande används av vissa kommersiella hemautomatiseringsenheter. När det hårda arbetet med att installera systemet, som beskrivs här, är klart, kan det roliga börja. Node Red ger ett fantastiskt användargränssnitt som är intuitivt, snabbt och enkelt att installera och ger fantastisk kapacitet.
Resultatet är ett kraftfullt hemautomatiseringssystem som är helt under egen kontroll och är helt på ett lokalt nätverk. Många av systemen som visas på Instructables fungerar med molnbaserade servrar och är därför en säkerhetsrisk och kan kräva prenumeration. Dessa är enklare att konfigurera men har en högre säkerhetsrisk och potentiellt högre kostnader. Jag bör tillägga att man kan konfigurera ett VPN (virtuellt privat nätverk) till Pi för att möjliggöra säker anslutning till hemnätverket/systemet om åtkomst utifrån skulle vara användbart (Google Pi OpenVPN för instruktioner).
Detta system kräver omprogrammering av Sonoff-enheter med ett fantastiskt system med öppen källkod som heter Sonoff-Tasmoda. Detta kan göras med en speciell Arduino -installation och en USB till serieomvandlare. Sonoff-enheterna använder ESP8266 Wi-Fi-chip så att du också kan skapa dina egna enheter med ESP8266-moduler eller anpassa dem till andra objekt för att leverera trådlös anslutning.
Den största uppgiften är att skapa en Raspberry Pi som nav. Detta kör MQTT -mäklaren (eller servern) som hanterar kommunikationen med de anslutna enheterna. Pi kör också ett system som kallas Node-Red som kan avlyssna meddelanden och data och utmatningskommandon-till exempel när man ska slå på den elektriska filten. Node-Red ger också ett gränssnitt för att betjäna webbsidan som du kan logga in på via smartphone/surfplatta/PC/bärbar dator, för att se vad som händer och aktivera manuell koppling av lampor och så vidare.
Mitt syfte med detta instruerbara är att ge varje steg så detaljerade att en nybörjare kan få systemet att fungera.
Stegen är:
- Ladda en Pi med Rasbian Stretch
- Uppdatera och lägg till funktioner i Node-Red
- Installera Mosquitto MQTT -mäklaren
- Ställ in Arduino-miljön för att ladda upp Sonoff-Tasmota-firmware
- Programmera om en Sonoff-omkopplare
- Ställ in gränssnittet Node-Red
- Testa allt fungerar.
Hårdvara du behöver:
- Raspberry Pi och strömförsörjning (och tangentbord och bildskärm för första installationen) (modell B används här)
- Sonoff -omkopplare
- USB seriell omvandlare
- Valfritt - ESP -utvecklingskort, till exempel NodeMCU.
Min erfarenhet av Raspberry Pi är att installationen av allt verkar innebära betydligt mer smärta än man någonsin kunde föreställa sig möjligt med saker som inte fungerar eller fastnar på något trivialt steg där förklaringen kunde ha varit bättre. Forumet får inte alltid råd som fungerar! Jag hittade flera rutter som helt enkelt inte fungerade av en eller annan anledning. Detta kostade 3 dagar! Jag torkade sedan allt och började om och slutade på mindre än en (lång) dag. Detta använde dock den äldre Raspian Jessie. Efter detta hittade jag ett sätt att använda den nuvarande och nyligen släppta versionen (Stretch) och gjorde allt igen. Denna guide möjliggör kopiering och klistring av instruktioner i Pi. Så du borde vara klar om några timmar. Hur som helst hoppas jag att detta får dig snabbare uppåt inlärningskurvan och med mycket mindre smärta. Tro mig det är värt det för slutresultatet.
Steg 1: Ladda en Pi med Rasbian Stretch
Detta borde vara ganska enkelt. Börja med ett 8 GB eller 16 GB SD -kort. Ladda ner den senaste versionen från:
www.raspberrypi.org/downloads/
Huvudtråden här antar att hela versionen är laddad. Du kan dock använda lite version för att spara utrymme. Om du använder Raspbian Stretch Lite går du igenom det här steget och går sedan till steg 9 i slutet.
Om du packar upp den nedladdade filen får du en mapp med.img -filen. 7Zip rekommenderas för Windows (och The Unarchiver Mac). Bilden måste brännas på SD -kortet - men ett speciellt program måste användas eftersom filsystemet inte är kompatibelt med Windows. Den rekommenderade programvaran heter Etcher och kan laddas ner från:
etcher.io/
Instruktionerna för Etcher finns på deras webbplats och kan knappast vara enklare. Välj bilden och enheten och klicka på Flash.
Nu med vårt flashade SD -kort med kan få Pi igång.
Om du känner till IP -adressen som din Pi använder eller gärna hittar den genom att logga in på din router kan du undvika behovet av tangentbord och bildskärm och använda SSH omedelbart. Lägg bara till en tom fil med namnet SSH på SD -kortet, sätt i, anslut till Ethernet och slå på. Följ annars guiden nedan.
Anslut Pi till internet, skärm, mus och tangentbord och anslut till ström. Det första vi kommer att göra är att aktivera SSH så att vi kan göra merparten av installationen från bekvämligheten på en PC. Det kan naturligtvis göras direkt men det hjälper mycket att kunna följa den här guiden på samma enhet som den som kör Pi och använda kopiera och klistra in för de flesta instruktionerna. Även i mitt fall är min PC -arbetsstation trevlig och bekväm men inte tillräckligt stor för en pi också.
Det finns en guide för en hel del av arbetet med en YouTube -video. Det var här jag började. Du kan köra videon tillsammans med att följa dessa instruktioner. Men när jag körde igenom processen igen när jag skrev detta fann jag det lättare att bara följa instruktionerna här. Det finns några betydande avvikelser. Det finns också några avsnitt där jag har rekommenderat att följa videon i stället för att lista stegen här. Jag skulle dock rekommendera att titta på det för att få en förståelse för MQTT, Node-Red och den breda installationsprocessen. Videon är 38 minuter lång så gör dig bekväm. Videon börjar med att visa vad Node Red kan göra, och täcker sedan Pi -installationen och installationen, följt av uppgradering av Node Red och slutligen installation av Mosquitto. Viktiga tidpunkter om du vill gå tillbaka till ett avsnitt:
00:00 Introduktion till video
03:00 Node Red demonstration
14:14 Importera instrumentpanelsobjekt till Node Red
21:05 Pi första installation, inklusive SSH
23:35 Installation av Node Red -stödkod
27:00 Introduktion till MQTT
29:12 Mosquitto (MQTT) installation (Obs fungerar bara för Raspian Jessie)
33:00 Node Red exempel
Jag kommer att lista kommandona med fet kursiv stil (snarare än att använda””). Denna formatering ignoreras när du kopierar och klistrar in dem i Pi.
Introduktionen till Node Red ger dig en uppfattning om vad systemet kan göra och ger en bild av var vi kommer att hamna.
YouTube -videon finns på:
Följ installationsproceduren från 21:05 till 23:35. Observera att standardinloggningen är user: pi och lösenord: hallon. Hitta pi: s IP -adress innan du startar om. Klicka antingen på "upp+nedåtpilen" -ikonen i det övre fältet på skrivbordet eller ange följande instruktion i terminal-/terminalfönstret:
sudo ifconfig -adress
Notera sedan IP -adressen efter: inet addr:. Det kommer att vara i formen 192.168.x.y
Notera den här adressen och starta om (ange: sudo shutdown –r now)
Nyckeln vid denna tidpunkt är att SSH har aktiverats och man kan skapa en länk till Pi från en PC (Mac och Linux inkluderar SSH -gränssnitt). Ett bra program för att göra detta är en gratis nedladdning som heter PuTTY som också kan användas som ett seriellt gränssnitt och kan göra Telnet. Spackel finns från:
www.chiark.greenend.org.uk/~sgtatham/putty…
Ladda ner och installera PuTTY.
Nu när Pi startas om, starta PuTTY och ange IP -adressen som noterades tidigare. Se exemplet nedan:
Klicka nu på Öppna
Efter inloggning som: ange pi
Ange sedan ditt lösenord.
Följ nu instruktionerna här och starta eventuellt videon från 23:35. Du kan i de flesta fall kopiera och klistra in. Markera texten och använd ctrl+C för att kopiera. Högerklicka sedan i PuTTY för att klistra in. Ibland visas texten inte direkt så vänta några sekunder. Om du anger två gånger använder du backspace för att radera den andra posten. Tryck på enter för att utföra varje instruktion.
sudo raspi-uppdatering
Jag fick ett kommando som inte hittades och ignorerade detta och följande avstängning/omstart instruktion:
sudo avstängning -r nu
sudo apt -get -y uppdatering
sudo apt -get -y uppgradering
Det här tar ett tag ….
sudo apt-get autoremove
sudo apt -get -y uppdatering
sudo avstängning -r nu
Vid denna tidpunkt har vi Pi -operativsystemet laddat och uppdaterat, redo för nästa steg.
Steg 2: Uppdatera och lägg till funktioner i Node-Red
PuTTY -anslutningen kommer att ha förlorats vid omstart i slutet av föregående steg. Så stäng PuTTY och efter att ha väntat på att Pi ska starta, logga in igen som tidigare.
Jag har flyttat till en enklare och mer tillförlitlig metod för att ladda Node-Red-efter tillvägagångssättet på https://nodered.org/docs/hardware/raspberrypi. Detta använder ett skript och kommer att installera eller uppgradera Node-Red-så tillvägagångssättet fungerar på samma sätt från hela eller lite versioner av Raspbian Stretch. Så skriv in:
bash <(curl -sL
Ange Y när du uppmanas (två gånger). Detta skript läser också in filer som behövs för att aktivera autostart av Node-Red.
Så vid denna tidpunkt har vi vår pi laddad och uppdaterad och med de uppdateringar som behövs för Node Red. Det är ingen skada att göra en omstart före nästa steg.
sudo avstängning -r nu
Steg 3: Mosquitto MQTT -installation
Om du inte redan har gjort det är det värt att se videointroduktionen till MQTT på videon från 27:00.
Det är här vi måste ta en annan väg. Proceduren som beskrivs i videon fungerar bara för den äldre Jessie -versionen av Raspian. Det finns en diskussion om myggplatsen men inget tydligt resultat visas och kommer därför att hålla sig till en enklare och säkrare väg.
Så logga in med PuTTY och ange följande:
sudo apt-get uppdatering
sudo apt-get install mosquitto myggklienter
Y
sudo /etc/init.d/mosquitto stoppa
sudo /etc/init.d/mosquitto för att starta
De två sistnämnda instruktionerna stoppar och startar mygg och visar att vår MQTT -mäklare fungerar.
För ett snabbt test, öppna ytterligare två PuTTY -sessioner och logga in på var och en.
Du kommer att veta vid det här laget att MQTT fungerar med enheten med behovsdata som prenumererar på ett "ämne". Mäklaren skickar alla data med samma "ämne". Sedan publicerar enheten som vill skicka data/instruktion detta till mäklaren med samma "ämne".
Så skriv in i en PuTTY -session:
mygga_sub -d -t hej/värld
Detta är en instruktion för att prenumerera på ämnet: hej/värld.
I den andra anger du:
mosquitto_pub -d -t hej/värld -m "Hej från terminalfönster 2!"
Detta är en publiceringsinstruktion med samma ämne med ett meddelande. Texten: "Hej från terminalfönster 2!" ska nu visas i den andra terminalen.
Bra att komma så långt. Vi har nu laddat och uppdaterat Pi med uppdateringar som behövs för Node-Red och med myggmackaren MQTT installerad och testad. Från och med nu blir livet lättare lite roligare. Stäng de två PuTTY -sessionerna som används för MQTT -testet.
Steg 4: Konfigurera det röda nodgränssnittet
Först måste vi starta Node Red. Ange instruktionen:
node-red-pi --max-old-space-size = 256
Vänta tills den körs och du ser texten "Startade flöden".
Öppna nu en webbläsare, jag använder Chrome och ange pi -IP -adressen som noterades tidigare följt av: 1880 dvs något liknande 192.168.0.8:1880
Du bör nu ha Node Red -programmeringssidan enligt nedan:
Du kan nu följa Node Red -exemplen från och med 33:00 eller gå direkt vidare till en liten bit extra installation och ladda det första flödet som visar länken till MQTT och vara redo att köra vår switch.
Den extra inställningen som krävs är att lägga till instrumentpanelen som möjliggör ett webbgränssnitt.
Dessa visas på videon klockan 14:14.
Följ instruktionerna för att ladda node-red-dashboard.
Nu kan vi spela lite och visa hur MQTT fungerar och drivs av Node-Red. Detta finns inte i videon men är nyckeln till detta projekt. Du kan antingen följa mina instruktioner och/eller importera flöden från den bifogade filen NRtest1.txt.
Lägg först till en ingångsinjektionsnod och en utgående mqtt -nod och länka dem ihop.
Dubbelklicka på injiceringsnoden (som ursprungligen är märkt med tidsstämpel). I avsnittet Nyttolast använder du twiddly för att ändra till sträng och ange: Hej från mig. Lämna ämnet tomt eftersom vi kan ange detta i MQTT -noden. Klicka på Klar
Dubbelklicka nu på MQTT -noden. Klicka på pennikonen till höger om serveravsnittet. Detta öppnar en ny dialogruta. Ange: localhost i avsnittet Server. Klicka på Lägg till. Nu, tillbaka i noden Redigera mqtt ut, ange vårt ämne i avsnittet Ämne: hej/värld. Ställ in QoS på 1. Klicka på Klar. Klicka nu på Distribuera. Du bör se en grön fläck och "ansluten" under mqtt -noden.
Lägg nu till ytterligare två noder - input mqtt och output debug, och anslut dessa tillsammans. Dubbelklicka nu på ingången mqtt -nod och ange hej/värld i ämnesavsnittet. Servern bör redan visa localhost: 1883. Ställ in QoS på 1. Klicka på Klar. Klicka sedan på Distribuera och klicka på fliken felsökning i den högra rutan. Klicka nu på den grå rutan till vänster om injektionsnoden "Hej från mig". Detta skickar text nyttolast till MQTT -mäklaren med ämnet hej/värld. Mäklaren vet att mqtt -ingångsnoden har prenumererat på samma ämne och så vidarebefordrar nyttolasten. Inmatningsnoden mqtt skickar sedan detta till felsökningsfliken (RHS) och texten "Hej från mig" ska visas.
Detta markerar en annan ruta eftersom vi har Node Red som pratar med vår MQTT -mäklare. Observera att Node Red bara är en klient till mäklaren - precis som Sonoff -enheterna kommer vi att ansluta senare. Det möjliggör dock sofistikerad automatisering och ger ett bra användargränssnitt.
Nu kan vi göra ett par små förändringar och ställa in flöden för vår Sonoff -switch.
Så ta bort ingångsinjektionsnoden (klicka för att markera och tryck på raderingsknappen). Lägg nu till en switch från instrumentpanelen och anslut den till mqtt -utgången. Dubbelklicka på omkopplaren. Klicka på pennan till höger om gruppen. Ange Namn: Light. Klicka sedan på pennan till höger om Tab och gå in i avsnittet Namn: Lounge. Klicka på Lägg till/uppdatera och lägg till/uppdatera igen. Nu, tillbaka i redigeringsomkopplaren, ställ in och på nyttolast. Använd twidlys för att välja sträng och ange PÅ för på nyttolast och AV för nyttolast AV. Klicka på Klar
Gå nu till var och en av mqtt -noder och ändra ämnet till cmnd/sonoff/POWER. Om du kopierar och klistrar, kontrollera att du inte har inkluderat ett mellanslag i slutet. Detta är ett annat ämne och fungerar inte med Sonoff. Det kan ta någon timme att hitta ett lösenord - tro mig! Jag gick också till instrumentpanelen> Tema och valde: Dark. Klicka på Distribuera och välj felsökningsfliken.
Öppna nu en ny webbläsarsession i ett nytt fönster och storleksanpassa den som en mobiltelefon över Node Red -sessionen. Ange adressen: din Pi IP -adress: 1880/ui/#/0 dvs något liknande 192.168.0.8:1880/ui/#/0. Du bör se en skärm med Lounge och Light och switch. Klicka på strömbrytaren på och sedan av. Felsökningsfönstret ska visa PÅ och AV nyttolast. Om du vill kan du också logga in via en mobil också. Observera att omkopplarpositionen är synkroniserad. Det spelar ingen roll att vår Sonoff ännu inte är ansluten. När det är det, genom att prenumerera på ämnet, kommer det att hämta meddelandet/nyttolasten och agera på det.
Ett sista lilla steg är att få Node Red att starta automatiskt efter att Pi startar upp.
Node Red har en guide på:
Men de filer som behövs är redan laddade så ingen installation krävs.
För att sedan aktivera Node-RED att köra automatiskt vid varje start och vid kraschar ange (öppna PuTTY-session):
sudo systemctl aktivera nodered.service
Om du någonsin behöver inaktivera detta skriv:
sudo systemctl inaktivera nodered.service
Stäng nu av pi med sudo -avstängning nu och ta bort strömmen.
Detta har nu vår Pi låst och laddad redo för handling. Vi har vår PC/mobiltelefon ansluten till Node Red och detta talar till vår MQTT -server. Detta har varit en lång resa och värt en stor klapp på axeln. Bra gjort. Jag hittade nästa, Arduino -bit, en hel del enklare!
Steg 5: Konfigurera Arduino -systemet för omprogrammering av Sonoff -enheter
All information för att göra detta finns på Sonoff-Tasmota GitHub. Den enda delen jag hade svårt med var ämnestexten - men jag har listigt fått dig att ange detta redan!
Gå till
Du hittar installationsinstruktionerna på fliken Wiki i avsnittet uppladdningsverktyg:
Istället för att gå igenom varje steg kommer jag bara att notera viktiga aspekter som jag kände var viktiga eller fastnade för.
Instruktionerna är bra men kräver noggrann uppmärksamhet på detaljer. Jag blev snubblad av att det fanns ett behov av en ESP8266 -mapp i en mapp som fanns i en annan mapp som heter ESP8266 och därmed missade två nivåer.
Jag följde rekommendationen för en helt separat Arduino -installation. Jag skapade en ny mapp som heter 'ArduinoSonoff' som är separat från min befintliga Arduino -mapp. Installationen är ganska avancerad och därför är det en mycket bra idé att hålla den åtskild. Om detta är din första Arduino -installation, se till att du installerar den en andra gång i en 'Arduino' eller annan mapp för annat Arduino -arbete, inklusive arbete på ESP8266s.
Ladda ner den senaste Arduino IDE från https://www.arduino.cc/en/Main/Software. Packa upp filen i din nya mapp.
Instruktionerna inkluderar nedladdning av Sonoff-Tasmoda-systemet från https://github.com/arendst/Sonoff-Tasmota huvudsida via: Klon eller Hämta> Ladda ner ZIP. Packa upp filen i din nya mapp.
Följ instruktionerna noggrant. Jag gjorde inte alternativet: Förbered dig för OTA -uppladdning. Vi kommer att lämna detta för en annan dag.
Starta nu Arduino IDE (dubbelklicka på arduino.exe). Ladda Sonoff-Tasmota-skissen via Arkiv> Skissbok> sonoff. Det är inte nödvändigt att göra några ändringar. Alla inställningar görs via en seriell anslutning efter att firmware har laddats. Dessa lagras i EEPROM. Därför kan firmware uppdateras och alla inställningar behållas. Det här är ganska smarta grejer. Du kan dock undvika behovet av ett par steg här genom att gå till filen user-config.h och ange ditt wifi-SSID och lösenord och MQTT_HOST (ersätt ‘domus1’– andra referens, med din Pi IP-adress). Senare kanske du vill ange en MQTT -användare och lösenord också. Innan du laddar ner kontrollerar du kortinställningarna under Verktyg. Dessa behöver ett par ändringar för att matcha kraven i Wiki. Klicka nu på kompilera (kryssikon). Det ska kompilera OK. Om det inte gör det eller om de nödvändiga kortinställningarna inte är tillgängliga, gå tillbaka och kontrollera varje steg i installationen.
Steg 6: Omprogrammering av en Sonoff -omkopplare
Vi är nu redo att ladda ner. I detta skede kan man antingen gå rakt fram och blinka en Sonoff -omkopplare eller så kan man först blinka en ESP8266 -modul. Jag gjorde det senare, delvis för att mina switchar ännu inte hade kommit (just kommit när jag skriver detta!) Men också som en försiktighetsåtgärd eftersom blinkningen av Sonoff -omkopplaren är ett enkelriktat steg eftersom den ursprungliga firmware inte är allmänt tillgänglig så långt som Jag är medveten. Jag har ett par NodeMCU -kort. Dessa är enkla att ansluta, med sin inbyggda USB till serieomvandlare. Men nodemcu -återställningsmetoden fungerar inte med detta system. Så lämna Verktyg> Återställ metod inställd på "ck". Gör den normala manuella blixtinställningen genom att hålla in blixtknappen (GPIO 0 till marken) medan du trycker på och släpper Reset (Återställ till mark). Jag är inte säker på om detta har en timeout eller kanske jag inte höll GPIO 0 tillräckligt länge men jag behövde flera försök, inklusive att göra detta medan Arduino IDE kompilerar!
Om du vill kontrollera svaren - reläutgången är D6 på NodeMCU -kort. På ESP12 är detta GPIO 12. LED -utgången är D7 (NodeMCU) eller GPIO 13 (ESP12).
Sonoff -omkopplare.
VARNING: Jag måste säga "anslut inte till elnätet under inga omständigheter där höljet är öppet". Observera att kretskortet (åtminstone på Sonoff Basic (strömbrytare) bara har "enkel isolering" -avstånd mellan lågspänningssektionen och elnätet. Så man bör behandla alla delar av Sonoff-kretsen som nätspänning. Tasmota GitHub visar anslutning av en temperatur- och luftfuktighetssensor till en Sonoff S20. Jag skulle inte göra detta på grund av isoleringsproblem. - så om du vill göra detta skaffa en ESP12- eller NodeMCU -modul och ställ in detta separat med en ordentlig dubbelisolerad eller jordad strömförsörjning.
Plug-in-omkopplaren Sonoff S20 är en bra utgångspunkt eftersom den inte behöver några nätkablar. Detta kan öppnas genom att ta bort en skruv (under säkerhetsförseglingen) och prisa höljet öppet. Bilden nedan visar var taggarna är. Att klämma fallet på dessa punkter hjälper.
USB seriell omvandlare
Min favoritomvandlare är FTDI -versionen. Detta har dock inte tillräcklig förmåga att tillgodose Sonoff 3.3v -behov. FTDI -specifikationen säger max 50ma. Det näst bästa alternativet är ett som använder CP2102 -chipet. Detta har dock en 100ma gräns som fortfarande inte räcker. Klart att många använder den här omvandlaren direkt men det finns också rapporter om att inläsning misslyckades. Jag skulle begränsa tiden det är anslutet eftersom det kommer att värma upp under belastningen. Gör detta på egen risk. Den idealiska lösningen är att ha en 3.3v regulator också, t.ex. en AMS1117 3.3. Jag skapade en liten PCB för att aktivera detta. Se Programmerare för Sonoff -enheter.
Min sekvens för programmering är följande:
Öppna Arduino IDE.
Under Verktyg kontrollera inställningarna som på Wiki.
Gör alla ändringar som krävs för user_config.h. Jag ställer in Wifi SSID och lösenord och MQTT -mäklaradress och tidszon/sommartid.
Klicka på "verifiera" för att kontrollera att det kompilerar OK.
Anslut USB -seriekonverteraren (på egen hand) till datorn. Notera portnumret.
Koppla nu bort USB -seriekabeln från datorn och anslut den till Sonoff -omkopplaren. Kontrollera att jord- och 3v3 -anslutningarna är rätt väg (marken är ansluten till markplanet på Sonoff -kretskortet).
Håll programmeraren så att kontakterna är säkra samtidigt som du trycker på knappen.
Anslut nu USB -kabeln till datorn, kontrollera att portnumret är korrekt (i Verktyg) och klicka sedan på ladda ner.
Jag fortsätter att hålla knappen under hela programmeringen eftersom jag inte vill störa anslutningarna.
När du är klar bör du se en skärm enligt nedan:
Sonoff behöver ett par bitar information för att ansluta till vårt system: det lokala nätverket wifi SSID och lösenord och Pi IP -adressen. Det finns flera sätt att göra detta, varav ett är att ändra filen config.ino som tidigare noterats. Om du har en smartphone kan du (efter att du har monterat omkopplaren) trycka på Sonoff-knappen 4 gånger ganska snabbt för att sätta den i ett webbserverläge. Lysdioden blinkar. Jag var tvungen att försöka flera gånger för att få det att fungera. Leta sedan efter det nya Sonoff -nätverket på din smartphone och anslut. En webbsida visas där du kan ställa in den data som krävs. Pi -IP -adressen går in i värdnamn. Jag ändrade också det andra SSID och lösenordet till något långt och i princip oanvändbart.
Alternativt kan den installeras via den seriella anslutningen strax efter laddning. Öppna Arduino Serial Monitor (under Verktyg).
Kommandon för att ange:
SSId dinWiFiSSID
Lösenord dittWiFiPassword
MqttHost 192.168.x.y (PI IP -adress)
Du kan också ange SSId1 och Password1 följt av något långt och oanvändbart för att effektivt inaktivera detta.
Nu kan du ruta upp Sonoff-omkopplaren, öppna Node-Red och Node-red-instrumentpanelen och klicka på switch-knappen och titta på felsökningsfliken som nu ska innehålla svaren från Sonoff. Så vi har ett annat stort steg uppnått - vår första switch växlar från en PC/smartphone.
Hittills har vi inte nämnt säkerhet. Det finns möjlighet att använda krypterad kommunikation. Detta är ganska komplext att ställa in och förmodligen mer lämpligt där en molnbaserad mäklare används. Det finns också möjlighet att lägga till användarnamn och lösenord för alla anslutna enheter och tillåta anonyma användare. Detta är ganska enkelt att konfigurera. Och så nu till säkerhet.
Steg 7: Säkerhet
MQTT tillåter användarnamn och lösenord för varje klient. Detta är enkelt att installera. Det är förmodligen lättare att först byta namn på varje enhet och sedan ställa in deras användarnamn och lösenord. Detta kan göras via MQTT-kommandon, och Node-Red är förmodligen det enklaste sättet att skicka dessa. Besluta först om en namnkonvention. Ett alternativ är att basera namn på plats och funktion. Då kommer du att vilja spela in namnet (ämne) användarnamn och lösenord tillsammans med fallet -ämnet. Observera att det också finns ett "återställningsalternativ" för att återställa Sonoff -inställningarna till originalnedladdning (se Wiki -användning> Knappfunktionalitet).
Slå på pi och öppna efter några sekunder en webbläsare till Node-Red (IP-adress: 1880).
I Node-Red ställer du in en injiceringsnod och länkar detta till en mqtt-utmatning och ställer in mqtt-servern till localhost. Lämna ämne, användare och lösenord tomma eftersom vi kommer att ställa in dessa i injektionsnoden. Ställ också in en mqtt -ingångsnod och anslut den till en felsökningsnod så att vi kan se svaren. Ställ in mqtt -inmatningsnotan till localhost (bör redan vara inställd) och ange+/+/+för ämnet så att det fångar all trafik.
Ange följande sekvens av inställningar i injektionsnoden.
Kontrollera först anslutningen med
Ämne: cmnd/sonoff/Status
Meddelande: 6
klicka på "Injicera en gång vid start". Distribuera. Vi borde se felsökning inklusive 7 rader med data från stat/sonoff/STATUS6
Ange ämne: cmnd/sonoff/ämne och meddelande: loungelight. Distribuera. Detta ändrar switchnamnet från sonoff till loungelight
Felsökningsfliken ska visa att enheten startas om med sitt nya namn/ämne
Ämne: cmnd/loungelight/MqttUser
Meddelande: loungelight
Klicka på distribuera. En felsökning bör ses från stat/loungelight/RESULT med {"MtqqUser": "loungelight"}
Ämne: cmnd/loungelight/MqttPassword
Meddelande: loungelightPW (observera vara mer fantasifull än detta!)
Rensa felsökningsfliken och distribuera.
Ett svar bör ses från stat/loungelight/RESULT med {"MqttPassword": "loungelightPW"}
Ange nu NodeRed och NodeRedPW som användarnamn och lösenord i mqtt out -noden. Detta sker via serverpennikonen och säkerhetsfliken i fönstret som öppnas. Detta kopieras automatiskt över till de andra MQTT -noder.
Kolla igen med
Ämne: cmnd/loungelight/Status och meddelande: 6. Distribuera.
Och att svaret skickas.
Så vid det här laget har vi döpt om vår Sonof -enhet så att den lyssnar på cmnd/loungelight/…… ämnen och loggar in på MQTT -avdelningen med användarnamn loungelight och lösenord loungelightPW. Vi har också angett ett användarnamn och lösenord för Node-Red.
Därefter måste vi berätta för mygg -MQTT -servern att endast acceptera klienter med användarnamn och att lista användarnamn och lösenord som ska accepteras.
Förfarandet är:
- Sluta mygga
- Skapa en egen konfigurationsfil
- Redigera konfigurationsfil
- Skapa lösenordsfil
- Lägg till användare/lösenord.
Så logga in med en ny PuTTY -session och kör igenom följande kommandon:
sudo /etc/init.d/mosquitto stoppa
cd /etc/mosquitto/conf.d/
sudo nano mosquitto.conf Detta startar redigeraren.
Lägg till rader:
allow_anonymous false
password_file /etc/mosquitto/conf.d/passwd
require_certificate false
Spara och avsluta (Ctrl+X), Y, ange.
sudo touch passwd Detta skapar en lösenordsfil och följande instruktioner lägger till namn och lösenord.
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 för omstart
Observera att när du lägger till en ny enhet måste du antingen ange användaren och lösenordet via serieporten och lägga till dessa i lösenordsfilen eller tillfälligt ändra myggkonfigurationsfilen och kommentera (lägg till # i början av raden) raderna "allow_anonymous false "och" password_file /etc/mosquitto/conf.d/passwd "och återställ sedan dessa när detaljerna har skickats till enheten och lagts till i lösenordsfilen enligt ovan.
Vi har ändrat sonoff -namnet till loungelight och uppdaterar därför mqtt -utmatningsnoden (ansluten till switch) för att använda ämnet cmnd/loungelight/POWER.
Klicka på Distribuera och kontrollera mqtt -noder som visar 'ansluten'.
Försök sedan med omkopplarknappen och leta efter felsökningen som visar Sonoff -omkopplaren som svarar. Du kommer att märka att enheten visar ändringen med ett ämne: stat/loungelight/POWER. Så ändra nu ingångsnoden som var inställd på cmnd/sonoff/POWER till stat/loungelight/POWER. Vi kan använda denna täcka ett gap i vår funktionalitet. Systemet som det ursprungligen installerades synkroniseras med alla inloggade användare men synkroniseras inte med switchändringar som görs genom att trycka på knappen på Sonoff -omkopplaren. Så anslut nu utgången från ingångsnoden stat/loungelight/POWER mqtt till switchingången (LHS). Dubbelklicka nu på omkopplaren och avmarkera "om meddelandet kommer in vid inmatning, gå vidare till utdata". Detta ger några nya alternativ - välj "switch -ikonen visar ingångens tillstånd". Distribuera. Så nu har vi en bra återkopplingsslinga. Instrumentbrädans switchläge ändras alltid när Sonoff -omkopplaren ändras, oavsett var ändringen initierades.
Så vi har nu ett säkert, fristående hemautomatiseringssystem igång och redo för expansion till vad du än vill att det ska göra. I nästa avsnitt kommer jag att täcka några av mina experiment hittills och utmaningar jag planerar att ta itu med.
Steg 8: Inledande steg för expansion
Jag har en annan Instructable Home Automation Sonoff-Tasmota Sensors LEDs Development Board som visar några av de ytterligare funktionerna i Sonoff-Tasmota firmware:
Temperatur- och luftfuktighetsmätning
Inträngningsdetektering (switch ingång)
IR -fjärrkontroll (för TV -apparater etc)
LED -strängar - både RGB och NeoPixel (individuellt adresserbara)
I2C -sensorer
För ovanstående använder jag en ESP12F och ett anpassat kretskort. En NodeMCU och brödbräda kan lika gärna användas. Detta möjliggör dessa ytterligare funktioner utan att anslutas till en Sonoff -enhet, och är därför ett mycket säkrare tillvägagångssätt. Med temperaturinmatningen har jag kunnat slutföra min elektriska filtautomatisering.
Musik och internetradio kan enkelt läggas till. Detta öppnar alternativ för att få specifika stationer eller album att visas vid bestämda tider eller kanske som svar på att en besökare (telefon) upptäcks. Den här tillhörande instruerbara är på högkvalitativ musikspelare och internetradio med smarttelefonkontroll. Eftersom detta också drivs av Node-RED borde det till och med vara möjligt att ha mer än ett ljudsystem och använda MQTT-kommunikation för att driva dem.
Jag har också utforskat Node-Red, inklusive att skicka e-post och göra röstvarningar. Det finns också potential för systemet att upptäcka när du är in/ut - genom att pinga din mobiltelefons IP -adress. Node -Red kan också komma åt väder och nyheter - så att man kan lägga till information och automatisera.
Det finns några knep att lära sig - men dessa blir helt enkelt andra gången.
En annan väg är att lägga till en skärm till pi för att visa instrumentpanelen. Detta är "work in progress" - eller med andra ord är jag inte alltför glad. Displayen jag fick är svår att rotera till porträttläge och Chromium -webbläsaren är smärtsamt långsam. Ett alternativ skulle vara att hämta en gammal surfplatta på ebay och använda den. Jag kan försöka med en Pi 2 och se om det ger tillräckligt med förbättringar (modell B används för denna utveckling).
Jag hoppas att det här kommer igång och att din fantasi surrar. Den potentiella omfattningen är enorm. Man kan till och med ändra Sonoff -koden för andra sensorer om det behövs.
Sammantaget har jag varit förvånad över vad detta system kan göra. Mitt ursprungliga mål var att bara köra en switch från en smartphone på ett pålitligt sätt via ett fristående system. Jag hade visioner om att behöva hantera servrar och klienter och skriva html för ett användargränssnitt. Där detta hamnade ligger långt före detta, med större säkerhet, utmärkt tillförlitlighet, fantastiskt användargränssnitt, dra och släpp -programmering och enorm potential för expansion. Och allt detta med mycket mindre ansträngning.
Mikrofon
Steg 9: Tillägg - Ladda från Raspbian Stretch Lite
Detta alternativ undviker bloatware som följer med den fullständiga Raspbian Stretch -versionen. Det mesta av detta kommer inte att behövas när du använder en Pi för hemautomation. Node-Red måste dock installeras.
Fortsätt som i steg 1 men använd Raspbian Stretch Lite istället för Raspbian Stretch.
Gör istället för steg 2:
sudo apt -y installera npm
npm -v ska returnera: 1.4.21 eller senare
sudo npm installera -g n
sudo n 8.9.0
Vi kan nu använda nodpakethanteraren för att installera Node-Red:
sudo npm installera nod-röd --global-osäker-perm
Detta kommer att ge ett par felmeddelanden på grund av en felaktig adress. Systemet gör dock en "källkompilering" för att rätta till detta problem. Om du upprepar instruktionen ovan (inte nödvändigt) uppstår inte felen.
Vi har nu Node-Red och dess stödpaket installerade och kan gå vidare till steg 3 och ladda mygg.
Tvåa i den trådlösa tävlingen