Taula de continguts:

Potent sistema domòtic autònom: Pi, Sonoff, ESP8266 i Node-Red: 9 passos (amb imatges)
Potent sistema domòtic autònom: Pi, Sonoff, ESP8266 i Node-Red: 9 passos (amb imatges)

Vídeo: Potent sistema domòtic autònom: Pi, Sonoff, ESP8266 i Node-Red: 9 passos (amb imatges)

Vídeo: Potent sistema domòtic autònom: Pi, Sonoff, ESP8266 i Node-Red: 9 passos (amb imatges)
Vídeo: home assistant control so many relay! 2024, Desembre
Anonim
Potent sistema domòtic autònom: Pi, Sonoff, ESP8266 i Node-Red
Potent sistema domòtic autònom: Pi, Sonoff, ESP8266 i Node-Red

Aquesta guia us permetrà accedir a la primera base on podeu encendre / apagar un llum o un aparell mitjançant qualsevol dispositiu que es pugui connectar a la vostra xarxa local i amb una gran interfície web personalitzable. L’abast de les funcions d’extensió / addició és ampli, inclòs l’enviament de correus electrònics, missatges de twitter, sensors de lectura (per exemple, temperatura). Podeu establir regles fàcilment, per exemple. - Si la temperatura és inferior a 15 ° C a les 23:00, enceneu la manta elèctrica durant 30 minuts. El sistema utilitza el protocol MQTT amb TCP que és considerablement més fiable que UDP, que és sorprenentment utilitzat per alguns dispositius domòtics comercials. Un cop feta la dura tasca de configuració del sistema, descrita aquí, la diversió pot començar. Node Red proporciona una fantàstica interfície d'usuari que és intuïtiva, ràpida i fàcil de configurar i proporciona una capacitat increïble.

El resultat és un potent sistema domòtic que està totalment sota el propi control i que es troba completament en una xarxa local. Molts dels sistemes que es mostren a Instructables funcionen amb servidors basats en el núvol i, per tant, presenten un risc de seguretat i poden requerir subscripció. Són més fàcils de configurar, però tenen un risc de seguretat més alt i un cost potencialment més alt. He d'afegir que es pot configurar una VPN (xarxa privada virtual) al Pi per habilitar la connexió segura a la xarxa / sistema domèstic si fos útil l'accés des de fora (Google Pi OpenVPN per obtenir instruccions).

Aquest sistema requereix reprogramar dispositius Sonoff amb un gran sistema de codi obert anomenat Sonoff-Tasmoda. Això es pot fer mitjançant una configuració especial d'Arduino i un convertidor USB a sèrie. Els dispositius Sonoff utilitzen el xip Wi-Fi ESP8266 perquè pugueu crear els vostres propis dispositius mitjançant mòduls ESP8266 o ajustar-los a altres elements per proporcionar connectivitat sense fils.

La tasca més important és configurar un Raspberry Pi com a hub. Funciona amb el broker (o servidor) MQTT que gestiona la comunicació amb els dispositius connectats. El Pi també executa un sistema anomenat Node-Red que pot interceptar missatges i dades i enviar ordres, com ara quan s’encén la manta elèctrica. Node-Red també proporciona una interfície per publicar la pàgina web a la qual podeu iniciar la sessió mitjançant un telèfon intel·ligent / tauleta / PC / portàtil, per veure què passa i permetre el canvi manual de llums, etc.

El meu objectiu amb aquest instructiu és donar cada pas amb prou detall perquè un novell pugui fer funcionar el sistema.

Els passos següents són:

  • Carregueu un Pi amb Rasbian Stretch
  • Actualitzeu i afegiu funcions a Node-Red
  • Instal·leu l'agent Mosquitto MQTT
  • Configureu l'entorn Arduino per carregar el firmware de Sonoff-Tasmota
  • Torneu a programar un commutador de Sonoff
  • Configureu la interfície Node-Red
  • Prova que tot funcioni.

Maquinari que necessitareu:

  • Raspberry Pi i font d'alimentació (i teclat i monitor per a la configuració inicial) (model B utilitzat aquí)
  • Interruptor Sonoff
  • Convertidor sèrie USB
  • Opcional: placa de desenvolupament ESP com ara el NodeMCU.

La meva experiència amb el Raspberry Pi és que la configuració de qualsevol cosa sembla implicar molt més dolor del que mai es podria imaginar possible, amb coses que no funcionen o que s’enganxen en algun pas trivial on l’explicació podria haver estat millor. Els fòrums no sempre reben consells que funcionen. Vaig trobar diverses rutes que simplement no funcionaven per una o altra raó. Això ha costat 3 dies. Després ho vaig netejar tot i vaig començar de nou i vaig acabar en menys d’un (llarg) dia. Això, però, utilitzava la vella Raspian Jessie. Després d'això, vaig trobar una manera d'utilitzar la versió actual i recentment llançada (Stretch) i ho vaig tornar a fer tot. Aquesta guia permet copiar i enganxar instruccions al Pi. Per tant, hauríeu d’acabar en poques hores. De totes maneres, espero que això us faci accelerar la corba d’aprenentatge i amb molt menys dolor. Creieu-me que val la pena pel resultat final.

Pas 1: carregueu un Pi amb Rasbian Stretch

Això hauria de ser força senzill. Comenceu amb una targeta SD de 8 GB o 16 GB. Descarregueu la versió més recent de:

www.raspberrypi.org/downloads/

El fil principal aquí suposa que es carrega la versió completa. Tanmateix, podeu utilitzar la versió simplificada per estalviar espai. Si utilitzeu Raspbian Stretch Lite, seguiu aquest pas i aneu al pas 9 al final.

Si descomprimiu el fitxer descarregat, apareix una carpeta amb el fitxer.img. Es recomana 7Zip per a Windows (i The Unarchiver Mac). La imatge s’ha de gravar a la targeta SD, però s’ha d’utilitzar un programa especial, ja que el sistema de fitxers no és compatible amb Windows. El programari recomanat es diu Etcher i es pot descarregar des de:

etcher.io/

Les instruccions d’Etcher es troben al seu lloc web i difícilment poden ser més senzilles. Seleccioneu la imatge i la unitat i feu clic a Flash.

Ara, amb la nostra targeta SD llampada, es pot fer funcionar el Pi.

Si coneixeu l’adreça IP que utilitza el vostre Pi o esteu encantat de trobar-la iniciant la sessió al vostre encaminador, podeu evitar la necessitat de teclat i monitor i utilitzar SSH immediatament. Només cal afegir un fitxer en blanc anomenat SSH a la targeta SD, inserir-lo, connectar-lo a Ethernet i engegar-lo. En cas contrari, seguiu la guia següent.

Connecteu el Pi a Internet, pantalla, ratolí i teclat i connecteu-vos a l’energia. El primer que farem és habilitar SSH perquè puguem fer la majoria de la configuració des de la comoditat en un PC. Per descomptat, es pot fer directament, però ajuda molt a poder seguir aquesta guia al mateix dispositiu que condueix el Pi i utilitzar copiar i enganxar per a la majoria de les instruccions. També en el meu cas la meva estació de treball per a PC és agradable i còmoda, però no prou gran per a un pi.

Hi ha una guia per a una bona part del treball en un vídeo de YouTube. Aquí vaig començar. Podeu executar el vídeo seguint aquestes instruccions. No obstant això, quan estava executant el procés de nou mentre escrivia això, em va resultar més fàcil seguir les instruccions aquí. Hi ha algunes desviacions significatives. També hi ha algunes seccions on he aconsellat seguir el vídeo en lloc d’enumerar els passos aquí. Tanmateix, recomanaria mirar-lo per obtenir una comprensió de MQTT, Node-Red i el procés ampli de configuració. El vídeo té una durada de 38 minuts, així que et sentiràs còmode. El vídeo comença mostrant què pot fer Node Red i, a continuació, cobreix la instal·lació i configuració de Pi, seguit de l’actualització de Node Red i, finalment, d’instal·lar Mosquitto. Temps clau per si voleu tornar a una secció:

00:00 Introducció al vídeo

03:00 Demostració de Node Red

14:14 Importació d’elements del tauler a Node Red

21:05 Configuració inicial Pi, inclòs SSH

23:35 Instal·lació del codi de suport de Node Red

27:00 Introducció a MQTT

29:12 Instal·lació de Mosquitto (MQTT) (la nota només funciona per a Raspian Jessie)

33:00 Exemples de Node Red

Llistaré les ordres en negreta cursiva (en lloc d’utilitzar “”). Aquest format s’ignora quan els copieu i enganxeu al Pi.

La introducció a Node Red us donarà una idea del que pot fer el sistema i us proporcionarà una imatge d’on anirem a parar.

El vídeo de YouTube es troba a:

Seguiu el procediment d'instal·lació de 21:05 a 23:35. Tingueu en compte que l’inici de sessió per defecte és usuari: pi i contrasenya: raspberry. Abans de reiniciar, cerqueu l'adreça IP del pi. Feu clic a la icona de "fletxa amunt + avall" a la barra superior de l'escriptori o introduïu la següent instrucció a la finestra del terminal / terminal:

sudo adreça ifconfig

A continuació, observeu l'adreça IP després de: inet addr:. Tindrà la forma 192.168.x.y

Tingueu en compte aquesta adreça i reinicieu (introduïu: sudo shutdown –r ara)

La clau en aquest punt és que SSH s'ha habilitat i es pot configurar un enllaç al Pi des d'un PC (Mac i Linux inclouen interfícies SSH). Un bon programa per fer-ho és una descàrrega gratuïta anomenada PuTTY que també es pot utilitzar com a interfície sèrie i que pot fer Telnet. Putty està disponible a:

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

Descarregueu i instal·leu PuTTY.

Ara, amb el reinici del Pi, inicieu PuTTY i introduïu l'adreça IP assenyalada anteriorment. Vegeu l'exemple següent:

Ara feu clic a Obre

Després d'iniciar la sessió com: introduïu pi

A continuació, introduïu la vostra contrasenya.

Ara seguiu les instruccions aquí i opcionalment inicieu el vídeo a partir de les 23:35. En la majoria dels casos, podeu copiar i enganxar. Ressalteu el text i utilitzeu ctrl + C per copiar. A continuació, feu clic amb el botó dret a MUNTATGE per enganxar. De vegades, el text no apareix immediatament, així que espereu uns segons. Si hi introduïu dues vegades, feu servir retrocés per suprimir la segona entrada. Premeu Intro per executar cada instrucció.

sudo raspi-update

No he trobat una ordre i he ignorat aquesta i la següent instrucció d'apagada / reinici:

sudo shutdown -r ara

sudo apt-get -y update

sudo apt-get -y upgrade

Això triga una estona …

sudo apt-get autoremove

sudo apt-get -y update

sudo shutdown -r ara

En aquest moment tenim el sistema operatiu Pi carregat i actualitzat, a punt per al següent pas.

Pas 2: actualitzeu i afegiu funcions a Node-Red

La connexió PuTTY s'haurà perdut en reiniciar-se al final del pas anterior. Tanqueu PuTTY i després d’esperar a que s’iniciï el Pi, torneu a iniciar la sessió com abans.

He passat a un mètode més senzill i fiable per carregar Node-Red, seguint l'enfocament a https://nodered.org/docs/hardware/raspberrypi. Utilitza un script i instal·larà o actualitzarà Node-Red, de manera que l'enfocament és el mateix que funciona a partir de les versions completes o simplificades de Raspbian Stretch. Així que introduïu:

bash <(curl -sL

Introduïu Y quan se us demani (dues vegades). Aquest script també carrega els fitxers necessaris per activar l'inici automàtic de Node-Red.

Per tant, en aquest moment tenim els nostres pi carregats i actualitzats i amb les actualitzacions necessàries per a Node Red. No és perjudicial fer un reinici abans de la següent etapa.

sudo shutdown -r ara

Pas 3: Instal·lació de Mosquitto MQTT

Si encara no ho heu fet, val la pena veure la presentació del vídeo a MQTT al vídeo a partir de les 27:00.

Aquí és on hem d’agafar un camí diferent. El procediment descrit al vídeo només funciona per a la versió anterior de Raspian, Jessie. Hi ha una discussió sobre el lloc dels mosquits, però no es mostra cap resultat clar i, per tant, es mantindrà en una ruta més senzilla i segura.

Per tant, inicieu sessió amb PuTTY i introduïu el següent:

sudo apt-get update

sudo apt-get install mosquitto mosquitto-clients

Y

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitto start

Aquestes dues darreres instruccions paren i comencen a mosquitear i demostren que el nostre corredor MQTT funciona.

Per fer una prova ràpida, obriu dues sessions més de PUTICY i inicieu sessió a cadascuna.

Ja sabreu que MQTT funciona al dispositiu amb les dades necessàries per subscriure's a un "tema". El corredor enviarà qualsevol dada amb el mateix "tema". A continuació, el dispositiu que vulgui enviar dades / instruccions ho publica al corredor mitjançant el mateix "tema".

Per tant, en una sessió de PUTCIA introduïu:

mosquitto_sub -d -t hola / món

Aquesta és una instrucció per subscriure’s al tema: hola / món.

A l'altre introduïu:

mosquitto_pub -d -t hola / world -m "Hola des de la finestra 2 del terminal!"

Aquesta és una instrucció de publicació amb el mateix tema amb un missatge. El text: "Hola des de la finestra 2 del terminal!" ara hauria d'aparèixer a l'altre terminal.

Ben fet arribar fins aquí. Ara tenim el Pi carregat i actualitzat amb les actualitzacions necessàries per a Node-Red i amb el corredor de mosquits MQTT instal·lat i provat. A partir d’ara la vida es fa més fàcil i divertida. Tanqueu les dues sessions PuTTY utilitzades per a la prova MQTT.

Pas 4: Configuració de la interfície vermella del node

Primer hem d’iniciar Node Red. Introduïu la instrucció:

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

Espereu que s’executi i veureu el text ‘Fluxos iniciats’.

Ara obriu un navegador, faig servir Chrome i introdueixo l’adreça IP pi indicada anteriorment seguida de: 1880, és a dir, una cosa així com 192.168.0.8:1880

Ara hauríeu de veure la pàgina de programació Node Red de la següent manera:

Ara podeu seguir els exemples de Node Red a partir de les 33:00 o passar directament a una petita configuració addicional i carregar el primer flux que mostrarà l'enllaç a MQTT i estareu a punt per conduir el nostre commutador.

La configuració addicional necessària és afegir els elements del tauler que habilitin una interfície web.

Es mostren al vídeo a les 14:14.

Seguiu les instruccions per carregar node-red-dashboard.

Ara podem jugar una mica i mostrar MQTT treballant i sent conduït per Node-Red. Això no apareix al vídeo, però és clau per a aquest projecte. Podeu seguir les meves instruccions i / o importar els fluxos del fitxer NRtest1.txt adjunt.

Primer afegiu un node d'injecció d'entrada i un node mqtt de sortida i enllaceu-los.

Feu doble clic al node d'injecció (que inicialment té l'etiqueta de marca de temps). A la secció Càrrega útil, utilitzeu el doble per canviar a cadena i introduïu: Hola a mi. Deixeu el tema en blanc ja que podem introduir-lo al node MQTT. Feu clic a Fet

Ara feu doble clic al node MQTT. Feu clic a la icona de llapis a la dreta de la secció Servidor. Això obre un diàleg nou. Introduïu: localhost a la secció Servidor. Feu clic a Afegeix. Ara, de nou al node Edita mqtt out, introduïu el nostre tema a la secció Tema: hola / world. Establiu la QoS a 1. Feu clic a Fet. Ara feu clic a Desplega. Hauríeu de veure un blob verd i "connectat" a sota del node mqtt.

Ara afegiu dos nodes més: entrada mqtt i depuració de sortida i connecteu-los junts. Ara feu doble clic al node mqtt d’entrada i introduïu hello / world a la secció de tema. El servidor ja hauria de mostrar localhost: 1883. Establiu la QoS a 1. Feu clic a Fet. A continuació, feu clic a Desplega i feu clic a la pestanya de depuració al tauler de la dreta. Ara feu clic al quadrat gris que hi ha a l'esquerra del node d'injecció "Hola a mi". Això envia la càrrega útil del text al corredor MQTT amb el tema hola / world. El corredor sap que el node d’entrada mqtt s’ha subscrit al mateix tema i, per tant, reenvia la càrrega útil. El node d'entrada mqtt l'envia a la pestanya de depuració (RHS) i hauria d'aparèixer el text "Hello from me".

Això marca una altra caixa, ja que tenim Node Red parlant amb el nostre agent de MQTT. Tingueu en compte que Node Red és només un client del corredor, com ara els dispositius Sonoff que connectarem més endavant. Tanmateix, permet una automatització sofisticada i proporciona una gran interfície d'usuari.

Ara podem fer un parell de petits canvis i configurar els fluxos del nostre commutador Sonoff.

Per tant, suprimiu el node d'injecció d'entrada (feu clic per ressaltar i premeu la tecla Supr). Ara afegiu un commutador des de la secció del tauler i connecteu-lo a la sortida mqtt. Interruptor de doble clic. Feu clic al llapis a la dreta de Grup. Introduïu Nom: Llum. A continuació, feu clic al llapis situat a la dreta de la pestanya i entreu a la secció Nom: Saló. Feu clic a Afegeix / Actualitza i Afegeix / Actualitza de nou. Ara, de nou al node del commutador Edita, activeu i desactiveu les càrregues útils. Utilitzeu les twidlys per seleccionar la cadena i introduïu ON per a la càrrega útil activada i DESACTIVADA per a la càrrega útil OFF. Feu clic a Fet

Ara aneu a cadascun dels nodes mqtt i canvieu el tema a cmnd / sonoff / POWER. Si copieu i enganxeu, comproveu que no heu inclòs cap espai al final. Aquest és un tema diferent i no funcionarà amb el Sonoff. Trobar un espai perdut pot trigar una hora més o menys; creieu-me! També vaig anar al tauler de control> Tema i vaig seleccionar: Fosc. Feu clic a Desplega i seleccioneu la pestanya de depuració.

Ara obriu una nova sessió del navegador en una finestra nova i modifiqueu-la com un telèfon mòbil a la sessió Node Red. Introduïu l'adreça: la vostra adreça IP Pi: 1880 / ui / # / 0, és a dir, una cosa així com 192.168.0.8:1880/ui/#/0. Hauríeu de veure una pantalla amb Lounge and Light i canviar. Feu clic a l'interruptor activat i desactivat. La finestra de depuració hauria de mostrar les càrregues útils ON i OFF. Ara, si ho desitgeu, també inicieu la sessió mitjançant un mòbil. Tingueu en compte que la posició del commutador està sincronitzada. No importa que el nostre Sonoff encara no estigui connectat. Quan ho sigui, subscrivint-se al tema, recollirà el missatge / càrrega útil i actuarà al respecte.

Un darrer petit pas és fer que Node Red s'iniciï automàticament després de l'arrencada del Pi.

Node Red té una guia a:

Tanmateix, els fitxers necessaris ja estan carregats, de manera que no cal instal·lar-los.

Per després habilitar Node-RED perquè s'executi automàticament a cada arrencada i després de bloquejar-se (obriu la sessió PuTTY):

sudo systemctl habilita nodered.service

Si mai heu de desactivar-ho, introduïu:

sudo systemctl desactivar nodered.service

Ara apagueu el pi amb apagat sudo ara i elimineu l'alimentació.

Ara el nostre Pi està bloquejat i carregat a punt per accionar. Tenim el nostre PC / telèfon mòbil connectat a Node Red i parlem amb el nostre servidor MQTT. Aquest ha estat un llarg recorregut i ha valgut la pena donar-li un cop d’esquena. Ben fet. Vaig trobar el següent bit Arduino molt més fàcil.

Pas 5: Configuració del sistema Arduino per reprogramar dispositius Sonoff

Tota la informació per fer-ho es troba al Sonoff-Tasmota GitHub. L'única part amb la qual he tingut dificultats ha estat el text del tema, però amb astúcia he aconseguit que ho introduïu.

Aneu a

Trobareu les instruccions de configuració a la pestanya Wiki a la secció Eines de càrrega:

En lloc de passar per tots els passos, només observaré aspectes clau que em semblaven importants o que em quedaven atrapats.

Les instruccions són bones, però necessiten una atenció detallada als detalls. Em va quedar atrapat per la necessitat d'una carpeta ESP8266 dins d'una carpeta que es trobava dins d'una altra carpeta anomenada ESP8266 i, per tant, vaig perdre dos nivells.

Vaig seguir la recomanació per a una configuració Arduino completament independent. Vaig crear una nova carpeta anomenada 'ArduinoSonoff' que és independent de la meva carpeta Arduino existent. La configuració és força avançada i, per tant, mantenir-la separada és una bona idea. Si aquesta és la vostra primera configuració d’Arduino, assegureu-vos d’instal·lar-la una segona vegada en una carpeta ‘Arduino’ o en una altra carpeta per a qualsevol altre treball d’Arduino, inclòs el treball en ESP8266s.

Descarregueu la versió més recent d'IDE Arduino des de https://www.arduino.cc/en/Main/Software. Descomprimiu el fitxer a la carpeta nova.

Les instruccions inclouen descarregar el sistema Sonoff-Tasmoda des de la pàgina principal de https://github.com/arendst/Sonoff-Tasmota a través de: Clona o Baixa> Baixa ZIP. Descomprimiu el fitxer a la carpeta nova.

Seguiu atentament les instruccions. No he fet la secció Opcional: Prepara't per a la pujada d'OTA. Ho deixarem per un altre dia.

Ara inicieu l'Arduino IDE (feu doble clic a arduino.exe). Carregueu l’esbós de Sonoff-Tasmota mitjançant Fitxer> Quadern de dibuixos> sonoff. No cal fer cap modificació. Tots els paràmetres es realitzen mitjançant una connexió en sèrie després de carregar el firmware. Aquests s'emmagatzemen a EEPROM. Per tant, el firmware es pot actualitzar i es poden conservar tots els paràmetres. Això és bastant intel·ligent. Tot i així, podeu evitar la necessitat de fer uns quants passos aquí si aneu al fitxer user-config.h i introduïu el vostre SSID i contrasenya wifi i MQTT_HOST (substituïu "domus1" - segona referència, amb la vostra adreça IP Pi). Més endavant, és possible que vulgueu introduir també un usuari i una contrasenya MQTT. Abans de descarregar-lo, consulteu la configuració del tauler a Eines. Aquests necessitaran un parell de canvis perquè coincideixin amb els requisits establerts a la Wiki. Ara feu clic a Compila (marca la icona). Hauria de compilar-se OK. Si no ho fa o si la configuració necessària del tauler no està disponible, torneu enrere i comproveu cada pas de la configuració.

Pas 6: Reprogramació d'un commutador de Sonoff

Ara estem a punt per descarregar-los. En aquesta etapa, es pot seguir recte i parpellejar un interruptor Sonoff o primer es pot intermitir un mòdul ESP8266. Vaig fer això últim, en part perquè els meus interruptors encara no havien arribat (acabava d’arribar quan escric això), però també per precaució, ja que el parpelleig de l’interruptor Sonoff és un pas únic, ja que el firmware original no està disponible públicament Estic al cas. Tinc un parell de taulers NodeMCU. Són fàcils de connectar, ja que tenen el convertidor USB a sèrie incorporat. Tanmateix, el mètode de restabliment nodemcu no funciona amb aquest sistema. Per tant, deixeu el mètode Eines> Restableix establert a "ck". Feu la configuració manual del flaix manual mantenint premut el botó de flaix (GPIO 0 a terra) mentre premeu i deixeu anar Reset (Restableix a terra). No estic segur de si té un temps d'espera o potser no he mantingut GPIO 0 baix durant el temps suficient, però he necessitat diversos intents, inclòs fer-ho mentre s'està compilant l'IDE Arduino.

Si voleu comprovar les respostes, la sortida del relé és D6 a les plaques NodeMCU. A l’ESP12 es tracta de GPIO 12. La sortida LED és D7 (NodeMCU) o GPIO 13 (ESP12).

Interruptor Sonoff.

ADVERTÈNCIA: He de dir "no connecteu-vos a la xarxa elèctrica en cap cas on el recinte estigui obert". Tingueu en compte que el PCB (com a mínim al Sonoff Basic (commutador en línia) només té distàncies d '"aïllament simple" entre la secció de baixa tensió i la xarxa elèctrica. Per tant, cal tractar qualsevol part del circuit Sonoff com a tensió de xarxa. Tasmota GitHub mostra la connexió d’un sensor de temperatura i humitat a un Sonoff S20. No ho faria per qüestions d’aïllament. Per tant, si voleu fer-ho, obteniu un mòdul ESP12 o NodeMCU i configureu-lo per separat amb un doble aïllat adequat. o alimentació a terra.

L’interruptor de connexió Sonoff S20 és un bon punt de partida ja que no necessita cap cablejat de xarxa. Es pot obrir traient un cargol (sota el segell de seguretat) i aprimant la caixa. La foto següent mostra on es troben les etiquetes. Apretar el cas en aquests punts ajuda.

Convertidor de sèrie USB

El meu convertidor preferit és la versió FTDI. Tanmateix, això no té la capacitat adequada per satisfer les necessitats de Sonoff 3.3v. L'especificació FTDI diu que el màxim és de 50 mA. La següent millor alternativa és utilitzar el xip CP2102. Tanmateix, això té un límit de 100 mA que encara no és suficient. És evident que molts fan servir aquest convertidor directament, però també hi ha informes de fallades de càrrega. Limitaria el temps que es connecta, ja que s’escalfarà sota la càrrega. Feu-ho sota el vostre propi risc. La solució ideal és tenir també un regulador de 3,3 V, p. una AMS1117 3.3. Vaig formar un petit PCB per permetre-ho. Consulteu Programador per a dispositius Sonoff.

La meva seqüència de programació és la següent:

Obriu l'IDE Arduino.

A Eines, comproveu que la configuració és la mateixa que al Wiki.

Feu les modificacions necessàries a user_config.h. He configurat el SSID i la contrasenya Wifi i l'adreça del corredor MQTT i els detalls de la zona horària / estiu.

Feu clic a "Verifica" per comprovar que es compila bé.

Connecteu el convertidor sèrie USB (tot sol) al PC. Tingueu en compte el número de port.

Ara desconnecteu el cable de sèrie USB del PC i connecteu-lo al commutador Sonoff. Comproveu que les connexions de terra i 3v3 siguin correctes (la terra està connectada al pla de terra del PCB Sonoff).

Mantingueu premut el programador perquè els contactes siguin segurs mentre també premeu el botó.

Ara connecteu el cable USB al PC, comproveu que el número de port sigui correcte (a Eines) i, a continuació, feu clic a descarregar.

Continuo mantenint premut el botó durant tota la programació perquè no vull molestar les connexions.

Quan hàgiu acabat, hauríeu de veure una pantalla com es mostra a continuació:

Imatge
Imatge

El Sonoff necessita un parell de bits d’informació per connectar-se al nostre sistema: el SSID i la contrasenya wifi de la xarxa local i l’adreça IP Pi. Hi ha diverses maneres de fer-ho, una de les quals és modificar el fitxer config.ino tal com es va assenyalar anteriorment. Si teniu un telèfon intel·ligent, podeu (després de tornar a muntar l’interruptor) prémer el botó Sonoff 4 vegades amb força rapidesa per posar-lo en mode servidor web. El LED parpellejarà. Vaig haver de provar diverses vegades perquè això funcionés. A continuació, al telèfon intel·ligent cerqueu la nova xarxa Sonoff i connecteu-vos. Apareixerà una pàgina web on podeu definir les dades necessàries. L'adreça IP Pi entra al nom d'amfitrió. També vaig canviar el segon SSID i la contrasenya per una cosa llarga i bàsicament inutilitzable.

Alternativament, es pot configurar mitjançant la connexió sèrie just després de carregar-la. Obriu Arduino Serial Monitor (a Eines).

Ordres per introduir:

SSId el teu WiFiSSID

Contrasenya la vostra contrasenya Wi-Fi

MqttHost 192.168.x.y (adreça IP PI)

També podeu introduir SSId1 i Password1 seguit d’alguna cosa llarga i inutilitzable per desactivar-la eficaçment.

Ara podeu configurar el commutador Sonoff, obrir el tauler Node-Red i el Node-red i fer clic al botó Switch i mirar la pestanya de depuració que ara hauria d'incloure les respostes del Sonoff. Així doncs, hem aconseguit un altre pas important: el nostre primer commutador es condueix des d’un PC / telèfon intel·ligent.

Fins ara no hem esmentat la seguretat. Hi ha la possibilitat d’utilitzar comunicacions xifrades. Això és bastant complex d’instal·lar i probablement sigui més adequat on s’utilitza un broker basat en el núvol. També hi ha l'opció d'afegir noms d'usuari i contrasenyes per a tots els dispositius connectats i no permetre usuaris anònims. Això és bastant senzill de configurar. I ara a Seguretat.

Pas 7: seguretat

MQTT permet noms d’usuari i contrasenyes per a cada client. Això és fàcil de configurar. Probablement sigui més fàcil canviar el nom de cada dispositiu i, a continuació, definir els seus noms d’usuari i contrasenya. Això es pot fer mitjançant ordres MQTT i Node-Red és probablement la forma més senzilla d’enviar-les. Primer decidiu una convenció de noms. Una opció és basar els noms en la ubicació i la funció. Aleshores voldreu enregistrar el nom d’usuari i la contrasenya del nom (tema) juntament amb el tema alternatiu. Tingueu en compte que també hi ha una "opció de restabliment" per restablir la configuració de Sonoff a la descàrrega original (vegeu Ús del wiki> Funcionalitat del botó).

Engegueu el pi i, al cap d’uns segons, obriu el navegador a Node-Red (adreça IP: 1880).

A Node-Red, configureu un node d'injecció i enllaceu-lo amb una sortida mqtt i configureu el servidor mqtt a localhost. Deixeu el tema, l'usuari i la contrasenya en blanc, ja que els definirem al node d'injecció. També configureu un node d’entrada mqtt i connecteu-lo a un node de depuració perquè puguem veure les respostes. Establiu la nota d'entrada mqtt a localhost (ja s'hauria de definir) i introduïu + / + / + per al tema perquè atrapi tot el trànsit.

Introduïu la següent seqüència de paràmetres al node d'injecció.

Primer comproveu la connectivitat amb

Tema: cmnd / sonoff / Status

Missatge: 6

feu clic a "Injecta una vegada a l'inici". Desplegar. Hauríem de veure la depuració que inclou 7 línies de dades de stat / sonoff / STATUS6

Introduïu el tema: cmnd / sonoff / Topic andMessage: loungelight. Desplegar. Això canvia el nom del commutador de sonoff a loungelight

La pestanya de depuració hauria de mostrar el dispositiu que es reinicia amb el seu nou nom / tema

Tema: cmnd / loungelight / MqttUser

Missatge: loungelight

Feu clic a desplega. S'hauria de veure una depuració des de stat / loungelight / RESULT amb {"MtqqUser": "loungelight"}

Tema: cmnd / loungelight / MqttPassword

Missatge: loungelightPW (tingueu en compte que és més imaginatiu que això!)

Esborreu la pestanya de depuració i desplegueu.

S'hauria de veure una resposta des de stat / loungelight / RESULT amb {"MqttPassword": "loungelightPW"}

Ara introduïu NodeRed i NodeRedPW com a nom d'usuari i contrasenya al node mqtt out. Això passa mitjançant la icona de llapis del servidor i la pestanya de seguretat de la finestra que s’obre. Això es copia automàticament als altres nodes MQTT.

Torneu a comprovar-ho amb

Tema: cmnd / loungelight / Estat i missatge: 6. Desplegar.

I que s’enviï la resposta.

Així doncs, en aquest moment hem canviat el nom del nostre dispositiu Sonof perquè escolti els temes cmnd / loungelight / …… i iniciï sessió al MQTT sever amb el nom d’usuari loungelight i la contrasenya loungelightPW. També hem definit un nom d'usuari i una contrasenya per a Node-Red.

A continuació, hem d’indicar al servidor mosquit MQTT que només accepti clients amb noms d’usuari i que enumeri els noms d’usuari i les contrasenyes que s’han d’acceptar.

El procediment és:

  • Atura el mosquit
  • Creeu el vostre propi fitxer de configuració
  • Editeu el fitxer de configuració
  • Crea un fitxer de contrasenya
  • Afegiu usuaris / contrasenyes.

Per tant, inicieu sessió amb una nova sessió PuTTY i executeu les ordres següents:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Això inicia l'editor.

Afegeix línies:

allow_anonymous fals

fitxer_contrasenya /etc/mosquitto/conf.d/passwd

require_certificate false

Desar i sortir (Ctrl + X), Y, introduir.

sudo touch passwd Això crea un fitxer de contrasenya i les instruccions següents afegeixen noms i contrasenyes.

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 reiniciar

Tingueu en compte que quan afegiu un dispositiu nou, haureu d'introduir l'usuari i contrasenya a través del port sèrie i afegir-los al fitxer de contrasenya o canviar temporalment el fitxer de configuració mosquitto i comentar (afegiu # al començament de la línia) les línies "allow_anonymous false "i" password_file /etc/mosquitto/conf.d/passwd "i, a continuació, restableix-los quan s'hagin enviat les dades al dispositiu i s'hagin afegit al fitxer de contrasenya tal com s'ha indicat anteriorment.

Hem canviat el nom del sonoff a loungelight i, per tant, actualitzem el node de sortida mqtt (connectat al commutador) per utilitzar el tema cmnd / loungelight / POWER.

Feu clic a Desplega i comproveu que els nodes mqtt mostren "connectat".

A continuació, proveu el botó de commutació i cerqueu la depuració que mostri que el commutador de Sonoff respon. Notareu que el dispositiu mostra el canvi amb un tema: stat / loungelight / POWER. Ara canvieu el node d'entrada que s'ha definit a cmnd / sonoff / POWER per stat / loungelight / POWER. Podem utilitzar aquesta cobertura d’un buit en la nostra funcionalitat. El sistema, tal com es va configurar inicialment, se sincronitzarà amb tots els usuaris que hagin iniciat la sessió, però no se sincronitzarà amb els canvis de commutació que es facin prement el botó de l'interruptor de Sonoff. Ara, connecteu la sortida del node d’entrada mqtt stat / loungelight / POWER a l’entrada del commutador (LHS). Ara feu doble clic al commutador i desmarqueu "si el missatge arriba a l'entrada, passeu a la sortida". Això mostra algunes opcions noves: seleccioneu "la icona de commutador mostra l'estat de l'entrada". Desplegar. Per tant, ara tenim un bon bucle de retroalimentació. La posició del commutador del tauler sempre canviarà quan canviï l'interruptor Sonoff, independentment d'on s'hagi iniciat el canvi.

Per tant, ara tenim un sistema domòtic segur i autònom en funcionament i a punt per ampliar-lo al que vulgueu. A la següent secció tractaré alguns dels meus experiments experimentats fins ara i els reptes que tinc previst abordar.

Pas 8: passos inicials per a l'expansió

Tinc un altre tauler de desenvolupament de LEDs de Sonoff-Tasmota Sensors de domòtica instructable que mostra algunes de les funcions addicionals del firmware de Sonoff-Tasmota:

Mesura de temperatura i humitat

Detecció d'intrusos (entrada del commutador)

Comandament IR (per a televisors, etc.)

Cadenes LED: tant RGB com NeoPixel (adreçables individualment)

Sensors I2C

Per l'anterior, estic fent servir un ESP12F i un PCB personalitzat. Es podria utilitzar un NodeMCU i una taula de treball per igual. Això permet aquestes funcions addicionals sense cablejar-se a un dispositiu Sonoff i, per tant, és un enfocament molt més segur. Amb l’entrada de temperatura he pogut completar l’automatització de la manta elèctrica.

La música i la ràdio per Internet es poden afegir fàcilment. Això obre opcions per fer aparèixer estacions o àlbums específics a hores determinades o potser en resposta a la detecció d'un visitant (telèfon). Aquesta instrucció associada es troba en reproductor de música d'alta qualitat i ràdio per Internet amb control de telèfons intel·ligents. Com que això també està impulsat per Node-RED, fins i tot hauria de ser possible tenir més d'un sistema de so i utilitzar la comunicació MQTT per conduir-los.

També he estat explorant Node-Red, inclòs l'enviament de correus electrònics i la realització d'alertes de veu. També hi ha la possibilitat que el sistema detecti quan esteu entrant / sortint fent ping a l’adreça IP del vostre telèfon mòbil. Node-Red també pot accedir al temps i a les notícies, de manera que es pot afegir informació i fer automatització.

Hi ha alguns trucs per aprendre, però aquests es tornen fàcils per segona vegada.

Una altra via és afegir una pantalla al pi per mostrar el tauler. Això és un "treball en curs", o dit d'una altra manera, no estic massa content. La pantalla que tinc és difícil de girar al mode retrat i el navegador Chromium és dolorosament lent. Una alternativa seria recollir una tauleta vella a eBay i utilitzar-la. Puc provar amb un Pi 2 i veure si això proporciona una millora suficient (model B utilitzat per a aquest desenvolupament).

Espero que això us comenci i us faci vibrar la imaginació. L’abast potencial és enorme. Fins i tot es podria modificar el codi Sonoff per a altres sensors si calia.

En general, m'ha sorprès el que pot fer aquest sistema. El meu objectiu original era només conduir un commutador d’un telèfon intel·ligent d’una manera fiable mitjançant un sistema independent. Havia tingut visions de la necessitat de gestionar servidors i clients i escriure html per a una interfície d'usuari. Allà on això va acabar molt per davant, amb una major seguretat, una fiabilitat excel·lent, una fantàstica interfície d'usuari, una programació d'arrossegar i deixar anar i un gran potencial d'expansió. I tot això amb molt menys esforç.

Mike

Pas 9: addenda: càrrega des de Raspbian Stretch Lite

Aquesta opció evita el bloatware que inclou la versió completa de Raspbian Stretch. La major part d’això no serà necessària quan s’utilitza un Pi per a la domòtica. Tanmateix, cal instal·lar Node-Red.

Procediu com al pas 1, però utilitzant Raspbian Stretch Lite en lloc de Raspbian Stretch.

En lloc del pas 2, feu el següent:

sudo apt -y install npm

npm -v hauria de tornar: 1.4.21 o posterior

sudo npm install -g n

sudo n 8.9.0

Ara podem utilitzar el gestor de paquets de nodes per instal·lar Node-Red:

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

Això donarà un parell de missatges d'error a causa d'una adreça incorrecta. El sistema, però, fa una "compilació de fonts" per corregir aquest problema. Si repetiu la instrucció anterior (no cal), els errors no es produeixen.

Ara tenim Node-Red i els seus paquets de suport instal·lats i podem passar al pas 3, carregant mosquitto.

Concurs sense fils
Concurs sense fils
Concurs sense fils
Concurs sense fils

Accèssit al concurs sense fils

Recomanat: