NEWS
[Erledigt] Hilfe bei einem Script Counter und Kamera schwenken
-
Hallo,
habe nach einem Script gesucht um einen Counter für meine Türschelle zu finden.
Wurde dann fündig bei einem Script von pix für einen Counter Bewegungsmelder http://forum.iobroker.net/viewtopic.php … 703#p14520.
Mit diesem Beispiel habe ich es dann geschafft es so umzubauen das beim Klingeln an der Tür ein Counter hochgezählt wird und das im Hauptview die Kameraansicht auf die Eingangskamera wechselt und zum Preset Eingangstür wechselt, dies hatte ich vorher mit einem Programm in der CCU2 geregelt.
Das tolle an dem Script ist, das er vorher die alte Kamera und Preset Einstellungen speichert und nach einer Zeit X wieder zurück geht auf die alten Einstellungen. Das hatte ich im CCU2 Programm nicht hinbekommen.
Jetzt aber zu meinem Problem.
Ich hätte gern das die Funktion nur einmal startet bis die Kameras wieder zurück sind. Also wenn geklingelt wird geht alles los, allerdings egal wie oft geklingelt wird, die Funktion soll erst wieder losgehen wenn die Kameras wieder zurückgeschwenkt sind. Hoffe es ist verständlich.
! /* Klingeln zaehlen und dementsprechende Kamera aktivieren und schwenken in VIS Hauptview
! basierend auf Script vom pix für hofi77 http://forum.iobroker.net/viewtopic.php … 703#p14520
! angepasst am 27.07.2016 von Zippolighter
! */
! createState('VIS.Klingeln_zaehlen', 0, {
! read: true,
! write: true,
! type: 'number',
! name: 'Klingeln zählen',
! desc: 'Counter für Auslösungen der Klingel, wird mit schedule zurückgesetzt'
! });
! var idCamera = 'hm-rega.0.12858',
! idCameraPresets = 'hm-rega.0.12415',
! idTuerklingel = 'hm-rpc.0.KEQ0767774.1.STATE',
! idCountKlingeln = 'VIS.Klingeln_zaehlen';
! on({
! id: idTuerklingel,
! val: true
! }, function (obj) {
! var counter = getState(idCountKlingeln).val; // bisherige Zahl aus Variable einlesen
! setState(idCountKlingeln, ++counter); // eins hochzählen
! var cameraIst = getState(idCamera).val; // Camera einlesen
! var presetIst = getState(idCameraPresets).val; // Preset einlesen
! setState(idCamera, 4); // Camera Eingangstür setzen
! setState(idCameraPresets, 1); // Camera Preset setzen
! setStateDelayed(idCamera, cameraIst, 30000); // nach 30 Sek wieder auf ursprüngliche Camera wechseln
! setStateDelayed(idCameraPresets, presetIst, 30000); // nach 30 Sek wieder auf ursprüngliche Preset wechseln
! });
! // Mitternacht Zähler zurücksetzen
! schedule('0 * * * *', function () {
! setState(idCountKlingeln, 0);
! });Danke schonmal für Eure Hilfe
Gruß Zippolighter
-
Schnell von unterwegs:
Wenn es klingelt und neue Variable ungesetzt, dann neue Variable setzen. Variable wird erst vom rückschwenken der Kameras zurückgesetzt.
Dann den Counter erst starten, wenn Variable an.
Pix
Gesendet mit Tapatalk
-
@pix:Schnell von unterwegs:
Wenn es klingelt und neue Variable ungesetzt, dann neue Variable setzen. Variable wird erst vom rückschwenken der Kameras zurückgesetzt.
Dann den Counter erst starten, wenn Variable an.
Pix
Gesendet mit Tapatalk `
Hi Pix,schonmal danke. An diesen Ansatz habe ich auch gedacht. Allerdings fehlt mir noch die und verknüpfung im Script. Da fehlt mir einfach die Erfahrung.
on({ id: idTuerklingel, val: true }, function (obj) {
Dieses on startet (wenn ich das richtig verstehe) wenn die idTuerklingel den Wert true erhält, wie sage ich das zusätzlich variable idTuerklingel_Stop den wert false haben muss??
Danke
Gruß Zippolighter
-
Hallo,
jetzt wieder am Rechner. Hab es falsch verstanden. Ich dachte, der Counter zählt die Sekunden, nicht die Zahl der "Klingeldrücke".
Wenn ich es richtig verstehe, soll bei einem ungeduldigen Besucher, der ständig die Klingel drückt, nicht alle paar Sekunden das Skript gestartet werden.
Dafür eignet sich ein Timer, der dafür sorgt, dass X Sekunden lang, das Klingeln ignoriert wird. Solange der Timer nicht "undefined" ist, passiert nix.
! ````
/* Klingeln zaehlen und dementsprechende Kamera aktivieren und schwenken in VIS Hauptview
basierend auf Script vom pix für hofi77 viewtopic.php?f=21&t=1703#p14520
! angepasst am 27.07.2016 von Zippolighter
! */
! createState('VIS.Klingeln_zaehlen', 0, {
read: true,
write: true,
type: 'number',
name: 'Klingeln zählen',
desc: 'Counter für Auslösungen der Klingel, wird mit schedule zurückgesetzt'
});
! var idCamera = 'hm-rega.0.12858',
idCameraPresets = 'hm-rega.0.12415',
idTuerklingel = 'hm-rpc.0.KEQ0767774.1.STATE',
idCountKlingeln = 'VIS.Klingeln_zaehlen';
! var schwenken;
! on({
id: idTuerklingel,
val: true
}, function (obj) {
if (!schwenken) {
schwenken = true;
setTimeout( function () {
schwenken = undefined;
}, 10 * 1000); // 10 Sekundenvar counter = getState(idCountKlingeln).val; // bisherige Zahl aus Variable einlesen setState(idCountKlingeln, ++counter); // eins hochzählen var cameraIst = getState(idCamera).val; // Camera einlesen var presetIst = getState(idCameraPresets).val; // Preset einlesen setState(idCamera, 4); // Camera Eingangstür setzen setState(idCameraPresets, 1); // Camera Preset setzen setStateDelayed(idCamera, cameraIst, 30000); // nach 30 Sek wieder auf ursprüngliche Camera wechseln setStateDelayed(idCameraPresets, presetIst, 30000); // nach 30 Sek wieder auf ursprüngliche Preset wechseln }
});
! // Mitternacht Zähler zurücksetzen
schedule('0 * * * *', function () {
setState(idCountKlingeln, 0);
});
! ````
GrußPix
-
Super so klappt es.
Ganz herzlichen Dank für die Hilfe Pix
Gruß Zippolighter