Sommario:

Chi c'è alla porta, un sistema di telecamere attivato da Alexa: 3 passaggi
Chi c'è alla porta, un sistema di telecamere attivato da Alexa: 3 passaggi

Video: Chi c'è alla porta, un sistema di telecamere attivato da Alexa: 3 passaggi

Video: Chi c'è alla porta, un sistema di telecamere attivato da Alexa: 3 passaggi
Video: Come usare Echo Show per la sorveglianza grazie alla fotocamera 2024, Novembre
Anonim
Who's at the Door, un sistema di telecamere attivato da Alexa
Who's at the Door, un sistema di telecamere attivato da Alexa
Who's at the Door, un sistema di telecamere attivato da Alexa
Who's at the Door, un sistema di telecamere attivato da Alexa
Who's at the Door, un sistema di telecamere attivato da Alexa
Who's at the Door, un sistema di telecamere attivato da Alexa

A volte mentre guardi la TV non vuoi rispondere alla porta a meno che non sia importante. Questo progetto ti consente di visualizzare la persona alla porta semplicemente dicendo al dispositivo Echo di Amazon "Alexa, accendi il monitor della porta". Controlla chi appare sullo schermo della TV, quindi torna alla normale programmazione TV "Alexa, accendi la TV". Il sistema potrebbe anche essere utile per gli anziani o i bambini che sarebbero vulnerabili ad essere sfruttati da venditori, ladri e simili. Ciò consente alla TV a grande schermo del tuo sistema di intrattenimento di essere il monitor di visualizzazione della telecamera non solo per la telecamera della porta d'ingresso, ma per qualsiasi altra telecamera di sicurezza che potresti avere; infatti potrebbe anche essere esteso per visualizzare video da telecamere internet, come beach cam, ecc.

Parti:

Sistema di intrattenimento:

TV con diversi ingressi HDMI (la maggior parte dei televisori li ha)

Cavo o scatola DVR

Router e connessione Internet tramite decoder via cavo (potrebbe non essere necessario se si dispone di WiFi)

Amazon Eco ("Alexa")

Harmony Hub

Macchine fotografiche)

Telecamera IP sulla porta anteriore (preferibilmente di tipo Power Over Ethernet -POE)

Raspberry Pi3 in una scatola del progetto (il Pi originale potrebbe funzionare) con cavo HDMI

Arduino Pro Mini 8 Mhz, 3.3v

Modulo IR (funzioneranno i tipi più comuni)

Passaggio 1: configurazione, programmazione preliminare (test)

Setup, programmazione preliminare (test)
Setup, programmazione preliminare (test)
Setup, programmazione preliminare (test)
Setup, programmazione preliminare (test)
Setup, programmazione preliminare (test)
Setup, programmazione preliminare (test)

Questo progetto si basa sull'omxplayer Pi3 che decodifica i video con accelerazione hardware. Omxplayer può essere eseguito di prova da una riga di comando nel terminale Pi utilizzando il formato rtsp://user@password@ipaddress appropriato richiesto dalla fotocamera. Il Pi dovrebbe essere collegato a Ethernet (sebbene Pi3 possa essere collegato anche tramite WiFi, ma non testato) e posizionato fisicamente nel centro di intrattenimento in modo che il cavo di uscita HDMI del Pi possa raggiungere il jack di ingresso HDMI della TV. Il modulo Arduino e IR si collegherà al Pi e trasmetterà le informazioni ottenute dalla lettura delle pressioni dei pulsanti del telecomando TV. Il Pi potrebbe eseguire questa decodifica direttamente dal modulo IR, ma sono più bravo nella programmazione Arduino rispetto alla programmazione Python e inoltre consente di risparmiare risorse del processore per il compito principale del Pi di decodificare i flussi video.

Poiché il mio sistema di sicurezza ha più telecamere, ho utilizzato il display di monitoraggio alimentato da Pi come un modo per visualizzare 4 telecamere contemporaneamente, oltre a visualizzare le singole telecamere a schermo intero. Segui queste istruzioni, tuttavia probabilmente avrai molti problemi a visualizzare le fotocamere in modo stabile.

Uno dei problemi è che le 4 dimensioni della finestra elencate nel programma potrebbero non adattarsi alla tua particolare risoluzione TV. Trova le risoluzioni supportate dal tuo monitor mentre prendi nota della risoluzione della fotocamera che hanno le tue fotocamere. La maggior parte delle telecamere IP ha uno stream ad alta risoluzione (1080p) e uno a bassa risoluzione (640x480), quindi se vuoi solo un video ad alta risoluzione della porta d'ingresso, scegli il formato stream ad alta risoluzione rtsp://. Scegli lo streaming a bassa risoluzione per le fotocamere in 4 quadranti, non noterai molta differenza con le dimensioni dell'immagine più piccole. Puoi utilizzare le dimensioni della finestra del mio script bash (test.sh) (in modalità di risoluzione 1080p, visualizzando 4 telecamere 640x480 di dimensioni uguali ridimensionate per adattarsi). Altrimenti, usa la carta millimetrata per disporre i pixel della TV, quindi disegna quanti rettangoli desideri in quell'area. Quindi trova quanti video 640x480 si adatteranno senza cambiare troppo l'aspetto (l'allungamento in orizzontale sembra migliore che in verticale). Non mi piacciono i confini, quindi non li ho calcolati. Numera i rettangoli da in alto a sinistra a in basso a destra 1, 2, 3..ecc. Quindi crea una colonna di numeri di finestra, per ogni riga di quei numeri scrivi il pixel x, y in alto a sinistra e il pixel x, y in basso a destra. Questi numeri vengono quindi sostituiti nello script per ottenere un display personalizzato, se lo si desidera, è possibile avere un display 3 x 3. Se vuoi solo un display, commenta le altre 3 telecamere e imposta la dimensione della finestra alla risoluzione a schermo intero (e usa il flusso rtsp ad alta risoluzione) e intitola lo script "test1.sh". Crea tutti gli script che vuoi, il programma btn.py Python li richiamerà quando i pin GPIO vengono modificati da Arduino.

Un problema nell'ottenere un display stabile (parte superiore dell'immagine bene, ma striature verticali dell'immagine inferiore) è che molte telecamere trasmettono molto meglio usando rtsp su tcp (io uso telecamere IP Hikvision da 2 a 5 Mp). Pertanto, usa "--avdict rtsp_transport:tcp" in omxplayer come mostrato. Altri utili comandi di omxplayer sono volume (--vol -6000 per mute) e buffer (--video queue x) dove x=1 o più.

Le impostazioni della telecamera IP possono anche causare problemi con omxplayer. Tutte le telecamere IP dovrebbero essere impostate sugli stessi fotogrammi al secondo o l'immagine si interromperà. Quando è impostato su frame rate radicalmente diversi, il tempo visualizzato su un timestamp della telecamera è effettivamente andato indietro per alcuni secondi, poi avanti e poi indietro ecc. Assicurati che le finestre di omxplayer non si sovrappongano, o la parte sovrapposta sfarfallerà.

Passaggio 2: metterlo insieme

Metterlo insieme
Metterlo insieme

È possibile controllare manualmente il decoder via cavo e la TV per consentire al Pi di mostrare la telecamera della porta anteriore. Tuttavia, ciò richiede alcune pressioni dei pulsanti, inclusa la commutazione appropriata del telecomando universale dalla modalità cavo alla modalità TV per consentire la modifica della sorgente di ingresso HDMI al decodificatore della fotocamera Pi (HDMI 2). Se vuoi la possibilità di mostrare schermate aggiuntive della fotocamera, devi anche impostare il telecomando universale su AUX per controllare l'Arduino e quindi la selezione della fotocamera Pi. Per semplificare questo processo, utilizzare un Hub Harmony e l'app per smartphone Harmony associata, insegnandogli a controllare la TV e il decoder via cavo per la normale visualizzazione della TV in un'attività, quindi creare un'altra attività per controllare il monitor video Pi. L'attività include l'accensione della TV, l'ingresso TV su HDMI 2 e il controllo dei pulsanti da 0 a 5 della TV NECx virtuale (ad es. Arduino e Pi). Ciò consente di controllare tutto tramite l'app per smartphone Harmony. Per rendere le cose ancora più semplici, collega l'app Amazon Echo Dot (Alexa) con l'app Harmony per controllare la TV o le funzioni di monitoraggio della porta con la voce. Il sito web di Harmony fornisce dettagli su come abilitare queste nuove abilità di Alexa. Nuove abilità. Una volta collegate alle nuove abilità di Alexa, parole chiave come "Accendi la TV" o "Accendi il monitor della porta" abiliteranno le azioni appropriate senza bisogno di IR dal telecomando universale.

Il Pi è collegato tramite Ethernet alla LAN e tramite cavo HDMI alla TV. Ho installato un Pro Mini da 3,3 volt tramite cavi al Pi come opzione per aggiungere un'ulteriore commutazione della fotocamera. Il Pro Mini può essere alimentato dal pin da 3,3 volt del Pi. Un modulo IR si collega al pin 2 di Arduino e lo sketch allegato decodifica il pulsante premendo da 0 a 5 (in realtà da 0 a 9, ma alcuni pin di Arduino non sono ancora collegati). Le uscite Arduino si collegano ai pin GPIO di ingresso digitale del Pi, dove un interrupt di script bash determina quale "pulsante" è stato premuto, quindi interrompe un'opzione di visualizzazione del display e ne avvia un'altra.

Il mio decoder via cavo proviene da Spectrum (precedentemente Time Warner Cable), che è un modello Motorola DVR DCX3510. Utilizza il protocollo GI Cable per IR. La TV Sony utilizza il protocollo Sony 2. Ho pensato che l'uno o l'altro di quei codici sarebbe andato bene per controllare il ricevitore Pi IR e ha funzionato, anche se si è rivelato non pratico. Il telecomando si aspetta comandi aggiuntivi o cambia automaticamente anche la sorgente di ingresso quando viene premuto un pulsante da 0 a 9. Pertanto, ho dovuto utilizzare un codice diverso che non interagisse con il sintonizzatore via cavo o la TV. Ho scoperto che il mio telecomando universale aveva un codice precedentemente programmato per un dispositivo AUX (non so cosa controllasse) e ho deciso di usarlo. I codici prodotti dicevano che usava NECx, un codice a 32 bit, quindi ho inserito quei codici dei pulsanti nello sketch Arduino IR_Rev_Codes_Pi_Monitor. Modificare il programma se si dispone di un modello diverso utilizzando il programma di ricezione in IRLib2 e prendere nota del produttore, del protocollo e dei valori esadecimali per i pulsanti premuti.

Passaggio 3: conclusione

Conclusione
Conclusione
Conclusione
Conclusione
Conclusione
Conclusione

Il videocitofono è un pratico progetto di domotica. È stata la mia prima esperienza con la programmazione del Pi con Python. Python consente di programmare un interrupt, una funzionalità che pensavo fosse riservata ai microcontrollori. L'interruzione consente al programma di funzionare normalmente, eseguendo omxplayer, senza controllare costantemente se è necessaria un'altra azione come cambiare il display con un nuovo feed della telecamera. Tuttavia, se si verifica l'interruzione, il programma determina quale nuovo feed video deve essere attivato. L'Arduino è impostato per fornire un impulso per attivare l'interruzione Python. Se si verifica l'interruzione, il programma cerca quale particolare uscita Arduino (corrispondente al pulsante del telecomando IR premuto) è attivata. Infine, il programma interrompe qualsiasi display omxplayer corrente e avvia il nuovo display omxplayer.

Ho imparato che il Pi non imposta i suoi pin GPIO per l'input come fa Arduino per impostazione predefinita, non è un errore del Pi, ma è il modo in cui Broadcom BCM2837 proviene dalla fabbrica. Mi piace il processore a 4 core, 1.2 Ghz, un computer a bassa potenza e basso costo in grado di visualizzare ottimi video HD. Il pulsante IR 1 mostra il display quad e i pulsanti da 2 a 5 mostrano ciascuno un unico grande display di una telecamera in alta definizione.

Premendo il pulsante del telecomando IR 0 si annulla la visualizzazione video e si mostra la riga di comando Pi. Se vuoi guardare i video di Youtube o simili, usa una tastiera Bluetooth, digita "startx" e usa il browser Pi per accedere al video di Youtube e riprodurlo a schermo intero in alta definizione.

Consigliato: