Homebridge CEC (Apple TV Status in HomeKit anzeigen)

  • Hallo liebe Leute,


    da ich hier nichts zu dem Plugin gefunden habe wollte ich euch mal meine Erfahrung kund tun :p


    Ich habe lange nach einer Möglichkeit gesucht um den Status meines Apple TV anzuzeigen in HomeKit um z.B. eine Szene zu aktivieren.


    D.h. Wenn Apple TV = An - dann - Aktiviere Szene „Movie Time“


    (Apple TV ist eigtl natürlich immer eingeschaltet, hier geht es mehr darum ob Apple TV sich im Ruhezustand befindet oder nicht)


    Davor habe ich es via Broadlink umgesetzt, sprich HEX Code von meiner Fernbedienung zum Einschalten des Apple TV benutzt. Das Problem dabei war, wenn ich es via Apple Remote gestartet habe, hat HomeKit davon natürlich nichts mitbekommen, und auf dauer fand ich das nicht so doll ^^


    Nun ja, Homebridge CEC setzt da auf eine andere Lösung. Undzwar schließt man seine Raspi via HDMI an den Fernseher an wo auch die Apple TV angeschlossen ist und via HDMI CEC wird erkannt ob Apple TV grad eingeschaltet ist oder sich im Ruhezustand (Ruhezustand wird dabei als ‚Aus‘ erkannt) befindet.


    Man hat so natürlich nicht nur Zugriff auf die Apple TV sondern auch auf alle anderen Geräte die via HDMI an den Fernseher angeschlossen sind und CEC unterstützen.


    Und das beste natürlich ist, egal wie man jetzt sein Apple TV auch startet, in der Home App wird immer der aktuelle Status gezeigt :)


    Hier gehts zum Plugin: https://github.com/jbree/homebridge-cec-accessory


    Die Einrichtung ist total einfach.


    1. Raspi mit dem Fernseher verbinden via HDMI (muss auch immer verbunden bleiben)


    2. Nach dem man das Plugin installiert hat gibt man folgenden Befehl ein

    Code
    echo scan | sudo cec-client -d 1


    Nun sollte man alle via HDMI angeschlossenen Geräte sehen können, wichtig hier ist die ‚Nummer‘ was hinter „device#“ steht. Diese Nummer merkt man sich (wichtig für homebridge)


    3. config.json öffnen und unter „accessories“ folgendes einfügen:

    Code
    {
        "accessory": "cec",
        "name": "Apple TV",
        "type": "power",
        "address": 8
      }


    Bei „adress“ trägt man nun die Nummer vom Apple TV ein was man im vorherigen Schritt angezeigt bekommen hat. In meinem Fall ist es die „8“


    Wenn man jetzt nicht nur die Apple TV einfügen möchte sondern auch die anderen Geräte, macht man für jedes eine entsprechende config... z.B.



    4. Homebridge neustarten und freuen :)


    Ps.


    Damit alles auch nach einem Reboot funktioniert müssen wir den Befehl den wir anfangs ausgeführt haben um die angeschlossenen Geräte auszulesen in unser rc.local einfügen!


    Das geht wie folgt:


    Code
    sudo nano /etc/rc.local


    Und VOR exit 0 folgendes einfügen:


    Code
    echo scan | sudo cec-client -d 1


    Als letztes noch mit STRG+O speichern und mit STRG+X schließen.


    Und mit „sudo reboot“ testen ob alles funktioniert :)


    Liebe Grüße,


    SmartX

    4 Mal editiert, zuletzt von SeydX () aus folgendem Grund: Autostart hinzugefügt

  • Habe deine Anleitung mal in das richtige Unterforum verschoben ;)

  • An sich gute Idee. Nur wird vermutlich nicht bei jedem der Raspi da sein wo auch der tv mit dem ATV.


    Das ganze kann man mit dem harmony hub und einer regel wenn ATV an, dann Szene XY. auch lösen. Und mit dem harmony hub hat man noch sehr viel mehr Möglichkeiten :) Habe ich so ähnlich nur eben für TV eine regel.


    Aber bei deiner Variante ist tatsächlich der Vorteil das der raspi es immer mitbekommt ;)

  • Also irgendwie will das bei mir nicht so richtig laufen, die PS4 funktioniert super. Der Apple TV dagegen so gut wie nie.

    Einschalten kann ich den Apple TV immer problemlos, aber ausschalten bzw. in den StandBy versetzen ist pures Glück, häufig bleibt er einfach an.


    Der Log gibt folgendes her:


    Code
    Dec 26 19:18:23 raspberrypi homebridge[1442]: [2017-12-26 19:18:23] [Apple TV] getOn: 228
    Dec 26 19:18:24 raspberrypi homebridge[1442]: [2017-12-26 19:18:24] [Apple TV] Apple TV reportStatus: on
    Dec 26 19:18:24 raspberrypi homebridge[1442]: [2017-12-26 19:18:24] [Apple TV] Apple TV getOn: 1
    Dec 26 19:18:24 raspberrypi homebridge[1442]: [2017-12-26 19:18:24] [Apple TV] Apple TV setOn: already on
    Dec 26 19:18:25 raspberrypi homebridge[1442]: [2017-12-26 19:18:25] [Apple TV] Apple TV reportStatus: on
    Dec 26 19:18:28 raspberrypi homebridge[1442]: [2017-12-26 19:18:28] [Apple TV] Apple TV reportStatus: on
    Dec 26 19:18:29 raspberrypi homebridge[1442]: [2017-12-26 19:18:29] [Apple TV] getOn: 228
    Dec 26 19:18:29 raspberrypi homebridge[1442]: [2017-12-26 19:18:29] [Apple TV] Apple TV reportStatus: on
    Dec 26 19:18:29 raspberrypi homebridge[1442]: [2017-12-26 19:18:29] [Apple TV] Apple TV getOn: 1
    Dec 26 19:18:29 raspberrypi homebridge[1442]: [2017-12-26 19:18:29] [Apple TV] Apple TV setOn: false


    Hier hat es bspw. 1x funktioniert:

    Habt ihr Ideen?

  • Der CEC Scan ergibt folgendes:


    Meine Config sieht so aus:


    Das mit dem TV ein und ausschalten klappt auch nicht so wirklich:

    Code
    Dec 26 22:02:51 raspberrypi homebridge[1220]: [2017-12-26 22:02:51] [Philips TV] getOn: 224
    Dec 26 22:02:54 raspberrypi homebridge[1220]: [2017-12-26 22:02:54] [Philips TV] Error: No REPORT_POWER_STATUS received after 3000ms
    Dec 26 22:02:54 raspberrypi homebridge[1220]:     at Timeout._onTimeout (/usr/lib/node_modules/homebridge-cec-accessory/node_modules/cec-promise/index.js:67:23)
    Dec 26 22:02:54 raspberrypi homebridge[1220]:     at ontimeout (timers.js:475:11)
    Dec 26 22:02:54 raspberrypi homebridge[1220]:     at tryOnTimeout (timers.js:310:5)
    Dec 26 22:02:54 raspberrypi homebridge[1220]:     at Timer.listOnTimeout (timers.js:270:5)

    Einmal editiert, zuletzt von krmkrx ()

  • Unterstützt dein Fernseher denn CEC?


    Config sieht gut aus, wenn ich nach deiner Log gehe müsste ja bei dir sowohl die Playstation als auch Apple TV in Homekit ‚eingeschaltet‘ erscheinen oder?


    Schau mal in Einstellungen ob du CEC eingeschaltet hast beim AppleTV, Menüpunkt heißt glaube ich ‚Fernseher kontrollieren‘ oder so


    Und anbei noch ein Bild bzgl CEC beim Fernseher


    Lg

  • Guten Morgen,

    Ich bin neu hier und hätte sofort eine Frage.

    Ist es dann auch möglich den Apple TV auszuschalten?

    Oder besser gesagt in den Ruhezustand zu schicken?

    Schöne Grüße

    Heinz

  • Hab das Plugin nun auch mal gefunden. Habe hier aber eine Fehlermeldung. Gibts da noch Support SeydX ?


    Code
    [2019-8-15 20:29:59] TypeError: Cannot read property 'kill' of undefined
        at process.NodeCec.NodeCec.stop (/usr/local/lib/node_modules/homebridge-cec-accessory/node_modules/node-cec/lib/node-cec.js:64:26)
        at process.emit (events.js:182:13)
        at process.exit (internal/process.js:160:15)
        at Timeout._onTimeout (/usr/local/lib/node_modules/homebridge/lib/cli.js:46:17)
        at ontimeout (timers.js:427:11)
        at tryOnTimeout (timers.js:289:5)
        at listOnTimeout (timers.js:252:5)
        at Timer.processTimers (timers.js:212:10)