Ich habe gerade eine externe Integration veröffentlicht, um Samsung TVs (Tizen, Modelle ab 2016) von Gladys aus zu steuern, vollständig lokal: kein Samsung-Konto, nichts, was über die Cloud läuft. Sie sollte in etwa einer Stunde im Store verfügbar sein.
Power — Ausschalten und Einschalten per Wake-on-LAN
Volume — ein echter Schieberegler 0-100 %, mit dem Level, das vom TV gelesen wird
Volume + / − und Stummschaltung
Source — TV, HDMI und die installierten Apps, wenn der TV sie angibt
Der TV wird automatisch gefunden: Ein Scan im Entdeckungs-Tab und er erscheint unter seinem Namen.
Technik
Die technische Wahl, die mich überrascht hat
Ich dachte, alles würde über das WebSocket der Fernbedienung laufen, wie es Home Assistant macht. Problem: Dieser Kanal transportiert nur Tasten. Er kann „Volume +“ senden, aber er kann weder einen Pegel einstellen noch ihn lesen. Mit diesem Ansatz bekommt man keinen zuverlässigen Volume-Schieberegler.
Die Lösung lag anderswo: Diese TVs bieten einen MediaRenderer UPnP an, dessen Dienst RenderingControl antwortet… ohne jede Authentifizierung. Absoluter Volume-Pegel und Stummschaltung in Lesen und Schreiben, ohne Pairing.
Daher kombiniert die Integration drei Kanäle, jeder für das, was er am besten kann: die REST-API des TVs für den Ein-/Aus-Zustand, UPnP für Volume und Stummschaltung, und das WebSocket nur für die Tasten — der einzige, der die Erlaubnis auf dem Bildschirm benötigt, aber nur einmal.
Zwei Einstellungen, die man am TV kennen sollte
Beim ersten Befehl zeigt der TV eine Erlaubnisanfrage an: erlauben Sie diese auf dem Bildschirm, das passiert nur einmal.
Für das Wieder-Einschalten muss das Netzwerk-Wecken aktiviert werden (Einstellungen → Allgemein → Netzwerk → Experteneinstellungen → Mit Mobilgerät aktivieren). Beim WLAN schaltet der TV seine Netzwerkschnittstelle in den Standby-Modus vollständig aus und kein Paket kann ihn mehr erreichen. Beim Ethernet ist es zuverlässig.
Feedback willkommen
Getestet auf einem UE55AU7025KXXC. Andere Tizen-Modelle sollten funktionieren, aber ich freue mich über Feedback — insbesondere zur Liste der Apps, die mein Modell aus dem Jahr 2021 verweigert zu kommunizieren (es erscheinen nur TV und HDMI, was aber weiterhin nutzbar ist).
Ich habe gerade diese Integration installiert, mein Samsung-Fernseher UE55JU6800 wird erkannt, es wurde keine Berechtigung angefordert, und leider funktioniert nichts!
Ich habe die Hauptursache gefunden: Dein Fernseher ist ein UE55JU6800, und das „J“ bedeutet, dass er aus dem Jahr 2015 stammt. Die Integration zielt auf Tizen-Modelle ab 2016 ab. Die Serien H und J (2014-2015) verwenden ein anderes Protokoll für die Fernbedienung, ein verschlüsseltes Protokoll mit Pairing per PIN-Code, das die Integration nicht unterstützt. Deshalb erscheint keine Berechtigungsanfrage: Der Fernseher akzeptiert die Verbindung, ignoriert aber die gesendeten Tasten. Alles, was über die Tasten läuft, kann daher bei dir nicht funktionieren: Lautstärke + / −, Quelle und Ausschalten.
Andererseits funktioniert ein Teil: Dein Verbindungstest liest die Lautstärke korrekt (9 %), daher antwortet der Fernseher über seine REST-API und per UPnP. Der Lautstärke-Regler und der Stummschalter laufen über diesen UPnP-Kanal, daher sollten sie funktionieren.
Die Logs zeigen keine Fehler, und das ist ein Mangel der Integration: Wenn ein Befehl fehlschlägt, wird der Fehler nicht ins Log geschrieben. Ich werde das korrigieren, und das wird allen für zukünftige Diagnosen helfen.
Wenn du eine Pull Request vorschlagen möchtest, um die Kompatibilität für alte Fernseher hinzuzufügen, bist du herzlich willkommen. Das ist einfacher mit der Hardware.
Die PR (Pull Request) ist eher modifizierter Code auf GitHub, du würdest also die neuen Funktionen direkt im Code des Integrationsprozesses vorschlagen.