Weiter zum Inhalt

JavaScript

2.5k Themen 49.2k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • (solved: gelöst) Datum ohne Jahrhundert

    16
    1
    0 Stimmen
    16 Beiträge
    1k Aufrufe
    YunaKatoY
    @oliverio sagte in (solved: gelöst) Datum ohne Jahrhundert: Moment ist in Iobroker bereits mit eingebaut, da es selbst im Hintergrund verwendet wird. OK - auch das noch - dann muss ich erst mal alles neu überdenken ! ... und danach neue blöde Fragen stellen ;.))
  • HTTP Put mit JSON

    4
    0 Stimmen
    4 Beiträge
    703 Aufrufe
    M
    @oliverio sorry, wird gleich geändert. beim Reinkopieren habe ich noch daran gedacht.
  • [gelöst] Datenpunkt Echo vermeiden - Wie?

    javascript multimedia
    5
    0 Stimmen
    5 Beiträge
    627 Aufrufe
    PackElendP
    @geko-eder @oberstel reden wir zufällig hierüber: https://github.com/oberstel/ioBroker.js-rotelControl?
  • string.search "*" Snytax

    6
    0 Stimmen
    6 Beiträge
    186 Aufrufe
    OliverIOO
    @wolfgangfb Für den eigentlichen JavaScript Standard kannst du da schauen. Node ist ja nix anderes wie die JavaScript Engine aus dem chrome/edge Browser. Allerdings wurden da ein paar Dinge erweitert (bspw Datenzugriff) was im Browser aus Sicherheitsgründen nicht erlaubt ist und ein paar Dinge weg gelassen, was aus Node Sicht keinen Sinn macht (Zugriff auf Browser und html Zugriff) Me Ende der einzelnen Seite steht immer die kompatibilitätsübersicht, Welches der Funktionen in welcher Version verfügbar ist. Auch JavaScript entwickelt sich weiter. Für die extra Funktionen von Node muss man allerdings dann direkt bei Node schauen https://nodejs.org/dist/latest-v18.x/docs/api/ Die Struktur der Doku mag ich allerdings nicht so gerne und schau lieber erstmal wonders
  • [Gelöst] Cannot find name 'parseFloat'

    3
    1
    0 Stimmen
    3 Beiträge
    374 Aufrufe
    arteckA
    alles gut .. da ist nur die intere prüfung nicht korrekt..lass laufen sieht bei mir auch so
  • benötige Hilfe bei Funktionsaufruf

    5
    1
    0 Stimmen
    5 Beiträge
    502 Aufrufe
    YunaKatoY
    @paul53 sagte in benötige Hilfe bei Funktionsaufruf: der werden immer wieder Datenpunkte gelöscht und neue erstellt? also eher selten, vielleicht 1-2 x pro Jahr wenn ich einen Intervall benennen müsste.
  • OpenAI Coding

    2
    0 Stimmen
    2 Beiträge
    571 Aufrufe
    Christoph1337C
    nach ein paar weiteren fragen klappt das script nun :D ... const ACCESS_TOKEN = "token"; const MODEL_ID = "text-davinci-002"; const QUESTION_DP_ID = "0_userdata.0.GlobalVars.OpenAIQuestion"; const ANSWER_DP_ID = "0_userdata.0.GlobalVars.OpenAIAnswer"; const https = require('https'); on({id: QUESTION_DP_ID, change: "ne"}, function (obj) { // Get the current value of the question datapoint const question = getState(QUESTION_DP_ID).val; console.log(`Question: ${question}`); // Set the value of the answer datapoint to "no answer available" setState(ANSWER_DP_ID, "no answer available"); // Create the HTTP POST options const options = { host: 'api.openai.com', path: '/v1/completions', method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ACCESS_TOKEN}` } }; // Create the HTTP POST request const req = https.request(options, (res) => { console.log(`Status: ${res.statusCode}`); console.log(`Headers: ${JSON.stringify(res.headers)}`); res.setEncoding('utf8'); let responseData = ''; res.on('data', (chunk) => { responseData += chunk; }); res.on('end', () => { console.log(`Answer: ${responseData}`); const responseJson = JSON.parse(responseData); if (responseJson.hasOwnProperty('choices')) { const answer = responseJson.choices[0].text; // Set the value of the answer datapoint to the first answer setState(ANSWER_DP_ID, answer); } }); }); req.on('error', (e) => { console.error(`Problem with request: ${e.message}`); }); // Send the HTTP POST request req.write(JSON.stringify({ "model": MODEL_ID, "prompt": question, "max_tokens": 128 })); req.end(); });
  • Json.parse() mit ungültigen Namen

    6
    0 Stimmen
    6 Beiträge
    507 Aufrufe
    Matthias StübnerM
    @paul53 Danke!
  • Frage zu Funktionsdeklaration

    6
    0 Stimmen
    6 Beiträge
    577 Aufrufe
    W
    @codierknecht sagte in Frage zu Funktionsdeklaration: Darum liebe ich mein Delphi Hier müssen alle Variablen im Kopf einer Methode deklariert werden. Du sprichst mir so sehr aus dem Herzen. Meine "Muttersprache" ist auch Delphi und ich liebe es, dass jeder noch so popelige Typecast immer explizit angegeben werden muss und jede Veriable ganz klar am Anfang definiert sein muss und ein Int ist ein Int wird nicht irgendwann zu einem String oder einem Array.
  • [Gelöst] Script um JSON erzeugen funktioniert nicht

    5
    0 Stimmen
    5 Beiträge
    362 Aufrufe
    Chris76eC
    @paul53 Danke, funktioniert jetzt
  • influxDB 2.x - "alte" Messwerte automatisch löschen

    7
    0 Stimmen
    7 Beiträge
    924 Aufrufe
    B
    Ich versuch das heute Abend noch mal. Ich muss leider los. Aber vielen dank schon mal...
  • Kommazahl 0 anhängen

    javascript
    11
    0 Stimmen
    11 Beiträge
    741 Aufrufe
    mickymM
    hat sich überschnitten. ;)
  • Auf DP Änderungen reagieren

    4
    0 Stimmen
    4 Beiträge
    155 Aufrufe
    CodierknechtC
    @paul53 sagte in Auf DP Änderungen reagieren: Bei einheitlicher ID-Struktur oder Zuweisung zu Enum "functions" kann auch der Selektor verwendet werden. So habe ich das z.B. für das Zählen der offenen Fenster verwendet. on({id: Array.prototype.slice.apply($("(functions=window)")), change: "ne"}, async function (obj) { var count = 0; var states = Array.prototype.slice.apply($("(functions=window)")); for (var index in states) { if (getState(states[index]).val) count++; } setState("0_userdata.0.Vis.fenster", count); });
  • JS Denon Lautstärke bei bestimmten Eingang

    61
    1
    0 Stimmen
    61 Beiträge
    6k Aufrufe
    ?
    @emil70 hab ich schon die Issues stapeln sich ja dort :-)
  • [gelöst] Fehlermeldung JS: Ref...or: typ is not defined

    5
    0 Stimmen
    5 Beiträge
    554 Aufrufe
    AndreiosA
    @paul53 sagte in Fehlermeldung JavaScript: ReferenceError: typ is not defined: @andreas-5 sagte: Die andere Zeilennummer Was steht in Zeile 127? Danke, das war der richtige Hinweis!!! Ich weiß nicht warum, vorher war es ja Zeile 123 und da hatte ich nachgesehen, da stand createState(merkerpfad + schalter[i]["Pruefpunkt"], "", ueberschreiben, { Da habe ich hingeguckt und nicht weiter. Das mit der Auskommentierung sollte zwar eigentlich eine Verschiebung mit sich bringen, kann aber sein, dass ich auch irgendwo Leerzeilen gelöscht habe. Auf jeden Fall ist es jetzt so, dass in Zeile 127 tatsächlich typ zu finden ist! Hintergrund: Bis vor Kurzem hatte ich das noch nicht in Objekten organisiert, sondern, da das Skript ja mit der Zeit gewachsen ist, zuerst in einem Array, dann waren es mehrere und da u.a. auch das Array typ. Dann habe ich das auf das mehrdimensionale Array umgestellt und alles lief wunderbar. Nachdem ich dann das zusätzliche Object in das Array eingefügt hatte, kam der Fehler und da kam meine Verwirrung, weil ich die Zeile betrachtet und für gut befunden habe und nicht mehr den Rest angeschaut habe. Der ganze Block sieht so aus: for (var i = 0; i < schalter.length; i++) { if (!existsState(merkerpfad + schalter[i]["Pruefpunkt"])) { createState(merkerpfad + schalter[i]["Pruefpunkt"], "", ueberschreiben, { name: schalter[i]["Pruefpunkt"], desc: "Letzter Zustand", type: typ[i], role: "value", unit: "" }); Da hätte ich auch drauf kommen können, dass da der neue Merker-DP angelegt werden soll und es gar nicht um die Zeile 123 (hier 5) ging. Der Fehler war da auch schon in Zeile 127 (hier 8)! Deshalb funktionierten die anderen Schalter, da die Merker-DP schon von vorher existierten und damit der Teil nicht genutzt wurde. Kurz geändert: for (var i = 0; i < schalter.length; i++) { if (!existsState(merkerpfad + schalter[i]["Pruefpunkt"])) { createState(merkerpfad + schalter[i]["Pruefpunkt"], "", ueberschreiben, { name: schalter[i]["Pruefpunkt"], desc: "Letzter Zustand", type: schalter[i]["Typ"], role: "value", unit: "" }); und schon fuktioniert es! Peinlich, peinlich!! Danke!!!
  • Daten aus lokalem Webinterface

    4
    0 Stimmen
    4 Beiträge
    467 Aufrufe
    OliverIOO
    @jh410 Leider steuern beide wohl nur über Bluetooth Du kannst ja mal den author fragen ob er sich auch die Steuerung Über wlan angeschaut hat. Er scheint einen Adapter programmieren zu können, dann kennt er sich gut genug aus um die wlan Steuerung analysieren zu können. Den Hersteller zu fragen kann man auch mal probieren
  • SQL Abfrage universal

    21
    0 Stimmen
    21 Beiträge
    4k Aufrufe
    R
    Hallo zusammen und danke für die Vorarbeiten. Ich hatte am Ende doch noch ein paar Schwierigkeiten das ganze zusammenzubauen, daher hier nochmal meine Komplettlösung, evtl. hilft das auch nochmal jemandem weiter. //------------------------------------ generische SQL Abfrage ------------------------------------------------ function getFromSQL(id, start, end) { var myQuery = "select m.*, maxt.val as mxval, maxt.ts as mxts, mint.val as mival, mint.ts as mits \ from \ (SELECT ROUND(sum(val),2) AS sqlSU, ROUND(avg(val),2) AS sqlAV, \ COUNT(*) AS sqlAZ, min(val) AS sqlMIN, max(val) AS sqlMAX, \ max(ts) AS sqlLast, \ min(ts) AS sqlFirst \ FROM iobroker.ts_number \ WHERE id=(select id from iobroker.datapoints where name='"+ id + "') \ AND ts >= '"+ start + "' \ AND ts <= '"+ end + "') m, \ \ (SELECT val, ts \ FROM iobroker.ts_number \ WHERE id=(select id from iobroker.datapoints where name='"+ id + "') \ AND ts >= '"+ start + "' \ AND ts <= '"+ end + "' order by val desc limit 0,1) maxt, \ \ (SELECT val, ts \ FROM iobroker.ts_number \ WHERE id=(select id from iobroker.datapoints where name='"+ id + "') \ AND ts >= '"+ start + "' \ AND ts <= '"+ end + "' order by val asc limit 0,1) mint"; return new Promise((resolve, reject) => { sendTo('sql.0', 'query', myQuery, result => { if (result.error) { reject(result.error); } else { resolve(result.result) } }); }); } async function GetTestValues(){ var date_end = Date.now(); var date_start = date_end - 1000 * 3600 * 24; // gestern var result = await getFromSQL('sql_name_evtl_auch_alias', date_start, date_end); console.log(result[0]); };
  • Alias aus Liste erstellen

    javascript
    17
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    K
    @whilk-and-misky Hier mein Skript. Es funktioniert in meinen Augen sehr gut, hat aber bestimmt noch Verbesserungspotential Spoiler let geraete = [ //Ankleide {"raum": "AZ","name": "Deckenlampe","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "AZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.2.targetPosition"}, {"raum": "AZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"}, {"raum": "AZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"}, {"raum": "AZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, //Badezimmer {"raum": "BZ","name": "Deckenlampe","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "BZ","name": "Spiegel","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay1.Switch"}, {"raum": "BZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.3.targetPosition"}, {"raum": "BZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"}, //Buero {"raum": "BR","name": "Fenster-Links","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "BR","name": "Fenster-Rechts","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "BR","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"}, {"raum": "BR","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, {"raum": "BR","name": "Deckenlampe","gewerk": "LS","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "BR","name": "Fenster","gewerk": "RA","dp": "homepilot20.0.Actuator.1-xxxxxxxxxxxxxxxx.Position_inverted"}, {"raum": "BR","name": "3D-Drucker","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "BR","name": "Ladegeraet","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "BR","name": "Ladegeraet","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "BR","name": "PC-Monitore","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "BR","name": "PC-Monitore","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "BR","name": "PCs","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "BR","name": "PCs","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, //Flur {"raum": "FL","name": "Bewegungsmelder","gewerk": "BM","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.MOTION"}, {"raum": "FL","name": "Briefkasten-Deckel","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "FL","name": "Haustuer","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "FL","name": "Aussenlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "FL","name": "Lichterkette","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "FL","name": "Nachtlicht","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, //Garten {"raum": "GA","name": "Haustuer","gewerk": "BM","dp": "zigbee.0.xxxxxxxxxxxxxxxx.occupancy"}, {"raum": "GA","name": "Kamera-Haustuer","gewerk": "BM","dp": "synology.0.SurveillanceStation.cameras.Haustuer.motionDetected"}, {"raum": "GA","name": "Kamera-Balkon","gewerk": "BM","dp": "synology.0.SurveillanceStation.cameras.Balkon.motionDetected"}, {"raum": "GA","name": "Parkplatz","gewerk": "BM","dp": "zigbee.0.xxxxxxxxxxxxxxxx.occupancy"}, {"raum": "GA","name": "Pavillon","gewerk": "BM","dp": "zigbee.0.xxxxxxxxxxxxxxxx.occupancy"}, {"raum": "GA","name": "Stufenbeleuchtung","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "GA","name": "Gartenbeleuchtung","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "GA","name": "Pavillon","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.2.STATE"}, {"raum": "GA","name": "Pavillon","gewerk": "HA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.2.STATE"}, {"raum": "GA","name": "Whirlpool","gewerk": "SD","dp": "fritzdect.0.DECT_xxxxxxxxxxxxxxxx.state"}, {"raum": "GA","name": "Whirlpool","gewerk": "POWER","dp": "fritzdect.0.DECT_xxxxxxxxxxxxxxxx.power"}, {"raum": "GA","name": "Whirlpool","gewerk": "POWER_SUM","dp": "fritzdect.0.DECT_xxxxxxxxxxxxxxxx.energy"}, {"raum": "GA","name": "Whirlpool","gewerk": "TH","dp": "shelly.0.xxxxxxxxxxxxxxxx.ext.temperatureC1"}, //Kinderzimmer {"raum": "KZ","name": "Balkontuer","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "KZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"}, {"raum": "KZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, {"raum": "KZ","name": "Front","gewerk": "RA","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Position"}, {"raum": "KZ","name": "Front","gewerk": "UP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Open"}, {"raum": "KZ","name": "Front","gewerk": "DOWN","dp": "shelly.0.xxxxxxxxxxxxxxxx1.Shutter.Close"}, {"raum": "KZ","name": "Front","gewerk": "STOP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Pause"}, {"raum": "KZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.1.targetPosition"}, {"raum": "KZ","name": "Lichterkette","gewerk": "SD","dp": "sonoff.0.SD_KZ_Lichterkette.POWER"}, {"raum": "KZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"}, {"raum": "KZ","name": "Front","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Power"}, //Keller {"raum": "KE","name": "ESX-NUC","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "KE","name": "ESX-NUC","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "KE","name": "ESX-NUC-Backup","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "KE","name": "ESX-NUC-Backup","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "KE","name": "ESXP01","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "KE","name": "ESXP01","gewerk": "POWER","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.power"}, {"raum": "KE","name": "ESXP02","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "KE","name": "ESXP02","gewerk": "POWER","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.power"}, {"raum": "KE","name": "Trockner","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "KE","name": "Trockner","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "KE","name": "USV","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "KE","name": "USV","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "KE","name": "Waschmaschine","gewerk": "SD","dp": "xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "KE","name": "Waschmaschine","gewerk": "POWER","dp": "xxxxxxxxxxxxxxxx.Relay0.Power"}, //Kueche {"raum": "KU","name": "Kuechenfenster","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "KU","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"}, {"raum": "KU","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, {"raum": "KU","name": "Deckenlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "KU","name": "Schrankbeleuchtung","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "KU","name": "Fenster","gewerk": "RA","dp": "homepilot20.0.Actuator.2-xxxxxxxxxxxxxxxx.Position_inverted"}, {"raum": "KU","name": "Geschirrspueler","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "KU","name": "Geschirrspueler","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, //Schlafzimmer {"raum": "SZ","name": "Balkontuer","gewerk": "DK","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "SZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.SET_TEMPERATURE"}, {"raum": "SZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, {"raum": "SZ","name": "Deckenlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "SZ","name": "Velux","gewerk": "RA","dp": "klf200.0.products.0.targetPosition"}, {"raum": "SZ","name": "Front","gewerk": "RA","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Position"}, {"raum": "SZ","name": "Front","gewerk": "UP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Open"}, {"raum": "SZ","name": "Front","gewerk": "DOWN","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Close"}, {"raum": "SZ","name": "Front","gewerk": "STOP","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Pause"}, {"raum": "SZ","name": "Front","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Shutter.Power"}, {"raum": "SZ","name": "Balkon","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "SZ","name": "SchlafzimmerTV","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "SZ","name": "SchlafzimmerTV","gewerk": "POWER","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.power"}, {"raum": "SZ","name": "Kommode","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "SZ","name": "Lichterkette","gewerk": "SD","dp": "sonoff.0.SD_SZ_Lichterkette.POWER"}, {"raum": "SZ","name": "Balkon","gewerk": "TH","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.celsius"}, {"raum": "SZ","name": "Velux","gewerk": "FS","dp": "zigbee.0.xxxxxxxxxxxxxxxx.opened"}, //Wohnzimmer {"raum": "WZ","name": "Front-Links","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "WZ","name": "Front-Rechts","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "WZ","name": "Seite-Links","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "WZ","name": "Seite-Rechts","gewerk": "FS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.STATE"}, {"raum": "WZ","name": "Heizkoerper","gewerk": "HZ","dp": "hm-rpc.1.INT0000001.1.SET_TEMPERATURE"}, {"raum": "WZ","name": "Heizkoerper","gewerk": "TH","dp": "hm-rpc.1.INT0000001.1.ACTUAL_TEMPERATURE"}, {"raum": "WZ","name": "Heizkoerper-Seite","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, {"raum": "WZ","name": "Heizkoerper-Front","gewerk": "TH","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.4.ACTUAL_TEMPERATURE"}, {"raum": "WZ","name": "Esstischlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"}, {"raum": "WZ","name": "Wohnzimmerlampe","gewerk": "LS","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"}, {"raum": "WZ","name": "Front-Links","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"}, {"raum": "WZ","name": "Front-Rechts","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"}, {"raum": "WZ","name": "Leinwand","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"}, {"raum": "WZ","name": "Seite","gewerk": "RA","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.1.LEVEL"}, {"raum": "WZ","name": "AV-Receiver","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "WZ","name": "FireTV","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "WZ","name": "Front","gewerk": "SD","dp": "sonoff.0.SD_WZ_Front.POWER"}, {"raum": "WZ","name": "Kodi","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "WZ","name": "Kodi","gewerk": "POWER","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Power"}, {"raum": "WZ","name": "Lichtkugeln","gewerk": "SD","dp": "shelly.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "WZ","name": "PS-4-Luefter","gewerk": "SD","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "WZ","name": "PS-4-Luefter","gewerk": "TH","dp": "fritzdect.0.xxxxxxxxxxxxxxxx.celsius"}, {"raum": "WZ","name": "Schriftleuchte","gewerk": "SD","dp": "zigbee.0.xxxxxxxxxxxxxxxx.state"}, {"raum": "WZ","name": "Seite","gewerk": "SD","dp": "sonoff.0.SD_WZ_Seite.POWER"}, {"raum": "WZ","name": "TV","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "WZ","name": "Tablet","gewerk": "SD","dp": "shelly.0.xxxxxxxxxxxxxxxx.Relay0.Switch"}, {"raum": "WZ","name": "Wii","gewerk": "SD","dp": "hm-rpc.0.xxxxxxxxxxxxxxxx.STATE"}, ]; //Jedes Gerät abarbeiten geraete.forEach(geraet => { //Raumname definieren if(geraet.raum == "AZ"){var raumname = "Ankleide"}; if(geraet.raum == "BZ"){var raumname = "Badezimmer"}; if(geraet.raum == "BR"){var raumname = "Buero"}; if(geraet.raum == "FL"){var raumname = "Flur"}; if(geraet.raum == "GA"){var raumname = "Garten"}; if(geraet.raum == "KE"){var raumname = "Keller"}; if(geraet.raum == "KZ"){var raumname = "Kinderzimmer"}; if(geraet.raum == "KU"){var raumname = "Kueche"}; if(geraet.raum == "SZ"){var raumname = "Schlafzimmer"}; if(geraet.raum == "WZ"){var raumname = "Wohnzimmer"}; //Statuskuerzel definieren if(geraet.gewerk == "BM") {var statuskuerzel = "ACTUAL"; var gewerk = "BM"}; if(geraet.gewerk == "DK") {var statuskuerzel = "ACTUAL"; var gewerk = "DK"}; if(geraet.gewerk == "FS") {var statuskuerzel = "ACTUAL"; var gewerk = "FS"}; if(geraet.gewerk == "HA") {var statuskuerzel = "STATE"; var gewerk = "HA"}; if(geraet.gewerk == "HZ") {var statuskuerzel = "TEMP"; var gewerk = "HZ"}; if(geraet.gewerk == "LS") {var statuskuerzel = "STATE"; var gewerk = "LS"}; if(geraet.gewerk == "RA") {var statuskuerzel = "LEVEL"; var gewerk = "RA"}; if(geraet.gewerk == "SD") {var statuskuerzel = "STATE"; var gewerk = "SD"}; if(geraet.gewerk == "TH") {var statuskuerzel = "TEMP"; var gewerk = "TH"}; //Sonderstatuskuerzel definieren if(geraet.gewerk == "POWER") {var statuskuerzel = "POWER"; var gewerk = "SD"}; if(geraet.gewerk == "POWER_SUM") {var statuskuerzel = "POWER_SUM"; var gewerk = "SD"}; if(geraet.gewerk == "DOWN") {var statuskuerzel = "DOWN"; var gewerk = "RA"}; if(geraet.gewerk == "UP") {var statuskuerzel = "UP"; var gewerk = "RA"}; if(geraet.gewerk == "STOP") {var statuskuerzel = "STOP"; var gewerk = "RA"}; if(geraet.gewerk == "POWER" && geraet.dp.match(/^.*.Shutter.Power$/)) {var statuskuerzel = "POWER"; var gewerk = "RA"}; //Variablen für Erstellung definieren const original_datenpunkt = geraet.dp; const alias_name = gewerk + '_' + geraet.raum + '_' + geraet.name + '.' + statuskuerzel; const raum_name = raumname; ///////////////////////////////// // AB HIER NICHTS MEHR ÄNDERN // ///////////////////////////////// // Original-Datenpunkt const idOrigin = original_datenpunkt; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = raum_name+'.'+alias_name; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = alias_name desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? String(1) : String(0)"; // role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '%'; // nur für Zahlen // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) custom = []; // verhindert doppelte Ausführung von history, ... // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten ! // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten ! // Ab hier nichts ändern !! function createAlias(idDst, idSrc, idRd) { //if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); //else{ if(!existsState(idDst)){ console.log('alias.0.' + raumname + "." + alias_name + ' wird erstellt') var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(obj.common.type == 'number') { if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; } else { if(obj.common.min !== undefined) delete obj.common.min; if(obj.common.max !== undefined) delete obj.common.max; if(obj.common.unit) delete obj.common.unit; } if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj, function() { if(idRd) setState(idRd, getState(idRd).val, true); else setState(idSrc, getState(idSrc).val, true); }); if(raum && existsObject('enum.rooms.' + raum)) { let obj = getObject('enum.rooms.' + raum) obj.common.members.push(idDst); setObject('enum.rooms.' + raum, obj); } if(gewerk && existsObject('enum.functions.' + gewerk)) { let obj = getObject('enum.functions.' + gewerk) obj.common.members.push(idDst); setObject('enum.functions.' + gewerk, obj); } } } createAlias('alias.0.' + idAlias, idOrigin, idRead); });
  • Bedeutung Datenpunkte Cloud Adapter

    1
    0 Stimmen
    1 Beiträge
    167 Aufrufe
    Niemand hat geantwortet
  • Problem älteres Fenster-Zählen Skript

    14
    3
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    CodierknechtC
    @rushmed Geht nur per JS: function getObjectName(const objectId) { return getObject(objectId).common.name; }

531

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge