Hi,
ich habe ein älteres LG Heimkinosystem, welches per LAN mit dem Netzwerk verbunden ist. Zu dem LG Heimkinosystem gibt es eine App (Link), mit der man einige grundlegende Funktionen steuern kann:
Leider finde ich keinerlei Möglichkeiten diese einfachen Steuerungen von Alexa durchführen zu lassen. Ein Port Scan auf das LG System hat keinen offenen Port gefunden. Somit gibt es auch keinen Webserver, aber irgendwie muss doch eine Verbindung aufgebaut werden.
Hat jemand eine Idee wie diese App mit dem LG Gerät kommuniziert?
Danke.
Älteres LG Heimkinosystem (LAN fähig) über alexa steuern
-
Themenstarter
UDP!!! Das wird tatsächlich über UDP gemacht. Ich glaube es nicht.
Ich habe lokal mit python ein Script geschrieben welche einen hex Code zur LG Anlage schickt. Und dabei habe ich bemerkt, dass die LG Anlage so lange beispielsweise die Lautstärke anpasst, bis ein weiteres UDP Paket mit einem anderen hex Code empfangen wird, welches dafür zuständig ist, dass die LG Anlage die Info erhält, dass die Lautstärke nicht länger angepasst werden soll. Lokal geht das noch sehr gut, aber wer den Unterschied zwischen TCP und UDP kennt weiß, dass das übers Internet bei der kleinen Anzahl an Paketen und der Paket Laufzeit nicht möglich ist. Meine Anlage ist schneller bei maximaler Lautstärke, als dass das Paket zum Aufhören bei der LG Anlage eintrifft. Ansonsten funktioniert das Senden von UDP Paketen mit Phyton und AWS Lamda, bzw. einem selbst geschrieben alexa Skill gut, bzw. besser als erwartet.
Wie kann LG auf diese bescheuerte Idee kommen und eine Steuerung per UDP zu programmieren?
Ich habe lokal mit python ein Script geschrieben welche einen hex Code zur LG Anlage schickt. Und dabei habe ich bemerkt, dass die LG Anlage so lange beispielsweise die Lautstärke anpasst, bis ein weiteres UDP Paket mit einem anderen hex Code empfangen wird, welches dafür zuständig ist, dass die LG Anlage die Info erhält, dass die Lautstärke nicht länger angepasst werden soll. Lokal geht das noch sehr gut, aber wer den Unterschied zwischen TCP und UDP kennt weiß, dass das übers Internet bei der kleinen Anzahl an Paketen und der Paket Laufzeit nicht möglich ist. Meine Anlage ist schneller bei maximaler Lautstärke, als dass das Paket zum Aufhören bei der LG Anlage eintrifft. Ansonsten funktioniert das Senden von UDP Paketen mit Phyton und AWS Lamda, bzw. einem selbst geschrieben alexa Skill gut, bzw. besser als erwartet.
Wie kann LG auf diese bescheuerte Idee kommen und eine Steuerung per UDP zu programmieren?
0 x
-
Themenstarter
Meine Skill Ressourcen habe ich bereits wieder gelöscht, da wie erwähnt es einfach über das Internet nicht funktioniert.
Meine Python Befehle werde ich morgen wenn ich wieder am PC bin hier noch posten.
Der Skill selber hat aber nichts besonderes gemacht, außer eben von remote beispielsweise die Lautstärke angepasst und als kleine Sprachausgabe hinterher erwähnt, dass es entweder lauter oder leiser wurde. Aufgerufen hatte ich es beispielsweise mit "Alexa, sage Anlage lauter". Und dann wurden eben einfach die zwei UDP Pakete verschickt, die mehr oder weniger bei der Anlage ankamen.
Ich wollte es jetzt noch so umbauen, dass die Python Befehle von meinem pi an die LG Anlage geschickt werden, wenn eine Trigger URL aufgerufen wird. Aber man muss sich das mal vorstellen: Wenn das zweite Paket nicht ankommt, dann ist die Anlage im Fall von "lauter" so schnell bei maximaler Lautstärke, dass ich mir damit die Boxen kaputt mache. Man kann nicht mal normal die Lautstärke wieder reduzieren, denn es geht bis das zweite Paket ankommt nur in eine Richtung: Bis zur maximalen Lautstärke.
Ich kenne mich leider nicht gut genug damit aus, aber er scheint zu helfen das zweite UDP Paket mehrmals zu senden. Aber wie gesagt nur lokal, remote ist der Weg einfach zu lang und die Lautstärke wird viel zu schnell geändert.
Wie gesagt: Morgen kommt der Python Aufruf. Vielleicht hat jemand mit Photon Erfahrung eine Idee und man findet doch noch eine Lösung. Aber wie gesagt: UDP!!! Das Protokoll ist für eine Steuerung, bei der man eigentlich eine Rückmeldung über eine korrekte Zustellung erwartet, nicht gemacht.
Meine Python Befehle werde ich morgen wenn ich wieder am PC bin hier noch posten.
Der Skill selber hat aber nichts besonderes gemacht, außer eben von remote beispielsweise die Lautstärke angepasst und als kleine Sprachausgabe hinterher erwähnt, dass es entweder lauter oder leiser wurde. Aufgerufen hatte ich es beispielsweise mit "Alexa, sage Anlage lauter". Und dann wurden eben einfach die zwei UDP Pakete verschickt, die mehr oder weniger bei der Anlage ankamen.
Ich wollte es jetzt noch so umbauen, dass die Python Befehle von meinem pi an die LG Anlage geschickt werden, wenn eine Trigger URL aufgerufen wird. Aber man muss sich das mal vorstellen: Wenn das zweite Paket nicht ankommt, dann ist die Anlage im Fall von "lauter" so schnell bei maximaler Lautstärke, dass ich mir damit die Boxen kaputt mache. Man kann nicht mal normal die Lautstärke wieder reduzieren, denn es geht bis das zweite Paket ankommt nur in eine Richtung: Bis zur maximalen Lautstärke.
Ich kenne mich leider nicht gut genug damit aus, aber er scheint zu helfen das zweite UDP Paket mehrmals zu senden. Aber wie gesagt nur lokal, remote ist der Weg einfach zu lang und die Lautstärke wird viel zu schnell geändert.
Wie gesagt: Morgen kommt der Python Aufruf. Vielleicht hat jemand mit Photon Erfahrung eine Idee und man findet doch noch eine Lösung. Aber wie gesagt: UDP!!! Das Protokoll ist für eine Steuerung, bei der man eigentlich eine Rückmeldung über eine korrekte Zustellung erwartet, nicht gemacht.
0 x
-
- Beiträge: 815
- Registriert: Mi 14. Dez 2016, 09:40
- Wohnort: Berlin
- Vorhandene Echos: 1
- Vorhandene Echo Dots: 15
Ok, cool! Mir gings dabei nicht um die Steuerung von LG, sondern um die allgemeine "Verarbeitung" von UDP in einem Skill, Laufzeiten sind hierbei nicht relevant 
Danke
Danke
0 x
Shit happens! 
-
Themenstarter
Code: Alles auswählen
import socket
IPADDR = '1.2.3.4'
PORTNUM = 9741
PACKETDATA1 = 'HEXCODE1'.decode('hex')
PACKETDATA2 = 'HEXCODE2'.decode('hex')
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
s.connect((IPADDR, PORTNUM))
s.send(PACKETDATA1)
s.send(PACKETDATA2)
s.close()
0 x