Skip to content
Unser smartes Zuhause
  • Baufortschritt
  • Mängeltagebuch
  • Smart Home
  • Buchtipps
  • Gallerie
  • Datenschutz
  • Gästebuch
  • Impressum
  • Search Icon

Unser smartes Zuhause

Unser Weg zu den eigenen "smarten" 4 Wänden :)

Anzeige des IP-Kamerabilds auf einem FireTV bei einem Ereignis

Anzeige des IP-Kamerabilds auf einem FireTV bei einem Ereignis

26. September 2019 Dennis Comments 10 comments

Da wir aus bestimmten Gründen immer noch auf unseren Keller warten, habe ich gezwungenermaßen etwas Zeit für Spielereien 😉 . Die Idee war, dass durch ein Ereignis (Türklingel/Fensterkontakt/Alarm/Sprachbefehl usw.) der Fernseher eingeschaltet und das jeweilige IP-Kamerabild direkt auf dem TV angezeigt wird. Nach einigen gescheiterten Versuchen mit einem Google Chromecast und VLC als RTSP-Stream-Umwandler habe ich mich an einen Lösungansatz mittels Amazon FireTV / FireTV-Stick gesetzt.

Die Voraussetzung für diese Anleitung sind:

  • eine Node-Red Installation auf einer beliebigen Plattform (Parallelinstallation zu Loxberry ist ohne Probleme möglich). Wie man Node-Red auf einem Raspberry Pi installiert habe ich in einem vorherigen Beitrag beschrieben.
  • ein FireTV/FireTV-Stick 😉
  • SSH Zugriff auf euren Raspberry Pi / Loxberry
  • Die Installation der App tinyCamMonitor Pro (Es funktionieren sicherlich auch andere Apps, die Vorgehensweise ist identisch oder zumindest ähnlich)

ADB (Android Debug Bridge)

Um ein FireTV aus der Ferne steuern zu können, wird die Android Debug Bridge (ADB) benötigt. Dieses Toolset muss auf der Node-Red Plattform installiert werden. Im folgenden Beispiel verwende ich einen Raspberry Pi 3 mit einer aktuellen Loxberry Installation.

Auf dem Raspberry Pi (Loxberry) kann die Installation des ADB Toolset mit folgendem Konsolenbefehl durchgeführt werden:

sudo apt-get install adb

ADB aktivieren

Nach erfolgreicher Installation von ADB muss diese Funktion zunächst auf dem FireTV/FireTV-Stick aktiviert werden. Hierzu zunächst die Einstellungen des FireTV öffnen:

  • In den Einstellungen den Menüpunkt “Mein Fire TV” öffnen

  • Im Menü “Mein Fire TV” den Menüpunkt “Entwickleroptionen” öffnen

  • In den Entwickleroptionen den Punkt ADB-Debugging aktivieren

ADB Verbindung herstellen

Um eine Verbindung via ADB herzustellen, müsst ihr zunächst die IP Adresse eures FireTV herausfinden. Diese könnt ihr, sofern nicht schon bekannt, in den Einstellungen unter Mein Fire TV / Info / Netzwerk auslesen.

Sofern die Installation von ADB auf dem Raspberry Pi funktioniert hat, lässt sich nun mit folgendem Befehl eine ADB Verbindung zu eurem FireTV aufbauen (192.168.178.72 ist dabei die IP Adresse meines FireTV). Der Port 5555 ist fest und darf nicht verändert werden.

adb connect 192.168.178.72:5555

Nach diesem Befehl könnt ihr mittels adb devices die Verbindung eures FireTV überprüfen. Die Ausgabe sollte in etwa folgendermaßen aussehen:

List of devices attached
192.168.178.72:5555 device

Bei einer erfolgreichen Verbindung, könntet ihr nun schon mit folgendem Befehl z.B. Netflix öffnen:

adb shell am start -n com.netflix.ninja/.MainActivity -a android.intent.action.VIEW -d netflix

Starten von tinyCamViewer Pro

Nach der Installation von tinyCamViewer über den Amazon App Store, kann die App via Fernbedienung zunächst gestartet und konfiguriert werden. Wie ihr dort eure IP Kameras einbindet, wird in dieser Anleitung nicht behandelt. Viele Hersteller sind in der App aber bereits voreingestellt sodass die Konfiguration kein Hinderniss darstellen sollte. Sobald eure Kamerabilder in der Live View Übersicht angezeigt werden, könnt ihr mit der Anleitung fortfahren. (Bei euch sollten hier alle benötigten Kameras eingerichtet werden und sichtbar sein. Bei meinem Testaufbau stand mir lediglich eine Kamera zur Verfügung)

Da wir im folgenden Beispiel nicht einfach nur Netflix starten wollen, sondern die CamViewer App starten soll, müssen wir zunächst den dazu passenden Befehl herausfinden. Die einfachste Möglichkeit sich die notwendige Activity anzeigen zu lassen ist, die App zunächst via Fernbedienung am FireTV zu starten und im Hintergrund offen zu lassen. 

Mit Hilfe des folgenden Befehls kann man sich alle offenen und versteckten Fenster des FireTV anzeigen lassen.

adb shell dumpsys window windows

Nun muss lediglich noch das passende Fenster (die passende App) gefunden werden. In dem Fall tinyCamViewer ist dies der folgende Abschnitt:

 

Das relevante Fenster der Ausgabe (Fenster 7)

Der Ausgabe können wir entnehmen, dass die für unser Beispiel interessante Activity folgende Bezeichnung trägt: 

com.alexvas.dvr.pro/com.alexvas.dvr.activity.LiveViewActivity

Der komplette Befehl zum Starten der tinyCamViewer App lautet also:

adb shell am start -n com.alexvas.dvr.pro/com.alexvas.dvr.activity.LiveViewActivity

Die App sollte nun direkt in Die LiveView Ansicht starten. Innerhalb der App lässt sich folgendermaßen navigieren:

  • Anzeige der Kameraübersicht : adb shell input keyevent KEYCODE_0
  • Anzeige Kamera 1: adb shell input keyevent KEYCODE_1
  • Anzeige Kamera 2: adb shell input keyevent KEYCODE_2
  • usw.

Um den Startbildschirm (Home) des FireTV anzuzeigen kann der folgende Befehl verwendet werden:

adb shell input keyevent 3

Steuerung über Node-Red

Um die Befehle flexibel auslösen zu können, habe ich die Kommandos jeweils in eine Exec Node gepackt. Somit kann ich das Starten der App und die Auswahl der Kameras beliebig auslösen. Ob über ein Loxone Event , KNX oder ein sonstiges Ereignis. Am folgenden Beispiel habe ich Testweise parallel zu einer Lichtszene die Kamera 1 als Vollbild darstellen lassen.

  1. Befehl zum App Starten
  2. 500ms warten
  3. Befehl zur Kamera Übersicht
  4. 500ms warten
  5. Kamera 1 auswählen

Das TV Einschalten wird in diesem Beispiel nicht behandelt da hier die Unterschiede pro verwendetem TV zu groß sind. Dies kann aber im Falle Loxone über ein IR Control Air erfolgen. Sollte ein Smart TV im Einsatz sein und dieser über eine brauchbare API verfügen, ist dies natürlich die bessere Wahl. Wer sich nicht sicher ist, wie und ob er seinen TV über Loxone oder Node-Red ansteuern kann, darf mir gerne ein Kommentar unter dem Beitrag lassen oder mir eine E-Mail schreiben. Wir finden bestimmt eine Lösung 🙂

Der folgende Code kann direkt in Node-Red importiert werden. Bei Fragen oder Anregungen gerne Kommentieren und/oder eine E-Mail schreiben.

[{"id":"bda4ea3f.77db18","type":"exec","z":"c7b3a4bf.733698","command":"adb connect ","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":390,"y":80,"wires":[[],[],[]]},{"id":"5c220fab.b3918","type":"inject","z":"c7b3a4bf.733698","name":"","topic":"","payload":"192.168.178.72:5555","payloadType":"str","repeat":"300","crontab":"","once":true,"onceDelay":0.1,"x":180,"y":80,"wires":[["bda4ea3f.77db18"]]},{"id":"ab0a1223.4ab33","type":"exec","z":"c7b3a4bf.733698","command":"adb shell am start -n com.alexvas.dvr.pro/com.alexvas.dvr.activity.LiveViewActivity","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":610,"y":140,"wires":[[],[],[]]},{"id":"26554f22.4d4d7","type":"inject","z":"c7b3a4bf.733698","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":140,"wires":[["ab0a1223.4ab33"]]},{"id":"cd611b74.70dfd8","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent KEYCODE_0","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":470,"y":200,"wires":[[],[],[]]},{"id":"3111ca6d.198e36","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent KEYCODE_1","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":470,"y":260,"wires":[[],[],[]]},{"id":"2fd55ba9.f30854","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent KEYCODE_2","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":470,"y":320,"wires":[[],[],[]]},{"id":"5bd2037.edc00fc","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent 3","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":430,"y":380,"wires":[[],[],[]]},{"id":"1d2ba198.4effce","type":"inject","z":"c7b3a4bf.733698","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":200,"wires":[["cd611b74.70dfd8"]]},{"id":"774809aa.e54788","type":"inject","z":"c7b3a4bf.733698","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":260,"wires":[["3111ca6d.198e36"]]},{"id":"6406ca1d.66a744","type":"inject","z":"c7b3a4bf.733698","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":320,"wires":[["2fd55ba9.f30854"]]},{"id":"c81c01b6.dd7b7","type":"inject","z":"c7b3a4bf.733698","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":220,"y":380,"wires":[["5bd2037.edc00fc"]]},{"id":"a7409b6c.8ed778","type":"comment","z":"c7b3a4bf.733698","name":"Taste Home","info":"","x":640,"y":380,"wires":[]},{"id":"f93d150f.42cb08","type":"comment","z":"c7b3a4bf.733698","name":"Taste 2","info":"","x":710,"y":320,"wires":[]},{"id":"e96ab39b.1d19b","type":"comment","z":"c7b3a4bf.733698","name":"Taste 1","info":"","x":710,"y":260,"wires":[]},{"id":"ce455fbc.579d1","type":"comment","z":"c7b3a4bf.733698","name":"Taste 0","info":"","x":710,"y":200,"wires":[]},{"id":"ae406f26.f8929","type":"comment","z":"c7b3a4bf.733698","name":"CamViewerPro starten","info":"","x":1040,"y":140,"wires":[]},{"id":"b686d1d7.6b292","type":"comment","z":"c7b3a4bf.733698","name":"Verbindung herstellen","info":"","x":600,"y":80,"wires":[]},{"id":"bd7a469d.dd4c48","type":"exec","z":"c7b3a4bf.733698","command":"adb shell am start -n com.alexvas.dvr.pro/com.alexvas.dvr.activity.LiveViewActivity","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":850,"y":540,"wires":[[],[],[]]},{"id":"694adc11.46bae4","type":"delay","z":"c7b3a4bf.733698","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":660,"y":600,"wires":[["cf8462d2.0728a","309ab568.cb519a"]]},{"id":"cf8462d2.0728a","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent KEYCODE_0","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":970,"y":600,"wires":[[],[],[]]},{"id":"309ab568.cb519a","type":"delay","z":"c7b3a4bf.733698","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":900,"y":660,"wires":[["11e876a1.0c0f69"]]},{"id":"11e876a1.0c0f69","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent KEYCODE_1","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":1190,"y":660,"wires":[[],[],[]]},{"id":"d6bb1a9e.85e578","type":"comment","z":"c7b3a4bf.733698","name":"Kamera 1 Vollbild","info":"","x":1440,"y":580,"wires":[]},{"id":"832c35bb.5510d8","type":"loxone-control-in","z":"c7b3a4bf.733698","name":"","miniserver":"47d7601b.cdb11","control":"133561d8-03c1-1ea2-ffff1271215ac08e","state":"133561d8-03c1-1e5a-ffff05eca0397b02","x":140,"y":640,"wires":[["9aec7e63.1ad82"]]},{"id":"5178d543.46297c","type":"switch","z":"c7b3a4bf.733698","name":"","property":"payload[0]","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"778","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":430,"y":640,"wires":[["bd7a469d.dd4c48","694adc11.46bae4"],["d4e64230.36704"]]},{"id":"d4e64230.36704","type":"exec","z":"c7b3a4bf.733698","command":"adb shell input keyevent 3","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":670,"y":720,"wires":[[],[],[]]},{"id":"c9361deb.8e235","type":"comment","z":"c7b3a4bf.733698","name":"Taste Home","info":"","x":880,"y":720,"wires":[]},{"id":"9aec7e63.1ad82","type":"rbe","z":"c7b3a4bf.733698","name":"","func":"rbei","gap":"","start":"","inout":"out","property":"payload[0]","x":290,"y":640,"wires":[["5178d543.46297c"]]},{"id":"47d7601b.cdb11","type":"loxone-miniserver","z":"","host":"192.168.178.5","port":"80","enctype":"0","active":true}]

Teilen mit:

  • Klicken zum Ausdrucken (Wird in neuem Fenster geöffnet)
  • Klick, um über Twitter zu teilen (Wird in neuem Fenster geöffnet)
  • Klick, um auf Facebook zu teilen (Wird in neuem Fenster geöffnet)

Ähnliche Beiträge


Loxone, Raspberry Pi, Smart Home
ADB, Amazon, Fire TV, FireTV, Ip-Kamera, loxberry, Raspberry Pi, SmartHome, tinyCamMonitor

Post navigation

PREVIOUS
Bauschild / Hier entsteht ein Real Smart Home
NEXT
Eine nette Aufmerksamkeit!

10 thoughts on “Anzeige des IP-Kamerabilds auf einem FireTV bei einem Ereignis”

  1. Danny sagt:
    23. November 2019 um 09:00 Uhr

    Super Arbeit. Danke.
    Aber das ganze wäre doch perfekt um ein Loxberry Plugin daraus zu machen? (So das evtl. Node Red nicht benötigt wird)
    Vielleicht könnte man das ganze hiermit noch ergänzen https://github.com/happyleavesaoc/python-firetv
    So zusagen ein FireTv Plugin daraus machen?

    Antworten
    1. Dennis sagt:
      23. November 2019 um 12:02 Uhr

      Das steht auf dem Plan 😉 wenn Mal Zeit ist. Sind aktuell alles nur Tests was man hier so findet. Aktuell bauen wir erstmal die LOXpixel Platine fertig. Dann geht es weiter 🙂 Danke für deinen Hinweis 🙂

      Antworten
  2. Johny sagt:
    1. Februar 2020 um 09:52 Uhr

    Hallo Dennis,
    ich finde die Aneitung super! Genau das habe ich gesucht.
    Leider funktioniert das Öffnen des Cam Viewer nicht wie beschrieben. Folgendes Fenster wird bei mir ausgelesen:
    com.rcreations.WebCamViewerPaid/com.rcreations.WebCamViewerPaid.GalleryViewActivity
    Im SSH und unter Node Red habe ich aber mit folgenden Befehl keine Reaktion:
    adb shell am start -n com.rcreations.WebCamViewerPaid/com.rcreations.WebCamViewerPaid.GalleryViewActivity
    Mache ich da irgendetwas faslch?
    Noch eine zweite Frage:
    Kann ich über diese Methode auch irgendwie die Lautstärke über den FireTV Stick steuern?
    Gruß, Johny

    Antworten
    1. Dennis sagt:
      1. Februar 2020 um 11:17 Uhr

      Das klingt für mich nach der falschen App 🙁 ich bin mir nicht sicher ob es für Lautstärke entsprechende Tasten vorgesehen gibt. Nur bei der IR Variante aber das bringt dir wohl nicht viel. Habe aktuell kein Setup um das auszuprobieren. Werde aber demnächst weiter testen mit Netflix und co und schaue ob ich über etwas stolpere.

      Antworten
  3. René sagt:
    6. April 2020 um 16:53 Uhr

    Das ist absolut kranker scheiß. Danke für diese mega Anleitung. Jetzt denken meine Freunde ich habe komplett einen an der klatsche (im positivem Sinne)! 🙂

    Antworten
    1. Dennis sagt:
      6. April 2020 um 19:35 Uhr

      Viel Spaß damit 😉

      Antworten
  4. David sagt:
    5. Januar 2021 um 10:45 Uhr

    Hallo! Ich hab lange nach so einer Möglichkeit gesucht und werde das heut Abend gleich mal implementieren 🙂
    Ich habe aber noch eine Frage.. ist es möglich nach n Sekunden zurück zu wechseln zur ursprünglichen App, diese aber pausiert zu lassen?

    Szenario:

    Netflix läuft, es klingelt, Kamerabild wird 30 Sekunden angezeigt, Wechselt zurück auf Netflix, Netflix bleibt pausiert?

    Liebe Grüße! 🙂

    Antworten
    1. Dennis sagt:
      5. Januar 2021 um 16:09 Uhr

      Durch das erneute Starten von Netflix nach 30 Sekunden sollte genau das passieren. Er dürfte die App im Hintergrund nicht schließen.
      Ich habe das so noch nicht versucht, da es damals nur ein Testaufbau für mich war. Versuch es doch einfach mal und gib mir nochmal Bescheid. Würde mich interessieren ob es geklappt hat 🙂

      Antworten
      1. David sagt:
        5. Januar 2021 um 16:46 Uhr

        Durch das drücken der “zurück” taste per adb sollte das auch funktionierne. durch drücken der physikalischen zurück Taste funktioniert es jedenfalls 🙂

        Ich habe aber noch eine Frage.. den TV anschalten funktioniert per Keyevent Home.. gibt es eine möglichkeit ihn auch wieder auszuschalten? oder alternativ die möglichkeit einen “langen” homeklick zu machen? dann könnte man lang home klciken und switchen zu ruhezustand.. das würde ja auch gehen.

        Antworten
        1. Dennis sagt:
          5. Januar 2021 um 17:31 Uhr

          Ich kann es leider nicht nachbauen da es wie gesagt nur einen Test war. Aber könnte mir vorstellen, dass es ein Keyevent für Long press gibt. Ich würde denn TV aber vermutlich extern steuern.

          Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Folge uns

  • YouTube
  • Instagram
  • Facebook

Statistik

  • 8.247
  • 152.412
  • 42.307

Top Beiträge & Seiten

  • Anzeige des IP-Kamerabilds auf einem FireTV bei einem Ereignis
  • Allkauf - Bewertungen im Internet
  • LoxPixel! RGBW Neopixel Integration in Loxone
  • Mängeltagebuch
  • Impressum
  • Baufortschritt
  • LOXpixel! LED Beleuchtung im Dachüberstand
  • Gästebuch
  • Gallerie
  • Besuch im Musterhaus in Simmern

Blog via E-Mail abonnieren

Gib deine E-Mail-Adresse an, um diesen Blog zu abonnieren und Benachrichtigungen über neue Beiträge via E-Mail zu erhalten.

Schließe dich 24 anderen Abonnenten an

Kategorien

  • Allgemein (22)
  • allkauf (4)
  • Deko (3)
  • Elektroinstallation (8)
  • Elektronik (6)
  • Erdarbeiten (3)
  • Externer Sachverständiger (2)
  • Finanzierung (2)
  • Grundstück (11)
  • Hausbau (18)
    • Ausbau (10)
    • Hepp (2)
  • Heizung (1)
  • Keller (7)
  • Lüftung (1)
  • Mängel (2)
  • Planung (14)
    • Anbieter (6)
    • Architekt (4)
    • Bauamt (3)
    • Die Idee (2)
  • Smart Home (15)
    • Loxone (7)
    • LOXpixel! (1)
    • Multi-Room (1)
    • Raspberry Pi (4)

Archiv

  • Dezember 2020 (1)
  • Oktober 2020 (5)
  • September 2020 (2)
  • August 2020 (8)
  • Juli 2020 (4)
  • Juni 2020 (11)
  • März 2020 (4)
  • Februar 2020 (2)
  • November 2019 (1)
  • Oktober 2019 (2)
  • September 2019 (1)
  • August 2019 (3)
  • März 2019 (3)
  • November 2018 (2)
  • Oktober 2018 (6)
  • September 2018 (7)
  • August 2018 (1)
  • Juli 2018 (1)
  • Mai 2018 (3)
  • April 2018 (1)
  • Februar 2018 (1)
  • Januar 2018 (1)
  • Dezember 2017 (1)
© 2021   Copyright - unser-smartes-zuhause.de