NEWS
Fenster Script: Liste der offenen Fenster
-
@paul53
ja aber jedes mal wenn der wert geändert wird, wird wieder mit "is open" überschrieben -
@v522533 sagte:
jedes mal wenn der wert geändert wird, wird wieder mit "is open" überschrieben
Bei Wertänderung ? Das kann nicht sein.
-
@paul53
doch auf 2 systemen mehrmals versucht. -
@v522533 sagte:
zum Datenpunkt immer "is open" dazu schreiben. Das würde ich gerne weg haben.
Wie sehen die Namen jetzt aus (habe kein Zigbee) ?
-
@paul53
möchtest du mal mit anydesk schauen? -
-
-
@v522533
Ersetze Zeile 13 durchlet id = windows[i].substring(0, windows[i].lastIndexOf('.')); // Device ID listWindows.push(getObject(id).common.name); // Device Name
Analog für die Türen (Zeile 24).
-
geht fast. jetzt is das "is open" weg, allerdings sagt er mir dass mein fenster offen is wenn ich die tür auf mache. funktion ist aber richtig zugeordnet. so sieht mein script jetzut aus:
function countOpenWindowsDoors() { var openWindows = 0; var openDoors = 0; var listWindows = []; var listDoors = []; // Fenster var windows = getObject("enum.functions.windowstatus").common.members; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; if ( Status ) { openWindows++; let id = windows[i].substring(0, windows[i].lastIndexOf('.')); // Device ID listWindows.push(getObject(id).common.name); // Device Name } } // Türen var doors = getObject("enum.functions.doorstatus").common.members; for(let i = 0; i < doors.length; i++) { var Status = getState(doors[i]).val; if ( Status ) { openDoors++; let id = windows[i].substring(0, windows[i].lastIndexOf('.')); // Device ID listDoors.push(getObject(id).common.name); // Device Name } } var openWindowsText = "Kein Fenster geöffnet"; var openDoorsText = "Keine Tür geöffnet"; if(listWindows.length) openWindowsText = 'Offene Fenster: ' + listWindows.join(', '); if(listDoors.length) openDoorsText = 'Offene Türen: ' + listDoors.join(', '); setState('javascript.0.StatusWindowOpenText', openWindowsText, true); setState('javascript.0.StatusDoorOpenText', openDoorsText, true); setState('javascript.0.StatusWindowOpen', openWindows, true ); setState('javascript.0.StatusDoorOpen', openDoors, true ); } $('state(functions=windowstatus)').on(function(obj) { countOpenWindowsDoors(); }); $('state(functions=doorstatus)').on(function(obj) { countOpenWindowsDoors(); }); countOpenWindowsDoors();
-
@v522533 sagte:
let id = windows[i].substring(0, windows[i].lastIndexOf('.')); // Device ID
Zeile 24 richtig:
let id = doors[i].substring(0, doors[i].lastIndexOf('.')); // Device ID
-
@paul53
perfekt. vielen vielen dank -
Hi @v522533 und @paul53
Bin zufällig auf diesen Beitrag gestoßen und wollte eben das gleiche machen. Allerdings erhalte ich diesen Fehler. Die Adapter habe ich bereits neu gestartet.javascript.0 2020-03-26 11:17:40.773 info (2684) script.js.Visualisierung.StatusTuerFenster: registered 18 subscriptions and 3 schedules javascript.0 2020-03-26 11:17:40.772 warn (2684) at script.js.Visualisierung.StatusTuerFenster:93:1 javascript.0 2020-03-26 11:17:40.772 warn (2684) at countOpenWindowsDoors (script.js.Visualisierung.StatusTuerFenster:71:5) javascript.0 2020-03-26 11:17:40.772 warn (2684) at setState (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.javascript\lib\sandbox.js:1404:20) javascript.0 2020-03-26 11:17:40.772 warn (2684) State "javascript.0.StatusDoorOpen" not found javascript.0 2020-03-26 11:17:40.772 warn (2684) at script.js.Visualisierung.StatusTuerFenster:93:1 javascript.0 2020-03-26 11:17:40.771 warn (2684) at countOpenWindowsDoors (script.js.Visualisierung.StatusTuerFenster:69:5) javascript.0 2020-03-26 11:17:40.771 warn (2684) at setState (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.javascript\lib\sandbox.js:1404:20) javascript.0 2020-03-26 11:17:40.771 warn (2684) State "javascript.0.StatusWindowOpen" not found javascript.0 2020-03-26 11:17:40.771 warn (2684) at script.js.Visualisierung.StatusTuerFenster:93:1 javascript.0 2020-03-26 11:17:40.771 warn (2684) at countOpenWindowsDoors (script.js.Visualisierung.StatusTuerFenster:67:5) javascript.0 2020-03-26 11:17:40.770 warn (2684) at setState (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.javascript\lib\sandbox.js:1404:20) javascript.0 2020-03-26 11:17:40.770 warn (2684) State "javascript.0.StatusDoorOpenText" not found javascript.0 2020-03-26 11:17:40.770 warn (2684) at script.js.Visualisierung.StatusTuerFenster:93:1 javascript.0 2020-03-26 11:17:40.770 warn (2684) at countOpenWindowsDoors (script.js.Visualisierung.StatusTuerFenster:65:5) javascript.0 2020-03-26 11:17:40.769 warn (2684) at setState (C:\Program Files\iobroker\SmartHome\node_modules\iobroker.javascript\lib\sandbox.js:1404:20) javascript.0 2020-03-26 11:17:40.768 warn (2684) State "javascript.0.StatusWindowOpenText" not found javascript.0 2020-03-26 11:17:40.285 info (2684) Start javascript script.js.Visualisierung.StatusTuerFenster
-
@Hansi1234 sagte:
State "javascript.0.StatusDoorOpen" not found
Sagt das nicht genug aus ?
Wieso hat das Script mind. 93 Zeilen ? -
@paul53
Wenn ich hier einen Code herauskopiere und im Java einfüge, dann füllt er es mit zusätzlichen Zeilen.Ja das mit dem State not found habe ich gesehen. Wieso legt er diese nicht an?
-
die musst du selbst anlegen.
-
Sorry, lange her
Geht nun. Danke dir für die Hilfe.
-
@Hansi1234 sagte in Fenster Script: Liste der offenen Fenster:
dann füllt er es mit zusätzlichen Zeilen.
das sollte es aber nicht
Warum passiert das bei dir?Welche Zeilen sind das?
bearbeitest du den Text vorher mit einem Editor, der Zeilenumbrüche einfügt?
Hoffentlich im LINUX-Mode -
@Homoran sagte:
das sollte es aber nicht
Warum passiert das bei dir?Wahrscheinlich nutzt er FF, bei dem Leerzeilen beim Copy eingefügt werden. Mit Chrome passiert es nicht.
-
jap, ich benutze Firefox. War bei mir schon immer so. Darum hab ich mir nie was dabei gedacht.
-
Hi,
ich habe das jetzt auch mal alles nachgebaut und funktioniert echt gut, mir würde noch eine "gekippte Fenster" Funktion gut gefallen. Könnte das gffs. noch jemand ergänzen. Danke
0: closed
1: kipp
2: offendas ist das gesamte script mit allen Ändeurungen bisher.
function countOpenWindowsDoors() { var openWindows = 0; var openDoors = 0; var listWindows = []; var listDoors = []; // Fenster var windows = getObject("enum.functions.windowstatus").common.members; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; if ( Status ) { openWindows++; let id = windows[i].substring(0, windows[i].lastIndexOf('.')); // Device ID listWindows.push(getObject(id).common.name); // Device Name } } // Türen var doors = getObject("enum.functions.doorstatus").common.members; for(let i = 0; i < doors.length; i++) { var Status = getState(doors[i]).val; if ( Status ) { openDoors++; let id = windows[i].substring(0, windows[i].lastIndexOf('.')); // Device ID listDoors.push(getObject(id).common.name); // Device Name } } var openWindowsText = "Kein Fenster geöffnet"; var openDoorsText = "Keine Tür geöffnet"; if(listWindows.length) openWindowsText = '' + listWindows.join(', '); if(listDoors.length) openDoorsText = 'Offene Türen: ' + listDoors.join(', '); setState('javascript.0._NEU.enum.StatusWindowOpenText', openWindowsText, true); setState('javascript.0._NEU.enum.StatusDoorOpenText', openDoorsText, true); setState('javascript.0._NEU.enum.StatusWindowOpen', openWindows, true ); setState('javascript.0._NEU.enum.StatusDoorOpen', openDoors, true ); } $('state(functions=windowstatus)').on(function(obj) { countOpenWindowsDoors(); }); $('state(functions=doorstatus)').on(function(obj) { countOpenWindowsDoors(); }); countOpenWindowsDoors();