Sommario:

Smart Home di Raspberry Pi: 5 passaggi (con immagini)
Smart Home di Raspberry Pi: 5 passaggi (con immagini)

Video: Smart Home di Raspberry Pi: 5 passaggi (con immagini)

Video: Smart Home di Raspberry Pi: 5 passaggi (con immagini)
Video: HOW TO - Create a Raspberry Pi Smart Home Kiosk (Home Assistant) 2024, Giugno
Anonim
Smart Home di Raspberry Pi
Smart Home di Raspberry Pi

Esistono già diversi prodotti che rendono il tuo appartamento più intelligente, ma la maggior parte sono soluzioni proprietarie. Ma perché hai bisogno di una connessione Internet per accendere una luce con il tuo smartphone? Questo è stato uno dei motivi per cui ho creato la mia soluzione Smart Home.

Ho programmato un'applicazione server che gira su un Raspberry Pi. Questo è un progetto open source basato su java che ti permette di configurare il tuo appartamento e connettere diversi client e 'unità controllabili'. Mostro una soluzione che gestisce gli interruttori di alimentazione rc, riproduce musica e video sul Raspberry Pi, mostra lo stato sullo smart mirror e può essere controllata da un'app Android e due app Pebble. La fonte è ospitata su github

Passaggio 1: cose di cui hai bisogno

Cose di cui hai bisogno
Cose di cui hai bisogno

Per configurare la Smart Home, sono necessari i seguenti "ingredienti"

  • Raspberry Pi almeno modello 2 B
  • Trasmettitore a 433 MHz, qualcosa del genere
  • 3 cavi jumper che collegano il Raspberry Pi e il mittente
  • Alcune prese radiocomandate a 433 MHz
  • Smartphone Android per eseguire l'app client

Inoltre, puoi estendere la Smart Home con più client e unità opzionali come questa

  • Smartwatch Pebble
  • Smart Mirror, guarda questo progetto
  • Striscia LED controllata da 433 MHz, vedi questo

Passaggio 2: preparare Raspberry Pi per 433 MHz

Prepara Raspberry Pi per 433 MHz
Prepara Raspberry Pi per 433 MHz
Prepara Raspberry Pi per 433 MHz
Prepara Raspberry Pi per 433 MHz

Nei passaggi seguenti è necessario accedere alla riga di comando sul Raspberry Pi. Per ottenere l'accesso puoi leggere questo

Collega il trasmettitore a 433 MHz con il Raspberry Pi come mostrato nell'immagine sopra

  • GND (mittente) 6 GND (raspi)
  • VCC (mittente) 2 +5V (raspi)
  • DATI (mittente) 11 GPIO 17 (raspi)

Si prega di collegare anche un'antenna da 17 cm al pin ANT (mittente). Ciò aumenta il segnale in modo significativo.

Dal momento che abbiamo bisogno di alcune librerie da altri repository git, dobbiamo installare git

sudo apt-get install git-core -y

Per configurare il Raspberry Pi per la comunicazione a 433 MHz abbiamo bisogno della libreria di cablaggio Pi per una migliore gestione dei GPIO.

git clone git://git.drogon.net/wiringPi

cablaggio cdPi./build

Quindi abbiamo bisogno di una libreria che implementi i protocolli di alimentazione tipicamente rc.

git clone git://github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi make cp send /usr/bin/

L'eseguibile 'send' consente di inviare codici per commutare la maggior parte degli alimentatori disponibili.

Nella mia configurazione Smart Home ho anche una striscia LED rc descritta da questo istruibile: https://www.instructables.com/id/RC-controllato-LED… Per impostare i colori per questa striscia LED hai bisogno di un altro eseguibile di invio che ti permetta per inviare qualsiasi valore intero (che codifica il colore).

Pertanto, compila il sendInt.cpp nel repository rcswitch-pi e spostalo in /usr/bin/sendInt.

sudo g++ sendInt.cpp -o /usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch-pi -lwiringPi

Ora dovresti essere in grado di inviare comandi rc con i due eseguibili /usr/bin/send e /usr/bin/sendInt

Passaggio 3: configurazione del server Smart Home

Prima di tutto è necessario installare diversi pacchetti. L'applicazione Smart Home è basata su Java e funziona bene con openjdk-11. Non sono sicuro di altri ambienti runtime Java. Il mplayer è un lettore musicale minimalista da riga di comando. L'omxplayer utilizza la grafica Raspberry Pi per la codifica video, quindi dovrebbe essere utilizzata per i video. Il programma ant è necessario per compilare l'applicazione java.

sudo apt-get install mplayer omxplayer openjdk-11-jdk ant -y

Directory di installazione per il file jar e per i log.

sudo mkdir /opt/neo

sudo chown pi:pi /opt/neo mkdir /home/pi/Logs

Configura lo script di avvio per avviare automaticamente l'applicazione all'avvio. Quindi copia lo script smart-home allegato nella directory /etc/init.d/ Ho anche creato uno script in /usr/bin/ che invia i comandi allo script allegato, quindi inserisco smart-home nella console per eseguire i comandi.

sudo cp smart-home /etc/init.d/smart-home

sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#! /bin/bash' > /usr/bin/smart-home" sudo sh -c "echo '/etc/init. d/smart-home \$1' >> /usr/bin/smart-home" sudo chmod +x /usr/bin/smart-home sudo update-rc.d smart-home defaults

Ora è il momento di controllare il repository e creare l'applicazione. Se non vuoi compilarlo da solo, puoi semplicemente scaricare il file smarthome.jar allegato e spostarlo in /opt/neo/

git clone [email protected]:dabastynator/SmartHome.git

ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/* /opt/neo/

Prova ad avviare la smart-home e controlla il file di registro. Per ottenere l'accesso per i GPIO, l'applicazione deve essere avviata da sudo.

sudo smart-home start

cat Logs/smarthome.log

Dovresti vedere il messaggio di errore Il file di configurazione non esiste che ci indirizza al passaggio successivo. Il repository contiene un readme che spiega il file di configurazione. Puoi vederlo ben reso su github:

Copia questo xml in /home/pi/controlcenter.xml, quindi imposta la posizione per il tuo server multimediale e modifica il contenuto quando ne hai bisogno. Una volta terminata la configurazione e riavviato la smart-home (sudo smart-home restart) dovresti vedere il seguente contenuto nel smarthome.log

24.05-08:26 INFORMAZIONI REMOTE di de.neo.smarthome.cronjob. CronJob@15aeb7ab: Pianifica cron job

24.05-08:26 INFORMAZIONI REMOTE da [trigger.light]: Attendi 79391760 ms per l'esecuzione 24.05-08:26 INFORMAZIONI RMI da Aggiungi gestore web (5061/ledstrip) 24.05-08:26 INFORMAZIONI RMI da Aggiungi gestore web (5061 /action) 24.05-08:26 INFORMAZIONI RMI di Aggiungi gestore web (5061/mediaserver) 24.05-08:26 INFORMAZIONI RMI di Aggiungi gestore web (5061/switch) 24.05-08:26 INFORMAZIONI RMI di Aggiungi gestore web (5061/controlcenter) 24.05-08:26 INFORMAZIONI RMI da Start webserver con 5 handler (localhost:5061) 24.05-08:26 INFORMAZIONI REMOTE da Controlcenter: Aggiungere 1. unità di controllo: MyUnit (xyz) …

Il server web è ora in esecuzione:-)

Passaggio 4: configurazione dei client

Client di installazione
Client di installazione
Client di installazione
Client di installazione
Client di installazione
Client di installazione

Client Android per smartphone

Il repository git per l'applicazione smart-home contiene anche il sorgente per il client Android, quindi puoi compilarlo tu stesso. Ma ho allegato l'APK per questo passaggio, che lo rende più facile. La prima volta che avvii l'app, ti chiede un server, come nella prima immagine sopra. Inserisci l'URL del server e il token di sicurezza.

Dovrebbe essere così. Ora hai accesso al server e controlli il tuo appartamento, riproduci musica e guarda video da remoto sul tuo Raspberry Pi. Tieni presente che puoi aggiungere widget alla schermata iniziale, il che rende più accessibili gli interruttori e il controllo della musica.

Smartwatch Pebble client

La fonte per i due client Pebble è ospitata su github. Un'app mostra il file musicale attualmente in riproduzione: https://github.com/dabastynator/PebbleRemoteMusic… Questo ti consente anche di mettere in pausa/riprodurre e aumentare/diminuire il volume.

La seconda app attiva tre azioni: https://github.com/dabastynator/PebbleControl I nomi dei trigger sono: mobile.come_home mobile.leaving e mobile.go_to_bed. Se definisci le regole dell'evento per questo trigger nel tuo file configuration-xml, le attivi dal tuo orologio.

È tutto open-source, ma non è necessario compilarlo da soli, ho anche allegato le app Pebble. Scarica i PBW con il tuo smartphone, il tuo telefono dovrebbe installarli sull'orologio. Le app Pebble necessitano di configurazioni per comunicare con il server. Ho allegato uno screenshot di come appaiono le mie impostazioni.

Smartwatch client Garmin

C'è anche un client disponibile per Garmin Smartwatch. L'app è disponibile nell'app store garmin connect e può essere installata qui:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

Cliente Smart Mirror

Ho già creato un instructable che spiega come creare lo Smart Mirror, vedi questo https://www.instructables.com/id/Smart-Mirror-by-R…. Il codice sorgente è anche ospitato su github: https:// github.com/dabastynator/SmartMirror. Il software dello Smart Mirror legge la configurazione dal file smart_config.js che non fa parte del repository git. Il contenuto del file di configurazione dovrebbe essere simile a questo elenco:

var mOpenWeatherKey = 'la-tua-chiave-apri-tempo';

var mSecurity = 'your-security-token';

Devi anche regolare le prime due righe del file smart_mirror.js per specificare l'indirizzo IP del server Smart Home e la posizione per ottenere il tempo giusto.

Più clienti

L'applicazione server è un semplice server web. Ciò ti consente di attivare azioni da qualsiasi client desideri tramite semplici chiamate web. Nel video demo mostro il tasker dell'app Android in combinazione con AutoVoice. Ciò mi consente di attivare eventi con semplici comandi vocali. Ad esempio "ok google, è ora di dormire" può attivare mobile.go_to_bed. Ma puoi anche fare chiamate web, ad esempio da IFTTT. Che ne dici di una striscia LED gialla lampeggiante per le notifiche e-mail?

Puoi chiedere al server eventuali web-call come i seguenti link (sostituisci ip, porta e token con la tua configurazione)

localhost:5061/controlcenter/api?token=secu…

localhost:5061/action/api?token=security-to…

localhost:5061/mediaserver/api?token=securi…

localhost:5061/switch/api?token=security-to…

localhost:5061/ledstrip/api?token=security-…

Passaggio 5: conclusione

Ci sono ancora alcune funzionalità da implementare: Dal momento che il server fornisce solo un semplice client API Web, eseguire molto polling. Per ridurre il polling voglio un'integrazione MQTT per una migliore notifica. Anche gli alimentatori wifi dovrebbero essere più affidabili degli alimentatori rc poiché rc è solo una comunicazione unidirezionale.

È molto divertente sviluppare questo progetto. Ed è abbastanza bello controllare l'appartamento da diversi dispositivi, anche se la connessione Internet si interrompe.

Consigliato: