NEWS
FritzFon klingeln lassen, TR-64 Adapter??
-
on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; }); setState("tr-064.0.states.ring"/*ring*/, '**610,10'); console.log('Klingel'); ```` `
Nimm mal alles in die Bedingung mit rein
on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("tr-064.0.states.ring"/*ring*/, '**610,10'); console.log('Klingel'); });
-
Und wenn du````
setState("tr-064.0.states.ring"/ring/, '**610,10'); -
>
> Nimm mal alles in die Bedingung mit rein
Hab ich gemacht, hat nichts gebracht.Ein "Mini-Skript" nur mit````
setState("tr-064.0.states.ring"/ring/, '**610,10');Damit liegt nahe, dass es an meinem Skript liegen muss, ich seh nur meinen (Denk-) Fehler nicht:
on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
});
setState("tr-064.0.states.ring"/ring/, '**610,10');
console.log('Klingel'); -
Und was kann man damit umsetzen wenn ioBroker die Telefone klingeln lassen kann?
-
> Und was kann man damit umsetzen wenn ioBroker die Telefone klingeln lassen kann?
Das stand in meiner ursprünglichen Frage: Man kann das Telefon z.B. als Ersatz/Ergänzung für eine Türklingel nutzen -
on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) { log('Tastendruck erkannt'); }); ```` `
Wenn du das nimmst und deinen Taster drückst müsste Tastendruck erkannt im Log kommen. Kommt das nicht, wird dein Tastendruck nicht erkannt.
Wenn es geht probier mal:
on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) { setState("tr-064.0.states.ring"/*ring*/, '**610,10'); console.log('Klingel');
});
Und sag was passier oder eben was nicht passiert
-
` > on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) {
log('Tastendruck erkannt');
}); `
Das funktioniert:Log 10:47:29.557 [info] javascript.0 script.js.common.Skript1: Tastendruck erkannt
` > on({id: 'hm-rpc.0.MEQ0657107.1.PRESS_SHORT', change: "any"}, function (obj) {
setState("tr-064.0.states.ring"/ring/, '**610,10');
console.log('Klingel');
}); `
Da passiert nichts (kein Log) -
Jetzt funzt es
Hallo Steffen,
danke für die Unterstützung deinerseits, ich habe keine Ahnung warum aber ich habe mit den Skripten von dir getestet (eins ging, eins nicht) und als es eben geklingelt hat ging auch das Telefon an…
Fazit: Ich fass da jetzt nix mehr an (never change a running system)...
-
Alles klar, dann passts ja
-
Hallo,
Ich habe ein gira gateway verbaut bei mir. Wenn jemand klingelt, klingelt auch mein fritzfon.
Ist es möglich, dass wenn jemand klingelt ein blockly abläuft das dann z.b. mit sayit eine ausgabe auf meine sonos kommt?
Das ist die klingel *124#
Danke
-
Hi,
eigentlich sollte das gehen, wenn du den Datenpunkt "tr-064.0.states.ring" beobachtest/auswertest und wenn dort die Nummer *124# auftaucht deine Wunschaktion ausführst.
-
Ok,
Kannst du mir ein beispiel machen wie ich den datenpunkt beobachten kann mit blockly?
edit:
! ````
// -------------------------------------------------------------------------
// Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
// Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
// dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
// gesendet.
// Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
// immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
// Uhula 2017.11
// -------------------------------------------------------------------------
! // -------------------------------------------------------------------------
// Konfiguration
// -------------------------------------------------------------------------
// Objekt-ID des Bewegungsmelders
const oidLichtBewmelderTuer = "javascript.0.test_schalter";
// URL zur Kamera umn ein Image (jpg) zu erhalten
const cam_url = "http://192.168.1.30:7130/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxx";
// Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
const dest_path = '/opt/iobroker/iobroker-data/files/temp/';
// Anzahl der Bilder, die vorgehalten werden sollen
const imageCountMax = 8;
// Prefix für die Bildnamen
const imageNamePre = "eingangstuer";
! // -------------------------------------------------------------------------
// Scriptteil
// -------------------------------------------------------------------------
var request = require('request');
var fs = require('fs');
! // Bild an telegram schicken
function sendImage (path) {
try {
var stats = fs.statSync(path);
var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
sendTo('telegram.0', {
text: path,
caption: msg,
disable_notification: true
});
}
catch(err) { if (err.code != "ENOENT") log(err); }
}
! // löscht eine Datei synchron (wartet auf das Ergebnis)
function fsUnlinkSync(path) {
try {
var stats = fs.statSync(path);
try { fs.unlinkSync(path); }
catch(err) { if (err.code != "ENOENT") log(err); }
}
catch(err) { if (err.code != "ENOENT") log(err); }
}
! // benennt eine Datei synchron um (wartet auf das Ergebnis)
function fsRenameSync(oldPath, newPath) {
try {
var stats = fs.statSync(oldPath);
try { fs.renameSync(oldPath, newPath); }
catch(err) { if (err.code != "ENOENT") log(err); }
}
catch(err) { if (err.code != "ENOENT") log(err); }
}
! // Bild speichern und senden
function saveImage() {
// Bild imageCountMax-1 löschen
fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
// Bilder 0..imageCountMax-2 umbenennen
for (var i=imageCountMax-2; i >= 0; i-- ) {
fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg");
}
// Bild 0 löschen
var fname = imageNamePre + "0.jpg";
fsUnlinkSync( fname );
// Bild holen und speichern
request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
fs.writeFile(dest_path + fname, body, 'binary', function(err) {
if (err) {
log('Fehler beim Bild speichern: ' + err, 'warn');
} else {
// dem Filesystem 2 Sek Zeit zum Speichern lassen
setTimeout(function() { sendImage(dest_path + fname); }, 2000);
}
});
});
}
! // sofort ein Bild senden und nach 10 Sek erneut
function onEvent() {
saveImage();
setTimeout(function() { saveImage(); }, 10 * 1000);
}
! // Ereignisroutine
on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
onEvent( obj );
});
! // manuelle Ausführung (Test)
onEvent();Danke an Uhula, konnte das soweit abändern damit ich mal ein bild wenn ich den testschalter auf true setze bekomme. Wie kann ich das ändern damit er auf das Fritzfon reagiert? Bei mir funktioniert das Script immer nur einmal danach muss ich das script stoppen und wieder starten damit ich Bilder bekomme. In der log wird aber nichts angezeigt, wo kann ich schauen ob ein script fehler ausgibt?
-
Ich habe leider etwas Probleme mit der Klingelzeit auf dem Fritzfon. Ich schreibe **610, 25 in das Objekt "ring" aber es Klingelt nie länger als 16 Sekunden hat das eventuell noch jemand oder eine Idee woran das liegen könnte?
Zudem lasse ich mir auch das Bild meiner Hikvision Kamera auf das Fritzfon senden wenn geklingelt wird, allerdings ist das Bild meiner Kamera wohl zu Breit um es vernünftig aufs Telefon zu bekommen, ich sehe dann nicht wer vor der Tür steht. Wie habt Ihr das gelöst?
Jeweils äußerer Bereich ab roter Markierung wird nicht angezeigt.
Gruß Christian
-
Hallo,
das mit den 16 Sekunden kann ich nicht nachvollziehen.
Bei mir klingelt
setState("tr-064.0.states.ring"/*ring*/, '**610,25');
25 Sekunden lang (Fritzbox 7490, allerdings ein Gigaset Telefon).
Zum Problem mit dem Bild: Das Format scheint das FritzFon nicht zu können und "mittelt" deshalb. AVM empfiehlt "Für eine optimale Darstellung des Live-Bildes richten Sie in der IP-Kamera für die Bilder eine Auflösung von mindestens 240x320 bis ca. 480x640 Pixel ein."
Deine Kamera kenne ich nicht, ich habe Foscams im Einsatz, da kann man Bildgröße / Auflösung einstellen. Das ist aber wahrscheinlich nur ne Notlösung weil du dann ja generell ein kleineres Bild hättest.
Ähm, jetzt mal was anderes: Ist das ein (öffentlicher) Gehweg, den man da auf dem Bild links sieht? Dir ist schon klar, dass du den nicht mit einer privaten IPCam überwachen darfst, oder? Falls dem so ist solltest du die Kamera etwas weiter nach rechts drehen, damit nur das Grundstück vor der Tür gefilmt wird.
-
Hallo,
das mit den 16 Sekunden kann ich nicht nachvollziehen.
Bei mir klingelt
setState("tr-064.0.states.ring"/*ring*/, '**610,25');
25 Sekunden lang (Fritzbox 7490, allerdings ein Gigaset Telefon). `
Mh komisch, vielleicht hat ja noch jemand das Problem mit einem Fritzfon.
Zum Problem mit dem Bild: Das Format scheint das FritzFon nicht zu können und "mittelt" deshalb. AVM empfiehlt "Für eine optimale Darstellung des Live-Bildes richten Sie in der IP-Kamera für die Bilder eine Auflösung von mindestens 240x320 bis ca. 480x640 Pixel ein."
Deine Kamera kenne ich nicht, ich habe Foscams im Einsatz, da kann man Bildgröße / Auflösung einstellen. Das ist aber wahrscheinlich nur ne Notlösung weil du dann ja generell ein kleineres Bild hättest. `
Ich habe jetzt mal die Auflösung von 1920x1080 zu 2048x1536 gewechselt jetzt ist es etwas besser aber immer noch nicht wirklich gut… Bekomme es mit der kamera auch gar nicht anders eingestellt.
Ähm, jetzt mal was anderes: Ist das ein (öffentlicher) Gehweg, den man da auf dem Bild links sieht? Dir ist schon klar, dass du den nicht mit einer privaten IPCam überwachen darfst, oder? Falls dem so ist solltest du die Kamera etwas weiter nach rechts drehen, damit nur das Grundstück vor der Tür gefilmt wird. `
Ja ist eine Öffentliche Straße, wenn ich die Kamera weiter nach rechts drehe Blendet mein Klinker das IR-Licht. Ich habe aber in den Kameraeinstellungen die Möglichkeit die Straße zu Schwärzen, ich habe natürlich für mein Beispielbild die Schwärzung rausgenommen .
Gruß Christian
-
Könnt ihr mal eure blocklys oder scripte posten bitte?
-
Könnt ihr mal eure blocklys oder scripte posten bitte? `
Und der Export
on({id: 'hm-rpc.0.NEQ0955405.1.PRESS_SHORT', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("tr-064.0.states.ring"/*ring*/, '**610, 25'); });
Gruß Christian
-
Wie kann ich in blocky ein state überwachen wenn er ein bestimmten wert hat?
Also wenn objekt *124# dann?
-
Wie kann ich in blocky ein state überwachen wenn er ein bestimmten wert hat?
Also wenn objekt *124# dann? `
Ich weiß zwar nicht was du vor hast aber so könnte man es machen.
Gruß Christian
-
Zudem lasse ich mir auch das Bild meiner Hikvision Kamera auf das Fritzfon senden wenn geklingelt wird `
Kannst du mir bitte kurz auf die Sprünge helfen wie du das umgesetzt hast?
Gruß Alex