NEWS
Alexa => iobroker => Technisat TV
-
Hallo Gemeinde,
mein erstes Posting hier in diesem Forum.
Zur Steuerung eines Technisat TV habe ich hier leider nichts finden können. Mit Hilfe anderer Beiträge, zu anderen Geräten, konnte ich das Ein- und Ausschalten des TVs per Alexa und CEC HDMI realisieren. Auch das Umschalten der Kanäle über UDP funktioniert grundsätzlich.
Mein Problem ist zur Zeit, dass ich für jeden Sender ein Smartgerät anlegen muss. Gerne würde ich aber nur ein Smartgerät "Fernseher" anlegen und die Sender als Variable übergeben.
Doch genau an diesem Punkt komme ich nicht weiter.
Hier mal mein Code:
var dgram = require('dgram'); var message = new Buffer('<rcubuttonrequest code="1" state="pressed">'); var client = dgram.createSocket('udp4'); client.send(message, 0, message.length, 8090,'192.168.178.150', function(err, bytes) { if (err) throw err; client.close(); });</rcubuttonrequest>
Im Cloudadapter habe ich dann ein Smartgerät "A R D" angelegt. Mit dem Befehl "Alexa schalte ARD ein" fnktioniert die Anwahl des Kanals auch prima.
Aber wie kann ich den Sendernamen als Variable übergeben?
Irgendwie verstehe ich es so, dass ein Datenpunkt nur ein Wert an/aus oder eine Prozentzahl annehmen kann.
Mein erster Ansatz, war die Erstellung eines eigenen Skills. Aber da habe ich das Problem, dass ich aus der Cloud meinen Endpunkt (TV) nicht ansprechen kann.
Das Thema "iOBroker" ist für mich absolut neu. Aber durch meine bisherigen Versuche habe ich doch "Blut geleckt".
Wahrscheinlich fehlt mir zur Lösung meines Problems "nur" mein Einblick in die vielzahl der Steuerungsmöglichkeiten vom IOBroker.
Daher wäre ich für einen Tipp oder eine konkrete Hilfestellung sehr dankbar.
Schönes Wochenende allerseits.
-
Aus alexa heraus bist du auf an/aus und sowas einfaches beschränkt.
Musst also für jeden Kanal einen Datenpunkt anlegen den du dann setzt. Dahinter kann auch ein JavaScript liegen was den Namen des Datenpunkte dann zum steuern nimmt.
Aber mal Andere frage: wo hast du die TechniSat Infos zu Udp 8090 her bzw hast du eine Liste der rcuButtons die es gibt?! Suche schon lange einen Weg meinen digicorder fernzusteuern ohne ir.
Hast du einen Weg gefunden sicher rauszubekommen ob das Gerät eingeschaltet ist? Oder einen Weg es nur einzuschalten? Ich hab nur „toggle“ Wege gefunden aber d muss man wissen ob es an ist (und nicht gerade nur aufnimmt) Da experimentiere ich noch.
-
Hallo apollon77,
vielen Dank für deine Antwort.
So richtig schlau werde ich da allerdings nicht draus. Den Datenpunkt pro Sender (oder auch anderen Funtionen, wie lauter mute, usw.) anzulegen ist keine Problem. Auch diese dann per JS anzusprechen, sollte funktionieren. Dann kann ich mein TV prima per Script fernsteuern. Aber irgendwie fehlt mir die Sprachsteuerung. Wenn ich jeden einzelnen Datenpunkt, als Smartgerät in den Cloudapapter einbinde, funktioniert es zwar. Aber die Lösung finde ich extrem unübersichtlich.
Aber mal Andere frage: wo hast du die TechniSat Infos zu Udp 8090 her bzw hast du eine Liste der rcuButtons die es gibt?! Suche schon lange einen Weg meinen digicorder fernzusteuern ohne ir. `
Ich hatte lange Zeit auch einen Digicorder, habe mir dann aber einen Techniplus Isio zugelegt. (also alle Funktionen des Digicorders direkt im TV integriert) Ich habe lange nach Infos zur Ansteuern gesucht. Leider vergeblich. Ich habe darauf hin die Netzwerkbefehle der App my TechniSat (TechniSat Connect geht auch) mitgeschnitten. Dazu habe ich das Sniffertool Postern benutzt. Düber konnte ich den Port, als auch die übermittelten Codes auslesen.Ist dann ja nur noch eine Fleißaufgabe alle Befehle auszulesen. Ein paar habe ich hier. Allerdings habe ich nicht alle ermittelt, weil ich zunächst das Script und die Anbindung über Alexa erstellen wollte. Naja und da hänge ich ja fest. Hier schon mal ein paar Codes, die bei mir funktionieren:
<rcubuttonrequest code="…." state="pressed">1 ARD
2 ZDF
18 Prog +
19 Prog -
34 Vol -
35 Vol +
25 Teletext
50 wechselt zu letzter Aufnahme auf Festplatte
Hast du einen Weg gefunden sicher rauszubekommen ob das Gerät eingeschaltet ist? Oder einen Weg es nur einzuschalten? Ich hab nur „toggle“ Wege gefunden aber d muss man wissen ob es an ist (und nicht gerade nur aufnimmt) Da experimentiere ich noch. `
Über HDMI kann ich den Power Status auslesen. Allerdings kann ich darüber nicht ermitteln, ob gerade eine Aufnahme läuft:echo pow 0 | cec-client -s -d 1
liefert "on" bei laufendem TV
liefert "standby" bei TV im standby
liefert "standby" bei TV im standby und laufender Aufnahme</rcubuttonrequest>
-
So richtig schlau werde ich da allerdings nicht draus. Den Datenpunkt pro Sender (oder auch anderen Funtionen, wie lauter mute, usw.) anzulegen ist keine Problem. Auch diese dann per JS anzusprechen, sollte funktionieren. Dann kann ich mein TV prima per Script fernsteuern. Aber irgendwie fehlt mir die Sprachsteuerung. Wenn ich jeden einzelnen Datenpunkt, als Smartgerät in den Cloudapapter einbinde, funktioniert es zwar. Aber die Lösung finde ich extrem unübersichtlich. `
Stimme voll zu, ich kenne aber keinen anderen Weg.
Die Namen die man im Cloud adapter angibt werden dann zu den gerätenamen bei Alexa und nur auf diese reagiert Madam
Alle Cloud-Namen sind am Ende in den Objekten im ich glaube common block drin. Du könntest also beim Anlegen der ganzen States per Skript gleich die richtigen Smartnames eintragen und dir so manuelle anlegearbeit sparen.
Ich habe darauf hin die Netzwerkbefehle der App my TechniSat (TechniSat Connect geht auch) mitgeschnitten. Dazu habe ich das Sniffertool Postern benutzt. Düber konnte ich den Port, als auch die übermittelten Codes auslesen.
Ist dann ja nur noch eine Fleißaufgabe alle Befehle auszulesen. `
Habe ich so befürchtet. ich hatte (weil zu faul/keine Zeit) mit IR angefangen. Fernbediencodes sind einfacher gefunden/gecaptured
Hast du einen Weg gefunden sicher rauszubekommen ob das Gerät eingeschaltet ist? Oder einen Weg es nur einzuschalten? Ich hab nur „toggle“ Wege gefunden aber d muss man wissen ob es an ist (und nicht gerade nur aufnimmt) Da experimentiere ich noch. `
Über HDMI kann ich den Power Status auslesen. Allerdings kann ich darüber nicht ermitteln, ob gerade eine Aufnahme läuft:echo pow 0 | cec-client -s -d 1
liefert "on" bei laufendem TV
liefert "standby" bei TV im standby
liefert "standby" bei TV im standby und laufender Aufnahme `
Auch wie befürchtet.
Ich habe gerade nen Test laufen. Mein Technicorder hat Port 2376 offen und es gibt noch 9100 und 9200 für UPnP kram.
Habe per CuxD auf meiner CCU (der kann port-Pings, ist cool) gerade nen Test laufen.
Wenn aus dann ist keiner der Ports offen (bei meiner aktuellen Konfig), schaue gerade ob ich "An" von "Standby mt Aufnahme" unterscheiden kann. das Problem ist wenn ich sicher sein will das er an ist und ich "power Toggle" mache (mehr hat die Fernbedienung nicht), dann geht er halt auch aus
-
Ps: in Kombination mit portcheck und cec könnte es gehen
cec sagt Standby und Port 2376 ist aktiv … Aufnahme in Standby
-
Also ich habe jetzt heute die einzige Möglichkeit gefunden wie ich es erkennen kann …
Es gibt ja diese Teleport Plus software mit der man z.B. vom PC auf die technisat Geräte connected kann.
Die geht nur wenn das Ding richtig eingeschaltet ist. Ansonsten bringt es eine Fehlermeldung.
Habe heute da Netzwerkverkehr mitgeschnitten und das protokoll rausgefunden (zumindestens den initialisierungteil) und damit ein Javascript gebaut was ich nutze um zu checken ob er an ist oder nur im Standby.
Falls für dich interessant kann ichs gern mal posten ... aber teste vorher mal das die Software bei dir überhaupt tut.
-
Also im Moment begnüge ich mich mit der Befehlsübergabe per Alexa.
Aber falls ich mal den Gerätestatus einbinden sollte, wäre deine Lösung natürlich sehr interessant.
Teleport Plus kenne ich allerdings gar nicht. Oder meinst du von Technsisat den Mediaport?
-
Techniport Plus ist der Nachfolger von Mediaport (auch seit 2012 glaub ich nicht mehr aktualisiert, aber naja). Gibts bei denen runterzuladen
-
Gibt es beim Technisat eigentlich auch einen Befehl nur für EIN und AUS?
-
Wer den findet bekommt von mir was ausgegeben
(also bezogen auf meinen Technicorder ISIO STC)
Bisher nichts gefunden. Weder IR noch andere Codes. Nur ein "Power Toggle".
Sonst müsste ich ja nicht aufwändig den echten Onlinestatus rausfinden
-
Gibt es beim Technisat eigentlich auch einen Befehl nur für EIN und AUS? `
Ich verwende Ein/Aus wie folgt. Damit kann ich meinen Technisat per Alexa problemlos ein und ausschalten.Dabei ist es egal, ob gerade eine Aufnahme läuft oder nicht.
on({id: 'javascript.0.SwitchStates.Other.Fernseher_PowerToogle'}, function(obj) { if(obj.state.val === true) { exec('echo "on 0" | cec-client -s', function (error, stdout, stderr) { console.log('stdout: ' + stdout); }); console.log("einschalten!"); // falls TV im Aufnahmemodus, funktioniert CEC nicht, dann beliebigen UDP Befehl schicken var dgram = require('dgram'); var message = new Buffer('<rcubuttonrequest code="1" state="pressed">'); var client = dgram.createSocket('udp4'); client.send(message, 0, message.length, 8090,'192.168.178.150', function(err, bytes) { if (err) throw err; client.close(); }); } else { exec('echo "standby 0" | cec-client -s', function (error, stdout, stderr) { console.log('stdout: ' + stdout); }); console.log("ausschalten!"); } });</rcubuttonrequest>
-
so, jetzt habe ich auch mal den Teleporter Plus installiert.
Der verhält sich tatsächlich anders, als Connect oder auch myTechnisat.
Die Verbindung mit dem Technisat kommt tatsächlich nur zu Stande, wenn das Gerät an ist.
Ist das Gerät im Standy und ist im Aufnahmebetrieb, kommt keine Verbindung zu stande.
-
Das klappt bei dir weil es ein Fernseher ist … bei mir mit dem Receiver hab ich nur einen HDMI Ausgang und damit hängt er an meinem Fernseher
Was passiert denn mit dem Button den du drückst wenn er schon an ist? Schaltet er dann nicht den Sender um?
-
öh, also wenn der Fernseher an ist und ich das Script einfach noch einmal ausführe wird tatsächlich auf Prog 1 umgeschaltet. Ist ja auch klar, steht ja so auch im Script.
Die Taste 1 sollte eigentlich ja auch für den Fall sein, wenn das Gerät im Standby Modus mit laufender Aufnahme, eingeschaltet werden soll.
Statt der Taste 1, sollte ich da vielleicht tatsächlich einen anderen Befehl hinterlegen. Anderseits benutze ich im Moment Sprachbefehle. Und wenn das TV eh schon läuft, sage ich in der regel nicht noch einmal "… schalte Fernseher ein"
-
Nochmal zurück zu deiner Ausgangsfrage. Wie kann ich die drei Stati, off, standby, und standby im Aufnahmemodus unterscheiden?
Hast du mal mit dem Befehl "Scan" gearbeitet?
da liefert der cec-client bei mir drei verschiedene Ergebnisse:
1. TV ist an:
–-----------
device #0: TV
address: 0.0.0.0
active source: yes
vendor: Unknown
osd string: TV
CEC version: 1.4
power status: on
language: ???
2. TV in standby mit laufender Aufnahme:
device #0: TV
address: 0.0.0.0
active source: no
vendor: Unknown
osd string: TV
CEC version: 1.4
power status: standby
language: ???
3. TV im Standby
device #0: TV
address: 0.0.0.0
active source: no
vendor: Unknown
osd string: TV
CEC version: unknown
power status: standby
language: ???
Also drei verschiedene Zustände liefert drei verschiedene Ergebnisse.
Damit müsstest du doch auch deinen aktuellen Status ermitteln können.
-
Wie gesagt: Das geht bei dir weil es ein TV ist!
Ich habe ja keinen TV sondern nur einen "Kabel-Receiver". Der hat nur einen HDML-Ausgang und der ist belegt. Daher kommt ich an diese Abfragen nicht ran.
-
Nach vielem hin- und herprobieren habe ich nun einfach ne Steckdose mit Leistungsmessung angeschlossen und lasse den EIN/AUS Zustand über den Stromverbrauch des TV + Receivers anzeigen.
Ist zwar jetzt die Hauruck-Methode, aber so bekomme ich wenigstens den Status richtig angezeigt und kann das Ganze problemlos über Alexa steuern.
-
Ich habe darauf hin die Netzwerkbefehle der App my TechniSat (TechniSat Connect geht auch) mitgeschnitten. Dazu habe ich das Sniffertool Postern benutzt. Düber konnte ich den Port, als auch die übermittelten Codes auslesen. `
Hallo Digi-Kai,
ich versuche per Wireshark die Befehle für einen Digit Isio STC+ auszulesen, erkenne im Traffic allerdings nur '<deviceinformationrequest>' auf UDP 8090 unter Einsatz von TechniSat CONNECT. Hast Du eine Idee, wo die Kommandos verborgen sein könnten/Könntest Du weitere Details zu Deinem Auslese-Setup nennen?
Danke und viele Grüße</deviceinformationrequest>
-
Hallo Fred,
ich bin ehrlich gesagt nicht mehr im Thema drin.
Ich kenn mich auch leider nicht mit Wireshark aus.
Das Auslesen der Befehle war jedoch bei mir recht simpel.
Ich habe die App myTechnisat auf meinem Handy installiert.
Damit das TV darüber steuerbar ist, habe ich den Technisat im Netzwerk installiert und über die Einstellungen den Fernzugriff am TV freigegben.
Parallel habe ich auf dem Handy das Tool Pattern installiert.
Wenn ich jetzt den Fernseher per App gesteuert habe, hat Pattern die gesendeten Befehle aufgezeichnet.
z.B: <rcubuttonrequest code="1" state="pressed">für das Drücken der Taste 1
Möglicherweise arbeitet dein Technisat ja mit den identischen Befehlen. Schick doch mal den Befehl auf die IP deines Technisats.
Ich habe dann einfach durch Try & Error die Zahl 1 im gesendeten Code gegen 2,3 usw ausgetauscht und mal geschaut wie meine Fernseher reagiert.
Ich hoffe ich konnte wenigstens ein wenig helfen.
Grüße</rcubuttonrequest>
-
Hi Digi-Kai,
vielen Dank für Deine Antwort. Ich konnte leider immer noch keine Steuerbefehle auslesen und das Senden deines Kommandos über UDP 8090 brachte auch keinen Erfolg. (Ein Befehl <deviceinformationrequest>über den Port geht im Übrigen, mit Antwort vom Receiver). Den Befehl habe ich in Wireshark entdeckt. Andere Kommandos aber eben nicht. Es scheint so, dass die Kommunikation mit dem Digit Isio STC verschlüsselt verläuft.
Als Apps zur Steuerung habe ich sowohl myTechnisat als auch die neuere Technist Connect verwendet. Die beide funktioniert haben. Als Snoffing-App meintest Du eigentlich wohl 'Postern'. Damit konnte ich allerdings keine Sniffing-Ergebnis erzielen…
Für mich ist das Thema damit erst Mal gelaufen. Vielen Dank aber nochmal an Dich!</deviceinformationrequest>