Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Themen 48.3k Beiträge

NEWS

  • Hilfe bei Javaskript Device Counter

    javascript
    24
    0 Stimmen
    24 Beiträge
    3k 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
    590 Aufrufe
    M
    Danke klappt toll :-)
  • Telegram - Ausgabe als Ergebnispopup

    4
    2
    0 Stimmen
    4 Beiträge
    379 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
    57k 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
    220 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 :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 Stimmen
    6 Beiträge
    480 Aufrufe
    BENNI32154B
    @paul53 Wahrscheinlich funktioniert es jetzt. Werde es heute abend sehen.
  • Objektordner in Adapter zählen

    javascript
    1
    0 Stimmen
    1 Beiträge
    171 Aufrufe
    Niemand hat geantwortet
  • Problem mit einem Cronjob

    1
    0 Stimmen
    1 Beiträge
    97 Aufrufe
    Niemand hat geantwortet
  • Nello Telegram

    33
    0 Stimmen
    33 Beiträge
    2k Aufrufe
    ZefauZ
    @Marek Nimm den neuen Code?
  • Gelöst: JS: Wie erst nach File-Erstellung weiter?

    javascript
    6
    1 Stimmen
    6 Beiträge
    794 Aufrufe
    AlCalzoneA
    @Mic sagte in Gelöst: JS: Wie erst nach File-Erstellung weiter?: einfach mal 2 Sekunden mittels setTimeout() setzen, um zu "hoffen", dass dann die vorherige Funktion durchlaufen ist. :scream:
  • Mac adressen in true und false umwandeln

    3
    0 Stimmen
    3 Beiträge
    260 Aufrufe
    R
    Hallo sigi 234 Hier ist das Blockly [image: 1569866033910-blockly.png] Danke LG Roland1000
  • [Gelöst] Probleme mit Script für Tageserträge

    4
    1
    0 Stimmen
    4 Beiträge
    286 Aufrufe
    C
    Ich habe das Script nun vom Aufbau her umgebaut. So funktioniert es jetzt: schedule('* * * * *', function() { // sendTo('sql.0', 'query', 'SELECT (from_unixtime((ts / 1000))) AS Datum, MAX(val) AS Tageswert FROM iobroker.ts_number WHERE (iobroker.ts_number.id = 8) GROUP BY DAY((from_unixtime((ts / 1000)))) ORDER BY Datum desc LIMIT 7', function (result) { if (result.error) { console.error(result.error); } else { console.log(result.result[0].Tageswert); console.log(result.result[1].Tageswert); console.log(result.result[2].Tageswert); console.log(result.result[3].Tageswert); console.log(result.result[4].Tageswert); console.log(result.result[5].Tageswert); console.log(result.result[6].Tageswert); var Energie_Heute = (result.result[0].Tageswert); var Energie_Gestern = (result.result[1].Tageswert); var Energie_Differenz_Heute = (result.result[0].Tageswert) - (result.result[1].Tageswert); var Energie_Differenz_1 = (result.result[1].Tageswert) - (result.result[2].Tageswert); setState("javascript.0.Zählerstand_Jetzt", Energie_Heute.toFixed(2)); setState ("javascript.0.Zählerstand_Gestern", Energie_Gestern.toFixed(2)); setState("javascript.0.Energie_Differenz_Heute", Energie_Differenz_Heute.toFixed(2)); setState("javascript.0.Energie_Differenz_1", Energie_Differenz_1.toFixed(2)); } }); // });
  • Pushover Callback nutzen

    1
    1 Stimmen
    1 Beiträge
    145 Aufrufe
    Niemand hat geantwortet
  • Eintastensteuerung für AN/AUS/Dimmen möglich?

    3
    0 Stimmen
    3 Beiträge
    229 Aufrufe
    S
    @Jey-Cee jepp, das sollte mir weiter helfen als Ansatz. Ich meine mich zu erinnern, das die Hue Bridge nicht on the fly auf Änderungen reagiert. Aber das kann man ja testen... danke soweit erst mal
  • Zugriff auf USB Schnittstelle

    node-red communication javascript blockly
    13
    1
    0 Stimmen
    13 Beiträge
    3k Aufrufe
    AlCalzoneA
    Folgendes dürfte auch gehen: npx @serialport/list Dauert dann etwas, dann sollte eine Liste der derzeit erreichbaren Serial ports kommen.
  • [Gelöst] Änderung von Statusberichten

    14
    0 Stimmen
    14 Beiträge
    707 Aufrufe
    paul53P
    @DocGame sagte: Funktioniert Prima. Dann markiere bitte das Thema in der Überschrift als [gelöst]. Ich denke, das ich das ganze auch auf Temperatur ändern kann. Ja, sicher. @DocGame sagte in Änderung von Statusberichten: Nur mir den Fenstern (Boolsche Werte) wird es so vermutlich nicht hinhauen. Es unterscheidet sich nur in der Abfrage: if(value) { // Fenster offen (push() natürlich ohne %) und im Trigger.
  • [gelöst ]javascript "warn" bei setState

    2
    0 Stimmen
    2 Beiträge
    384 Aufrufe
    G
    OK, wenn man langer genug sucht und einiges ausprobiert, sind die Fehler weg: Es muss nicht 'send' sondern einfach nur true heissen... Jetzt lüppt es!
  • Homematic, CuxD und Harmony Hub

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    C
    Danke für Eure Hilfe, aber ich komme leider nicht damit klar. So wie ich das sehe ist durch das Skript völlig egal wie der Wert ist sobald er was anderes als 0 oder 1 ist fängt er an zu synchronisieren, da er sich aber dann automatisch wieder ändert endet das in einer Endlosschleife die nach 10 Sekunden zum Absturz des Systems führt. Es geht auch viel zu schnell um irgendwas zu erkennen. ich sehe nur den wechsel zwischen 0-2. Und das Log hat innerhalb von ein paar Sekunden mehrere 1000 neue Einträge. Ein Bekannter der programmiert meinte es reicht wenn das Skript angepasst wird, dass er die Werte die er nicht braucht (2) irgnoriert bzw so tut als ob es eine 1 ist. Allerdings habe ich davon überhaupt keine Ahnung. Was vis ist bzw was damit gemeint ist weiß ich auch leider nicht. Ich könnte mal ein kleines Video drehen falls es noch irgendjemand interessieren sollte ;-)

834

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge