Skip to content

JavaScript

2.5k Topics 49.9k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • javaskript variablen monitoren

    Moved
    9
    0 Votes
    9 Posts
    503 Views
    AlCalzoneA
    Hmm, dann macht doch bitte mal ein Issue in https://github.com/ioBroker/ioBroker.javascript auf, damit man sich das anschauen kann.
  • Script läuft nach Umzug auf anderen Server nicht mehr

    14
    0 Votes
    14 Posts
    922 Views
    R
    @paul53 danke für den Hinweis.
  • Funktionen nacheinander aufrufen

    javascript
    4
    0 Votes
    4 Posts
    478 Views
    XenonX
    du wirst dich mit asynchroner Programmierung befassen müssen
  • Korrekte Liste entgangener Anrufe mittels dem tr-064 Adapter

    Moved
    5
    0 Votes
    5 Posts
    839 Views
    S
    @paul53 Suuper! Es funktioniert! Vielen Dank!
  • Telegram: Timeout bei "ask" konfigurieren

    7
    0 Votes
    7 Posts
    911 Views
    F
    @nokxs sagte in Telegram: Timeout bei "ask" konfigurieren: @fastfoot Ich hab jetzt deinen Vorschlag umgesetzt, die Zeile gepatcht und es funktioniert . Falls ich etwas Zeit finde baue ich die Konfiguration in die GUI ein und mache einen Pull Request :-) . Danke für die schnelle Hilfe. evtl ist es besser ein issue aufzumachen, hatte mir das mit der GUI auch überlegt, aber dann nicht gewusst wo das Setting eigentlich hin sollte :-)
  • HTML Tabelle für DP mit History Einträgen

    template
    22
    2
    4 Votes
    22 Posts
    4k Views
    S
    @liv-in-sky danke... der Datenpunkt passt! Über ein blockly kann ich so die bash schreiben. [image: 1625382535575-image-010.jpg] (kann man wahrscheinlich noch in dein Skript integrieren) Ergebnis: #!/bin/bash influx -execute 'delete from "Heizung.Badezimmer.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Schlafzimmer.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Kueche.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Wohnzimmer.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Buero.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Flur.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Esszimmer.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Atelier.Ventil" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Trockner.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Geschirrspueler.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Waschmaschine.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.TV.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Esszimmer.Temperatur.Soll" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Server.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.TanjaPC.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Luftbefeuchter.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Kuehlschrank.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Gefrierschrank.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.Rauchabzug.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Plugs.MichaPC.Power" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Luftdruck.Aussen" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Luftdruck.Aussen_max" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Luftdruck.Aussen_min" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Außen.MAX" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Außen.MIN" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Außen.Tagesdurchschnitt" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Außen.Tagesdurchschnitt2" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Außen.Tagesdurchschnitt3" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "BMW_3er_Leasing.Tagesverbrauch.Liter_100km_History" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Leasing.Tagesverbrauch.Test-Tankfuellung" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Leasing.tanken.KM-APP" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Leasing.tanken.KM-Jahr-Leasing" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "Leasing.tanken.Liter-100KM-Gesamt" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "Leasing.tanken.Liter-100KM-Strecke" where time < '\'`date +%Y-%m-%d -d "730 day ago"`\' -database="iobroker" influx -execute 'delete from "bmw.0.WBA6K31010FK63788.dynamic.remaining_fuel" where time < '\'`date +%Y-%m-%d -d "92 day ago"`\' -database="iobroker" influx -execute 'delete from "Gasverbrauch.15min.Grenzwert" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Gasverbrauch.15min.Aktuell" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Gasverbrauch.Monat.Grenzwert" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Gasverbrauch.Tag.Grenzwert" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Gasverbrauch.Tag.Aktuell" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Sonne.Lux.Aktuell2" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Sonne.Lux.Max" where time < '\'`date +%Y-%m-%d -d "365 day ago"`\' -database="iobroker" influx -execute 'delete from "Sonne.Lux.Aktuell" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Luftdruck.Aussen_24h" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Kuehlschrank.24h" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "System.Master.Disk" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "System.Slave1.Disk" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "System.Slave1.RAM" where time < '\'`date +%Y-%m-%d -d "14 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Bad.Max" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Bad.Min" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Badezimmer.Temperatur.Soll" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Buegelzimmer.Max" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Buegelzimmer.Min" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Buegelzimmer.Temperatur.Soll" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Buero.Max" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Buero.Min" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Buero.Temperatur.Soll" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Dachboden.Max" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Dachboden.Min" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Flur.Max" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Flur.Min" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Flur.Temperatur.Soll" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Kueche.Max" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Temperaturen.Kueche.Min" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" influx -execute 'delete from "Heizung.Kueche.Temperatur.Soll" where time < '\'`date +%Y-%m-%d -d "31 day ago"`\' -database="iobroker" Danke dir!
  • Fehler bei konstanten Variablen

    7
    0 Votes
    7 Posts
    910 Views
    P
    @alcalzone Vielen lieben Dank dir!!
  • States Namen von vordefinierter Auswahl

    2
    1
    0 Votes
    2 Posts
    144 Views
    paul53P
    @mcu sagte: Wie kann man an den Wert kommen? Der Wert ist wahrscheinlich im Objekt unter common.states zu finden. const id = '0_userdata.0.jarvis.pollenflug.LandesKennung'; let Landeskenn = getObject(id).common.states[getState(id).val];
  • Objekt IDs in Skripten auf Konsistenz prüfen

    7
    0 Votes
    7 Posts
    637 Views
    C
    @paul53 Perfekt, das hat mir schon mal ordentlich weitergeholfen! Folgendes gibt jetzt die Skripte mit den zugehörigen Objekt IDs aus (wenn diese im Code mit einem Hochkomma eingeschlossen sind): const regex = new RegExp(`'[a-z]*\.0\.[a-zA-Z0-9.]*'`, `g`); const scripts = $('javascript.0.scriptEnabled.*'); scripts.each(function(id) { id = id.replace('javascript.0.scriptEnabled', 'script.js'); if(existsObject(id) && getObject(id).type == 'script') { var source = getObject(id).common.source; var matches = source.match(regex); if (matches != null) { matches.forEach(function (element) { log(id + ' --> ' + element); }); } } }); Gibt mir noch ein paar falsche Treffer, da muss sich noch ein wenig Feintuning betreiben, aber grob passt das so. Vielen Dank für Eure Hilfe! Jan
  • (gelöst) State-Änderung wird nicht mehr erkannt im JS

    3
    0 Votes
    3 Posts
    336 Views
    haselchenH
    @paul53 magst Du oben mal bitte über das Script gucken. Der Bewegungsmelder funktioniert jetzt, aber das Skript wird nicht abgearbeitet.
  • Javascript WLED

    6
    0 Votes
    6 Posts
    884 Views
    arteckA
    @iobroker-lover sagte in Javascript WLED: zu diesen global scripts global script bedeutet im iobroker dass dieser VOR jedem anderen script eingefügt wird.. nicht meher ersetze const axios = require('axios').default; durch const axios = require('axios'); axios.defaults.timeout = 5000; // timeout 5 sec ansonsten kannst den rest stehen lassen
  • Hilfe - Javaskript: Zahl bei Änderung senden

    8
    0 Votes
    8 Posts
    596 Views
    Martin SteinerM
    [image: 1624225554834-loxone.jpg]
  • Erstes Scipt reagiert nicht wie geplant

    javascript
    12
    0 Votes
    12 Posts
    840 Views
    R
    Das Problem mit dem Array habe ich gelöst. Vielleicht nicht die Eleganteste Lösung aber zumindest der Teil mit den Datenpunkten funktioniert. Nur leider bringt mir das mit meiner Situation im Habpanel nicht weiter. Aber trotzdem wollte ich mal mein Code zeigen, der mit Sicherheit nicht der eleganteste ist, aber er funktioniert. on({id: 'hm-rpc.0.PEQ0177610.1.PRESS_SHORT'/*Display Wz:1 PRESS SHORT*/}, function (obj) { var favoritenliste = getState("javascript.0.sonos.favTexte").val; var listederfavoriten = favoritenliste.split(";"); var aneueliste = ["a","b"]; var sneueliste = "a"; var elemente = listederfavoriten.length; console.log(elemente); for (var i = 0; i<elemente; i++) { aneueliste[i] = listederfavoriten[i] + "=" + listederfavoriten[i]; console.log(aneueliste[i]); } setState("javascript.0.sonos.favoriten", aneueliste.join(",")); }); Mein Plan war es eigentlich über meinen neu erzeugten Datenpunkt die Items des Auswahlwidgets zu erzeugen, nur leider klappt das nicht wie erhofft. Bei der Manuell erzeugten Liste, ändert das Auswahlwidget beim auswählen den Datenpunkt vom Sonos, welcher den aktuellen Favoriten in die Wiedergabe bringt. Also den Datenpunkt favorietes_set mit der Auswahl füllt. [image: 1623964361676-cf1a577c-0a77-4a30-bde7-82d3f2658639-grafik.png] Vielleicht hat von euch jemand eine Idee oder kennt eine Möglichkeit für mein Problem. Ich hoffe man versteht was ich machen möchte und wozu. Michael
  • Globale Skripte funktionieren nicht mehr

    2
    0 Votes
    2 Posts
    182 Views
    M
    @mhuhn Ich sehe gerade an der Logausgabe, dass das globale Skript offenbar schon in das andere Skript übernommen wird, da die Ausgabe von "LibTest" im Log ja von LibClientTest erfolgt ist. Allerdings funktioniert die Variable nicht.
  • Gartenbewässerung (später dann Dauer über Jarvis einstellen)

    6
    0 Votes
    6 Posts
    801 Views
    paul53P
    @luebke69 sagte: gegen 20:15 Uhr) nacheinander für eine bestimmte Zeit (20 Minuten und später dann über Jarvis einstellen...) laufen sollen. Dann soll je nach Regenmenge gestern und heute, aktuell Regen und starkem Wind die Sprenger aus- oder gar nicht erst angehen. Version mit gleicher Dauer für alle 6 Ventile und mit Datenpunkten für "genug Regen", "aktuell Regen" und "starkem Wind". const idDauer = '0_userdata.0.Garten.Bewaesserung.Dauer'; // Dauer pro Ventil in Minuten const idRegen = '...'; // es regnet const idFeucht = '0_userdata.0.Garten.Bewaesserung.Boden_feucht'; // heute, gestern war genug Regen const idSturm = '0_userdata.0.Garten.Bewaesserung.Sturm'; // Starker Wind const ids = [ '', // Platz für ID des gerade offenen Ventils 'id1', 'id2', 'id3', 'id5', 'id5', 'id6' ]; var ventil = 0; // kein Ventil offen var dauer = 60000 * getState(idDauer).val; on(idDauer, function(dp) { dauer = 60000 * dp.state.val; }); var timer = null; function ventile() { if(ids[0]) setState(ids[0], false); // Ventil schließt ventil++; if(ventil <= 6) { setState(ids[ventil], true); // Ventil öffnet ids[0] = ids[ventil]; timer = setTimeout(ventile, dauer); } else { ventil = 0; ids[0] = ''; timer = null; } } function abbruch() { if(timer) clearTimeout(timer); timer = null; if(ids[0]) setState(ids[0], false); ventil = 0; ids[0] = ''; } var regen = getState(idRegen).val; var feucht = getState(idFeucht).val; var sturm = getState(idSturm).val; on(idRegen, function(dp) { regen = dp.state.val; if(regen) abbruch(); }); on(idSturm, function(dp) { sturm = dp.state.val; if(sturm) abbruch(); }); on(idFeucht, function(dp) { feucht = dp.state.val; }); schedule('15 20 * * *', function() { if(!regen && !feucht && !sturm) ventile(); });
  • Javascript verändern

    javascript
    6
    0 Votes
    6 Posts
    514 Views
    R
    @chrunchy Ich habe es getestet, nur leider ohne Erfolg. Aber naja ich denke, ich werde mich mit JavaScript mehr auseinander setzen und naja was eigenes entwickeln müssen. Leider finde ich den hier im Forum nicht mehr, der mir damals geholfen hat. Aber naja hat auch was gutes. Nächste mal bekomme ich es vielleicht selber hin. Muss nur gucken wie ich ans Ziel komme. Bis dahin wird es noch etwas dauern, aber es wird schon irgendwie. Muss nur gucken, wie ich ein Array erstelle, zerlege und im Anschluß neu zusammenfüge. Michael
  • Konfiguration für eigene Scripts

    7
    0 Votes
    7 Posts
    494 Views
    F
    @misterkrueml mich hat halt gestört, für ein Skript 2 Dateien zu haben, meist sind meine Projekte recht klein. Gefallen hat mir bei require() der Einzeiler :-)
  • Wie mehrere Werte nach Änderung synchron verrechnen

    13
    0 Votes
    13 Posts
    1k Views
    mickymM
    @sputnik24 Genau. Freut mich dass es klappt. Ich bin ja deswegen von 250ms zwischen 2 on events ausgegangen, da ich das schon mehrfach als magisch e Grenze gesehen habe. Letztlich finde ich den Verzug insgesamt zugunsten der Akuratess eher zu verschmerzen. Schließlich heißt es das ja nicht, dass es jedesmal 250ms sind. Sondern nur 250ms nach dem letzten Event. Aktualisieren sich die Werte schneller um so eher beginnt ja auch der Timer abzulaufen. Die Zeitspanne multipliziert sich also nicht mit der Anzahl der Datenpunkte. Das Produkt stellt lediglich den maximalen Delay dar, ist aber eben nicht konstant.
  • Von ausserhalb einen grösseren Wert speichern?

    2
    0 Votes
    2 Posts
    275 Views
    M
    @dominic-reber Brauchst du denn alle Werte der JSON oder nur bestimmte. Kannst du dann nicht nur die bestimmten Werte schicken?
  • Viessmann API Zeitprogramm ändern

    1
    0 Votes
    1 Posts
    291 Views
    No one has replied

349

Online

33.0k

Users

83.7k

Topics

1.3m

Posts