Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 48.8k Posts

NEWS

  • Datum im einem JSON String

    Unsolved
    3
    0 Votes
    3 Posts
    318 Views
    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

    Solved javascript
    22
    0 Votes
    22 Posts
    1k Views
    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

    Unsolved
    1
    0 Votes
    1 Posts
    278 Views
    No one has replied
  • Get JSON from exec in Function - Solved!

    Solved
    3
    0 Votes
    3 Posts
    348 Views
    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

    Locked Solved javascript
    7
    0 Votes
    7 Posts
    637 Views
    M
    Danke Paul super!!!!!
  • lightify

    Unsolved
    5
    0 Votes
    5 Posts
    323 Views
    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?

    Locked Solved javascript monitoring
    4
    0 Votes
    4 Posts
    501 Views
    P
    Danke! Gruß Pix
  • console etc. unbekannt

    4
    0 Votes
    4 Posts
    528 Views
    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 Votes
    1 Posts
    296 Views
    No one has replied
  • Syntax Check im Editor markiert korrekte Syntax

    javascript
    1
    0 Votes
    1 Posts
    135 Views
    No one has replied
  • Skript tatsächlicher Wert

    javascript
    7
    0 Votes
    7 Posts
    511 Views
    Jey CeeJ
    Ich hab hier mal aufgeräumt, war ganz schön Unordentlich hier :spock-hand:
  • Wert eines Objekts aus html schreiben

    8
    0 Votes
    8 Posts
    818 Views
    M
    Dieser Eintrag wurde gelöscht
  • Hilfe bei Javaskript Device Counter

    javascript
    24
    0 Votes
    24 Posts
    3k Views
    Lenny.CBL
    @Adnim, ich denke das wird noch eine andere Baustelle sein.
  • Gelöst: Script Fehler

    javascript
    19
    2
    0 Votes
    19 Posts
    624 Views
    M
    Danke klappt toll :-)
  • Telegram - Ausgabe als Ergebnispopup

    4
    2
    0 Votes
    4 Posts
    406 Views
    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 Votes
    10 Posts
    2k Views
    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

    Locked
    380
    4
    0 Votes
    380 Posts
    60k Views
    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 Votes
    3 Posts
    237 Views
    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 Votes
    12 Posts
    1k Views
    J
    So wie bei Aleks liefen bei mir vor einigen Tagen die Skripte wieder. Aber das war leider nur kurzfristig. Jetzt geht wieder nichts :imp: 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 Votes
    6 Posts
    515 Views
    BENNI32154B
    @paul53 Wahrscheinlich funktioniert es jetzt. Werde es heute abend sehen.

429

Online

32.6k

Users

82.1k

Topics

1.3m

Posts