NEWS
Test Adapter Philips-TV v0.2.x
-
Nachdem ich mich etwas in dein Sript Eingelesen habe, komme ich leider nicht ganz weiter.
Hab mir deinen Code Angeschaut und Hänge bei dem Punkt Generate User/password.Pairing the TV First you need to pair the TV. This gets you a username and a password to be used in the configuration of the component. 1. Clone the repo with pairing script: git clone https://github.com/suborb/philips_android_tv 2. Install the requirements (for Python 3, so you may need to use pip3): pip3 install -r requirements.txt 3. Execute pairing. A PIN code will appear on your TV. Input that in your terminal python3 philips.py --host <IP of TV> pair
Das ist die Anleitung aus deinem Script, auf die du verweist. Wo muss ich das denn machen? In einem Javascript? Oder auf nem "Normalen" PC?.
Kannst du mir da bitte etwas helfen dabei?
Und ist es am ende Möglich den TV via Alexa auszuschalten, Muten und pausieren?
grüße
Daniel
-
Hier mal eine Anleitung für Linux für die Generierung von User-Name und Passwort für den Philips-TV. Ich habe hierzu eine frische Debian-Installation (Proxmox-Container) genommen.
Muss man sich halt mal 10 Minuten Zeit nehmen. Danach kann man die Installation wieder verwerfen, braucht man nur einmalig.A) Debian Basis-Einrichtung
- Debian-Container (CT) erstellen
- In Proxmox den CT starten und auf die Konsole gehen
- Neuen Nicht-Root-User anlegen:
adduser <username>
- Ausführen:
apt-get update && apt-get upgrade && apt-get dist-upgrade
- sudo installieren:
apt-get install -y sudo
- User zur sudo-Gruppe hinzufügen:
adduser <username> sudo
- Mit
ip addr
die IP-Adresse anzeigen - Anhand der IP-Adresse mit Putty verbinden, dabei den neu angelegten User nehmen, nicht den root-User.
- Nun geht es in Putty weiter
- Ausführen:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
- curl installieren:
sudo apt-get install curl
- git installieren:
sudo apt install git
- pip für Python 3 installieren:
sudo apt update && sudo apt install python3-pip
B) Benutzername und Passwort bekommen (Quelle)
- Wir wechseln ins tmp-Verzeichnis:
cd /tmp
git clone https://github.com/suborb/philips_android_tv
cd philips_android_tv
pip3 install -r requirements.txt
- Philips TV einschalten und warten bis Startbildschirm erscheint
- Nun ausführen:
python3 philips.py --host <IP> pair
, dabei statt <IP> die IP-Adresse vom Philips-TV eintragen, z.B.python3 philips.py --host 192.168.10.20 pair
- Auf dem Philips-TV erscheint nun ein (4?)stelliger Code, diesen in die Konsole eingeben.
- Nun erhält man bei Erfolg Benutzername und Passwort
Auszug aus Konsole:
me@test:/tmp/philips_android_tv$ python3 philips.py --host 192.168.10.20 pair Starting pairing request Enter onscreen passcode: 1234 Attempting to pair {'error_id': 'SUCCESS', 'error_text': 'Pairing completed'} Username for subsequent calls is: xxxxxxxxxxxxxx Password for subsequent calls is: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
@freak1051 sagte in Test Adapter Philips-TV v0.2.x:
Und ist es am ende Möglich den TV via Alexa auszuschalten, Muten und pausieren?
Ja, wenn du bei dir ioBroker so eingerichtet hast, dass du Datenpunkte mittels Alexa schalten kannst (z.B. über iot-Adapter oder z.B. über https://forum.iobroker.net/topic/10476/alexa-anbindung-ohne-cloud-und-skill
-
Perfekt. Das werd ich morgen dann mal in Angriff nehmen. Vielen dank, für die Super Anleitung.
Ich denke, ich werd das ganze nebenbei Screenshotten, oder vielleicht Sogar aufnehmen, und gerne dir/der Allgemeinheit zur Verfügung stellen.
Zur Debian Instnaz: Ist es egal Welche Distri? Habe glaube ich Sketch eh als iso da. Oder sollte sie Aktueller sein?
=================EDIT/NACHTRAG===========================
Was mir bzgl. dem ausgeschaltetem TV aufgefallen ist, was du evtl auch einbauen könntest:
Ich habe bisher die Philips eigene Ferbedienungs-App für Android genutzt. Ist der TV ausgeschaltet, erkennt die App den TV auch nicht. Mit einem Wake On Lan kann man aber den TV soweit aufwecken, dass die Fernbedienungs-App den TV erkennt und ich den TV einschalten kann. Werde das evtl versuchen zu testen/einzubauen und dir bescheid geben
-
@Mic said in Test Adapter Philips-TV v0.2.x:
python3 philips.py --host <IP> pair
So, also der erste teil hat bedingt funktioniert. Mein TV zeigt mir sporadisch mal nur eine, mal mehrere Zahlen in dem Code an. Sieht ein bischen so aus, als ob das Textfeld zu klein ist. Werde morgen mal andere Menüsprachen testen, vllt seh ich dann den kompletten code.
Allerdings habe ich in deinem code noch ein kleines problem:
Er mahnt mir
SetTimeout(subscribeStates, 2000);
und
require('child_process')
an. An was könnte das liegen?
-
@freak1051 sagte in Test Adapter Philips-TV v0.2.x:
An was könnte das liegen?
Skript-Adapter aktualisieren. Die Version im Latest hat das gefixt.
-
Also schon mal vielen Dank. Ich habe alles soweit am laufen.
Leider ird der TV aber nicht gesteuert, wenn ich in den Objekten versuche eine Taste zu drücken, oder ihn auszuschalten. Er bringt mir aber auch nicht wirklich nen Fehler im Log. Habe die const LOG_DEBUG mal auf true gesetzt, damit ich evtl was sehe. Ich wollte den Crusor rechts bedienen:
javascript.0 (31224) script.js.common.TestTV: stdout: <html> <head> <title>Status page</title> </head> <body style="font-family: sans-serif;"> <p style="font-size: 1.2em;font-weight: bold;margin: 1em 0px;">Unauthorized</p> <p>The request requires user authentication</p> <p>You can get technical details <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">here</a>.<br> Please continue your visit at our <a href="/">home page</a>. </p> </body> </html> javascript.0 (31224) script.js.common.TestTV: stderr: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 424 100 424 0 0 5108 0 --:--:-- --:--:-- --:--:-- 5108 100 444 100 424 100 20 4000 188 --:--:-- --:--:-- --:--:-- 4188
Das wirft er mir aus, falls es was hilft.
Zu der WakeOnLan Geschichte. Da bin ich dafür etwas weiter:
In den Einstellungen des TV´s kann man das WakeOnWlan aktivieren. Allerdings muss er hierzu natürlich auch im Wlan eingewählt sein, was natürlich etwas Unglücklich ist. Muss hier die Performance noch etwas testen.
Allerdings Bekomme ich ihn mit folgendem Script aufgeweckt, damit ich zumindest mit der zugehörigen App-Fernbedieung ihn einschalten kann:
createState("javascript.0.TVStarten", 0); // Generiert beim starten den Datenpunkt, wenn nicht vorhanden var wol = require('wake_on_lan'); // Lädt von ioBroker die das nötige Paket var myPC1 = "FF:FF:FF:FF:FF:FF"; // MAC definieren ( auszulesen aus Einstellungen des TV oder Fritbox. MUSS WLAN-Mac sein!!) // Ab hier automatisch on({id: "javascript.0.TVStarten", change: 'any'}, function (obj) { wol.wake(myPC1); log("Script WOL - PC1 aufgeweckt", "info"); } );
-
Diese Fehlermeldung, die du bekommst (von mir gekürzt)
Unauthorized The request requires user authentication
deutet darauf hin, dass dein im Script vergebener Username/Passwort nicht passt.
Zu Wake On Lan:
Sehr interessant, dass das bei dir funktioniert. Bitte beobachte mal, ob das immer zuverlässig geht. eslavnov (Owner von github.com/eslavnov/pylips) merkt hier im GitHub Issue 16 an, das WOL wohl ziemlich unzuverlässig läuft:I was actually waiting for somebody to bring up WoL support sooner or later... I've struggled A LOT with trying to turn the TV on:
- The API indeed stops responding after the TV has been off for some time. I've also tried various deep sleep/eco options in the TV, but still no luck.
- HDMI-CEC works with something like a Raspberry Pi, but I've had mixed experience with it: when it works - it works, but sometimes it just failed on me. Could be a problem with my RPi, though - I didn't troubleshoot it much.
- WoL sorta works, but it sucks. If I remember correctly, I had to enable WoL option somewhere in the network settings of the TV, then you send a magic packet with the TV's MAC address and it works for me (at least on Oreo, haven't tested it on Pie). But the problem is that it's quite unreliable (sometimes one packet does the job, but sometimes I need to send several) and the whole process takes a rather long time to work (sometimes up to 20-30 seconds). Not sure why Philips TVs behave this way (WoL works perfectly with my other tech)...
- Your best choice is indeed an ir transmitter, I am using Broadlink rm mini 3 which works on Wi-Fi and it's the best $15 I've ever spent. I use Pylips (in MQTT mode) to monitor the current state of the TV and to turn it OFF with the API, while using Broadlink to turn it ON. Works great!
So, the lack of WoL support in Pylips is a design choice of mine: it's super-easy to implement, but it's impossible to guarantee a reasonable performance with Philips TVs (at least in my experience). I'd rather have no functionality than a broken one, so no plans to implement it...
-
@Mic
Okay dann werd ich nachher nochmal schaun, ansonsten nochmal schnell neu vergeben.
Dem ganzen tut aber nichts zur Sache, dass es ein Android TV ist? Die meisten Modelle, die ich belesen habe waren keine Androiden.EDIT:
Name/PW nochmal neu generiert. Jetzt tut es. Werd morgen mal vernünftig die WOWL Sache testenMir ist jetzt folgendes aufgefallen (validiert mit wireshark) :
-
Die Handy-App sendet ein Magic packet, subnet 255.255.255.255. Hier tuts tatsächlich so lala
-
Das JS-script schiebt 3 Pakete, funktioniert zu 70%. Sendet auch an 255.255.255.255
-
Die fritzbox sendet 5 Pakete, 90% Trefferquote, sendet aber ans subnet "Broadcast"
Mir ist schon klar, dass 255.255.255.255 auch Broadcast ist, aber komisch das die FB anders auflöst.
Nun ist die Frage ob die größere Zuverlässigkeit eher an der Namensauflösung liegt, daran dass es ne Fritzbox ist oder daran, dass sie das Paket häufiger sendet.
Wäre zwar traffic-massig gemein, aber man könnte ja mal ins JS-script ne Schleife machen, dass man mit. Dem. Scrip n x 3 Pakete versendet.Andere Alternative ist Wake On Chromecast. Hab ich bei dem eslavonv gesehen, dass user meinten, damit würde es gehen. Werde ich morgen auch testen. Man muss den **** TV doch angeschaltet bekommen, ohne zusätzliche HW
Werde ich morgen mal nochmal testen
-
-
Guten Morgen,
Also ich habe nun mit folgenden Versuchsaufbau gute Ergebnisse erzielt:
- TV an LAN angeschlossen, feste IP vergeben
- TV in Wlan eingebunden, feste IP vergeben
Das Wake on Lan Script schaut auf die Mac-Adresse des Wlan-Adapters.
Anstatt Mic´s Harmony Hub anzusteuern, habe ich mein Script angeworfen. In Mic´s Script habe ich an der stelle, wo er an die Harmony den Befehl gibt, den gleichen befehl ein zweites mal eingefügt. Bedeutet er wirft das WOL-Script 2 mal an, ergo macht er 6 WOL-Pakete.Interessanterweise ist dann der Ethernet-Adapter in meiner Fritz Box aktiv geworden. Bedeutet Mic´s Script schaut nicht auf die IP-Adresse des W-Lan Adapters sondern auf den Lan Adapter.
Habe es gestern Abend so schon getestet, wobei ich natürlich nicht weiß, nach welcher Standby-Zeit der TV in den Deep-Sleep geht. Somit habe ich das heute morgen (6 Stunden Standby) nochmal getestet und es ging auf Anhieb. Auch habe ich nun Mehrfach den TV ausgesteckt, und es direkt nach dem einstecken Getestet. Also grundsätzlich bekomme ich ihn so an.
Nun ist die Frage ob jemand eine halbe stunde Investieren kann, um Dies bei sich auch mal zu testen. Ich gebe gerne dann mein modifiziertes Script raus, möchte es aber um Verwirrung vorzubeugen hier nicht direkt Posten. Zudem ist es sicherlich nur Quick and Dirty Programmiert, da ich eigentlich keine Ahnung von Java Script habe. Wenn das also alles klappt, müsste da mal noch nen Profi ran Dachte mir, evtl könnte man es dann so gestalten, dass man wir bisher ein Steuerbit setzt: Nimmt man ein externes Gerät, oder nimmt man WOL/WOWL. Aber wie gesagt, um dies sauber zu machen, fehlt mir das JS-Wissen.
Falls das jemand testen will, empfehle ich auch noch das Tool Wireshark herunter zu laden. Damit kann man den Lan-Traffic mitloggen, und Wake-On-Lan Pakete filtern. Um zu sehen, ob überhaupt das Paket raus geht. Falls es jemand wirklich testen möchte, stehe ich hier und gerne auch per Discord gerne zur Verfügung.
Grüße
Daniel
-
@Mic said in Test Adapter Philips-TV v0.2.x:
Diese Fehlermeldung, die du bekommst (von mir gekürzt)
Unauthorized The request requires user authentication
deutet darauf hin, dass dein im Script vergebener Username/Passwort nicht passt.
Zu Wake On Lan:
Sehr interessant, dass das bei dir funktioniert. Bitte beobachte mal, ob das immer zuverlässig geht. eslavnov (Owner von github.com/eslavnov/pylips) merkt hier im GitHub Issue 16 an, das WOL wohl ziemlich unzuverlässig läuft:I was actually waiting for somebody to bring up WoL support sooner or later... I've struggled A LOT with trying to turn the TV on:
- The API indeed stops responding after the TV has been off for some time. I've also tried various deep sleep/eco options in the TV, but still no luck.
- HDMI-CEC works with something like a Raspberry Pi, but I've had mixed experience with it: when it works - it works, but sometimes it just failed on me. Could be a problem with my RPi, though - I didn't troubleshoot it much.
- WoL sorta works, but it sucks. If I remember correctly, I had to enable WoL option somewhere in the network settings of the TV, then you send a magic packet with the TV's MAC address and it works for me (at least on Oreo, haven't tested it on Pie). But the problem is that it's quite unreliable (sometimes one packet does the job, but sometimes I need to send several) and the whole process takes a rather long time to work (sometimes up to 20-30 seconds). Not sure why Philips TVs behave this way (WoL works perfectly with my other tech)...
- Your best choice is indeed an ir transmitter, I am using Broadlink rm mini 3 which works on Wi-Fi and it's the best $15 I've ever spent. I use Pylips (in MQTT mode) to monitor the current state of the TV and to turn it OFF with the API, while using Broadlink to turn it ON. Works great!
So, the lack of WoL support in Pylips is a design choice of mine: it's super-easy to implement, but it's impossible to guarantee a reasonable performance with Philips TVs (at least in my experience). I'd rather have no functionality than a broken one, so no plans to implement it...
Habe jetzt hete ausgiebig getestet:
Wenn ich auf deinen TvOn knopf gedrückt habe, hat sich erst mal nichts getan. Dennoch habe ich anstatt den Harmony anzusteuern ein WOL-Paket an die W-Lan Mac-adresse geschickt.
Dennoch ging der TV nach den On-Switch nicht an. ABER : Nachdem ich deinen TvOn gedrückt habe und danach mit dem Pulldown Key:Standby gesendet hat ging er IMMER an. Habe nun Pausen zwischen den Versuchen gemacht Zwischen 10 minuten und 5 Stunden. Also war er sicher im Deep Sleep (Habe 2 mal das selbe Gerät)Nun weiß ich nicht, ob es mit dem Standby-key zu tun hat, oder durch das Aufwecken. Aber Es scheint aktuell zu funktionieren.
Habe auch ein IOT-Blockly-Alexa script gebaut. Das script schält mir erst Mic´s TvOn und 2 Sekunden Später sendet es Key:Standby. Hat jetzt immer gut geklappt. Und hab den TV heute (absichtlich) öfter mal aus und wieder Angemacht.
In diesem Sinne, wäre cool, wenn sich jemand anders zum Testen findet, evtl. Bekommt man das in das Script, und später evtl in den Adapter implementiert.
-
Hi @freak1051
vielen Dank für deinen Einsatz und deine "Investigations"
@freak1051 sagte in Test Adapter Philips-TV v0.2.x:
Habe auch ein IOT-Blockly-Alexa script gebaut. Das script schält mir erst Mic´s TvOn und 2 Sekunden Später sendet es Key:Standby. Hat jetzt immer gut geklappt. Und hab den TV heute (absichtlich) öfter mal aus und wieder Angemacht.
In diesem Sinne, wäre cool, wenn sich jemand anders zum Testen findet, evtl. Bekommt man das in das Script, und später evtl in den Adapter implementiert.Ich kann im Bedarfsfall gerne testen, geht aber zeitlich erst in mehreren Tagen. Cool wären ja mehrere Tester. Falls du mal die Tage die Muße hast, könntest du ja auch einen neuen Forumthread "[Tester gesucht] Wake on Lan (WOL) für Philips TV" aufmachen und reinschreiben/zusammenfassen, wie man vorgeht beim testen.
-
Okay, werd ich morgen mal Machen. Dann stelle ich dort auch mal deinen Modifizierten Code zur Verfügung. Vorallem werd ich dir Unterschiede deutlich Kennzeichnen.
Dann wirds ne kleine Anleitung geben und Bilder. Dann mal schauen, ob das bei anderen Auch so klappt.
Frage Hierzu. Fremdlinks mit Software (eben Wireshark) im Forum erlaubt=?
-
@freak1051 sagte in Test Adapter Philips-TV v0.2.x:
@Mic
Okay, werd ich morgen mal Machen. Dann stelle ich dort auch mal deinen Modifizierten Code zur Verfügung. Vorallem werd ich dir Unterschiede deutlich Kennzeichnen.
Dann wirds ne kleine Anleitung geben und Bilder. Dann mal schauen, ob das bei anderen Auch so klappt.Frage Hierzu. Fremdlinks mit Software (eben Wireshark) im Forum erlaubt=?
Meine Erfahrung: Das wird hier herausragend super gehandhabt! Das heißt: klar soll keiner Werbung posten, aber Links zu relevanten Websites im Bezug auf den Artikelinhalt sind immer erlaubt und willkommen. Auch Links auf Shops sind erlaubt, wenn man eine bestimmte Hardware bespricht. Sicherlich nicht erlaubt ist halt persönliche Bereicherung, also Affiliate-Links, die per Klick etc. dem Poster Einnahmen bescheren.
-
Perfekt. Weil denke macht dann doch sinn, wenn man ne Testumgebung schaft, die halbwegs einheitlich ist. Vermeidet dann doch fragen wie " wie stelle ich mein Sniffing Tool jetzt ein, dass ich nur die WOL´s sehe?".
Zum Zischenstand bei mir:
bei 2 TV´s Funktioniert die Einschaltung zu 100%. Musste etwas mit Timings spielen, da der Adapter im TV recht lange braucht bis er wach ist, aber es läuft!
-
@Mic
Aktuell sieht es so aus, dass ich kein Test aufmachen kann, da ich weder entwickler bin, noch die Beauftragung dazu habe etwas zu testen. ... So als info.Also wenn jemand mit den Auftrag geben darf/kann/will: Her damit
-
@freak1051 @Jey-Cee Soll ich den Auftrag geben? Ist ja quasi (hoffentlich temporärer) Ersatz für meinen Adapter.
-
Klaro, dann kann man das Testen, und du evtl einbinden wenn es passt.
-
Neue Script-Version 1.2
@apollon77 hat sich das Script vorgenommen und ziemlich verbessert:
- Kein curl mehr, nutzt jetzt "request", was immer da ist in JS
- Channel werden ausgelesen und man kann Kanäle ansteuern
- Powerstate polling
- Weitere Optimierungen
Vielen Dank an Ingo hierfür! Ich kann hierdurch noch einiges lernen, wie du das umgesetzt hast.
Zudem habe ich eine "Experimental"-Option für das leidige Thema WOL (Tester gesucht: Wake on Lan (WOL) für Philips TV) eingebaut.
Es gibt folgende neue Optionen:
// ######################### Experimental (Version 1.2) ######################### // Wie es scheint bleibt das TV-Bild schwarz trotz WOL-Einschaltung, aber TV ist an (sichtbar an nicht mehr leuchtender roter LED) // Wir testen hier folgendes: Nach dem ausführen von COMMAND_TO_LAUNCH wird nach COMMAND_AFTER_WOL_DELAY Millisekunden ein weiterer Command abgesetzt (z.B. 'Launch: Home') const COMMAND_AFTER_WOL_DO = true; // hier diesen Test ein- oder ausschalten const COMMAND_AFTER_WOL_DELAY = 5000; // falls COMMAND_AFTER_WOL_DO = true: Anzahl in Millisekunden nach WOL_A_DELAY const COMMAND_AFTER_WOL_CMD = 'Launch: Home'; // der gesendete Command. // ######################### Experimental (Version 1.2) #########################
Das habe ich so seit einigen Wochen schon in Betrieb, und damit schaltet sich immer zuverlässig der Schirm ein, wenn der TV im Tiefschlaf war. Das dauert aufgrund der Delays allerdings etwas, bis das Bild kommt.
Freue mich über eure Rückmeldungen.
Link: Script-Version 1.2
-
@Mic Funktioniert sehr gut! Vielen Dank für die Entwicklung! Ich finde es auch klasse, dass man nun sehen kann ob der Fernseher an oder aus ist.
Mir fehlt nun leider die Erklärung, wie ich die Daten an HomeKit/Yahka weitergeben und aus iOS heraus meinen Fernseher steuern kann. Gibt es dazu ein HowTo?
Bis dahin nochmals vielen Dank!
Bleibt gesund!
Fabian