Sommario:

Potente sistema di automazione domestica autonomo - Pi, Sonoff, ESP8266 e Node-Red: 9 passaggi (con immagini)
Potente sistema di automazione domestica autonomo - Pi, Sonoff, ESP8266 e Node-Red: 9 passaggi (con immagini)

Video: Potente sistema di automazione domestica autonomo - Pi, Sonoff, ESP8266 e Node-Red: 9 passaggi (con immagini)

Video: Potente sistema di automazione domestica autonomo - Pi, Sonoff, ESP8266 e Node-Red: 9 passaggi (con immagini)
Video: Dall’automazione domestica all’internet of things - Ing. Lorenzo Nardacci 2024, Novembre
Anonim
Potente sistema di automazione domestica autonomo - Pi, Sonoff, ESP8266 e Node-Red
Potente sistema di automazione domestica autonomo - Pi, Sonoff, ESP8266 e Node-Red

Questa guida dovrebbe portarti alla prima base in cui puoi accendere/spegnere una luce o un elettrodomestico tramite qualsiasi dispositivo in grado di connettersi alla rete locale e con un'ottima interfaccia web personalizzabile. L'ambito per l'estensione/aggiunta di funzionalità è vasto, incluso l'invio di e-mail, messaggi twitter, sensori di lettura (ad es. temperatura). Puoi facilmente impostare regole, ad es. – se la temperatura è inferiore a 15°C alle 23:00, accendere la coperta elettrica per 30 minuti. Il sistema utilizza il protocollo MQTT con TCP che è notevolmente più affidabile di UDP, sorprendentemente utilizzato da alcuni dispositivi di automazione domestica commerciali. Una volta terminato il duro lavoro di configurazione del sistema, descritto qui, il divertimento può iniziare. Node Red offre una fantastica interfaccia utente intuitiva, veloce e facile da configurare e offre capacità straordinarie.

Il risultato è un potente sistema di automazione domestica completamente sotto il proprio controllo e interamente su una rete locale. Molti dei sistemi mostrati su Instructables funzionano con server basati su cloud e quindi rappresentano un rischio per la sicurezza e possono richiedere l'abbonamento. Questi sono più facili da configurare ma presentano un rischio per la sicurezza più elevato e un costo potenzialmente più elevato. Dovrei aggiungere che è possibile configurare una VPN (rete privata virtuale) sul Pi per abilitare la connessione sicura alla rete/sistema domestico se l'accesso dall'esterno sarebbe utile (Google Pi OpenVPN per le istruzioni).

Questo sistema richiede la riprogrammazione dei dispositivi Sonoff con un ottimo sistema open source chiamato Sonoff-Tasmoda. Questo può essere fatto utilizzando una speciale configurazione Arduino e un convertitore da USB a seriale. I dispositivi Sonoff utilizzano il chip Wi-Fi ESP8266, quindi puoi anche creare i tuoi dispositivi utilizzando i moduli ESP8266 o adattarli ad altri elementi per fornire connettività wireless.

Il compito più grande è configurare un Raspberry Pi come hub. Questo esegue il broker (o server) MQTT che gestisce la comunicazione con i dispositivi collegati. Il Pi esegue anche un sistema chiamato Node-Red che può intercettare messaggi e dati e inviare comandi, ad esempio quando accendere la coperta elettrica. Node-Red fornisce anche un'interfaccia per servire la pagina web a cui è possibile accedere tramite smartphone/tablet/PC/laptop, per vedere cosa sta succedendo e abilitare l'accensione manuale delle luci e così via.

Il mio obiettivo con questo istruibile è di fornire ogni passaggio in modo sufficientemente dettagliato da consentire a un principiante di far funzionare il sistema.

I passaggi sono:

  • Carica un Pi con Rasbian Stretch
  • Aggiorna e aggiungi funzionalità a Node-Red
  • Installa il broker Mosquitto MQTT
  • Configura l'ambiente Arduino per caricare il firmware Sonoff-Tasmota
  • Riprogrammare un interruttore Sonoff
  • Configura l'interfaccia Node-Red
  • Prova tutto funziona.

Hardware di cui avrai bisogno:

  • Raspberry Pi e alimentatore (e tastiera e monitor per la configurazione iniziale) (modello B utilizzato qui)
  • Interruttore Sonoff
  • Convertitore seriale USB
  • Opzionale: scheda di sviluppo ESP come NodeMCU.

La mia esperienza con il Raspberry Pi è che l'impostazione di qualsiasi cosa sembra comportare molto più dolore di quanto si possa immaginare possibile con cose che non funzionano o che si bloccano su qualche passaggio banale in cui la spiegazione avrebbe potuto essere migliore. I forum non sempre ricevono consigli che funzionano! Ho trovato diversi percorsi che semplicemente non funzionavano per un motivo o per l'altro. Questo costa 3 giorni! Ho quindi cancellato tutto e ho ricominciato da capo e ho completato in meno di un (lungo) giorno. Questo però usava il vecchio Raspian Jessie. Dopo questo ho trovato un modo per utilizzare la versione corrente e rilasciata di recente (Stretch) e ho fatto tutto di nuovo. Questa guida consente di copiare e incollare le istruzioni nel Pi. Quindi dovresti essere pronto in poche ore. Comunque spero che questo ti faccia salire più velocemente nella curva di apprendimento e con molto meno dolore. Credimi ne vale la pena per il risultato finale.

Passaggio 1: carica un Pi con Rasbian Stretch

Questo dovrebbe essere abbastanza semplice. Inizia con una scheda SD da 8 Gb o 16 Gb. Scarica l'ultima versione da:

www.raspberrypi.org/downloads/

Il thread principale qui presuppone che sia caricata la versione completa. Tuttavia puoi usare la versione lite per risparmiare spazio. Se si utilizza Raspbian Stretch Lite, procedere con questo passaggio e quindi passare al passaggio 9 alla fine.

Decomprimendo il file scaricato si ottiene una cartella con il file.img. 7Zip è consigliato per Windows (e The Unarchiver Mac). L'immagine deve essere masterizzata sulla scheda SD, ma è necessario utilizzare un programma speciale poiché il file system non è compatibile con Windows. Il software consigliato si chiama Etcher e può essere scaricato da:

etcher.io/

Le istruzioni per Etcher sono sul loro sito Web e difficilmente potrebbero essere più semplici. Seleziona l'immagine e l'unità e fai clic su Flash.

Ora con la nostra scheda SD flash puoi far funzionare il Pi.

Se conosci l'indirizzo IP utilizzato dal tuo Pi o sei felice di trovarlo accedendo al router, puoi evitare la necessità di tastiera e monitor e utilizzare SSH immediatamente. Basta aggiungere un file vuoto chiamato SSH alla scheda SD, inserirlo, connettersi a Ethernet e accendere. Altrimenti segui la guida qui sotto.

Collega il Pi a Internet, schermo, mouse e tastiera e connettiti all'alimentazione. La prima cosa che faremo è abilitare SSH in modo da poter eseguire la maggior parte della configurazione comodamente da un PC. Ovviamente può essere fatto direttamente, ma aiuta molto essere in grado di seguire questa guida sullo stesso dispositivo di uno che guida il Pi e utilizzare il copia e incolla per la maggior parte delle istruzioni. Anche nel mio caso la mia postazione PC è bella e comoda ma non abbastanza grande anche per un pi.

C'è una guida per una buona parte del lavoro su un video di YouTube. Questo è dove ho iniziato. Puoi eseguire il video insieme seguendo queste istruzioni. Tuttavia, quando stavo eseguendo di nuovo il processo mentre scrivevo questo, ho trovato più semplice seguire le istruzioni qui. Ci sono alcune deviazioni significative. Ci sono anche alcune sezioni in cui ho consigliato di seguire il video piuttosto che elencare i passaggi qui. Tuttavia, consiglierei di esaminarlo per comprendere MQTT, Node-Red e l'ampio processo di configurazione. Il video dura 38 minuti quindi mettetevi comodi. Il video inizia mostrando cosa può fare Node Red, quindi copre l'installazione e la configurazione di Pi, seguita dall'aggiornamento di Node Red e infine dall'installazione di Mosquitto. Tempi chiave nel caso in cui si desideri tornare a una sezione:

00:00 Introduzione al video

03:00 Dimostrazione Nodo Rosso

14:14 Importazione di elementi del dashboard in Node Red

21:05 Configurazione iniziale Pi, incluso SSH

23:35 Installazione del codice di supporto di Node Red

27:00 Introduzione a MQTT

29:12 Installazione Mosquitto (MQTT) (La nota funziona solo per Raspian Jessie)

33:00 Esempi di nodi rossi

Elencherò i comandi in grassetto corsivo (piuttosto che usare ""). Questa formattazione viene ignorata quando li copi e li incolli nel Pi.

L'introduzione a Node Red ti darà un'idea di ciò che il sistema può fare e fornirà un'immagine di dove andremo a finire.

Il video di YouTube è su:

Segui la procedura di installazione dalle 21:05 alle 23:35. Nota che l'accesso predefinito è utente: pi e password: raspberry. Prima di riavviare, trova l'indirizzo IP del pi. Fai clic sull'icona "freccia su+giù" nella barra superiore del desktop o inserisci le seguenti istruzioni nella finestra del terminale/terminale:

sudo indirizzo ifconfig

Quindi annotare l'indirizzo IP dopo: inet addr:. Sarà nella forma 192.168.x.y

Prendere nota di questo indirizzo e riavviare (inserire: sudo shutdown –r now)

La chiave a questo punto è che SSH è stato abilitato e si può impostare un collegamento al Pi da un PC (Mac e Linux includono interfacce SSH). Un buon programma per farlo è un download gratuito chiamato PuTTY che può essere utilizzato anche come interfaccia seriale e può fare Telnet. Putty è disponibile da:

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

Scarica e installa PuTTY.

Ora, con il Pi riavviato, avvia PuTTY e inserisci l'indirizzo IP annotato in precedenza. Vedi esempio sotto:

Ora fai clic su Apri

Dopo il login come: inserisci pi

Quindi inserisci la tua password.

Ora segui le istruzioni qui e facoltativamente avvia il video dalle 23:35. Nella maggior parte dei casi puoi copiare e incollare. Evidenzia il testo e usa ctrl+C per copiare. Quindi fare clic con il pulsante destro del mouse su PuTTY per incollare. A volte il testo non viene visualizzato immediatamente, quindi attendi qualche secondo. Se entri due volte usa backspace per eliminare la seconda voce. Premere invio per eseguire ogni istruzione.

sudo raspi-update

Ho ricevuto un comando non trovato e ho ignorato questo e le seguenti istruzioni di spegnimento/riavvio:

sudo shutdown -r now

sudo apt-get -y update

sudo apt-get -y upgrade

Questo richiede un po' di tempo…..

sudo apt-get autoremove

sudo apt-get -y update

sudo shutdown -r now

A questo punto abbiamo caricato e aggiornato il sistema operativo Pi, pronto per il passaggio successivo.

Passaggio 2: aggiorna e aggiungi funzionalità a Node-Red

La connessione PuTTY sarà stata persa dal riavvio alla fine del passaggio precedente. Quindi chiudi PuTTY e dopo aver atteso l'avvio del Pi, accedi di nuovo come prima.

Sono passato a un metodo più semplice e affidabile per caricare Node-Red, seguendo l'approccio su https://nodered.org/docs/hardware/raspberrypi. Questo utilizza uno script e installerà o aggiornerà Node-Red, quindi l'approccio è lo stesso che funziona dalle versioni complete o lite di Raspbian Stretch. Quindi inserisci:

bash <(curl -sL

Immettere Y quando richiesto (due volte). Questo script carica anche i file necessari per abilitare l'avvio automatico di Node-Red.

Quindi a questo punto abbiamo il nostro pi caricato e aggiornato e con gli aggiornamenti necessari per Node Red. Non è dannoso fare un riavvio prima della fase successiva.

sudo shutdown -r now

Passaggio 3: installazione di Mosquitto MQTT

Se non lo hai già fatto vale la pena guardare il video di introduzione a MQTT sul video dalle 27:00.

È qui che dobbiamo prendere una strada diversa. La procedura descritta nel video funziona solo per la vecchia versione Jessie di Raspian. C'è una discussione sul sito della zanzara ma non viene mostrato alcun risultato chiaro e quindi si atterrà a un percorso più semplice e sicuro.

Quindi accedi utilizzando PuTTY e inserisci quanto segue:

sudo apt-get update

sudo apt-get install mosquitto mosquitto-clients

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitto start

Le ultime due istruzioni si fermano e avviano mosquitto e mostrano che il nostro broker MQTT sta funzionando.

Per un test rapido, apri altre due sessioni PuTTY e accedi a ciascuna.

Ormai saprai che MQTT funziona dal dispositivo che richiede dati sottoscrivendo un "argomento". Il broker invierà tutti i dati con lo stesso "argomento". Quindi il dispositivo che desidera inviare dati/istruzione lo pubblica al broker utilizzando lo stesso "argomento".

Quindi in una sessione PuTTY inserisci:

mosquitto_sub -d -t ciao/mondo

Questa è un'istruzione per iscriversi all'argomento: ciao/mondo.

Nell'altro inserire:

mosquitto_pub -d -t ciao/mondo -m "Ciao dalla finestra Terminale 2!"

Questa è un'istruzione di pubblicazione con lo stesso argomento con un messaggio. Il testo: "Ciao dalla finestra Terminal 2!" dovrebbe ora apparire nell'altro terminale.

Bravo arrivato fin qui. Ora abbiamo il Pi caricato e aggiornato con gli aggiornamenti necessari per Node-Red e con il broker MQTT di zanzara installato e testato. D'ora in poi la vita diventa più facile un po' più divertente. Chiudi le due sessioni PuTTY utilizzate per il test MQTT.

Passaggio 4: configurazione dell'interfaccia del nodo rosso

Per prima cosa dobbiamo avviare Node Red. Inserisci l'istruzione:

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

Attendi che venga eseguito e vedrai il testo "Flussi avviati".

Ora apro un browser, utilizzo Chrome e inserisco l'indirizzo IP pi annotato in precedenza seguito da: 1880, ovvero qualcosa come 192.168.0.8: 1880

Ora dovresti avere la pagina di programmazione di Node Red visualizzata come di seguito:

Ora puoi seguire gli esempi di Node Red a partire dalle 33:00 o passare direttamente a una piccola configurazione aggiuntiva e caricare il primo flusso che mostrerà il collegamento a MQTT ed essere pronto a guidare il nostro switch.

La configurazione aggiuntiva necessaria consiste nell'aggiungere gli elementi del dashboard che abilitano un'interfaccia web.

Questi sono mostrati nel video alle 14:14.

Segui le istruzioni per caricare node-red-dashboard.

Ora possiamo giocare un po' e mostrare che MQTT funziona ed è guidato da Node-Red. Questo non è nel video, ma è la chiave di questo progetto. Puoi seguire le mie istruzioni e/o importare i flussi dal file NRtest1.txt allegato.

Prima aggiungi un nodo di input inject e un nodo di output mqtt e collegali insieme.

Fare doppio clic sul nodo di iniezione (che inizialmente è etichettato come timestamp). Nella sezione Payload usa il twiddly per cambiare in stringa e inserisci: Hello from me. Lascia vuoto l'argomento in quanto possiamo inserirlo nel nodo MQTT. Fare clic su Fine

Ora fai doppio clic sul nodo MQTT. Fare clic sull'icona a forma di matita a destra della sezione Server. Questo apre una nuova finestra di dialogo. Immettere: localhost nella sezione Server. Fare clic su Aggiungi. Ora, di nuovo nel nodo Edit mqtt out, inserisci il nostro argomento nella sezione Topic: hello/world. Imposta QoS su 1. Fare clic su Fatto. Ora fai clic su Distribuisci. Dovresti vedere un blob verde e "connesso" sotto il nodo mqtt.

Ora aggiungi altri due nodi: input mqtt e output debug e collegali insieme. Ora fai doppio clic sul nodo di input mqtt e inserisci hello/world nella sezione dell'argomento. Il server dovrebbe già mostrare localhost:1883. Imposta QoS su 1. Fare clic su Fatto. Quindi fare clic su Distribuisci e fare clic sulla scheda di debug nel riquadro di destra. Ora fai clic sul quadrato grigio a sinistra del nodo di iniezione "Ciao da me". Questo invia il payload di testo al broker MQTT con l'argomento ciao/mondo. Il broker sa che il nodo di input mqtt ha sottoscritto lo stesso argomento e quindi inoltra il payload. Il nodo di input mqtt lo invia quindi alla scheda di debug (RHS) e dovrebbe apparire il testo "Hello from me".

Questo spunta un'altra casella in quanto abbiamo Node Red che parla con il nostro broker MQTT. Nota che Node Red è solo un client per il broker, come i dispositivi Sonoff che collegheremo in seguito. Tuttavia, consente un'automazione sofisticata e fornisce un'ottima interfaccia utente.

Ora possiamo apportare un paio di piccole modifiche e impostare i flussi per il nostro interruttore Sonoff.

Quindi elimina il nodo di iniezione di input (fai clic per evidenziare e premi il tasto Elimina). Ora aggiungi uno switch dalla sezione dashboard e collegalo all'output mqtt. Interruttore a doppio clic. Fare clic sulla matita a destra di Gruppo. Entra in Nome: Luce. Clicca quindi sulla matita a destra di Tab ed entra nella sezione Nome: Lounge. Fare clic su Aggiungi/Aggiorna e di nuovo su Aggiungi/Aggiorna. Ora, di nuovo nel nodo dell'interruttore Modifica, imposta l'attivazione e la disattivazione dei payload. Utilizzare i twidlys per selezionare la stringa e immettere ON per il carico utile On e OFF per il carico utile OFF. Fare clic su Fine

Ora vai a ciascuno dei nodi mqtt e cambia l'argomento in cmnd/sonoff/POWER. Se stai copiando e incollando, controlla di non aver incluso uno spazio alla fine. Questo è un argomento diverso e non funzionerà con Sonoff. Trovare uno spazio randagio può richiedere circa un'ora - credimi! Sono anche andato alla dashboard>Tema e ho selezionato: Scuro. Fare clic su Distribuisci e selezionare la scheda di debug.

Ora apri una nuova sessione del browser in una nuova finestra e ridimensionala come un telefono cellulare sulla sessione di Node Red. Inserisci l'indirizzo: il tuo indirizzo IP Pi:1880/ui/#/0 cioè qualcosa come 192.168.0.8:1880/ui/#/0. Dovresti vedere uno schermo con Lounge and Light e switch. Fare clic sull'interruttore on e poi off. La finestra di debug dovrebbe mostrare i payload ON e OFF. Ora, se lo desideri, accedi anche tramite cellulare. Notare che la posizione dell'interruttore è sincronizzata. Non importa che il nostro Sonoff non sia ancora connesso. Quando lo è, iscrivendosi al Topic, raccoglierà il messaggio/payload e agirà su di esso.

Un ultimo piccolo passaggio consiste nell'avviare automaticamente Node Red dopo l'avvio del Pi.

Node Red ha una guida su:

Tuttavia, i file necessari sono già caricati, quindi non è necessaria alcuna installazione.

Per abilitare quindi l'esecuzione automatica di Node-RED ad ogni avvio e in caso di crash entrare (aprire la sessione PuTTY):

sudo systemctl enable nodered.service

Se hai bisogno di disabilitare questo, inserisci:

sudo systemctl disable nodered.service

Ora spegni il pi con sudo shutdown now e rimuovi l'alimentazione.

Questo ora ha il nostro Pi bloccato e caricato pronto per l'azione. Abbiamo il nostro PC/telefono cellulare connesso a Node Red e questo parla con il nostro server MQTT. Questo è stato un lungo viaggio e merita una grande pacca sulla spalla. Molto bene. Ho trovato il prossimo, Arduino bit, molto più facile!

Passaggio 5: configurazione del sistema Arduino per la riprogrammazione dei dispositivi Sonoff

Tutte le informazioni per farlo sono su Sonoff-Tasmota GitHub. L'unica parte con cui ho avuto difficoltà è stato il testo dell'argomento, ma ti ho astutamente fatto inserire questo!

Vai su

Troverai le istruzioni di configurazione nella scheda Wiki nella sezione Strumenti di caricamento:

Piuttosto che passare attraverso ogni passaggio, mi limiterò a notare gli aspetti chiave che ritenevo importanti o su cui mi sono bloccato.

Le istruzioni sono buone ma richiedono un'attenta attenzione ai dettagli. Sono stato inciampato dalla necessità di una cartella ESP8266 all'interno di una cartella che si trovava all'interno di un'altra cartella denominata ESP8266 e quindi ho perso due livelli.

Ho seguito la raccomandazione per una configurazione Arduino completamente separata. Ho creato una nuova cartella chiamata "ArduinoSonoff" che è separata dalla mia cartella Arduino esistente. La configurazione è piuttosto avanzata e quindi tenerla separata è un'ottima idea. Se questa è la tua prima configurazione Arduino, assicurati di installarla una seconda volta in una cartella "Arduino" o in un'altra cartella per qualsiasi altro lavoro Arduino, incluso il lavoro su ESP8266.

Scarica l'ultimo IDE Arduino da https://www.arduino.cc/en/Main/Software. Decomprimi il file nella nuova cartella.

Le istruzioni includono il download del sistema Sonoff-Tasmoda dalla pagina principale https://github.com/arendst/Sonoff-Tasmota tramite: Clona o Download>Download ZIP. Decomprimi il file nella nuova cartella.

Segui attentamente le istruzioni. Non ho eseguito la sezione Facoltativo: preparati per il caricamento OTA. Lo lasceremo per un altro giorno.

Ora avvia l'IDE di Arduino (fai doppio clic su arduino.exe). Carica lo schizzo Sonoff-Tasmota tramite File>Sketchbook>sonoff. Non è necessario apportare modifiche. Tutte le impostazioni vengono eseguite tramite una connessione seriale dopo il caricamento del firmware. Questi sono memorizzati in EEPROM. Quindi il firmware può essere aggiornato e tutte le impostazioni mantenute. Questa è roba abbastanza intelligente. Tuttavia puoi evitare la necessità di un paio di passaggi qui andando al file user-config.h e inserendo il tuo SSID e password wifi e MQTT_HOST (sostituisci "domus1" - secondo riferimento, con il tuo indirizzo IP Pi). Successivamente potresti voler inserire anche un utente e una password MQTT. Prima di scaricare controlla le impostazioni della scheda in Strumenti. Questi avranno bisogno di un paio di modifiche per soddisfare i requisiti stabiliti nel Wiki. Ora fai clic su Compila (icona di spunta). Dovrebbe essere compilato correttamente. In caso contrario o se le impostazioni della scheda richieste non sono disponibili, tornare indietro e controllare ogni passaggio della configurazione.

Passaggio 6: riprogrammare un interruttore Sonoff

Ora siamo pronti per il download. A questo punto si può andare avanti e far lampeggiare un interruttore Sonoff o si può prima far lampeggiare un modulo ESP8266. Ho fatto quest'ultimo, in parte perché i miei interruttori non erano ancora arrivati (sono appena arrivati mentre scrivo questo!) Sono consapevole. Ho un paio di schede NodeMCU. Questi sono facili da collegare, avendo il loro convertitore da USB a seriale integrato. Tuttavia, il metodo di ripristino nodemcu non funziona con questo sistema. Quindi lascia Strumenti> Metodo di ripristino impostato su "ck". Eseguire la normale configurazione manuale del flash tenendo premuto il pulsante Flash (GPIO 0 a terra) mentre si preme e si rilascia Reset (Ripristina a massa). Non sono sicuro che questo abbia un timeout o forse non ho tenuto GPIO 0 basso abbastanza a lungo, ma ho avuto bisogno di diversi tentativi, incluso farlo durante la compilazione dell'IDE di Arduino!

Se vuoi controllare le risposte, l'uscita relè è D6 sulle schede NodeMCU. Su ESP12 questo è GPIO 12. L'uscita LED è D7 (NodeMCU) o GPIO 13 (ESP12).

Interruttore Sonoff.

ATTENZIONE: devo dire “non collegare alla rete in nessun caso dove il contenitore è aperto”. Si noti che il PCB (almeno sul Sonoff Basic (interruttore in linea) ha solo distanze di "isolamento singolo" tra la sezione a bassa tensione e la rete. Quindi si dovrebbe trattare qualsiasi parte del circuito Sonoff come tensione di rete. Il Sonoff- Tasmota GitHub mostra la connessione di un sensore di temperatura e umidità a un Sonoff S20. Non lo farei a causa di problemi di isolamento. Quindi, se vuoi farlo, prendi un modulo ESP12 o NodeMCU e configuralo separatamente con un doppio isolamento appropriato o alimentazione con messa a terra.

L'interruttore plug-in Sonoff S20 è un buon punto di partenza in quanto non necessita di alcun cablaggio di rete. Questo può essere aperto rimuovendo una vite (sotto il sigillo di sicurezza) e facendo leva sulla custodia aperta. La foto sotto mostra dove sono i tag. Stringere il caso in questi punti aiuta.

Convertitore seriale USB

Il mio convertitore preferito è la versione FTDI. Tuttavia, questo non ha una capacità adeguata per soddisfare le esigenze di Sonoff 3.3v. La specifica FTDI dice massimo 50ma. La prossima migliore alternativa è quella che utilizza il chip CP2102. Questo però ha un limite di 100ma che non è ancora sufficiente. Chiaramente molti stanno usando questo convertitore direttamente, ma ci sono anche segnalazioni di errori di caricamento. Limiterei il tempo in cui è collegato in quanto si riscalderà sotto il carico. Fai questo a tuo rischio. La soluzione ideale è avere anche un regolatore 3.3v, ad es. un AMS1117 3.3. Ho creato un piccolo PCB per abilitare questo. Vedere Programmatore per dispositivi Sonoff.

La mia sequenza per la programmazione è la seguente:

Apri l'IDE di Arduino.

Sotto Strumenti controlla che le impostazioni siano come sul Wiki.

Apportare le modifiche necessarie a user_config.h. Ho impostato l'SSID e la password Wi-Fi e l'indirizzo del broker MQTT e i dettagli di fuso orario/ora legale.

Fare clic su "verifica" per verificare che venga compilato correttamente.

Collegare il convertitore seriale USB (da solo) al PC. Prendere nota del numero di porta.

Ora scollega il cavo seriale USB dal PC e collegalo allo switch Sonoff. Verificare che le connessioni di terra e 3v3 siano nel modo corretto (la terra è collegata al piano di massa sul PCB Sonoff).

Tenere il programmatore in modo che i contatti siano sicuri mentre si preme anche il pulsante.

Ora collega il cavo USB al PC, controlla che il numero di porta sia corretto (in Strumenti), quindi fai clic su Scarica.

Continuo a tenere premuto il pulsante per tutta la programmazione perché non voglio disturbare le connessioni.

Al termine dovresti vedere una schermata come di seguito:

Immagine
Immagine

Il Sonoff ha bisogno di un paio di informazioni per connettersi al nostro sistema: SSID e password della rete Wi-Fi locale e l'indirizzo IP del Pi. Esistono diversi modi per farlo, uno dei quali è modificare il file config.ino come indicato in precedenza. Se hai uno smartphone puoi (dopo aver rimontato l'interruttore) premere il pulsante Sonoff 4 volte abbastanza velocemente per metterlo in modalità web-server. Il LED lampeggerà. Ho dovuto provare più volte per farlo funzionare. Quindi, sul tuo smartphone cerca la nuova rete Sonoff e connettiti. Apparirà una pagina web in cui è possibile impostare i dati richiesti. L'indirizzo IP Pi va in hostname. Ho anche cambiato il secondo SSID e la password in qualcosa di lungo e sostanzialmente inutilizzabile.

In alternativa può essere configurato tramite la connessione seriale subito dopo il caricamento. Apri il monitor seriale Arduino (sotto Strumenti).

Comandi da inserire:

SSID il tuoWiFiSSID

Password tuaPasswordWiFi

MqttHost 192.168.x.y (indirizzo IP PI)

Puoi anche inserire SSId1 e Password1 seguiti da qualcosa di lungo e inutilizzabile per disabilitarlo efficacemente.

Ora puoi inscatolare l'interruttore Sonoff, aprire Node-Red e il dashboard Node-red e fare clic sul pulsante dell'interruttore e guardare la scheda di debug che ora dovrebbe includere le risposte di Sonoff. Quindi abbiamo raggiunto un altro importante passo avanti: il nostro primo interruttore è stato guidato da un PC/smartphone.

Finora non abbiamo parlato di sicurezza. C'è la possibilità di utilizzare comunicazioni crittografate. Questo è abbastanza complesso da configurare e probabilmente più appropriato dove viene utilizzato un broker basato su cloud. C'è anche l'opzione per aggiungere nomi utente e password per tutti i dispositivi connessi e impedire agli utenti anonimi. Questo è abbastanza semplice da configurare. E così ora alla sicurezza.

Passaggio 7: sicurezza

MQTT consente nomi utente e password per ogni client. Questo è facile da configurare. Probabilmente è più facile prima rinominare ogni dispositivo e poi impostare i loro nomi utente e password. Questo può essere fatto tramite i comandi MQTT e Node-Red è probabilmente il modo più semplice per inviarli. Prima decidere su una convenzione di denominazione. Un'opzione è basare i nomi sulla posizione e sulla funzione. Quindi vorrai registrare il nome utente (argomento) e la password insieme all'argomento di fallback. Nota che c'è anche un'"opzione di ripristino" per ripristinare le impostazioni Sonoff al download originale (vedi Utilizzo Wiki>Funzionalità pulsante).

Accendi il pi e dopo pochi secondi apri un browser su Node-Red (indirizzo IP: 1880).

In Node-Red imposta un nodo inject e collegalo a un output mqtt e imposta il server mqtt su localhost. Lascia argomento, utente e password vuoti poiché li imposteremo nel nodo di iniezione. Configura anche un nodo di input mqtt e collegalo a un nodo di debug in modo che possiamo vedere le risposte. Imposta la nota di input mqtt su localhost (dovrebbe essere già impostata) e inserisci +/+/+ per l'argomento in modo che catturi tutto il traffico.

Immettere la seguente sequenza di impostazioni nel nodo di iniezione.

Prima verifica la connettività con

Argomento: cmnd/sonoff/Stato

Messaggio: 6

fare clic su "Inietta una volta all'avvio". Distribuire. Dovremmo vedere il debug che include 7 righe di dati da stat/sonoff/STATUS6

Immettere l'argomento: cmnd/sonoff/topic e il messaggio: loungelight. Distribuire. Questo cambia il nome dell'interruttore da sonoff a loungelight

La scheda debug dovrebbe mostrare il riavvio del dispositivo con il nuovo nome/argomento

Argomento: cmnd/loungelight/MqttUser

Messaggio: loungelight

Fare clic su Distribuisci. Dovrebbe essere visualizzato un debug da stat/loungelight/RESULT con {“MtqqUser”:”loungelight”}

Argomento: cmnd/loungelight/MqttPassword

Messaggio: loungelightPW (sii più fantasioso di così!)

Deselezionare la scheda debug e distribuire.

Dovrebbe essere visualizzata una risposta da stat/loungelight/RESULT con {"MqttPassword":"loungelightPW"}

Ora inserisci NodeRed e NodeRedPW come nome utente e password nel nodo mqtt out. Questo avviene tramite l'icona a forma di matita del server e la scheda di sicurezza nella finestra che si apre. Questo viene automaticamente copiato sugli altri nodi MQTT.

Ricontrolla con

Argomento: cmnd/loungelight/Stato e messaggio: 6. Distribuire.

E che la risposta venga inviata.

Quindi a questo punto abbiamo rinominato il nostro dispositivo Sonof in modo che ascolti gli argomenti cmnd/loungelight/…… e acceda al server MQTT con nome utente loungelight e password loungelightPW. Abbiamo anche impostato un nome utente e una password per Node-Red.

Quindi dobbiamo dire al server MQTT di zanzara di accettare solo client con nomi utente e di elencare i nomi utente e le password da accettare.

La procedura è:

  • Ferma le zanzare
  • Crea il tuo file di configurazione
  • Modifica file di configurazione
  • Crea file password
  • Aggiungi utenti/password.

Quindi accedi con una nuova sessione PuTTY ed esegui i seguenti comandi:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Questo avvia l'editor.

Aggiungi righe:

allow_anonimo falso

file_password /etc/mosquitto/conf.d/passwd

require_certificate false

Salva ed esci (Ctrl+X), Y, invio.

sudo touch passwd Questo crea un file di password e le seguenti istruzioni aggiungono nomi e password.

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 restart

Nota quando aggiungi un nuovo dispositivo dovrai inserire l'utente e la password tramite la porta seriale e aggiungerli al file della password o modificare temporaneamente il file di configurazione di mosquitto e commentare (aggiungere # all'inizio della riga) le righe "allow_anonymous false " e "password_file /etc/mosquitto/conf.d/passwd" e poi ripristinarli quando i dettagli sono stati inviati al dispositivo e aggiunti al file della password come sopra.

Abbiamo cambiato il nome sonoff in loungelight e quindi aggiorniamo il nodo di output mqtt (collegato allo switch) per utilizzare l'argomento cmnd/loungelight/POWER.

Fare clic su Distribuisci e controllare che i nodi mqtt mostrino 'connesso'.

Quindi prova il pulsante interruttore e cerca il debug che mostra la risposta dell'interruttore Sonoff. Noterai che il dispositivo mostra il cambiamento con un argomento: stat/loungelight/POWER. Quindi ora cambia il nodo di input che è stato impostato su cmnd/sonoff/POWER in stat/loungelight/POWER. Possiamo usare questa copertura per una lacuna nella nostra funzionalità. Il sistema come inizialmente impostato sarà sincronizzato con tutti gli utenti che hanno effettuato l'accesso, ma non si sincronizzerà con le modifiche apportate allo switch premendo il pulsante sullo switch Sonoff. Quindi ora collega l'uscita del nodo di ingresso stat/loungelight/POWER mqtt all'ingresso dell'interruttore (LHS). Ora fai doppio clic sull'interruttore e deseleziona "se il messaggio arriva in input, passa all'output". Questo fa apparire alcune nuove opzioni: seleziona "l'icona dell'interruttore mostra lo stato dell'input". Distribuire. Quindi ora abbiamo un buon ciclo di feedback. La posizione dell'interruttore del cruscotto cambierà sempre quando cambia l'interruttore Sonoff, indipendentemente da dove è stata avviata la modifica.

Quindi ora abbiamo un sistema di automazione domestica sicuro e autonomo installato e funzionante e pronto per l'espansione a qualsiasi cosa tu voglia che faccia. Nella prossima sezione tratterò alcune delle mie sperimentazioni finora e le sfide che ho intenzione di affrontare.

Passaggio 8: passaggi iniziali per l'espansione

Ho un'altra scheda di sviluppo LED per sensori Sonoff-Tasmota Instructable Home Automation che mostra alcune delle ulteriori capacità del firmware Sonoff-Tasmota:

Misurazione della temperatura e dell'umidità

Rilevamento intrusi (ingresso interruttore)

Telecomando IR (per TV ecc.)

Stringhe LED - sia RGB che NeoPixel (indirizzabili individualmente)

Sensori I2C

Per quanto sopra sto usando un ESP12F e un PCB personalizzato. È possibile utilizzare ugualmente un NodeMCU e una breadboard. Ciò consente queste funzioni aggiuntive senza cablaggio in un dispositivo Sonoff e quindi è un approccio molto più sicuro. Con l'ingresso della temperatura sono stato in grado di completare l'automazione della mia coperta elettrica.

È possibile aggiungere facilmente musica e Internet Radio. Questo apre le opzioni per far sì che stazioni o album specifici vengano attivati a orari prestabiliti o forse in risposta al rilevamento di un visitatore (telefono). Questa istruzione associata è su Lettore musicale di alta qualità e radio Internet con controllo da smartphone. Poiché anche questo è guidato da Node-RED, dovrebbe essere anche possibile avere più di un sistema audio e utilizzare la comunicazione MQTT per guidarli.

Ho anche esplorato Node-Red, incluso l'invio di e-mail e la creazione di avvisi vocali. C'è anche la possibilità che il sistema rilevi quando sei dentro/fuori - eseguendo il ping dell'indirizzo IP del tuo telefono cellulare. Node-Red può anche accedere a meteo e notizie, quindi è possibile aggiungere informazioni oltre a eseguire l'automazione.

Ci sono alcuni trucchi da imparare, ma diventano facilissimi la seconda volta.

Un'altra strada è l'aggiunta di un display al pi per mostrare il cruscotto. Questo è "lavori in corso" o, in altre parole, non sono molto felice. Il display che ho ottenuto è difficile da ruotare in modalità verticale e il browser Chromium è dolorosamente lento. Un'alternativa sarebbe quella di prendere un vecchio tablet su ebay e usarlo. Potrei provare con un Pi 2 e vedere se offre un miglioramento sufficiente (modello B utilizzato per questo sviluppo).

Spero che questo ti faccia iniziare e che la tua immaginazione ronza. La portata potenziale è enorme. Si potrebbe anche modificare il codice Sonoff per altri sensori, se necessario.

Nel complesso sono rimasto stupito da ciò che questo sistema può fare. Il mio obiettivo originale era semplicemente guidare un interruttore da uno smartphone in modo affidabile tramite un sistema autonomo. Avevo visioni di dover gestire server e client e scrivere HTML per un'interfaccia utente. Dove questo è finito è molto più avanti di questo, con maggiore sicurezza, eccellente affidabilità, fantastica interfaccia utente, programmazione drag and drop e un enorme potenziale di espansione. E tutto questo con molto meno sforzo.

Mike

Passaggio 9: Appendice - Caricamento da Raspbian Stretch Lite

Questa opzione evita il bloatware fornito con la versione completa di Raspbian Stretch. La maggior parte di questo non sarà necessaria quando si utilizza un Pi per l'automazione domestica. Tuttavia, Node-Red deve essere installato.

Procedere come nel passaggio 1 ma utilizzando Raspbian Stretch Lite anziché Raspbian Stretch.

Invece di Step2 fai quanto segue:

sudo apt -y install npm

npm -v dovrebbe restituire: 1.4.21 o successivo

sudo npm install -g n

sudo n 8.9.0

Ora possiamo usare il gestore di pacchetti del nodo per installare Node-Red:

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

Questo darà un paio di messaggi di errore a causa di un indirizzo errato. Il sistema tuttavia esegue una "compilazione sorgente" per correggere questo problema. Se si ripete l'istruzione sopra (non necessaria) gli errori non si verificano.

Ora abbiamo installato Node-Red e i suoi pacchetti di supporto e possiamo passare al passaggio 3, caricando mosquitto.

Concorso Wireless
Concorso Wireless
Concorso Wireless
Concorso Wireless

Secondo classificato al Wireless Contest

Consigliato: