Um nicht so viele tasks anzulegen, wieviele sony befehle du hast und jedesmal scripte anpassen, habe ich das script entsprechend erweitert...
Du brauchst eine variable auf dem gateway anzulegen vom typ string, name SonyCode
so:
dann brauchst du das script hier:
getDeviceStatus(
"AIO GATEWAY V5+ (EA)",
"SonyCode",
{"value":"state"},
function(err, status) {
err && console.error(err.message);
console.log(status);
var http = require("http");
var body = '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encoding xmlns:u="urn:schemas-sony-com:service:IRCC:1"><IRCCCode>' + status + '</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>';
console.log(body);
var postRequest = {
host: "192.168.1.38",
path: "/sony/IRCC",
port: null,
method: "POST",
headers: {
'X-Auth-PSK': "0000",
'SOAPAction': '"urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"',
'Content-Type': "text/plain",
}
};
var buffer = "";
var req = http.request( postRequest, function( res ) {
console.log( res.statusCode );
var buffer = "";
res.on( "data", function( data ) { buffer = buffer + data; } );
res.on( "end", function( data ) { console.log( buffer ); } );
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.write( body );
req.end();
}
);
das script speichern, z.b. name sonyscript
dann einen task anlegen mit dem namen, sonycontrol z.b.
im sobald block einen http element nehmen, wenn du drauf klickst, die url kopieren.
im dann block das script element nehmen und dieses script wählen...
Jetzt erstellst du im makro editor eine gruppe SonyTv z.b.
dort erstellst du so viele makros, wieviele du befehle hast, mit dem namen der befehle, in meinem beispiel
befehl aus:
befehl aus mit kommandos:
zuerst setzt man die variable SonyCode auf den wert des befehls, aus dem body teil deines befehls:
in dem kommentar oben von dir war das dieses string:
Von
das script dann testen im script editor vom automation manager, mit der play taste
dann brauchst du kein php umweg, wenn es klappt
Von
es klappt!!!! Vielen Dank. Musste noch den Port, das HTTP bei HOST anpassen sowie die Notation bei SOAPAction ändern (' statt "). Hier noch der funktionierende Code, falls jemand auch eine Sony TV über IP steuern möchte:
var http = require("http");
//bei var body das was in body bei dem bild ist
var body = '<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:X_SendIRCC xmlns:u="urn:schemas-sony-com:service:IRCC:1"><IRCCCode>AAAAAQAAAAEAAAAVAw==</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>';
var postRequest = {
host: "192.168.1.38",
path: "/sony/IRCC",
port: null,
method: "POST",
headers: {
'X-Auth-PSK': "0000",
'SOAPAction': '"urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"',
'Content-Type': "text/plain",
}
};
var buffer = "";
var req = http.request( postRequest, function( res ) {
console.log( res.statusCode );
var buffer = "";
res.on( "data", function( data ) { buffer = buffer + data; } );
res.on( "end", function( data ) { console.log( buffer ); } );
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.write( body );
req.end();
Von
das ist schön :)
trotzdem versuche das nochmal mit php
so wie wir es besprochen haben
wenn du das hinbekommst dann habe ich eine lösung mit deviceinfo.xml
dann brauchst du nicht für jedes befehl einen task
wenn es klappt mit php, dann post diesen code hier
in einer antwort mit dem codeeditor
und poste auch alle befehle für deinen tv
dann mache ich dir eine deviceinfo.xml
später kannst du in neo einfach die befehle zu den buttons wählen
Von
und jetzt noch oben unter meiner antwort, bitte den like button klicken :)
gruss!
Von
mach ich doch gerne.....vielen Dank noch einmal!!!
Neuen Kommentar hinzufügen