NEWS
HILFE: Alle Fenster geschlossen ? Datenpunkte auf true
-
@mickym
sobald ich die raus nehme, läuft nur noch der debug für topic.2023-09-19 16:12:21.655 error at Object.<anonymous> (script.js.Lichterprüfen:10:31) javascript.0 2023-09-19 16:12:21.655 error at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26) javascript.0 2023-09-19 16:12:21.655 error at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3525:26) javascript.0 2023-09-19 16:12:21.655 error at evaluateFunction (/opt/iobroker/node_modules/jsonata/jsonata.js:4871:28) javascript.0 2023-09-19 16:12:21.655 error at apply (/opt/iobroker/node_modules/jsonata/jsonata.js:4896:24) javascript.0 2023-09-19 16:12:21.654 error at applyInner (/opt/iobroker/node_modules/jsonata/jsonata.js:4929:33) javascript.0 2023-09-19 16:12:21.654 error at validateArguments (/opt/iobroker/node_modules/jsonata/jsonata.js:5062:39) javascript.0 2023-09-19 16:12:21.654 error at Object.validate (/opt/iobroker/node_modules/jsonata/jsonata.js:7215:28) javascript.0 2023-09-19 16:12:21.654 error at Array.forEach (<anonymous>) javascript.0 2023-09-19 16:12:21.654 error at /opt/iobroker/node_modules/jsonata/jsonata.js:7242:45 javascript.0 2023-09-19 16:12:21.653 error at Array.forEach (<anonymous>) javascript.0 2023-09-19 16:12:21.653 error at /opt/iobroker/node_modules/jsonata/jsonata.js:7272:57 javascript.0 2023-09-19 16:12:21.653 error script.js.Lichterprüfen: Error: javascript.0 2023-09-19 16:12:21.646 warn at Object.<anonymous> (script.js.Lichterprüfen:9:142) javascript.0 2023-09-19 16:12:21.645 warn at script.js.Lichterprüfen:9:52 javascript.0 2023-09-19 16:12:21.639 warn getState "[object Object]" not found (3) javascript.0 2023-09-19 16:12:21.638 info script.js.Lichterprüfen: Couchbeleuchtung
-
@dellishelly Nee schon wieder aktivieren - wie gesagt diese Fehlermeldungen habe ich nicht.
diese Warnung dass er was nicht findet - das macht mich stutzig
Das muss bei Dir am System liegen.
Prüfe ob Du beim Einlesen des Wertes diese Fehler bekommst. Das ist der Grund warum das Objekt nicht erweitert wird, weil der Datenpunkt bei DIR NICHT EINGELESEN wird.
-
ich hab die debug Blöcke mal raus genommen.
Jetzt läufts und er schreibt auch die einmal getriggert wurden in die Liste.Nur die Prüfung am Ende läuft wohl noch nicht.
debug im Admin zeigt keine Warnungen oder Fehler
-
@dellishelly Na Dein Objektbezeichnungen sind zwar kryptisch - aber gut.
Für die Lichter musst Du ja die Logik etwas anders machen.
Die Lichter sind aus, wenn alles aus ist. Also musst Du mit OR verknüfen.
$reduce($.*,function($i, $j){$i or $j})
und das Ergebnis verneinen:
lampen_aus wird also von JSONATA nur dann false sein, wenn alle Eigenschaften des Objektes falsch sind. lampen_aus wird true sein, wenn NUR eine Eigenschaft true ist.
Um also postiv abzufragen, ob Lampen aus wahr ist, musst Du das Ergebnis verneinen.
Somit wird es true, sobald alle Eigenschaften false ist und false, falls eine Eigenschaft true ist.
Unten musst Du dann, um die Lampen rauszufischen die true sind - die Verneinung aufheben:
statt
$each($, function($v, $k) {$not($v) ? $k})~>$join(", ")
dann
$each($, function($v, $k) {$v ? $k})~>$join(", ")
-
@mickym said in HILFE: Alle Fenster geschlossen ? Datenpunkte auf true:
Ich muss hier noch die richtigen Namen hinterlegen. Die Object ID sind in Mehreren Ordnern mehrfach gleich vergeben.
Aber das mach ich hinterher.
Habe die Logik nun geändert, aber er gibt mir unten trotzdem keine Ausgabe.Habe mal nen debug direkt hinter den trigger der Listenprüfung gesetzt. - der gibt auch nichts aus, obwohl sich der Wert der Liste ändert
-
@mickym Nun dann prüfe halt erst mal ob der untere Teil getriggert wird (siehst Du ja mit Test) und dann lass Dir mal den Wert mit debug ausgeben, um zu sehen, dass er auch das Objekt einliest.
-
genau das scheint er ja nicht zu machen.
sieht so aus als würde er keine Änderung in der Liste_Lampen feststellen -
@dellishelly Verstehe ich zwar nicht aber dann ändere den Trigger halt mal auf wurde aktualisiert.
schon alles eigenartig - wie gesagt ich mach parallel das Gleiche mit Lichtern und gibt keine Probleme
-
So ich habe nochmal alles auf das Prüfen ob alle Lichter aus sind umgeschrieben:
Warum das bei Dir nicht will - ist mir ehrlich gesagt schleierhaft.
Die Datenpunkte lassen sich ohne weiteres lesen und beschreiben und triggern auch:Vielleicht ist es doch besser die Array Funktionen zu benutzen, wie @paul53 und @Codierknecht hier vorgeschlagen hat, da Blockly eben mit Objekten nicht gut umgehen kann.
-
@mickym sagte in HILFE: Alle Fenster geschlossen ? Datenpunkte auf true:
Vielleicht ist es doch besser die Array Funktionen zu benutzen
oder das:
https://forum.iobroker.net/topic/31674/vorlage-generisches-fensteroffenskript-vis?_=1695137930357
-
@codierknecht sagte: direkt in JS. Das ist noch übersichtlicher.
Meine Version wäre:
const ids = Array.prototype.slice.apply($("(functions=window)")); on(ids, function () { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setState("0_userdata.0.Vis.fenster", count, true); });
-
Ich habe jetzt das blockly nochmal einmal komplett neu zusammengebastelt.
und es läuft.
Ich kann dir leider nicht sagen woran es nun gelegen hat.....
KEINE AHNUNG!
ABER:VIEEEELEN VIELEN DANKE für deine Ausdauer und Hilfe!
Hast ja quasi fast den ganzen Tag mit mir verbracht
Hab heute echt viel dazugelernt!