Weiter zum Inhalt

JavaScript

2.5k Themen 49.8k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Datum im einem JSON String

    Ungelöst
    3
    0 Stimmen
    3 Beiträge
    367 Aufrufe
    MicM
    @fuchs1978 Auf Objekteigenschaften kannst du mit der Punkt-Notation oder der Klammer-Notation zugreifen. Die Punkt-Notation ist limitiert bezüglich der erlaubten Zeichen der Objektnamen. Also im Fall der Fälle, wie bei dir, besser mit der Klammernotation arbeiten. Siehe z.B. hier: https://codeburst.io/javascript-quickie-dot-notation-vs-bracket-notation-333641c0f781 P.S. @paul53 war schneller mit der Antwort :-)
  • Gelöst: Auslösung zwischen 17:00 und 21:00

    Gelöst javascript
    22
    0 Stimmen
    22 Beiträge
    1k Aufrufe
    M
    @Paul53: Du hattest geschrieben : [image: 1571677313027-unbenannt2.jpg] Hab noch ein "180" gefunden. [image: 1571677349311-unbenannt1.jpg] Ich bekomme bei den geänderten Script folgende WARN Meldung: [image: 1571676989714-unbenannt.jpg] Gruß Michael
  • Vbus Resol Lan Adapter Fehlermeldungen

    Ungelöst
    1
    0 Stimmen
    1 Beiträge
    314 Aufrufe
    Niemand hat geantwortet
  • Get JSON from exec in Function - Solved!

    Gelöst
    3
    0 Stimmen
    3 Beiträge
    428 Aufrufe
    I
    Hi @paul53 danke Dir für das Feedback. Dann kann ich das nicht so bauen wie ich es mir vorgestellt habe. Das Substr kürzt mir den eigentlichen Response des curl ein, da hier auch noch der Header mit zurückgegeben wird. Daher schneide ich den Teil bis der ersten { - also dem Begin des JSONs - ab. Ich habe es in der Zwischenzeit als Workarround so umgebaut, das ich mit einem 60s Trigger die Kamera auslese und dann mit dem Callback in einen State abspeichere. Wenn ich die Werte brauche, kann ich diese als JSON aus dem State lesen und den gewünschten Parameter extrahieren... /* ============================================================================= > Ließt alle Parameter einer Kamera aus und gibt sie als JSON zurück ==============================================================================*/ on({id: 'VIS.82.Ticker_60s', change: "ne"}, function (f) { console.log("Read UniFi Video Cam's"); // Kamera Flur auslesen var fCameraID = myVideoCamFlur; var fCommand = "curl -i --url 'https://" + myVideoServer + "/api/2.0/camera/" + fCameraID + "/?apiKey=" + myVideoAPIKey + "' --header 'Content-Type: application/json' --header 'Accept: application/json' --insecure -X GET"; exec(fCommand, function(err, response, errmsg) { if(err) { console.log("Fehler in der Abfrage: " + errmsg); } else { setState('VIS.82.UniFi-Video.Flur.ParameterSet', response.substr(response.search("{"),response.length-response.search("{"))); } }); // Kamera Garten auslesen fCameraID = myVideoCamGarten; fCommand = "curl -i --url 'https://" + myVideoServer + "/api/2.0/camera/" + fCameraID + "/?apiKey=" + myVideoAPIKey + "' --header 'Content-Type: application/json' --header 'Accept: application/json' --insecure -X GET"; exec(fCommand, function(err, response, errmsg) { if(err) { console.log("Fehler in der Abfrage: " + errmsg); } else { setState('VIS.82.UniFi-Video.Garten.ParameterSet', response.substr(response.search("{"),response.length-response.search("{"))); } }); }); Auslesen kann ich dann zum Beispiel ob die Kamera gerade mit Bewegungserkennung aufnimmt mit: JSON.parse(getState('VIS.82.UniFi-Video.Flur.ParameterSet').val).data[0].recordingSettings.motionRecordEnabled;
  • Timer, Countdown

    Gesperrt Gelöst javascript
    7
    0 Stimmen
    7 Beiträge
    902 Aufrufe
    M
    Danke Paul super!!!!!
  • lightify

    Ungelöst
    5
    0 Stimmen
    5 Beiträge
    528 Aufrufe
    Volker123V
    Hallo, es handelt sich hier nur um einen Ausschnitt des Codes. Ich weiß schon, dass den Variablen Werte zu gewiesen werden müssen. Hier das Beispiel für die Zuweisung der grünen Farbe: pole_gruen=getState("lightify.1.7800AE00AA3EB07C.g"/*g*/).val; es werden Zahlen zwischen eins und 255 zugewiesen. Die Zuweisung funktioniert auch, dies kann man im Codefenster durch console.log(pole_gruen); überprüfen. Die Zuweisung timeout= setTimeout(function () { setState("lightify.1.7800AE00AA3EB07C.b"/b/, pole_blau); }, 6000); timeout= setTimeout(function () { setState("lightify.1.7800AE00AA3EB07C.g"/g/, pole_gruen); }, 6000); Habe ich aus dem Objektbaum. Eigentlich sollte es funktionieren. Ich weiß nur leider nicht warum es nicht funktioniert. Volker
  • [Frage]Loglevel info nicht mehr Standard?

    Gesperrt Gelöst javascript monitoring
    4
    0 Stimmen
    4 Beiträge
    617 Aufrufe
    P
    Danke! Gruß Pix
  • console etc. unbekannt

    4
    0 Stimmen
    4 Beiträge
    655 Aufrufe
    BBTownB
    @ErazorVIP schon mal auf GitHub geschaut ob es hierzu bereits ein issue gibt auf das Du vorten könntest, oder ansonsten ein entsprechendes angelegt?
  • VIS Bindung - HTML Escapen?

    javascript
    1
    0 Stimmen
    1 Beiträge
    331 Aufrufe
    Niemand hat geantwortet
  • Syntax Check im Editor markiert korrekte Syntax

    javascript
    1
    0 Stimmen
    1 Beiträge
    159 Aufrufe
    Niemand hat geantwortet
  • Skript tatsächlicher Wert

    javascript
    7
    0 Stimmen
    7 Beiträge
    638 Aufrufe
    Jey CeeJ
    Ich hab hier mal aufgeräumt, war ganz schön Unordentlich hier
  • Wert eines Objekts aus html schreiben

    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    M
    Dieser Eintrag wurde gelöscht
  • Hilfe bei Javaskript Device Counter

    javascript
    24
    0 Stimmen
    24 Beiträge
    4k Aufrufe
    Lenny.CBL
    @Adnim, ich denke das wird noch eine andere Baustelle sein.
  • Gelöst: Script Fehler

    javascript
    19
    2
    0 Stimmen
    19 Beiträge
    1k Aufrufe
    M
    Danke klappt toll :-)
  • Telegram - Ausgabe als Ergebnispopup

    4
    2
    0 Stimmen
    4 Beiträge
    506 Aufrufe
    dslraserD
    @mirK ich weiß es nicht mehr genau, entweder war es was mit dem inline keyboard oder answer calbackquery. hier steht auch noch was https://forum.iobroker.net/topic/12042/telegram-inline-keyboard-gelöst ansonsten suchen und lesen. Hier die api https://core.telegram.org/api
  • Json aus Rest Api URL von Solaranalge

    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    L
    Könntest du mir bitte helfen wo ich die Schleife einbauen muss? Ich denke ich habe es gefunden. Aber wenn du noch mal drüber schauen würdest wär ich dankbar. Hier der aktuelle Code: //...Teil der Funktion readJson(urlDevices, function(err,json) { if(!err) { myJson = json; var arr = myJson.result.items; for(let i = 0; i < arr.length; i++) { if(arr[i].tagValues) { let tags = arr[i].tagValues; if(tags.PowerIn) { log(tags.PowerIn.value); setState(idDPowerIn ,tags.PowerIn.value); } if(tags.PowerSelfSupplied) { log(tags.PowerSelfSupplied.value); setState(idDPowerSelfSupplied ,tags.PowerSelfSupplied.value); } //...usw //der alte Code var urlValues = 'http://192.168.xxx.xxx/rest/kiwigrid/eps/powerValues'; var urlDevices = 'http://192.168.xxx.xxx/rest/kiwigrid/wizard/devices'; var path = "solarwatt."; var request = require("request"); var myJson = {}; //Values var idpowerACOut = path + "powerACOut"; var idpowerConsumed = path + "powerConsumed"; var idpowerProduced = path + "powerProduced"; var idpowerIn = path + "powerIn"; var idpowerOut = path + "powerOut"; createState(idpowerACOut, 0, { name: 'powerACOut aus', desc: 'xxxx', type: 'number', role: 'value'}); createState(idpowerConsumed, 0, { name: 'Gesamtverbrauch', desc: 'xxxx', type: 'number', role: 'value'}); createState(idpowerProduced, 0, { name: 'powerProduced', desc: 'xxxx', type: 'number', role: 'value'}); createState(idpowerIn, 0, { name: 'powerIn', desc: 'xxxx', type: 'number', role: 'value'}); createState(idpowerOut, 0, { name: 'powerOut', desc: 'xxxx', type: 'number', role: 'value'}); //Devices var idDPowerIn = path + "PowerInD"; var idDPowerSelfSupplied = path + "PowerSelfSupplied"; var idDPowerConsumedFromStorage = path + "PowerConsumedFromStorage"; var idDStateOfCharge = path + "StateOfCharge"; var idDPowerConsumedFromGrid = path + "PowerConsumedFromGrid"; var idDPowerBuffered = path + "PowerBuffered"; var idDPowerConsumedFromProducers = path + "PowerConsumedFromProducers"; createState(idDPowerSelfSupplied, 0, { name: 'Eigenverbrauch', desc: 'xxxx', type: 'number', role: 'value' }); createState(idDPowerIn, 0, { name: 'Stromzukauf', desc: 'xxxx', type: 'number', role: 'value' }); createState(idDPowerConsumedFromStorage, 0, { name: 'Batterieversorgung', desc: 'xxxx', type: 'number', role: 'value' }); createState(idDStateOfCharge, 0, { name: 'Ladestand', desc: 'xxxx', type: 'number', role: 'value' }); createState(idDPowerConsumedFromGrid, 0, { name: 'Netzbezug', desc: 'xxxx', type: 'number', role: 'value' }); createState(idDPowerBuffered, 0, { name: 'Batterieaufladung', desc: 'xxxx', type: 'number', role: 'value' }); createState(idDPowerConsumedFromProducers, 0, { name: 'Eigenverbrauch', desc: 'xxxx', type: 'number', role: 'value' }); function parseJson(text) { if (text === "") return {}; try { json = JSON.parse(text); } catch (ex) { json = {};} if(!json) json = {}; return json; } function readJson(url, callback) { request(url, function (err, state, body){ if (body) { var json = parseJson(body); callback(null, json); } else { var error = "(" + err + ") ERROR bei Abfrage von: " + url; log(error, "warn"); callback(error, null);} });} function main() { readJson(urlValues, function(err,json) { if(!err) { myJson = json; log("powerACOut: " + myJson[0].powerACOut,"info"); log("powerConsumed: " + myJson[1].powerConsumed,"info"); log("powerProduced: " + myJson[1].powerProduced,"info"); log("powerIn: " + myJson[1].powerIn,"info"); log("powerOut: " + myJson[1].powerOut,"info"); setState(idpowerACOut ,parseInt(myJson[0].powerACOut)); setState(idpowerConsumed ,parseInt(myJson[1].powerConsumed)); setState(idpowerProduced ,parseInt(myJson[1].powerProduced)); setState(idpowerIn ,parseInt(myJson[1].powerIn)); setState(idpowerOut ,parseInt(myJson[1].powerOut)); } else { log("Error reading JSON from solarwatt. No data!","warn"); myJson = {}; } }); readJson(urlDevices, function(err,json) { if(!err) { myJson = json; log("PowerIn: " + myJson.result.items[2].tagValues.PowerIn.value,"info"); setState(idDPowerIn ,myJson.result.items[2].tagValues.PowerIn.value); log("PowerSelfSupplied: " + myJson.result.items[5].tagValues.PowerSelfSupplied.value,"info"); setState(idDPowerSelfSupplied ,myJson.result.items[5].tagValues.PowerSelfSupplied.value); log("PowerConsumedFromStorage: " + myJson.result.items[5].tagValues.PowerConsumedFromStorage.value,"info"); setState(idDPowerConsumedFromStorage ,myJson.result.items[5].tagValues.PowerConsumedFromStorage.value); log("StateOfCharge: " + myJson.result.items[10].tagValues.StateOfCharge.value,"info"); setState(idDStateOfCharge ,myJson.result.items[10].tagValues.StateOfCharge.value); log("PowerConsumedFromGrid: " + myJson.result.items[5].tagValues.PowerConsumedFromGrid.value,"info"); setState(idDPowerConsumedFromGrid ,myJson.result.items[5].tagValues.PowerConsumedFromGrid.value); log("PowerBuffered: " + myJson.result.items[5].tagValues.PowerBuffered.value,"info"); setState(idDPowerBuffered ,myJson.result.items[5].tagValues.PowerBuffered.value); log("PowerConsumedFromProducers: " + myJson.result.items[5].tagValues.PowerConsumedFromProducers.value,"info"); setState(idDPowerConsumedFromProducers ,myJson.result.items[5].tagValues.PowerConsumedFromProducers.value); } else { log("Error reading JSON from solarwatt. No data!","warn"); myJson = {}; } }); }
  • Unifi WLAN Script

    Gesperrt
    380
    4
    0 Stimmen
    380 Beiträge
    96k Aufrufe
    DutchmanD
    ich schließen diesen post jetzt mal sonst kommt alles noch durcheinander, bitte hier weitermachen : https://forum.iobroker.net/topic/25066/unifi-wlan-script-2-mit-anwesenheitskontrolle
  • Playlist in Alexa2-Adapter wird nur angespielt

    3
    2
    0 Stimmen
    3 Beiträge
    320 Aufrufe
    CKMartensC
    @paul53 sagte in Playlist in Alexa2-Adapter wird nur angespielt: Damit funktioniert es nicht, da kein neues setStateDelayed() erzeugt wird, sondern nur die Übergabeparameter in der Schleife geändert werden. Tatsächlich funktioniert der Part schon bei mir. Habe es für die Erhöhung der Laustärke und um die Nachttischlampen heller werden zu lassen. let ii = 8000; for (let i = 10; i <= 20; i += 5) { ii = ii + 5000; setStateDelayed('alexa2.0.Echo-Devices.'+EchoDevice+'.Player.volume', i, ii, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Lautstärkenerhöhung für Delay in '+ii+' MSek und Lautstärke '+i); } [...] let ii = 8000; for (var i = 10; i <= 40; i += 5) { ii = ii + 2000; setStateDelayed(tmp_lichtDev, i, ii, false); if (DEBUG) log('Wecker: Wecker für '+WeckerName+' Helligkeitserhöhung für Delay in '+ii+' MSek und Helligkeit '+i); } Warum aber die Playlisten nicht immer gespielt werden, sondern manchmal nur ein paar Sekunden angespielt werden verwirrt mich. Und wie es aussieht ist meist der erste Weck-Cron betroffen.
  • node-hue-api nicht mehr lauffähig

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    J
    So wie bei Aleks liefen bei mir vor einigen Tagen die Skripte wieder. Aber das war leider nur kurzfristig. Jetzt geht wieder nichts Auf jeden Fall habe ich keine Lust mehr und werde auch auf den neuen Adapter von Zerfau umstellen und die Skripte löschen. Aber Danke für die Unterstützung hier im Forum.
  • ALEXA Szene einschalten

    6
    0 Stimmen
    6 Beiträge
    697 Aufrufe
    BENNI32154B
    @paul53 Wahrscheinlich funktioniert es jetzt. Werde es heute abend sehen.

445

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge