Skip to content

Skripten / Logik

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

16.6k Topics 213.8k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    OliverIOO
    @BertDerKleine Am besten zeigst du mal dein Script, dann kann man bessere Empfehlungen abgeben. Bitte auch mal schreiben warum du aufteilen möchtest obwohl es so funktioniert.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    KPTK
    Hat leider in ioBroker nicht funktioniert. Musste leider auf HomeAssistant umsteigen. Lokale Integration sehr einfach und voll funktionsfähig.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Pushover wenn Xiaomi Staubsauger fertig

    Moved
    2
    1
    0 Votes
    2 Posts
    334 Views
    H
    Habs hinbekommen. Der Staubsauger meldet gar nicht "Charging(8)", sondern nur eine (8). Der Wert wird in der Objektkonfiguration umgesetzt. Jetzt sieht es so aus und es funktioniert :D : [image: 6880_unbenannt-2.jpg] Gruß Olli
  • *gelöst* Blockly Benachrichtungen Türklingel bei Abwesenheit

    Moved
    12
    0 Votes
    12 Posts
    855 Views
    DutchmanD
    Nö du musst den timeout ja erst stoppen Dan einen neuen starten :-) –----------------------- Send from mobile device Das schöne ios hat Auto Korrektur zum k**** Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
  • [gelöst]Variablen Übergabe aus MODBUS an Homematic

    Moved
    17
    0 Votes
    17 Posts
    4k Views
    M
    habs gerade gemerkt - Ich probiere es weiter… :D EDIT: funzt... danke!
  • [Gelöst] Blockly schaltet Hue nicht aus

    Moved
    8
    1
    0 Votes
    8 Posts
    1k Views
    H
    So, nun habe ich es mit ein wenig Experimentieren hinbekommen: [image: 5736_screenshot_2018-04-14_12.09.08.jpg] Mein Fehler war, dass der Aktualisierungszeitraum zu groß war. Schönes Wochenende Euch Allen!
  • Blockly - Status von Variablen auf Homematic umsetzen

    Moved
    3
    0 Votes
    3 Posts
    533 Views
    surfer09S
    Ohje den Screenshot hatte ich eben vergessen 8-) . Ich habe gerade gesehen, dass die Homematic den Text "ist offen" / "ist geschlossen" selbst umsetzt, je nachdem ob der Zustand wahr oder falsch ist. Im IO-Broker habe ich nämlich nur Zugriff auf "true" oder "false". Bedeutet das, dass ich die Umsetzung dann auf der CCU2 lassen muss? Ich könnte dann im Blockly nur sagen: Wenn Kellertür true, setze Variable Kellertür auf wahr (die Homematic würde daraus dann "zu" machen). Vielleicht denke ich gerade auch zu kompliziert? :D 4867_kellert_r.jpg 4867_kellert_r.jpg 4867_kellert_r.jpg 4867_io-broker-kellertuer.jpg
  • Scriptfehler in einem nicht existierenden Script?

    Moved
    1
    0 Votes
    1 Posts
    216 Views
    No one has replied
  • Blockly Skript, Steckdose schalten

    Moved
    7
    1
    0 Votes
    7 Posts
    3k Views
    D
    Habe ich mir doch gedacht :) Da kann ich dir konkret nicht helfen, da ich mich mit den Wetter-Adaptern nicht beschäftigt habe bisher (bin auch erst seit einigen Wochen mit ioBroker am arbeiten). Rein theoretisch gehe ich aber davon aus, dass die Wetter Adapter auch irgendwo unter Objekte das aktuelle Datum speichern werden. Dann kannst du in Blockly unter "Trigger" einen Block auswählen (Name weiß ich gerade nicht), der deinen Code aufruft sobald der Wetter-Wert aktualisiert wird. Dann kannst du mit einer einfachen "kleiner als Temperatur" Abfrage festlegen, dass die Rolläden dann auf bzw. zu gehen (wahrscheinlich auch per Objekt, je nach dem wie du sie schon in ioBroker eingebunden hast). Gruß Thomas
  • Funktion erstellen

    Moved
    4
    0 Votes
    4 Posts
    716 Views
    J
    Hallo, vielen dank Paul und Schubi. Ich habe es mit einem ODER Node gelöst sowie der Schubi vorgeschlagen hat.
  • Blockly - Wenn Objekt 5 Minuten false ist dann…

    Moved
    5
    0 Votes
    5 Posts
    3k Views
    BarnyXXB
    Top Danke! werde ich am Wochenende mal ausprobieren.
  • Alexa Reiceiver+AVR+TV ein/ausschalten?

    Moved
    18
    1
    0 Votes
    18 Posts
    2k Views
    M
    ok, mal schauen ob sich da was machen lässt. Mal schauen ob jemand einen alten im Freundeskreis hat oder ich kaufe einen dot ;)
  • Teil von script wird nicht ausgeführt.

    Moved
    2
    1
    0 Votes
    2 Posts
    614 Views
    DutchmanD
    der letzte teil befindet sich ausserhalb des trigger Bausteins wird also nur bei script start übergeben. Du musst also auch diese befehl in einem trigger integrieren dan wird's laufen
  • Frage zur Astrofunktion

    Locked Moved Solved javascript
    20
    0 Votes
    20 Posts
    4k Views
    X
    Hallo zusammen, ich nutze auch seit einer Weile die Astro Funktion um zwei Objekte ("Hell" [ja/nein] und "Dunkel" [ja/nein]) zu ändern. Entsprechend wird bei mir die Beleuchtung & Rollladensteuerung geschaltet. Zu Debugging-Zwecken sende ich außerdem zusätzlich noch Telegram Messages an den jeweiligen Events. Siehe: [image: 5044_unbenannt.png] /** * Beschreibe diese Funktion … */ function update_uhrzeit_hell_dunkel() { setState("javascript.0.Umwelt_Dunkel_Uhrzeit"/*Umwelt_Dunkel_Uhrzeit*/, formatDate(getDateObject(getAstroDate("dusk", undefined, 0)), "hh:mm"), true); setState("javascript.0.Umwelt_Hell_Uhrzeit"/*Umwelt_Hell_Uhrzeit*/, formatDate(getDateObject(getAstroDate("dawn", undefined, 0)), "hh:mm"), true); } /** * Beschreibe diese Funktion … */ function alle_Zeiten_ausgeben() { console.log(getAstroDate("goldenHour", undefined, 0)); console.log(getAstroDate("sunsetStart", undefined, 0)); console.log(getAstroDate("sunset", undefined, 0)); console.log(getAstroDate("dusk", undefined, 0)); console.log(getAstroDate("nauticalDusk", undefined, 0)); console.log(getAstroDate("night", undefined, 0)); console.log(getAstroDate("nadir", undefined, 0)); console.log(getAstroDate("nightEnd", undefined, 0)); console.log(getAstroDate("nauticalDawn", undefined, 0)); console.log(getAstroDate("dawn", undefined, 0)); console.log(getAstroDate("sunrise", undefined, 0)); console.log(getAstroDate("sunriseEnd", undefined, 0)); console.log(getAstroDate("goldenHourEnd", undefined, 0)); } schedule({astro: "nadir", shift: 0}, function () { update_uhrzeit_hell_dunkel(); }); schedule({astro: "sunset", shift: 0}, function () { setState("javascript.0.Umwelt_Dunkel"/*Umwelt_Dunkel*/, true, true); sendTo("telegram.0", "send", { text: 'Umwelt Dunkel ja' }); }); schedule({astro: "dusk", shift: 0}, function () { setState("javascript.0.Umwelt_Hell"/*Umwelt_Hell*/, false, true); sendTo("telegram.0", "send", { text: 'Umwelt Hell nein' }); }); schedule({astro: "dawn", shift: 0}, function () { setState("javascript.0.Umwelt_Hell"/*Umwelt_Hell*/, true, true); sendTo("telegram.0", "send", { text: 'Umwelt Hell ja' }); }); schedule({astro: "sunriseEnd", shift: 0}, function () { setState("javascript.0.Umwelt_Dunkel"/*Umwelt_Dunkel*/, false, true); sendTo("telegram.0", "send", { text: 'Umwelt Dunkel nein' }); }); Leider ist mir jetzt aufgefallen dass immer 2x das jeweilige Event ausgelöst wird bei der Astro-Funktion. Sprich die Objekte 2x aktualisiert & 2x die Telegram Messages geschickt. Teilweise auch um einige Minuten versetzt… Ist das ansonsten auch noch jemandem aufgefallen? Bei mir ist es ein Problem, da zb. wenn es Nacht ist, die Rollläden runter gehen. Wenn diese aber noch offen bleiben sollen stoppe ich manuell direkt am Aktor. Wenige Minuten später wird aber die Astro Funktion nochmal ausgelöst und sie schließen sich wieder... Genauso verhält es sich mit der "Abendbeleuchtung" Hoffe auf Feedback.
  • Anfängerfrage - CCU Variable mit Wert beschreiben

    Moved
    3
    0 Votes
    3 Posts
    719 Views
    DutchmanD
    Steht doch auf Github : https://github.com/ioBroker/ioBroker.ja … tes-change trigger erstellen, dan einen update block nehmen und das object der ccu mit dem "wert von" updaten
  • [Gelöst]Gelöschtes globales Skript wird ausgeführt

    Moved
    2
    0 Votes
    2 Posts
    255 Views
    A
    Ein Neustart von ioBroker hat geholfen.
  • Funktionen für den hue Adapter

    Moved
    37
    0 Votes
    37 Posts
    12k Views
    M
    ich bin anscheinend zu dov. ich habe script angepasst so ! // –---------- ANFANG der individuellen Konfiguration ------------ ! // die eigenen Lampen in Gruppen sortiert (die Farbverläufe und Effekte werden nach Gruppen aktiviert) ! var lampen ={ ! "wohnzimmer": // Lampengruppe ! [ ! "Philips_hue.Lampe2", ! "Philips_hue.Lampe1", ! "Philips_hue.Lampe3", ! "Philips_hue.Sonne" ! ] ! }; ! var hueSzenenApapterPfad = "hue.szene."; // wo sollen die Datenpunkte in den ioBroker Objekten angelegt werden ! // je Lampengruppe werden die Datenpunkte: ! // .szene -> Änderung der Szene per Datenpunkt, z.B. über VIS oder im Script per szeneStart(lampenGruppe,szene,bri); ! // .bri -> Änderung der Helligkeit per Datenpunkt (0-254) ! // .sat -> Änderung der Farbsättigung per Datenpunkt ())0-254) ! // .bri_inc -> Erhöhung/Verminderung der Helligkeit per Datenpunkt (positiver Wert = Heller, negativer Wert = dunkler) ! // .sat_inc -> Erhöhung/Verminderung der Sättigung per Datenpunkt (positiver Wert = mehr Farbe, negativer Wert = blasser) ! // angelegt ! // z.B. unter: javascript.0.hue.szene.arbeitszimmer.szene (Javascfript Instanz 0, Pfad = "hue.szene.") ! // globaler Parameter: Zufällige Zeit zwischen den Wechsel zwischen zwei Farben, je Lampe, in der aktivierten Szene in ms ! // (wenn keine individuelle Zeit in der Szene definiert ist) ! var delayMin = 1000; // minimale Zeit in ms einer Lampe, um in die nächste Farbe zu wechseln ! var delayMax = 3000; // maximale Zeit in ms einer Lampe, um in die nächste Farbe zu wechseln ! // ------------ ENDE der individuellen Konfiguration ------------ ! // ------------------------------------------------------------------------- ! // Script: Logik & Szenen - ab hier muss in der Regel nichts geändert werden ! // ------------------------------------------------------------------------- ! var szenen = { ! "beispiel": ! { ! "description": "Beispielszene", // optional: Beschreibung der Szene ! "delayMin": 2000, // optional (ohne werden die globalen Einstellungen verwendet) ! "delayMax": 9000, // optional (ohne werden die globalen Einstellungen verwendet) ! "hueMin": 0, // niedrigste Farbe im Verlauf ! "hueMax": 50000 // höchste Farbe im Verlauf ! }, ! "kamin": ! { ! "description": "roter Farbverlauf", ! "hueMin": 0, ! "hueMax": 10000 ! }, ! "wald": ! { ! "description": "grüner Farbverlauf", ! "hueMin": 20000, ! "hueMax": 27000 ! }, ! "sonne": ! { ! "description": "gelb/oranger Farbverlauf", ! "hueMin": 10000, ! "hueMax": 17000 ! }, ! "blau": ! { ! "description": "Energie, blauer Farbverlauf", ! "hueMin": 44000, ! "hueMax": 48000 ! }, ! "strobo": ! { ! "description": "Stroboskop", ! "ct": 153, ! "delayMin": 500, ! "delayMax": 800 ! }, ! "feuer": ! { ! "description": "pulsierende Farben", ! "delayMin": 200, ! "delayMax": 600, ! "hueMin": 0, ! "hueMax": 17000 ! }, ! "regenbogen": ! { ! "description": "das gesamte Farbspektrum", ! "delayMin": 1000, ! "delayMax": 8000, ! "hueMin": 0, ! "hueMax": 65355 ! }, ! "love": ! { ! "description": "langsam wechselnder Farbverlauf im lila/violetten Bereich, bis zu den Endpunkten blau und rot", ! "delayMin": 5000, ! "delayMax": 8000, ! "hueMin": 46920, ! "hueMax": 65355 ! } ! }; ! // ##### Script Variablen ##### ! var timer = {}; ! var nextDelay = {}; ! var szeneAktiv = []; ! var szene = []; ! // ##### Script Funktionen ##### ! function rand(min, max) { ! return Math.floor(Math.random() * (max - min + 1)) + min; ! } ! function dpAnlegen() { ! for (var lampenGruppe in lampen) { ! createState(hueSzenenApapterPfad + lampenGruppe + ".szene","aus"); ! createState(hueSzenenApapterPfad + lampenGruppe + ".infoAktiveSzene","keine"); ! createState(hueSzenenApapterPfad + lampenGruppe + ".bri",254); ! createState(hueSzenenApapterPfad + lampenGruppe + ".bri_inc",0); ! createState(hueSzenenApapterPfad + lampenGruppe + ".sat",254); ! createState(hueSzenenApapterPfad + lampenGruppe + ".sat_inc",0); ! log(hueSzenenApapterPfad + lampenGruppe + " wurde angelegt","info"); ! } ! } ! function restoreSzenen() { ! for (var lampenGruppe in lampen) { ! var aktiveSzene = getState(hueSzenenApapterPfad + lampenGruppe + ".szene").val; ! var bri = getState(hueSzenenApapterPfad + lampenGruppe + ".bri").val; ! if (aktiveSzene != "aus") { ! log("im der Gruppe: " + lampenGruppe + " wurde die Szene: " + aktiveSzene + " wieder aktiviert."); ! setState(hueSzenenApapterPfad + lampenGruppe + ".infoAktiveSzene",aktiveSzene); ! szeneStart(lampenGruppe,aktiveSzene,bri); ! } ! } ! } ! function varsAnlegen() { ! // Script-Variablen für jede Lampengruppe anlagen ! for (var lampenGruppe in lampen) { ! timer[lampenGruppe] = []; ! nextDelay[lampenGruppe] = []; ! szeneAktiv[lampenGruppe] = false; ! szene[lampenGruppe] = null; ! // Script-Variablen für jede Lampe in jeder Lampengruppe anlegen ! for (var i = 0; i < lampen[lampenGruppe].length; i++) { // timer und die nächste Delayzeit für jede Lampe zurückstellen ! timer[lampenGruppe] = null; ! nextDelay[lampenGruppe] = 0; ! } ! } ! } ! function szenenwechsel (lampenGruppe,lampe,delay) { ! delay = Math.floor(delay / 100); // der zufällige Wert für die nächste Lichtfarbe wird auch als transitiontime verwendet (dazu wird das delay durch 100 geteilt) ! //log("aktive Szene: hueMin: " + szenen[szene[lampenGruppe]]["hueMin"] + " hueMax: " + szenen[szene[lampenGruppe]]["hueMax"]); ! var hue = rand(szenen[szene[lampenGruppe]].hueMin,szenen[szene[lampenGruppe]].hueMax); ! var bri = getState(hueSzenenApapterPfad + lampenGruppe+".bri").val; ! var sat = getState(hueSzenenApapterPfad + lampenGruppe+".sat").val; ! var command = '{"on":true,"hue":' + hue + ',"sat":' + sat + ',"bri":' + bri + ',"transitiontime":' + delay + ',"colormode":"hs"}'; ! //log ("Lampe: " + lampen[lampenGruppe][lampe] + " # command: " + command); ! if (bri == 0) command = '{"on":false,"bri":0}'; ! setState(lampen[lampenGruppe][lampe] + ".command", command); ! } ! function stroboskop(lampenGruppe,lampe) { ! var command = '{"on":true,"ct":153,"bri":254,"transitiontime":0,"colormode":"ct"}'; ! setState(lampen[lampenGruppe][lampe] + ".command", command); ! command = '{"on":false,"transitiontime":0}'; ! setState(lampen[lampenGruppe][lampe] + ".command", command); ! } ! function berechneDelay (lampenGruppe,lampe){ ! // globale Delay-Einstellungen übernehmen ! var delayMinTemp = delayMin; ! var delayMaxTemp = delayMax; ! // globale Delay-Einstellungen überschreiben, wenn in der Szene ein eingener Delay definiert ist ! if (szenen[szene[lampenGruppe]].delayMin) delayMinTemp = szenen[szene[lampenGruppe]].delayMin; ! if (szenen[szene[lampenGruppe]].delayMax) delayMaxTemp = szenen[szene[lampenGruppe]].delayMax; ! nextDelay[lampenGruppe][lampe] = rand(delayMinTemp,delayMaxTemp); ! } ! function szeneTimer(lampenGruppe,lampe) { ! var delay = nextDelay[lampenGruppe][lampe] || 0; ! var aktuelleSzene = szene[lampenGruppe]; ! //log("gesetztes Delay: " + delay); ! if (timer[lampenGruppe][lampe]) clearTimeout(timer[lampenGruppe][lampe]); ! timer[lampenGruppe][lampe] = setTimeout(function() { ! timer[lampenGruppe][lampe] = null; ! berechneDelay(lampenGruppe,lampe); ! switch (aktuelleSzene) { ! case "strobo": ! stroboskop(lampenGruppe,lampe); ! break; ! default: ! szenenwechsel(lampenGruppe,lampe,nextDelay[lampenGruppe][lampe]); ! break; ! } ! //log("Delay = " + nextDelay[lampenGruppe][lampe] + " # Lampe: " + lampen[lampenGruppe][lampe]); ! szeneTimer(lampenGruppe,lampe); // ruft den Timer nach Ablauf wieder auf ! },delay); ! } ! function check254(check) { ! if (check !== 0) if (!check) check = 254; ! check = parseInt(check); ! if (check > 254) check =254; ! if (check <= 0 ) check = 0; ! return check; ! } ! function setBri(lampenGruppe,aktiveSzene,bri) { ! if (szenen[aktiveSzene].bri) bri = szenen[aktiveSzene].bri; ! bri = check254(bri); ! setState(hueSzenenApapterPfad + lampenGruppe+".bri", bri); ! } ! function setSat(lampenGruppe,aktiveSzene,sat) { ! if (szenen[aktiveSzene].sat) sat = szenen[aktiveSzene].sat; ! sat = check254(sat); ! setState(hueSzenenApapterPfad + lampenGruppe+".sat", sat); ! } ! function szeneStart(lampenGruppe,aktiveSzene,bri,sat) { ! if (!szenen[aktiveSzene]) { // undefinierte Szenen abfangen ! log("# hue Szenen Script: undefinierte Szene wurde versucht aufzurufen: " + aktiveSzene,"error"); ! return; ! } ! szene[lampenGruppe] = aktiveSzene; ! setBri(lampenGruppe,aktiveSzene,bri); ! setSat(lampenGruppe,aktiveSzene,sat); ! if (!szeneAktiv[lampenGruppe]) { ! szeneAktiv[lampenGruppe] = true; ! for (var i = 0; i < lampen[lampenGruppe].length; i++) { // für alle Lampen den timer starten ! nextDelay[lampenGruppe] = 0; ! szeneTimer(lampenGruppe,i); ! } ! } ! } ! function szeneStop(lampenGruppe) { // alle aktiven timer löschen ! for (var i = 0; i < lampen[lampenGruppe].length; i++) { ! clearTimeout(timer[lampenGruppe]); ! log("Timer: " + lampen[lampenGruppe] + " gestoppt"); ! } ! szeneAktiv[lampenGruppe] = false; ! szene[lampenGruppe] = null; ! } ! function lampenAus(lampenGruppe) { ! for (var i = 0; i < lampen[lampenGruppe].length; i++) { ! setState(lampen[lampenGruppe]+".command",'{"on":false}'); ! } ! } ! function setBriSat(com,wert,lampenGruppe) { ! if (wert != check254(wert)) { ! wert = check254(wert); ! setState(hueSzenenApapterPfad + lampenGruppe + "." + com, wert); //korrigiert bri/sat und ruft diese on() Funktion direkt wieder auf ! } else { ! //log("Lampengruppe: " + lampenGruppe + " # " + com + ": " + wert + " empfangen","warn"); ! if (szeneAktiv[lampenGruppe]) { // wenn die Szene in der Gruppe aktiv ist: ! for (var i = 0; i < lampen[lampenGruppe].length; i++) { // für alle Lampen der Gruppe ! setState(lampen[lampenGruppe] + "." + com, wert); // die Helligkeit/Saturation direkt ändern ! //log(com + ": " + wert + " # " + lampen[lampenGruppe] + " gesetzt","warn"); ! } ! } ! } ! } ! function changeBriSat (com, wert, lampenGruppe) { ! com = com.replace("inc", ""); ! var alterWert = getState(hueSzenenApapterPfad + lampenGruppe + "." + com).val; ! wert = parseInt(wert) + alterWert; ! setState(hueSzenenApapterPfad + lampenGruppe + "." + com, wert); //setzt bri/sat neu. Dies ruft die on() Funktion direkt wieder auf, diesmal mit bri/sat ! } ! // ##### Überwachte Datenpunkte ##### ! // Änderung der Helligkeit (.bri) oder Farbsättigung (.sat) während der Laufzeit über einen Datenpunkt ! var reg = new RegExp("^javascript\.\d+\." + hueSzenenApapterPfad.replace('.', '\.') + ".\.(sat|bri)"); ! on({"id":reg , "change": "ne"}, function (obj) { ! var com = obj.id.split('.').pop(); ! var str = obj.id.replace(/.(bri|sat)$/, ""); ! var reg2 = new RegExp("^javascript\.\d+\."+ hueSzenenApapterPfad.replace('.', '\.')); ! var lampenGruppe = str.replace(reg2, ""); ! var wert = obj.newState.val; ! setBriSat (com, wert, lampenGruppe); ! }); ! // Änderung der Helligkeit oder Farbsättignung als adaptiver Wert (.bri_inc, .sat_inc) ! var reg = new RegExp("^javascript\.\d+\." + hueSzenenApapterPfad.replace('.', '\.') + ".\.(sat_inc|bri_inc)"); ! on({"id":reg , "change": "any"}, function (obj) { ! var com = obj.id.split('.').pop(); ! var str = obj.id.replace(/.(sat_inc|bri_inc)$/, ""); ! var reg2 = new RegExp("^javascript\.\d+\."+ hueSzenenApapterPfad.replace('.', '\.')); ! var lampenGruppe = str.replace(reg2, ""); ! var wert = obj.newState.val; ! changeBriSat (com, wert, lampenGruppe); ! }); ! // Änderung einer Szene während der Laufzeit, z.B. über VIS ! var reg = new RegExp("^javascript\.\d+\." + hueSzenenApapterPfad.replace('.', '\.') + ".*\.szene"); ! on(reg , function (obj) { ! var str = obj.id.replace(/.szene$/, ""); ! var reg2 = new RegExp("^javascript\.\d+\."+ hueSzenenApapterPfad.replace('.', '\.')); ! var lampenGruppe = str.replace(reg2, ""); ! var neueSzene = obj.newState.val; ! log("Lampengruppe: " + lampenGruppe + " # Szene: " + neueSzene + " empfangen"); ! switch (neueSzene) { ! case "aus": ! szeneStop(lampenGruppe); ! lampenAus(lampenGruppe); ! log(lampenGruppe + " Szene deaktiviert"); ! break; ! case "stop": ! szeneStop(lampenGruppe); ! log(lampenGruppe + " Szene angehalten"); ! break; ! default: ! if (szenen[neueSzene]) { ! // TODO: bri nur ermitteln, wenn in der Szene kein eigener bri festgelegt ist ! var bri = getState(hueSzenenApapterPfad + lampenGruppe+".bri").val; ! bri = check254(bri); ! if (bri == 0) bri = 254; ! szeneStart(lampenGruppe,neueSzene,bri); ! setState(hueSzenenApapterPfad + lampenGruppe+".infoAktiveSzene", neueSzene); ! log(lampenGruppe + " Szene: " + neueSzene + " gestartet"); ! break; ! } ! log("### unbekannte Szene: " + neueSzene,"error"); ! break; ! } ! }); ! // ##### Scriptstart ##### ! dpAnlegen(); // je einen Datenpunkt pro Lampengruppe anlegen ! varsAnlegen(); // die für das Script notwendigen Variablen erstellen ! // warte bis alle States und Objekte angelegt werden. ! // 500ms und dann starte main(); ! function main() { ! // ##### Scriptstart main() ##### ! restoreSzenen(); // aktiviert zuletzt eingestellte Szenen ! } ! setTimeout(main, 500);_______ ___________wird nur folgendes zu sehen unter Objekte ich habe bestimmt was falsch gemacht oder nicht verstanden.___________ 6680_bildschirmfoto_2018-04-11_um_18.35.12.png
  • Unterschied "steuere Objekt" und "aktualisiere Objekt"

    Moved
    22
    0 Votes
    22 Posts
    5k Views
    S
    Mittlerweile hat sich etwas veraendert mit den Web-Ansichten meiner Objekte. Die version 3.3.5 vom admin-Interface scheint die Updates der Objekte jetzt richtig anzuzeigen. Ich hatte seit der Installation von 3.3.5 keinen Fall mehr wo die Web-Werte offensichtlich anders waren als die die die Skripte gesehen haben. Bei 3.3.3 schien das Problem dagegen noch da zu sein.
  • Verständnisfrage javascript on()

    Moved
    4
    0 Votes
    4 Posts
    310 Views
    paul53P
    Auf Datenpunkte "javascript.N.name", die der Instanz von Javascript zugeordnet sind, kann mit getState(id) und setState(id, val) mittels der verkürzten Schreibweise (ohne "javascript.N.") zugegriffen werden, nicht jedoch mit on(id, callback) oder getObject(id).
  • Erstes Skript Zeitschaltuhr läuft nicht.

    Moved
    3
    2
    0 Votes
    3 Posts
    560 Views
    S
    :roll: Jetzt gehts… Vielen Dank für deine Hilfe
  • Countdown

    Moved
    4
    0 Votes
    4 Posts
    834 Views
    L
    Hab's jetzt rausgefunden, so z.B. Waschmaschine_Status = 2 heißt bei mir das sie noch läuft. [image: 2716_restzeit_wama.jpg]
  • [GELÖST] Javascript von einer ext. Seite Einbinden in ioBroker

    Moved
    14
    0 Votes
    14 Posts
    2k Views
    T
    Guten Morgen, vielen Dank für die schnelle Beantwortung! Ich finde es immer wieder Super das du es auch erklärst was man falsch gemacht hat. Nur so kann ich es Lernen. Schönen Tag und Gruß, Tom

601

Online

32.7k

Users

82.4k

Topics

1.3m

Posts