Hallo,
leider keine Rückmeldung erhalten, bin nun der Meinung, dass ich diesen Vorgang nur über die Überwachung der Ical Event eintrage realisieren kann. Ist zwar kein Problem, muss dann halt öfters mal upgedated / "gechecked" werden. Mit 30 Minuten ist mir das zu wenig, mal gucken wann Google ein Problem bekommt mit den abfragen bzw. die Abfragen zum Kalender blockiert. Mich würde immer noch interessieren was es mit der Control ID auf sich hat. Mit anderen Worten was macht man damit?
NEWS
Latest posts made by 123bobby
-
RE: iCal setzen von Events wird nicht durchgeführt
-
iCal setzen von Events wird nicht durchgeführt
Hallo zusammen,
vielleicht kann mir einer von euch Helfen und mir sagen was ich falsch mache:
Verwendet wird Ical 1.7.4 und ein Google Kalendar.Was bis dato funktioniert: Einlesen von Kalender einträgen
Was leider nicht geht: Ein Event ausführen wenn der Termin erreicht wird. Zum testen habe ich das Objekt 0_userdata.0.example_state verwendet bzw. wollte es schalten. (true/ false)
Leider funktioniert genau das nicht und ich weiß nicht was ich falsch gemacht habe. Daher hier ein paar Screenshots:
Das einlesen der Kalendareinträge funktioniert:
Nur wird leider einfach nichts ausgelöst, das Logging (Debug) sagt leider auch nichts "merkwürdiges":
Bzw. in der Zeit wo es losgehen sollte findet keine Action <> Logging statt.
Was mach ich falsch? Ich freue mich auf eure Hilfe
Danke. -
RE: Adapter-Anfrage Sony Bravia TV
Habe mir gerade noch anderweitig geholfen, anscheinend gibt es noch eine neuere/andere Version... warum ich sie bis dato nicht gefunden habe bleibt mir schleierhaft. Für andere die genau das selbe "Problem" haben: In diesem Thread findet man den anderen Adapter, der einem auch den gewünschten Status liefert.
-
RE: Adapter-Anfrage Sony Bravia TV
Hallo zusammen,
habe mich mit dem Script von @Soulforged auseinandergesetzt bzw. wollte es. Ich denke das hier durch Copy/Paste etwas kaputt gegangen ist.
Wichtig ist, dass man auf jedenfall die geschweifte Klammer mitnimmt, die nach dem Codeschnippsel kam, die ich persönlich übersehen hatte aber so ist das halt... man lernt ja immer. Leider klappt es dann aber mit dem Code immer noch nicht und ich erhalte nicht die benötigten Werte, so wie Sie @Mischa im Screenshot zeigt. Der Grund hierfür wird wohl noch irgend ein anderer "Fehler" im Code sein. Folgende Meldung erhalte ich beim Speichern:javascript.0 (591) script.js.Tests.Skript_1: TypeScript compilation failed: const request = require('request'); ^ ERROR: Cannot redeclare block-scoped variable 'request'. bravia('/sony/audio', 'setAudioVolume', [{"target": "speaker", "volume": obj.state.val.toString()}]); ^ ERROR: Expected 4 arguments, but got 3.
Leider sind meine Programmierkenntisse zu schlecht um das zu verstehen / zu beheben. Ich gehe aber davon aus, dass das Entfernen der Ausrufezeichen am Anfang der Zeilen richtig war und das es sich hierbei auch nur um einen weiteren Code Translation / Darstellungsfehler handelt.
Hier nochmal der gesamte Code in einem Schnipsel:
//################### Script Configuration #################################################### const bravia_ip = "192.168.1.65"; //Hier die IP des TV einsetzen. const psk = "geheim"; //Hier PSK einetzen (PIN der in TV Konfiguration gewählt wurde) const poll_intervall = 30; //Abfrageintervall für den Status in Sekunden //############################################################################################# const request = require('request'); //const util = require('util'); var message_id = 0; //Alle Konstanten und States erstellen, die abgefragt werden sollen const s_powerstate = 'javascript.0.Bravia.powerstate'; //An/Aus Status const s_nowplaying = 'javascript.0.Bravia.nowPlaying'; //aktueller Titel const s_volume = 'javascript.0.Bravia.actVolume'; //aktuelle Lautstärke createState(s_powerstate, "unknown", {type: "string", role: "State"}); createState(s_nowplaying, "unknown", {type: "string", role: "State"}); createState(s_volume, "unknown", {type: "string", role: "State"}); function getTVStatus(){ //Funktion führt nacheinander alle ABfragen durch. Wirde als schedule alle x Sekunden ausgeführt. bravia('/sony/system','getPowerStatus', [], s_powerstate); bravia('/sony/audio', 'getVolumeInformation', [], s_volume); bravia('/sony/avContent', 'getPlayingContentInfo', [], s_nowplaying); } schedule("*/"+poll_intervall+" * * * *", getTVStatus); function bravia(tv_urlextension, tv_method, tv_params, tv_stateID){ //Funktion fragt einzelnen Stat ab //tv_urlextension = in welchem "ordner" liegt die Methode //tv_method = wie heißt die Methode (zB. getPowerStatus) //tv_params = welche Parameter müssen an die Methode übergeben werden (bei PowerStatus leer [] //tv_stateID = wo soll das Ergebnis gespeichert werden if (message_id > 5000){ //fortlaufende id um Nachrichten identifizieren zu können. Läuft zwischen 5000 und 1. message_id=1; }else{ message_id +=1; } request({ url: 'http://' + bravia_ip + tv_urlextension, method: "POST", json: true, headers: { 'X-Auth-PSK': psk, 'connection' : 'close' }, body: { 'method': tv_method, 'params': tv_params, 'id' : message_id, 'version' : '1.0' } }, function (error, response, body) { //log(response.statusCode); //log(util.inspect(body, false, null)); //Komplette ANtwort im Log wegen Debugging if (!error && response.statusCode == 200) { if (tv_stateID !== undefined) { //nur wenn State für Update angegeben, sonst handelt es sich um einen BEfehl und keine Statusabfrage //Je nach abgefragtem Status sieht die Antwort anders aus --> Switch unterscheidet var wert = ''; //wenn nichts gefunden wird, nehmen wir an, der TV wäre aus. if(!body.hasOwnProperty('error')) { //Wenn ein Fehler zurück kommt, (zB TV ist aus und Lautstärke wird abgefragt) --> tue nichts switch(tv_method){ //je nach ABfrage versteckt sich der wert an einer anderen stelle im result case 'getPowerStatus': wert = body.result[0].status; break; case 'getVolumeInformation': //Bei Volume muss nach dem key volume gesucht werden bei dem target : speaker for (var i =0; i<=body.result[0].length; i++) { if (body.result[0][i].target =="speaker") {wert=body.result[0][i].volume.toString(); break;} } break; case 'getPlayingContentInfo': //Bei bei playing content ziehen wir uns den wert "title" wert = body.result[0].title; break; default: return false; } } //log(tv_method+": "+wert); setState(tv_stateID, wert, true); //State schreiben mit Ack flag --> wert aktualisiert } } } ); } //Subscription auf alle Funktionen aus Adapter (=Befehle an TV). ~1 Sekunden nach Befehl an TV Status abfragen subscribe({id: /^sony-bravia.0.*/}, function (obj) { setTimeout(getTVStatus, 1000); } ); //Lautstärke-Änderung über Schieberegler --> subscribe auf Läutstäre State. Bei Änderung Nachricht an TV mit neuer Lautstärke subscribe({id: s_volume, change: "ne"}, function (obj) { bravia('/sony/audio', 'setAudioVolume', [{"target": "speaker", "volume": obj.state.val.toString()}]); setTimeout(getTVStatus, 1000); //Sekunde später Werte lesen } );
Wäre echt toll wenn mal ein Experte drüber schauen könnte und mir verraten kann was noch falsch ist... für die Abfragen zu Hause (ist TV an / aus ) ist ja leider der sony bravia Adapter nicht wirklich toll oder liegt es vielleicht am TV bzw. an der Android version? Bei meinem XF9005 geht steuern über den Adapter, aber Rückmeldungen gibt es leider keine und hier erhoffe ich mir die nötigen Infos vom Script.
Danke und viele Grüße