NEWS
[gelöst] Könnte mir bitte jemand bei dem Script helfen?
-
Hallo @paul53,
die Enum-ID scheint korrekt zu sein:
-
Hmm,
hat den niemand eine Idee, warum das Script mit den Aqara-Sensoren nicht geht?
Die Homematic-Sensoren funktionieren ja einwandfrei.
-
Lifert das folgende Testskript die IDs der Fenster ?
const miFenster = $('state[id=*.opened](functions="Fenster")'); miFenster.each(function(id, i) { log(id); });
-
Hallo @paul53,
leider nicht. Ich habe das Testskript so eingefügt, bin mir aber nicht sicher ob du das so meintest:
createState('zählen_Fenster.textFensterauf', { // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen type: 'string', def: ' ', role: 'value' }); const hmFenster = $('channel[state.id=*.STATE](functions="Fenster")'); const miFenster = $('state[id=*.opened](functions="Fenster")'); miFenster.each(function(id, i) { log(id); }); function countFenster() { // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0 var anzahlFenster = 0; var anzahlFensterauf = 0; var textFensterauf = [];
-
Meinte zwar ein extra Testskript, aber so läßt es sich auch testen. Wenn die IDs nicht im Log erscheinen, passt der $Selector nicht. Versuche es mal in einem gesonderten Testskript mit
const miFenster = $('*.opened'); miFenster.each(function(id, i) { log(id); });
-
So, habe jetzt ein Testskript angelegt, geht leider auch nciht.
-
@Hicks Mit dem kurzen Selector ohne functions ? Im Log kommt nichts ?
Welche Javascript Version ? -
Ja, im Log steht nur:
4.3.2019, 17:13:07.319 [info ]: javascript.0 Stop script script.js.TESTTEST 4.3.2019, 17:13:08.209 [info ]: javascript.0 Start javascript script.js.TESTTEST 4.3.2019, 17:13:08.210 [info ]: javascript.0 script.js.TESTTEST: registered 0 subscriptions and 0 schedules
Die Javascript Version ist 4.1.5
-
...ich sehe gerade das es die Javascript-Version 4.1.8 gibt. Sollte ich besser updaten?
-
@Hicks Ein Versuch schadet nicht. Wenn es dann nicht funktioniert, mache ein Downgrade auf Version 3.6.4 (3.6.5), denn damit habe ich es gerade erfolgreich getestet.
-
OK, danke! Melde mich dann wieder...
-
Hallo @paul53,
du hattest den richtigen Riecher, die Javascript-Version war das Problem!
Mit der Version 4.1.8 ging's auch nicht, bin jetzt wieder zurück auf Version 3.6.4. und damit läuft auch mein oben geändertes Skript.
Schade, die neue Version hatte schon ihre Vorteile - ok, dann muss ich noch etwas warten.
Vielen Dank für deine Hilfe, ohne die wäre ich aufgemschissen gewesen.
-
Habe gerade mit Version 4.1.10 getestet und bei mir funktioniert es.
@Hicks Kannst Du bitte testen, ob es auch bei Dir funktioniert. Dann kann ich das Issue auf Github schließen.
-
so, ich bin jetzt auf Version 4.1.10. Leider läuft das Skript hier auch nicht.
Zudem habe ich einige Warnungen im Log vom Javascript-Adapter:
-
Sehr eigenartig
Die Datenpunkte sind tatsächlich enum.functions.Fenster zugeordnet ?
Unter members im Objekt ?{ "_id": "enum.functions.Fenster", "common": { "name": "Fenster", "members": [ "alias.0.geraet_1.opened", "alias.0.Geraet_2.opened" ], "icon": "", "color": false }, "type": "enum", "from": "system.adapter.admin.1", "ts": 1551716287358, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": {} }
-
-
-
...habe gerade festgestellt, dass dieses Skript mit der Version 4.1.10 auch Probleme macht.
Wenn es klingelt, schickt mir das Skript normalerweise drei Fotos von der Cam an Telegram.
Jetzt, scheint hier eine Endlosschleife vorzuliegen, dass Skript schickt ständig Fotos, Ruhe ist erst, wenn ich das Skript stoppe.// Telegram Bild senden durch Klingel oder Text to command var source_url = 'http://192.168.xxx.xx/tmpfs/snap.jpg?usr=xxxxx&pwd=xxxxx', //IP Adresse der Instar mit user und password dest_path = '/tmp/'; //Speicherort für das Bild var Nachricht = "Jemand klingelt"; // Nachricht, welche mit dem Bild gesendet wird var request = require('request'); var fs = require('fs'); //var timer = null; var count = 0; // Bild an telegram schicken function sendImage (pfad) { sendTo('telegram.0', pfad); //log('Webcam Bild per telegram verschickt'); sendTo("telegram.0", Nachricht); // <-- nach der Timeout funktion ausführen } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image2.jpg', body, 'binary', function(err) { if (err) { //log('Fehler beim Bild speichern: ' + err, 'warn'); } else { //log('Webcam Bild gespeichert'); sendImage(dest_path + 'image2.jpg'); } }); }); } //Trigger // 3 Bilder senden wenn Bewegung erkannt und keiner zu Hause ist on({id: "mqtt.0.xxxxxxx"/*xxx*/, val: true}, function () { // if (getState("javascript.0.Unifi.Anwesenheit.UAP.Chef"/*WLAN Anwesenheit (UAP) - Chef*/).val === false) { count = 3; counter(); timer = setInterval(counter, 3000); } ); function counter() { saveImage(); count--; if(count === 0 && timer) clearInterval(timer); }
-
Entferne den Kommentar von
//var timer = null;
Die Variable timer muss global deklariert werden.
-
Super, so läufts. Danke