Antworten
Sep 18, 2017 - 16:01
habe keinen harmony leider, wäre das nicht mit dem iftt möglich und dem harmony hub?
es gibt den cloud zugriff zum testen gerade für 14 tage:
https://mediola.answerbase.com/234546...
es gibt den cloud zugriff zum testen gerade für 14 tage:
https://mediola.answerbase.com/234546...
Sep 18, 2017 - 17:08
Wie schaltest Du denn zur Zeit die PS4 ein, davon abhänig ist dann auch der Lösungsansatz? Die Harmony selber kann die PS4 selber ja nicht einschalten.
Sep 20, 2017 - 17:08
nun meldest du dich nicht mehr... ist dir dann doch nicht so wichtig...
für alle die etwas machen möchten, wenn playstation oder ein anderes gerät online ist auf der fritzbox, hier die mögliche lösung
es wird nicht die ps4 angeschaltet, nur wird geprüft ob sie mit der fritzbox verbunden ist, dann ist sie auch an und der beamer kann mit makro angeschaltet werden.
zwei tasks anlegen mit den namen online und offline z.b.
dann bei beiden im sobald block intervall abfrage 10 sek
dann für online task dieses script:
dann task offline erstellen, auch intervall im sobaldblock 10 sek. und dieses script erstellen:
mit diesen scripten wäre eine einfache anwesenheitssteuerung zu realisieren, obwohl nicht ganz schnell aber einfach, wer es testen möchte
für alle die etwas machen möchten, wenn playstation oder ein anderes gerät online ist auf der fritzbox, hier die mögliche lösung
es wird nicht die ps4 angeschaltet, nur wird geprüft ob sie mit der fritzbox verbunden ist, dann ist sie auch an und der beamer kann mit makro angeschaltet werden.
zwei tasks anlegen mit den namen online und offline z.b.
dann bei beiden im sobald block intervall abfrage 10 sek
dann für online task dieses script:
const getContent = function(url) {
// return new pending promise
return new Promise((resolve, reject) => {
// select http or https module, depending on reqested url
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
// handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
// temporary data holder
const body = [];
// on every content chunk, push it to the data array
response.on('data', (chunk) => body.push(chunk));
// we are done, resolve promise with those joined chunks
response.on('end', () => resolve(body.join('')));
});
// handle connection errors of the request
request.on('error', (err) => reject(err));
});
};
var http = require('http');
var antwortXml;
var active;
var sonymac = "xx:xx:C4:71:xx:DD"; //mac adresse von der ps4 hier eintragen....in fritz nachsehen
var xml = " " + sonymac + " ";
var http_options = {
hostname: 'fritz.box',
port: 49000,
path: '/upnp/control/hosts',
method: 'POST',
headers: {
"content-type": "text/xml; charset=\\\"utf-8\\\"",
'Content-Length': xml.length,
"soapaction": "urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry"
}
};
var req = http.request(http_options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
antwortXml = chunk;
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
active = antwortXml.split("");
active = active[0].split("");
console.log(active[1]);
if (active[1] == 1) {
// hier drunter ein makro oder was auch immer ausführen, in der linken leiste </> symbol anklicken und makro wählen
//hier schalten wir den task welcher dieses script ausführt aus, nachdem die sony online ist, die task id=5 mit eigener ersetzen
getContent('http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=5&acti
ve=false')
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
// write data to request body
req.write(xml);
req.end();
im script die ip adresse anpassen, unten ein makro einfügen oder eine aktion, mit dem snippet links im scripteditor, script unter dem namen online speichern, im dann teil des tasks auswählen, task speichern nicht übertragen.dann task offline erstellen, auch intervall im sobaldblock 10 sek. und dieses script erstellen:
const getContent = function(url) {
// return new pending promise
return new Promise((resolve, reject) => {
// select http or https module, depending on reqested url
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
// handle http errors
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
// temporary data holder
const body = [];
// on every content chunk, push it to the data array
response.on('data', (chunk) => body.push(chunk));
// we are done, resolve promise with those joined chunks
response.on('end', () => resolve(body.join('')));
});
// handle connection errors of the request
request.on('error', (err) => reject(err));
});
};
var http = require('http');
var antwortXml;
var active;
var sonymac = "xx:xx:C4:71:xx:DD"; //mac adresse von der ps4 hier eintragen....in fritz nachsehen
var xml = " " + sonymac + " ";
var http_options = {
hostname: 'fritz.box',
port: 49000,
path: '/upnp/control/hosts',
method: 'POST',
headers: {
"content-type": "text/xml; charset=\\\"utf-8\\\"",
'Content-Length': xml.length,
"soapaction": "urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry"
}
};
var req = http.request(http_options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
antwortXml = chunk;
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
active = antwortXml.split("");
active = active[0].split("");
console.log(active[1]);
if (active[1] == 0) {
//hier schalten wir den task mit dem namen online wieder an, aktiv, falls die ps4 offline ist, tadk id nummer anpassen, hier bei mir 5
getContent('http://192.168.1.20:8088/cmd?XC_FNC=setTaskActive&id=5&acti
ve=true')
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
// write data to request body
req.write(xml);
req.end();
wichtig ist, das dieses nur mit der fritzbox geht und nur dann wenn TR-064 an ist, musste aber von sich aus sein, wenn nicht hier einsehen:mit diesen scripten wäre eine einfache anwesenheitssteuerung zu realisieren, obwohl nicht ganz schnell aber einfach, wer es testen möchte
Quelle: fritzbox TR-064
Neuen Kommentar hinzufügen