Antworten
Aug 05, 2017 - 03:01
Das Plugin kann nur das Kamerabild darstellen und nichts mehr. Eigentlich braucht man das Plugin dazu auch nicht unbedingt.
Hier ist erklärt wie man die Bewegungsfunktion der Kamera benutzen und auswerten könnte:
https://homematic-forum.de/forum/view...
Bei solchen Fragen sollte man auch den Typ der Kamera eingeben, dan kann man eventuell besser helfen.
Auch was man noch an hardware hat, ccu, automation manager usw. :)
Aug 05, 2017 - 17:44
Zum testen habe ich einen Task erstellt und mit einer NEO-Ferbedienung den Intertechno-Schalter geschaltet:
...und das funktioniert schon nicht mehr (der Task wird nicht Ausgelöst).
Idee?
Gruß
Leszek
Quelle: Intertechno
Aug 05, 2017 - 19:10
Aug 05, 2017 - 19:23
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
var photo = "http://ip address:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=admin&pwd=xxx"; //hier die ip und port der cam
var chatid = "xxxxxxxxx"; // chat_id des Empfängers
var botAPI = "xxxxxxyyyyxxxxxxxxyyyyyyyyyy"; //! API des eingerichteten Bots
getContent('https://api.telegram.org/bot'+ botAPI + '/sendPhoto?chat_id=' + chatid + '&photo=' + photo)
.then((html) => console.log(html))
.catch((err) => console.error(err));
hier das script um eine nachricht an telegram app zu versenden
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
var message = "Das ist eine test nachricht";
var chatid = "xxxxxxxxxxxx"; // chat_id des Empfängers
var botAPI = "xxxyyyyzzzzcccc"; //! API des eingerichteten Bots
getContent('https://api.telegram.org/bot'+ botAPI + '/sendMessage?chat_id=' + chatid + '&text=' + message)
.then((html) => console.log(html))
.catch((err) => console.error(err));
Aug 05, 2017 - 19:44
email wählen:
und dann den links kvadrat auswählen
dort steht jetzt eine email adresse an welche du die email from c2 senden musst
oder du wälst den rechten kvadrat und sendest eine email an die gleiche adresse, mit einem subject (#kamera),
wenn das möglich ist in der kamera so einzustellen....wichtig ist der hash # im subject der mail.
und dann alles wie oben beschrieben...
Aug 06, 2017 - 16:03
14:10Skript Bewegung Erkennung hat gestartet. 20:14:11<CGI_Result> <result>0</result> <IOAlarm>0</IOAlarm> <motionDetectAlarm>2</motionDetectAlarm> <soundAlarm>0</soundAlarm> <record>0</record> <sdState>0</sdState> <sdFreeSpace>0k</sdFreeSpace> <sdTotalSpace>0k</sdTotalSpace> <ntpState>1</ntpState> <ddnsState>0</ddnsState> <url>http%3A%2F%2Fij7765.myfoscam.org</url> <upnpState>0</upnpState> <isWifiConnected>0</isWifiConnected> <wifiConnectedAP></wifiConnectedAP> <infraLedState>0</infraLedState> </CGI_Result> 20:14:1165 20:14:1185 20:14:11<motionDetectAlarm>2 20:14:11Skript Bewegung Erkennung hat geendet.
Bei Bewegung:
20:15:41Skript Bewegung Erkennung hat gestartet. 20:15:41<CGI_Result> <result>0</result> <IOAlarm>0</IOAlarm> <motionDetectAlarm>2</motionDetectAlarm> <soundAlarm>0</soundAlarm> <record>0</record> <sdState>0</sdState> <sdFreeSpace>0k</sdFreeSpace> <sdTotalSpace>0k</sdTotalSpace> <ntpState>1</ntpState> <ddnsState>0</ddnsState> <url>http%3A%2F%2Fij7765.myfoscam.org</url> <upnpState>0</upnpState> <isWifiConnected>0</isWifiConnected> <wifiConnectedAP></wifiConnectedAP> <infraLedState>0</infraLedState> </CGI_Result> 20:15:4165 20:15:4185 20:15:41<motionDetectAlarm>2 20:15:41Skript Bewegung Erkennung hat geendet.
Bei dem 2-ten Skript, mit geänderte Zeile (also mit var res = body.slice(pos + 17, pos1);, bei keine Bewegung:
20:17:22Skript Bewegung C2 hat gestartet. 20:17:22<CGI_Result> <result>0</result> <IOAlarm>0</IOAlarm> <motionDetectAlarm>1</motionDetectAlarm> <soundAlarm>0</soundAlarm> <record>0</record> <sdState>0</sdState> <sdFreeSpace>0k</sdFreeSpace> <sdTotalSpace>0k</sdTotalSpace> <ntpState>1</ntpState> <ddnsState>0</ddnsState> <url>http%3A%2F%2Fij7765.myfoscam.org</url> <upnpState>0</upnpState> <isWifiConnected>0</isWifiConnected> <wifiConnectedAP></wifiConnectedAP> <infraLedState>0</infraLedState> </CGI_Result> 20:17:2265 20:17:2285 20:17:22m>1 20:17:22keineBewegung 20:17:22Skript Bewegung C2 hat geendet.
Bei Bewegung:
20:20:17:56Skript Bewegung C2 hat gestartet. 20:17:57<CGI_Result> <result>0</result> <IOAlarm>0</IOAlarm> <motionDetectAlarm>2</motionDetectAlarm> <soundAlarm>0</soundAlarm> <record>0</record> <sdState>0</sdState> <sdFreeSpace>0k</sdFreeSpace> <sdTotalSpace>0k</sdTotalSpace> <ntpState>1</ntpState> <ddnsState>0</ddnsState> <url>http%3A%2F%2Fij7765.myfoscam.org</url> <upnpState>0</upnpState> <isWifiConnected>0</isWifiConnected> <wifiConnectedAP></wifiConnectedAP> <infraLedState>0</infraLedState> </CGI_Result> 20:17:5765 20:17:5785 20:17:57m>2 20:17:57keineBewegung 20:17:57Skript Bewegung C2 hat geendet.
Gruß
Leszek
Aug 07, 2017 - 15:20
var sekunden = 3; //hier anzahl sekunden für script wiederholen
var zeitraum = sekunden * 1000;
var stundenEnde = 20; //hier die uhrzeit (stunden) wann das script endet
function holeZeit() {
var hours = (new Date()).getHours();
if (hours === 0) {hours = 24}
return hours;
}
setInterval(function() {
var url = "http://192.168.2.9/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=admin&pwd=xxxxx"; //hier die richtige url angeben
// anfrage an die kamera und holen des motion status
var http = require('http');
var req = http.get(url, function(res) {
var body = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += String(chunk);
});
res.on('end', function() {
//datenHolen(body);
console.log(body);
var stunden = holeZeit();
console.log(stunden);
var pos = body.indexOf("");
var pos1 = body.indexOf(" ");
var res = body.slice(pos+19, pos1);
console.log(res);
if (stunden == stundenEnde) {
if (res == 2) {
getContent('http://192.168.2.182:80/tm/http?test=4&auth=xxxxx') //hier die url eintragen die einen task auslöst
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
else {
//hier kann man einen task aufrufen mit getContent wie oben, wenn keine bewegung ist
//oder man baut hier gleich ein snippet ein aus dem script editor mit dem zahnrad symbol
console.log('keineBewegung');
}
}
else {
//wenn die angegebene stundenEnde erreicht wird stoppt das script
console.log('script gestoppt');
process.exit();
}
});
});
req.on('error', function(err) {
console.error(err);
});
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
}, zeitraum);
Bei stundenEnde einfach eine stunde mehr als jetzt eintragen, wenn z.b jetzt 19.00 uhr ist dann 20 eintragen
zum testen im scripteditor
später machst du ein task mit sobald block uhrzeit und machst du jeden tag um 23:00 auslösen
dann teil dieses script und stundenEnde dann 22 eintragen.....mal sehen ob das dann so den ganzen tag vernünftig läuft :)
Aug 07, 2017 - 16:29
var sekunden = 3; //hier anzahl sekunden für script wiederholen
var zeitraum = sekunden * 1000;
setInterval(function() {
var url = "http://192.168.2.9/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=admin&pwd=xxxxx"; //hier die richtige url angeben
// anfrage an die kamera und holen des motion status
var http = require('http');
var req = http.get(url, function(res) {
var body = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += String(chunk);
});
res.on('end', function() {
//datenHolen(body);
console.log(body);
var stunden = holeZeit();
console.log(stunden);
var pos = body.indexOf("");
var pos1 = body.indexOf(" ");
var res = body.slice(pos+19, pos1);
console.log(res);
getDeviceStatus(
"mediola", //der raum im gateway
"Urlaub", //name der variable im raum
{"value":"state","options":["off","on"]},
function(err, status) {
if(!err) {
if (status == 'on') {
if (res == 2) {
console.log('Bewegung');
getContent('http://192.168.2.182:80/tm/http?test=4&auth=xxxxx') //hier die url eintragen die einen task auslöst
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
else {
//hier kann man einen task aufrufen mit getContent wie oben, wenn keine bewegung ist
//oder man baut hier gleich ein snippet ein aus dem script editor mit dem zahnrad symbol
console.log('keineBewegung');
}
}
else {
console.log('variable off');
console.log('script gestoppt');
process.exit();
}
}
}
);
});
});
req.on('error', function(err) {
console.error(err);
});
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
}, zeitraum);
bei der getDeviceStatus musst du deine variable angeben
Aug 08, 2017 - 05:35
jetzt muss es funktionieren
wie immer alles anpassen!
var sekunden = 3; //hier anzahl sekunden für script wiederholen
var zeitraum = sekunden * 1000;
var timerId = setInterval(function() {
var url = "http://192.168.2.9/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=admin&pwd
=xxxxx"; //hier die richtige url angeben
// anfrage an die kamera und holen des motion status
var http = require('http');
var req = http.get(url, function(res) {
var body = '';
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += String(chunk);
});
res.on('end', function() {
console.log(body);
var pos = body.indexOf("");
var pos1 = body.indexOf("");
var res = body.slice(pos+19, pos1);
console.log(res);
getDeviceStatus(
"Schlafzimmer",
"Licht Schlafzimmer",
{"value":"switchState","options":["off","on"]},
function(err, status) {
if(!err) {
if (status == 'on') {
if (res == 2) {
console.log('Bewegung');
getContent('http://192.168.2.182:80/tm/http?test=4&auth=xxxxx') //hier die url eintragen die einen task auslöst
.then((html) => console.log(html))
.catch((err) => console.error(err));
}
else {
//hier kann man einen task aufrufen mit getContent wie oben, wenn keine bewegung ist
//oder man baut hier gleich ein snippet ein, aus dem script editor mit dem zahnrad symbol
console.log('keineBewegung');
}
}
else {
console.log('variable off');
console.log('script gestoppt');
clearInterval(timerId);
}
}
}
);
});
});
req.on('error', function(err) {
console.error(err);
});
const getContent = function(url) {
return new Promise((resolve, reject) => {
const lib = url.startsWith('https') ? require('https') : require('http');
const request = lib.get(url, (response) => {
if (response.statusCode < 200 || response.statusCode > 299) {
reject(new Error('Failed to load page, status code: ' + response.statusCode));
}
const body = [];
response.on('data', (chunk) => body.push(chunk));
response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err));
});
};
}, zeitraum);
sag mal wie fügst du den code ein, hier vom code editor, funktioniert das script dann?
oder aus dem kommentar?
getDeviceStatus anpassen mit deiner variable
Von
Danke zdenko33. Es geht mir um eine Foscam C2-Kamera. Ich habe keine CCU, nur Mediola V5+ mit AM.
Von
die kamera kannst du so in neo einbinden als jpeg kamera
http://ip address:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=admin&pwd=xxx
das mit deinem alarm geht eigentlich nur über ifttt, in dem du bei alarm bzw. bewegung eine email sendest.
Man kann in den einstellungen bei der c2, einstellen an welche adresse sollte eine email gesendet werden bei bewegung.
Das sollte eine gmail adresse sein, dann kannst du bei ifttt einen recept machen, wenn eine gmail antrifft mit einem subject (von deiner kamera) dann webhook.
In dem webhook sollte dann ein POST request zu mediola cloud...z.b du machst dir einen dummy intertechno schalter im geräte manager, mit einer selbst vergebener adresse, A.1
Diesen schalter exportierst du in mediola cloud....wenn du jetzt mit webhook vom ifttt eine url machst welche genau diesen schalter auf on schaltet, kannst du mit AM einen task machen, wenn intertechno on, dann wechseln auf die seite mit kamera, dann interechno wieder auf off.
Von
hier kannst du noch sehen ob deine kamera was zurück liefert wenn eine bewegung statfindet
ipadresse:port/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=admin&pwd=xxx
da sollte sowas kommen:
<CGI_Result>
<result>0</result>
<IOAlarm>1</IOAlarm>
<motionDetectAlarm>0</motionDetectAlarm>
<soundAlarm>0</soundAlarm>
<record>0</record>
<sdState>0</sdState>
<sdFreeSpace>0k</sdFreeSpace>
<sdTotalSpace>0k</sdTotalSpace>
<ntpState>0</ntpState>
<ddnsState>0</ddnsState>
<url>xxx</url>
<upnpState>0</upnpState>
<isWifiConnected>0</isWifiConnected>
<wifiConnectedAP></wifiConnectedAP>
<infraLedState>0</infraLedState>
</CGI_Result>
Neuen Kommentar hinzufügen