Inhaltsverzeichnis:

Wer ist an der Tür, ein Alexa-gesteuertes Kamerasystem - Gunook
Wer ist an der Tür, ein Alexa-gesteuertes Kamerasystem - Gunook

Video: Wer ist an der Tür, ein Alexa-gesteuertes Kamerasystem - Gunook

Video: Wer ist an der Tür, ein Alexa-gesteuertes Kamerasystem - Gunook
Video: ALEXA, Tür auf! 5 ROUTINEN für dein SMART HOME 2024, Juli
Anonim
Wer steht vor der Tür, ein Alexa-gesteuertes Kamerasystem
Wer steht vor der Tür, ein Alexa-gesteuertes Kamerasystem
Wer steht vor der Tür, ein Alexa-gesteuertes Kamerasystem
Wer steht vor der Tür, ein Alexa-gesteuertes Kamerasystem
Wer steht vor der Tür, ein Alexa-gesteuertes Kamerasystem
Wer steht vor der Tür, ein Alexa-gesteuertes Kamerasystem

Manchmal möchten Sie beim Fernsehen die Tür nicht öffnen, es sei denn, es ist wichtig. Dieses Projekt ermöglicht es Ihnen, die Person an der Tür zu sehen, indem Sie einfach dem Echo-Gerät von Amazon sagen: „Alexa, schalte den Türmonitor ein“. Sie checken, wer auf dem TV-Bildschirm erscheint, dann zurück zum normalen TV-Programm „Alexa, schalte den Fernseher ein“. Das System könnte auch für ältere Erwachsene oder Kinder von Wert sein, die anfällig dafür wären, von Verkäufern, Dieben und dergleichen ausgenutzt zu werden. Auf diese Weise kann der Großbildfernseher Ihres Unterhaltungssystems nicht nur der Kameramonitor für die Haustürkamera, sondern auch für alle anderen Sicherheitskameras sein, die Sie möglicherweise haben. Tatsächlich könnte es sogar erweitert werden, um Videos von Internetkameras wie Strandkameras usw. anzuzeigen.

Teile:

Unterhaltungssystem:

Fernseher mit mehreren HDMI-Eingängen (die meisten Fernseher haben sie)

Kabel oder DVR-Box

Router und Internetverbindung über Kabelbox (wird möglicherweise nicht benötigt, wenn Sie über WLAN verfügen)

Amazon-Echo ("Alexa")

Harmony Hub

Kamera(s)

IP-Kamera an der Haustür (Power Over Ethernet -POE- Typ bevorzugt)

Raspberry Pi3 in einer Projektbox (Original-Pi kann funktionieren) mit HDMI-Kabel

Arduino Pro Mini 8 MHz, 3,3 V

IR-Modul (die gängigsten Typen funktionieren)

Schritt 1: Setup, Vorprogrammierung (Testen)

Setup, Vorprogrammierung (Testen)
Setup, Vorprogrammierung (Testen)
Setup, Vorprogrammierung (Testen)
Setup, Vorprogrammierung (Testen)
Setup, Vorprogrammierung (Testen)
Setup, Vorprogrammierung (Testen)

Dieses Projekt basiert auf dem Pi3 omxplayer, der Videos mit Hardwarebeschleunigung dekodiert. Omxplayer kann über eine Befehlszeile im Pi-Terminal mit dem entsprechenden rtsp://user@password@ipaddress-Format, das Ihre Kamera benötigt, getestet werden. Der Pi sollte mit Ethernet verbunden sein (obwohl Pi3 auch über WLAN verbunden werden könnte, aber nicht getestet wurde) und sich physisch im Unterhaltungszentrum befinden, damit das HDMI-Ausgangskabel des Pi die HDMI-Eingangsbuchse des Fernsehers erreichen kann. Das Arduino- und IR-Modul wird mit dem Pi verbunden und gibt die Informationen weiter, die durch das Lesen der Tastendrücke der TV-Fernbedienung gewonnen wurden. Der Pi könnte diese Decodierung direkt vom IR-Modul aus durchführen, aber ich bin besser in der Arduino-Programmierung als in der Python-Programmierung und spart außerdem Prozessorressourcen für die Hauptaufgabe des Pi, den/die Videostream(s) zu decodieren.

Da mein Sicherheitssystem über mehrere Kameras verfügt, habe ich das Pi-betriebene Überwachungsdisplay verwendet, um 4 Kameras gleichzeitig anzuzeigen und einzelne Kameras im Vollbildmodus anzuzeigen. Befolgen Sie diese Anweisungen, aber Sie werden wahrscheinlich viele Probleme haben, die Kameras stabil anzuzeigen.

Eines der Probleme besteht darin, dass die im Programm aufgeführten 4 Fenstergrößen möglicherweise nicht zu Ihrer speziellen TV-Auflösung passen. Finden Sie heraus, welche Auflösungen Ihr Monitor unterstützt, während Sie die Kameraauflösung Ihrer Kameras notieren. Die meisten IP-Kameras haben einen Stream mit hoher Auflösung (1080p) und einen Stream mit niedriger Auflösung (640x480). Wenn Sie also nur ein hochauflösendes Video von der Haustür haben möchten, wählen Sie das hochauflösende Stream-Format rtsp://. Wählen Sie den Stream mit niedriger Auflösung für Kameras in 4 Quadranten, Sie werden bei den kleineren Bildgrößen keinen großen Unterschied bemerken. Sie können die Fenstergrößen meines Bash-Skripts (test.sh) verwenden (im 1080p-Auflösungsmodus, der 4 gleich große 640x480-Kameras anzeigt, die passend skaliert sind). Andernfalls verwenden Sie Millimeterpapier, um Ihre TV-Pixel zu gestalten, und skizzieren Sie dann, wie viele Rechtecke Sie in diesem Bereich haben möchten. Finden Sie als nächstes heraus, wie viele 640x480-Videos passen, ohne dass sich das Seitenverhältnis zu stark ändert (horizontales Dehnen sieht besser aus als vertikal). Ich mag keine Grenzen, also habe ich nicht nach ihnen gerechnet. Nummerieren Sie die Rechtecke von links oben nach rechts unten 1, 2, 3. usw. Dann erstellen Sie eine Spalte mit Fensternummern, schreiben Sie für jede Reihe dieser Zahlen das obere linke x, y-Pixel und das untere rechte Pixel x, y auf. Diese Zahlen werden dann in das Skript eingefügt, um eine benutzerdefinierte Anzeige zu erhalten. Sie können auf Wunsch eine 3 x 3 Anzeige verwenden. Wenn Sie nur eine Anzeige wünschen, kommentieren Sie einfach die anderen 3 Kameras aus und stellen Sie die Fenstergröße auf die volle Bildschirmauflösung ein (und verwenden Sie den hochauflösenden rtsp-Stream) und nennen Sie das Skript "test1.sh". Erstellen Sie so viele Skripte, wie Sie möchten. Das Python-Programm btn.py ruft sie auf, wenn die GPIO-Pins vom Arduino geändert werden.

Ein Problem bei der Erzielung einer stabilen Anzeige (oben im Bild fein, aber untere vertikale Bildstreifen) besteht darin, dass viele Kameras mit rtsp über tcp viel besser streamen (ich verwende Hikvision 2 bis 5 Mp IP-Kameras). Verwenden Sie daher "--avdict rtsp_transport:tcp" im omxplayer wie gezeigt. Andere nützliche omxplayer-Befehle sind volume (--vol -6000 für stumm) und Puffer (--video queue x), wobei x=1 oder mehr ist.

IP-Kameraeinstellungen können auch Probleme mit omxplayer verursachen. Alle IP-Kameras sollten auf die gleichen Bilder pro Sekunde eingestellt sein, sonst wird das Bild unterbrochen. Wenn auf radikal unterschiedliche Bildraten eingestellt wurde, ging die auf einem Kamerazeitstempel angezeigte Zeit tatsächlich einige Sekunden rückwärts, dann vorwärts, dann zurück usw. Stellen Sie sicher, dass sich Ihre omxplayer-Fenster nicht überlappen, oder der überlappende Teil flimmert.

Schritt 2: Zusammenbauen

Etwas zusammensetzen
Etwas zusammensetzen

Sie können die Kabelbox und den Fernseher manuell steuern, damit der Pi die Vordertürkamera anzeigen kann. Dies erfordert jedoch einige Tastendrücke, einschließlich des entsprechenden Umschaltens der Universalfernbedienung vom Kabelmodus in den TV-Modus, um die HDMI-Eingangsquelle auf den Pi-Kamera-Decoder (HDMI 2) umzustellen. Wenn Sie die Möglichkeit haben möchten, zusätzliche Kamerabildschirme anzuzeigen, müssen Sie auch die Universalfernbedienung auf AUX umstellen, um den Arduino und damit die Pi-Kameraauswahl zu steuern. Um diesen Vorgang zu vereinfachen, verwenden Sie einen Harmony Hub und die zugehörige Harmony-Smartphone-App, bringen Sie ihm bei, den Fernseher und die Kabelbox für normales Fernsehen in einer Aktion zu steuern, und erstellen Sie dann eine weitere Aktion, um den Pi-Videomonitor zu steuern. Die Aktivität umfasst das Einschalten des Fernsehers, den TV-Eingang zu HDMI 2 und die Steuerung der virtuellen NECx-TV-Tasten (dh Arduino und Pi) 0 bis 5. Dadurch können Sie alles über die Harmony-Smartphone-App steuern. Um es noch einfacher zu machen, verknüpfen Sie die Amazon Echo Dot (Alexa)-App mit der Harmony-App, um die TV- oder Türüberwachungsfunktionen per Sprachsteuerung zu steuern. Auf der Harmony-Website finden Sie Details zum Aktivieren dieser neuen Alexa-Skills. Neue Fähigkeiten. Einmal mit neuen Alexa-Skills verknüpft, ermöglichen Schlüsselwörter wie „Schalten Sie den Fernseher ein“oder „Schalten Sie den Türmonitor ein“die entsprechenden Aktionen, ohne dass IR von der Universalfernbedienung benötigt wird.

Der Pi ist über Ethernet mit Ihrem LAN und über ein HDMI-Kabel mit dem Fernseher verbunden. Ich habe einen 3,3-Volt-Pro Mini über Drähte an den Pi als Option installiert, um eine zusätzliche Kameraumschaltung hinzuzufügen. Der Pro Mini kann über den 3,3-Volt-Pin des Pi mit Strom versorgt werden. Ein IR-Modul wird an Pin 2 des Arduino angeschlossen, und die beigefügte Skizze decodiert den Tastendruck von 0 bis 5 (eigentlich 0 bis 9, aber einige Arduino-Pins sind noch nicht angeschlossen). Die Arduino-Ausgänge sind mit den digitalen Eingangs-GPIO-Pins des Pi verbunden, wo ein Bash-Skript-Interrupt bestimmt, welche "Taste" gedrückt wurde, dann eine Anzeigeoption stoppt und eine andere startet.

Meine Kabelbox ist von Spectrum (ehemals Time Warner Cable), einem Motorola DVR Modell DCX3510. Es verwendet das GI-Kabelprotokoll für IR. Der Sony-Fernseher verwendet Sony-Protokoll 2. Ich dachte, der eine oder andere dieser Codes wäre in Ordnung, um den Pi-IR-Empfänger zu steuern, und beide funktionierten, obwohl es sich als nicht praktikabel herausstellte. Die Fernbedienung erwartet zusätzliche Befehle oder wechselt automatisch auch die Eingangsquelle, wenn eine Taste 0 bis 9 gedrückt wird. Daher musste ich einen anderen Code verwenden, der nicht mit dem Kabeltuner oder dem Fernseher interagiert. Ich stellte fest, dass meine Universalfernbedienung einen zuvor programmierten Code für ein AUX-Gerät hatte (weiß nicht, was es steuerte) und entschied mich, es zu verwenden. Die erzeugten Codes sagten, dass es NECx, einen 32-Bit-Code, verwendet, also habe ich diese Tastencodes in die Arduino IR_Rev_Codes_Pi_Monitor-Skizze eingegeben. Ändern Sie das Programm, wenn Sie ein anderes Modell haben, indem Sie das Empfangsprogramm in IRLib2 verwenden und notieren Sie die Hersteller-, Protokoll- und Hex-Werte für die gedrückten Tasten.

Schritt 3: Fazit

Abschluss
Abschluss
Abschluss
Abschluss
Abschluss
Abschluss

Der Türmonitor ist ein praktisches Hausautomationsprojekt. Es war meine erste Erfahrung, den Pi mit Python zu programmieren. Python ermöglicht die Programmierung eines Interrupts, eine Funktion, von der ich dachte, dass sie Mikrocontrollern vorbehalten wäre. Der Interrupt ermöglicht es dem Programm, normal zu laufen und omxplayer auszuführen, ohne ständig zu überprüfen, ob eine andere Aktion erforderlich ist, wie z. B. das Ändern der Anzeige auf einen neuen Kamera-Feed. Wenn jedoch die Unterbrechung auftritt, bestimmt das Programm dann, welcher neue Video-Feed aufgerufen werden soll. Der Arduino ist so eingerichtet, dass er einen Impuls zum Auslösen des Python-Interrupts liefert. Tritt der Interrupt auf, dann sucht das Programm, welcher Arduino-Ausgang (entsprechend der gedrückten IR-Fernbedienungstaste) aktiviert ist. Schließlich beendet das Programm alle aktuellen omxplayer-Anzeigen und startet die neue omxplayer-Anzeige.

Ich habe gelernt, dass der Pi seine GPIO-Pins nicht wie der Arduino standardmäßig auf den Eingang einstellt - kein Fehler des Pi, aber so ist der Broadcom BCM2837 ab Werk. Ich mag den 1,2-GHz-Prozessor mit 4 Kernen, einem kostengünstigen Computer mit geringem Stromverbrauch, der großartige HD-Videos anzeigen kann. Die IR-Taste 1 zeigt das Quad-Display und die Tasten 2 bis 5 zeigen jeweils ein einzelnes großes Display einer Kamera in High Definition.

Durch Drücken der IR-Fernbedienungstaste 0 wird die Videoanzeige abgebrochen und die Pi-Befehlszeile angezeigt. Wenn Sie Youtube-Videos oder ähnliches ansehen möchten, verwenden Sie eine Bluetooth-Tastatur, geben Sie "startx" ein und verwenden Sie den Pi-Browser, um zum Youtube-Video zu navigieren und es im Vollbildmodus in High Definition abzuspielen.

Empfohlen: