Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 49.1k Posts

NEWS

  • 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
    636 Views
    M
    Danke klappt toll :-)
  • Telegram - Ausgabe als Ergebnispopup

    4
    2
    0 Votes
    4 Posts
    440 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
    64k 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
    253 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
    572 Views
    BENNI32154B
    @paul53 Wahrscheinlich funktioniert es jetzt. Werde es heute abend sehen.
  • Objektordner in Adapter zählen

    javascript
    1
    0 Votes
    1 Posts
    189 Views
    No one has replied
  • Problem mit einem Cronjob

    1
    0 Votes
    1 Posts
    97 Views
    No one has replied
  • Nello Telegram

    33
    0 Votes
    33 Posts
    2k Views
    ZefauZ
    @Marek Nimm den neuen Code?
  • Gelöst: JS: Wie erst nach File-Erstellung weiter?

    javascript
    6
    1 Votes
    6 Posts
    875 Views
    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 Votes
    3 Posts
    292 Views
    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 Votes
    4 Posts
    388 Views
    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 Votes
    1 Posts
    148 Views
    No one has replied
  • Eintastensteuerung für AN/AUS/Dimmen möglich?

    3
    0 Votes
    3 Posts
    291 Views
    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 Votes
    13 Posts
    3k Views
    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 Votes
    14 Posts
    963 Views
    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 Votes
    2 Posts
    399 Views
    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 Votes
    12 Posts
    2k Views
    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 ;-)

577

Online

32.7k

Users

82.5k

Topics

1.3m

Posts