Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.4k Themen 211.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    Ro75R
    1.0.19: Der Paramter colorScheme akzeptiert jetzt nicht nur 'default' und ein Farbschema aus der Liste. Jetzt kann jeder beliebige HEX, RGB oder RGBA Wert Verwendung finden. Code, Archiv und Doku angepasst in Post 1. Ro75.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    Ro75R
    @Asgothian sagte in PNG zum "blinken bringen", mittels Blockly-Pause ... (?): Das kostet :) Ja das kostet tatsächlich ordentlich CPU Zeit. Egal ob die VIS Runtime auf einem Debian oder Ubuntu System läuft. Mit TOP oder HTOP ist ganz deutlich zu sehen, das die Browser-Instanze deutlich mehr CPU Zeit schluckt. Systeme die von Hause aus schwächer sind, kommen da an ihre Grenzen, selbst mit nur einem oder zwei blinkenden Teilen via CSS oder Widget. Ro75.
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Rollosteuerung Astro

    Verschoben
    22
    1
    0 Stimmen
    22 Beiträge
    2k Aufrufe
    S
    Erfolg, so gehts jetzt. Hatte das vor der Anfrage auch so, aber vielleicht lag es am Durchstarten des IOBrokers… 9117_test.jpg
  • Script fragt nach nicht vorhandenem Gerät

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    315 Aufrufe
    miwiM
    Hallo und Danke für die Antwort. In den Aufzählungen finde ich das Gerät nicht in den Enums. Script habe ich gestoppt, kopiert, gelöscht und ein neues mit einem anderen Namen erstellt und rein kopiert. Kurioserweise bekomme ich immer noch den Warnlog für das gelöschte Script und zwar imm er genau dann wenn das Lüftungsscript den neuen HM-Aktor anspricht. Was kann das sein? Gruß miwi
  • Luftfeuchtigkeit zu hoch Skript

    Verschoben
    33
    1
    0 Stimmen
    33 Beiträge
    4k Aufrufe
    totocotonioT
    Ja so scheint es zu sein. Kann ich das Steuern. Ich habe mir im Moment damit geholfen das das ganze nur bis 22 Uhr geht.
  • Warnung im Log bei (Blockly)Script

    Verschoben
    5
    3
    0 Stimmen
    5 Beiträge
    716 Aufrufe
    paul53P
    common.type des Quell-Datenpunktes ist unerheblich und der Typ des Wertes wird durch den Adapter-Programmierer bestimmt. Wenn common.type des Ziel-Datenpunktes "number" ist, muss per Skript eine Zahl geschrieben werden, also im Skript eine Konvertierung erfolgen, um die Warnung zu vermeiden.
  • Xioami Flower Care / Tool

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    900 Aufrufe
    R
    Danke für das Script. scheint bei mir auch zu funktionieren, bekomme allerdings im Log immer folgende Warn-Medlung: javascript.0 2018-10-10 00:14:17.405 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:14:17.405 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:14:17.399 warn getState "ble.0.c4:7c:8d:66:da:37.name" not found (3) javascript.0 2018-10-10 00:14:05.388 info script.js.FlowerCare.Flower: null rssi -88 javascript.0 2018-10-10 00:14:05.384 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:14:05.384 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:14:05.378 warn getState "ble.0.c4:7c:8d:66:da:37.name" not found (3) javascript.0 2018-10-10 00:14:03.213 info script.js.FlowerCare.Flower: null fertility 170 javascript.0 2018-10-10 00:14:03.211 warn at Object. <anonymous>(script.js.FlowerCare.Flower:201:78) javascript.0 2018-10-10 00:14:03.211 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:14:03.208 warn getState "ble.0.c4:7c:8d:66:4c:07.name" not found (3) javascript.0 2018-10-10 00:13:54.383 info script.js.FlowerCare.Flower: null rssi -85 javascript.0 2018-10-10 00:13:54.380 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:13:54.379 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:54.373 warn getState "ble.0.c4:7c:8d:66:da:37.name" not found (3) javascript.0 2018-10-10 00:13:54.174 info script.js.FlowerCare.Flower: null rssi -70 javascript.0 2018-10-10 00:13:54.172 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:13:54.171 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:54.164 warn getState "ble.0.c4:7c:8d:66:4c:07.name" not found (3) javascript.0 2018-10-10 00:13:53.378 info script.js.FlowerCare.Flower: null fertility 457 javascript.0 2018-10-10 00:13:53.377 warn at Object. <anonymous>(script.js.FlowerCare.Flower:201:78) javascript.0 2018-10-10 00:13:53.376 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:53.373 warn getState "ble.0.c4:7c:8d:66:da:37.name" not found (3) javascript.0 2018-10-10 00:13:47.758 info script.js.FlowerCare.Flower: null rssi -76 javascript.0 2018-10-10 00:13:47.755 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:13:47.754 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:47.748 warn getState "ble.0.c4:7c:8d:66:4c:05.name" not found (3) javascript.0 2018-10-10 00:13:44.164 info script.js.FlowerCare.Flower: null rssi -68 javascript.0 2018-10-10 00:13:44.161 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:13:44.160 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:44.154 warn getState "ble.0.c4:7c:8d:66:4c:07.name" not found (3) javascript.0 2018-10-10 00:13:43.386 info script.js.FlowerCare.Flower: null rssi -86 javascript.0 2018-10-10 00:13:43.383 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:13:43.383 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:43.377 warn getState "ble.0.c4:7c:8d:66:da:37.name" not found (3) javascript.0 2018-10-10 00:13:35.785 info script.js.FlowerCare.Flower: null moisture 41 javascript.0 2018-10-10 00:13:35.783 warn at Object. <anonymous>(script.js.FlowerCare.Flower:203:78) javascript.0 2018-10-10 00:13:35.783 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:35.776 warn getState "ble.0.c4:7c:8d:66:4c:05.name" not found (3) javascript.0 2018-10-10 00:13:35.746 info script.js.FlowerCare.Flower: null rssi -74 javascript.0 2018-10-10 00:13:35.743 warn at Object. <anonymous>(script.js.FlowerCare.Flower:205:78) javascript.0 2018-10-10 00:13:35.743 warn at FlowerData (script.js.FlowerCare.Flower:217:27) javascript.0 2018-10-10 00:13:35.737 warn getState "ble.0.c4:7c:8d:66:4c:05.name" not found (3)</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous> muss ich noch irgendetwas eintragen? Bei mir scheint er den Punkt "name" nicht zu finden, habe bei den eigentlichen BLE Datenpunkten auch keinen "Unterpunkt" "name" gefunden. Bin für jede Hilfe dankbar. Gruße
  • SONOFF stürzt bei Script ab

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    405 Aufrufe
    D
    Super, es lag tatsächlich an der Variable, da ich vorher schon den Haken mal testweise gesetzt habe. Ich lass es mal einen Tag laufen und schau wie der SONOFF reagiert. Die Variable hatte ich gesetzt, damit ich einen rechnerischen Wert ermitteln konnte und der SONOFF nach einer definierten Zeit ausschaltet. Ich habe dabei die Differenz der gespeicherten Zeit in der Variable mit der aktuellen Zeit verglichen und sobald diese über dem Wert (30 Sek.) war, hat der SONOFF ausgeschaltet. Daher auch der Zeitplan. Ich dachte eigentlich, dass dieser dann auch ausschaltet, sobald das Script fertig ist, aber das war wohl nicht der Fall. Danke für deine Hilfe
  • GetState in switch

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    957 Aufrufe
    W
    @apollon77: Effektiv machst Du viele davon on({id:"modbus.0.holdingRegisters.12288_Lampe_1_Rot", change: "ne", ack: true}, function(obj) { if (getState("hue.0.Philips_hue.Lampe_1_LED.r").val === obj.state.val) return; /doo nothing because value is already as should setState("hue.0.Philips_hue.Lampe_1_LED.r", obj.state.val, false); }); für alle Kombinationen. Es geht auch cooler, aber für JS Beginner denke genau richtig ` So ist es jetzt gelöst. Das war ja auch meine Anfangsidee, aber mit der for Schleife wäre es halt cooler gewesen, weil ja immer wieder neue Geräte hinzukommen. Dank dir Michael
  • Telegram Adapter und Sendestatus der Nachricht

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    320 Aufrufe
    S
    Sorry ist offtopic aber es muss :shock: : https://www.korrekturen.de/beliebte_fehler/hacken.shtml Viele Grüße Christian
  • Skriptfrage - Temperaturwarnung

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    699 Aufrufe
    T
    Hallo Dirk, danke dir für deine Anregung. Genau das tut das Skript schon (soll es zumindest), nämlich hier if (ist < telegramTemp) { // IST-Temperatur ist kleiner als Vergleichstemperatur für Telegram und es sind Fenster offen setState(pfadRaum +raum, Math.max(12, (telegramTemp-0.5) )); // telegramTemperatur für diesen Raum für den nächsten Abgleich um 0.5 verringern, damit nicht alle paar Sekunden ausgelöst wird. Ab 12 Grad bleibt es konstant, damit ständig erinnert wird if(debug) log("Telegram-Hürde im "+raum +" wurde auf "+(telegramTemp - 0.5) +" reduziert" ); var nachricht = "Temperatur im " +raum + " beträgt nur noch "+ist +" °C.\n" +fenster +" von "+fensterMax+" Fenstern offen."; if(telegram) sendTo('telegram.0', nachricht ); } else { setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen } da (soll zumindest) die Temperatur immer um 0.5 verringert werden, die die erneute Auslöseschwelle ist. Ab 12 Grad wird jede Änderung ein Auslöser. Aber, ich glaube ich habe den Grund gerade gefunden (Werds testen): mir fehlte die Hysterese. Ich glaube, das Skript wird immer ausgelöst, wenn eine Temperatur neu gesetzt wird. Wenn sie aber so ist wie vorher, dann wurde sie mangels Hysterese die Warntemperatur wieder auf 18 Grad eingestellt. Das werde ich jetzt mal testen, indem ich diesen Bereich ` > else { setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen } ` so abändere: ` > else if (ist > telegramTemp +0.3) { setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen } `
  • HM HKT nach Boost auf gewisse Termperatur bringen

    Verschoben
    24
    0 Stimmen
    24 Beiträge
    1k Aufrufe
    ChaotC
    Danke für die Info. Sehr interessant. Aber dann regelt er trotzdem so wie ich mir das gedacht habe. wenn er von 5 auf 17 Grad soll geht er voll auf bis er sich an die 17 annähert um dann langsam in den Regelbereich zu fahren und dort eben nur mit ein paar Prozent Öffnung pendelt. Logischerweise wird mit der Boost Funktion der Regelbereich aufgehoben. Aber im Grunde sehe ich das doch so das gerade bei einer relativ trägen Wasserheizung der Temperaturanstieg mit der Boost Funktion nicht signifikannt schneller sein dürfte. Der Regler spielt doch seine Vorteile nur im Regelbereich aus weil er dort dann wesentlich feinfühliger und präziser arbeiten kann. Aber bis zum Erreichen des Bereichs sehe ich jetzt direkt keinen Unterschied. Oder habe ich da grundlegend was falsch verstanden?
  • Logging-Aktualisierung hört einfach auf…

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    309 Aufrufe
    D
    Hallo, ich kann nur sagen, dass ich das gleiche Problem habe. Danke für den Workarround. Ich konnte auch noch nicht eingrenzen wann das Problem auftritt. Heute hat das Log unten im Skriptfenster nie funktionert. Gestern ein paar mal und häufig aber auch nicht… Browser ist bei mir Firefox Grüße Dirk_H
  • Geräte die sich in zwei Enums befinden (Raum+Gewerk) filtern

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    190 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Ordner Global und das Problem mit Klassen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    505 Aufrufe
    P
    @Dutchman: Wen man ein globales Script speichert wird immer der JavaScript Adapter neu gestartet. Das muss so sein damit die Definitionen im Global fornallen regulären Scripten angehängt werden kann. Als der Neustart (kein Absturz) ist "works AS Designed" Sent from my iPhone using Tapatalk ` Dankeschön, klappt alles war eine Fehlinterpretierung meinerseits.
  • Blockly Code Anzeige

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    390 Aufrufe
    D
    Hallo, das ist durchaus möglich, mit der Import/Export Funktion. Befindet sich oben rechts. Gruß
  • FritzBox json

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    D
    @paul53: @Damich: Falls sich jemand noch zu VIS äußern könnte, wäre das perfekt. Dazu solltest Du unter der Rubrik __ioBroker.vis Adapter__ nachfragen, da es hier leicht übersehen wird. Mache ich ;)
  • [gelöst]Ungewollter Mehrfachaufruf?

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    460 Aufrufe
    T
    Hallo again und sorry für die späte Antwort. Urlaub und Hausbau erlauben mir gerade wenig Zeit fürs Programmieren. Die Geschichte mit den doppelten Log-Einträgen konnte ich in den letzten Tagen nicht mehr beobachten. Warum diese nicht mehr auftreten kann ich allerdings nicht sagen. Abgesehen von einigen Neustarts des PIs und Verändern der Uhrzeit des CRONS habe ich nichts verändert. Trotzdem vielen Dank!
  • Seltsames Verhalten von getEnums Funktion

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    lobomauL
    Ich bin mir nicht sicher, ob ich das gleiche Problem habe wir hier Thema ist, aber Fehlermeldung ist ähnlich: javascript.0 2018-10-08 11:15:58.532 error TypeError: Cannot read property 'common' of undefined javascript.0 2018-10-08 11:15:58.532 error ^ javascript.0 2018-10-08 11:15:58.532 error } else if (objects[id].common) { javascript.0 2018-10-08 11:15:58.531 error script.js.common.Licht.Lichter-check_neu: /opt/iobroker/node_modules/iobroker.javascript/javascript.js:1252 javascript.0 2018-10-08 11:15:58.415 info Start javascript script.js.common.Licht.Lichter-check_neu Wenn ich das Licht-Zähl-Skript neustarte kommt immer der Fehler. Ich habe mal testweise javascript-Adapter von 3.6.4 auf 3.6.0 downgegraded zum Testen, aber ohne Wirkung. Lichter-check_neu-Skript: ! ```` /* Status Zahl Lichter ! zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich Daten kommen vom Gewerk "Licht" ! erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564 23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt Log Ausgabe auskommentiert 05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267 24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens) 06.05.2016 Datenpunkt für Ansagen zugefügt 02.07.2016 abgeschaltet, da Fehler 03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer search statt indexOf und RegEx für Suche nach Virtuellen Kanälen 27.11.2016 Verschoben in Status Code optimiert 23.12.2016 Räume eingebaut 21.06.2017 HUE Lampen eingebaut */ var logging = false; ! var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein', idAnzahl = 'javascript.0.Status.Lichter.Anzahl', idText = 'javascript.0.Status.Lichter.Text', idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU idAnsage = 'javascript.0.Status.Lichter.Ansage'; ! // Ab hier nix mehr ändern createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter type: 'number', name: 'Anzahl aller Lichter', min: 0, def: 0, role: 'value' }); createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen type: 'number', name: 'Anzahl der eingeschalteten Lichter', min: 0, def: 0, role: 'value' }); createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen type: 'string', name: 'Eingeschaltete Lichter', desc: 'Namen der eingeschalteten Lichter', def: ' ', role: 'value' }); createState(idAnsage, { type: 'string', name: 'Eingeschaltete Lichter (Ansage)', desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)', def: ' ', role: 'value' }); createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU type: 'string', name: 'Räume mit eingeschalteten Lichter', desc: 'Namen der Räume, in denen Lichter eingeschaltet sind', def: ' ', role: 'value' }); ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Licht var cacheSelectorLevel = $('channelstate.id=*.LEVEL'); var cacheSelectorHue = $('stateid=*.on[role=switch]'); //var cacheSelectorHue = $('channelstate.id=*.ON'); // HUE Lampen (müssen im Gewerk Licht sein) ! function checkDevices(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0 var anzahlLichterAn = 0; var anzahlLichter = 0; var textLichterAn = []; var textRaum = []; if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen) // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status // } // ENDE VK-Abfrage }); cacheSelectorHue.each(function(id, i) { // Schleife für jedes gefundenen Element *.ON im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.ON abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(".on")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen) // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status // } // ENDE VK-Abfrage }); ! if (logging) log('#### DIMMER ##### '); cacheSelectorLevel.each(function(id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen) // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten ! if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status + '%'); } if (parseFloat(status) > 0) { // Wenn Dimmwert über 0 ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status // } // Ende Abfrage VK }); ! // Array mit Lichternamen sortieren textLichterAn.sort(); textRaum.sort(); // <---- NEU // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben if (logging) log("Text: " + textLichterAn); if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn); // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS) setState(idText, textLichterAn.join(', ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht // setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU } ! // Trigger cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat checkDevices(); }); cacheSelectorHue.on(function(obj) { // bei Zustandänderung *.ON von HUE Lampen im Gewerk Licht if (logging) log('Auslösende HUE: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat checkDevices(); }); cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat checkDevices(); }); ! function main() { setTimeout(function() { if (logging) log('Auslöser Skriptstart'); checkDevices(); }, 2000); } ! main(); // Skriptstart-Auslöser ! // Aufbereitung für Ansage function strip_tags(data) { var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " "); return (rueckgabe); } ! on(idText, function(obj) { var text = obj.state.val; text = (getState(idAnzahl).val > 0) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet'; setState(idAnsage, text); }); Edit: der Downgrade funktioniert irgendwie nicht. Es bleibt bei javascript Version 3.6.4. Edit2: ****Problem wurde wie folgt gelöst**** :-) : von paul53 » 09.10.2018, 22:59 Editiere die Datei /opt/iobroker/node_modules/iobroker.javascript/javascript.js und ändere Zeile 1252 in } else if (objects[id] && objects[id].common) { Anschließend die JS-Instanz neu starten, damit die Änderung wirksam wird.
  • Gelöst Homematic Werteliste angelegt Alexa2.0 sagt nur Zahl

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    dslraserD
    @knudel20: Super Danke es klappt. Wieder ein Schritt weiter smart :D ` Schön des es klappt, freut mich. Die Ansagen bzw. Texte zwischen den einzelnen Ansagen kannst Du ja individuell anpassen. z.B. Moment, als erstes sage ich Dir den Status der Fenster…...dann, wenn damit fertig, hier kommt der Staus Deiner Lampen usw. usw...
  • HM-LC-Sw1-Pl-2 Rätsel?

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    579 Aufrufe
    A
    @J Riemann: WORKING wird auf "true" gesetzt solange der Aktor eine Aktion abarbeitet. Also bei gesetzter Einschaltdauer wird WORKING solange auf "true" stehen wie der interne Timer des Aktors läuft. Beim einfachen einschalten wird WORKING nur einen kurzen Moment auf "true" gesetzt, eben genau für die Dauer zwischen Empfangsbestätigung und erfolgter bestätigter Ausführung des Befehls. ` Das ist plausibel. Danke für die Erklärung! VG Stefan
  • Homematic und Blockly/Scripte

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    423 Aufrufe
    Niemand hat geantwortet

509

Online

32.4k

Benutzer

81.4k

Themen

1.3m

Beiträge