Antworten
Jun 26, 2017 - 03:49
Hallo,
zum Automation-Manager: mir ist nicht ganz klar, was nun der komplette Ablauf sein soll. Die Aktion ist klar (Kamera ein/aus) aber was ist das auslösende Ereignis (SOBALD-Block)?
Im Script selbst kann man mit 'console.log' beliebige Texte und mit 'err && console.err(err)' Fehlercodes ausgeben.
Duese Meldungen sind zu sehen, wenn man das Script im AM im Testmode laufen lässt.
Da sollte man herausbekommen, was schief läuft. Ein http-request auszulösen, das Ergebnis (wie 'liefert' der request das Ergebnis?) zu nehmen für weitere Requests scheint mir jetzt nicht unmöglich zu sein.
Ich habe zwar eine Synology, aber keine Kamera (mehr), sodaß ich das leider nicht so einfach nachbauen kann.
Das mit dem Browser auszuprobieren ist natürlich ein erster Ansatz, aber da ist mir persönlich zu viel User-Interface drin, um Schlüsse zu ziehen, wie das auf script-Ebene läuft.
Wenn es im AM nicht zum laufen zu bringen ist, würde ich persönlich auf dern Synology-Shell das mal versuchen mit curl oder eventuell php nachzustellen. Dann kann man besser eingrenzen, ob es ein AM-Problem wäre oder eher doch wo anders liegt.
Zu Alexa kann ich leider gar nichts sagen, das habe ich keine Erfahrung mit.
Gruß
zum Automation-Manager: mir ist nicht ganz klar, was nun der komplette Ablauf sein soll. Die Aktion ist klar (Kamera ein/aus) aber was ist das auslösende Ereignis (SOBALD-Block)?
Im Script selbst kann man mit 'console.log' beliebige Texte und mit 'err && console.err(err)' Fehlercodes ausgeben.
Duese Meldungen sind zu sehen, wenn man das Script im AM im Testmode laufen lässt.
Da sollte man herausbekommen, was schief läuft. Ein http-request auszulösen, das Ergebnis (wie 'liefert' der request das Ergebnis?) zu nehmen für weitere Requests scheint mir jetzt nicht unmöglich zu sein.
Ich habe zwar eine Synology, aber keine Kamera (mehr), sodaß ich das leider nicht so einfach nachbauen kann.
Das mit dem Browser auszuprobieren ist natürlich ein erster Ansatz, aber da ist mir persönlich zu viel User-Interface drin, um Schlüsse zu ziehen, wie das auf script-Ebene läuft.
Wenn es im AM nicht zum laufen zu bringen ist, würde ich persönlich auf dern Synology-Shell das mal versuchen mit curl oder eventuell php nachzustellen. Dann kann man besser eingrenzen, ob es ein AM-Problem wäre oder eher doch wo anders liegt.
Zu Alexa kann ich leider gar nichts sagen, das habe ich keine Erfahrung mit.
Gruß
Jun 26, 2017 - 07:06
versuche das hier erstmal:
ip, port anpassen, auch unter path, den user und passwort eintragen...bei account=, bzw. passwd=
du kannst nur die konsolen ausgaben sehen wenn du das script abspeicherst und mit dem play buton im scripteditor abspeilst (ausführst)
dort sollte dann deine sid auftauchen.
das mit makro sollte gehen in dem du 2 makros erstellst und 2 tasks anlegst, einen nennst du z.b. tag, denn anderen nacht
dann alexa schalte tag an und nacht an
aber wie gesagt erstmal muss dieses script eine sid liefern :)
ip, port anpassen, auch unter path, den user und passwort eintragen...bei account=, bzw. passwd=
var http = require('http');
var options = {
host: '192.168.1.56',
port: '5000',
path: '/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=
user_synology&passwd=Passwort_synology&session=SurveillanceStation&
format=sid'
};
http.get(options, function (res) {
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
try {
var data = JSON.parse(json);
var sid = data.sid;
console.log(sid);
} catch (e) {
console.log('Error parsing JSON!');
}
} else {
console.log('Status:', res.statusCode);
}
});
}).on('error', function (err) {
console.log('Error:', err);
});
dann sehen wir weiter :)du kannst nur die konsolen ausgaben sehen wenn du das script abspeicherst und mit dem play buton im scripteditor abspeilst (ausführst)
dort sollte dann deine sid auftauchen.
das mit makro sollte gehen in dem du 2 makros erstellst und 2 tasks anlegst, einen nennst du z.b. tag, denn anderen nacht
dann alexa schalte tag an und nacht an
aber wie gesagt erstmal muss dieses script eine sid liefern :)
Jun 26, 2017 - 07:12
Hi demel42, vielen danke für dein Feedback. Der Sobald-Block kann ja verschiedenes sein, hier bot sich jedoch nur ein http-request an. Am liebsten würde ich den Sobald-Block sogar weglassen. Auslöser ist ein http-request von einem Schalter der Fernbedienung oder ein ausgelöstes Makro, hier kann man bei beidem den http-request an das gateway senden und schon wird ausgelöst.
Zum Script:
Vielleicht habe ich es übersehen, ich bekomme mit console.log keine Ausgabe (das ist ja auch eins der angesprochenen Probleme).
Was heisst bei dir Testmodus? Das "Script ausführen" im Editor gibt durch console.log keine Ausgabe aus.
Habe ich evtl. Die Einstellung Testmodus übersehen?
Danke vorab für die Hilfe.
Zum Script:
Vielleicht habe ich es übersehen, ich bekomme mit console.log keine Ausgabe (das ist ja auch eins der angesprochenen Probleme).
Was heisst bei dir Testmodus? Das "Script ausführen" im Editor gibt durch console.log keine Ausgabe aus.
Habe ich evtl. Die Einstellung Testmodus übersehen?
Danke vorab für die Hilfe.
Jun 27, 2017 - 07:18
Unter Windows funktioniert die Debug-Ausgabe leider nicht, wie ich gerade feststellen musste. Ich habe das Problem in den Bug Tracker aufgenommen.
Jun 27, 2017 - 14:19
Hallo Sebastian,
danke für den Hinweis, habe deshalb mit der Eingabeaufforderung von node.js das Problem gestern gelöst.
Es ist nun möglich, via Alexa Sprachbefehl->Makro->Task->per Web.API Synology->Kameras an- und auszuschalten.
Eine sehr schöne Möglichkeit.
Werde für die anderen die Beispiel-Lösung posten.
Da mein Skript mit Try-And-Error nun funktioniert, ich jedoch nicht sicher bin ob die Aordnung des Codes so richtig ist, bitte ich alle auch gerne um Hinweise zu Verbesserungen.
@Zdenko33:
Ich habe ein bisschen umbauen müssen bevor es funktioniert, aber danke!
Kannst ja mal schauen wie es jetzt aussieht, poste es voraussichtlich heute Abend.
danke für den Hinweis, habe deshalb mit der Eingabeaufforderung von node.js das Problem gestern gelöst.
Es ist nun möglich, via Alexa Sprachbefehl->Makro->Task->per Web.API Synology->Kameras an- und auszuschalten.
Eine sehr schöne Möglichkeit.
Werde für die anderen die Beispiel-Lösung posten.
Da mein Skript mit Try-And-Error nun funktioniert, ich jedoch nicht sicher bin ob die Aordnung des Codes so richtig ist, bitte ich alle auch gerne um Hinweise zu Verbesserungen.
@Zdenko33:
Ich habe ein bisschen umbauen müssen bevor es funktioniert, aber danke!
Kannst ja mal schauen wie es jetzt aussieht, poste es voraussichtlich heute Abend.
Jun 28, 2017 - 14:56
Hallo zusammen,
hier nun der Code aus dem Skript:
hier nun der Code aus dem Skript:
const https = require('https');
var sid = '';
var req = https.request('https://SERVER.DE:5001/webapi/auth.cgi?api=SYNO.API.Auth&met
hod=Login&version=3&account=BENUTZER&passwd=PASSWORT&session=Su
rveillancestation&format=sid', function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
var inhalt = JSON.parse(chunk);
sid = inhalt.data.sid;
console.log(sid);
var req2 = https.request('https://SERVER.DE:5001/webapi/entry.cgi?api=SYNO.SurveillanceSta
tion.Camera&method=Enable&version=3&cameraIds=1,3,4,5&_sid='+si
d, function(res) {
var output='';
res.setEncoding('utf8');
res.on('data', function (chunk) {output += chunk;});
res.on('end', function() {
var inhalt2 = JSON.parse(output);
console.log('Anschalten'+inhalt2);});
});
req2.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req2.end();
var req3 = https.request('https://SERVER.DE:5001/webapi/auth.cgi?api=SYNO.API.Auth&met
hod=Logout&version=3&session=Surveillancestation&_sid='+sid, function(res) {
var output2='';
res.setEncoding('utf8');
res.on('data', function (chunk) {output2 += chunk;});
res.on('end', function() {
var inhalt3 = JSON.parse(output2);
console.log('Logoff'+inhalt3);});
});
req3.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req3.end();
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
Neuen Kommentar hinzufügen