Skip to content

JavaScript

2.5k Topics 49.7k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • (gelöst) State-Änderung wird nicht mehr erkannt im JS

    3
    0 Votes
    3 Posts
    322 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
    803 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
    561 Views
    Martin SteinerM
    [image: 1624225554834-loxone.jpg]
  • Erstes Scipt reagiert nicht wie geplant

    javascript
    12
    0 Votes
    12 Posts
    774 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
    175 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
    774 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
    503 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
    480 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
    258 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
    287 Views
    No one has replied
  • compile failed

    5
    0 Votes
    5 Posts
    531 Views
    S
    @paul53 said in compile failed: Deaktiviere oder lösche das globale Skript von linkeddevices. das war es! Nun ist der Fehler weg. Da das Script durch die Instanz/Adapter kam, hatte ich hier nicht drüber nachgedacht. Wieder was gelernt!
  • Schleife mit setTimeout + clearTimeout

    3
    0 Votes
    3 Posts
    307 Views
    P
    @paul53 Vielen dank Dir Ich Stand wirklich auf dem Schlauch. Jetzt wo ich das so sehe loglisch :)
  • [gelöst] opensprinkler json parsen

    6
    0 Votes
    6 Posts
    1k Views
    E
    Hallo, ich habe diese Lösung umgesetzt. Vielen Dank für die Hilfe wie man diese Punkte richtig parsen kann. Ich habe zwei Sachen verändert: statt unter "0_userdata.0.Rainbird.Kreis" liegen bei mir die Punkte in Javascript unter "javascript.0.opensprinkler.kreis". Ich frage alle 15 Sekunden ab Alles läuft wie gewünscht. const url = 'http://10.0.1.175/js?pw=24e24cb0a659595c91c840c448ebe5'; const dpPath = 'javascript.0.opensprinkler.kreis'; // 8 Datenpunkte "Kreis1 ... 8", Typ "boolean" schedule('*/15 * * * * *', function() { // jede Minute request(url, function(error, response, result) { let arr = JSON.parse(result).sn; for(let i = 0; i < arr.length; i++) { setState(dpPath + (i + 1), !!arr[i], true); } }); }); Danke für Eure Hilfe... Beste Grüße Elluminatus!
  • Aus json(parse) Element auslesen

    4
    0 Votes
    4 Posts
    483 Views
    Chris 5C
    @chris-5 sagte in Aus json(parse) Element auslesen: @paul53 sagte in Aus json(parse) Element auslesen: res.weather[0].sunshine PERFECT !!! Danke - wenn man keine Ahnung hat einfach mal die Fachleute fragen ;-) Hast Du noch einen Tipp wie ich die Anzahl der Datensätze rausbekomme? also: wiviele es von den res.weather[X].sunshine im Datensatz gibt? Merci OK ist ja auch eigentlich klar: res.weather.length liefert das gewünschte Ergebniss.
  • JavaScript importieren

    4
    0 Votes
    4 Posts
    455 Views
    D
    @joergeli super, genau so hat es funktioniert, liegt wohl wirklich daran das es mit rechter Maustaste kopieren/einfügen nicht funktioniert.
  • 2 Datenpunkte als Oder-Verknüpfung abfragen

    5
    0 Votes
    5 Posts
    546 Views
    M
    @htrecksler Danke für die Info.
  • [s]schedule bringt "TypeError CronDate is not a constructor"

    4
    0 Votes
    4 Posts
    350 Views
    S
    @Ahnungsbefreit vergiss es. Als ich gerade die Infos vorbereiten wollte, konnte ich den Fehler in keinem Script mehr reproduzieren. Kein Plan was da mal wieder schief gegangen ist, heute morgen musste ich den schedule in allen Scripten auskommentieren damit sie liefen... Muss mein mieses Karma gewesen sein. Aber ganz herzlichen Dank für Deine Bemühungen.
  • alexa2 adapter - Reminder wieder löschen nach dem Anlegen

    javascript
    3
    0 Votes
    3 Posts
    273 Views
    jirziJ
    @padrino Vielen Dank das hat mir schon geholfen. In javascript sieht's dann so aus: on( { id: new RegExp("alexa2.0.Echo-Devices.*.Reminder.*.time"), change: "ne"}, async function (obj) { // obj.id is something like // alexa2.0.Echo-Devices.H090LF9374812985S.Reminder.4b45a58a-c575-43c2-9fb3-35efabde6b99.time var reminderId = obj.id.split('.').splice(-2, 1)[0]; // 4b45a58a-c575-43c2-9fb3-35efabde6b99 }); Viele Grüße
  • JavaJcript und Astro Funktion macht Propleme

    16
    2
    0 Votes
    16 Posts
    2k Views
    paul53P
    @e-s sagte: ob ich das einfach raus werfe Würde ich empfehlen. @e-s sagte in JavaJcript und Astro Funktion macht Propleme: ob man dies automatisch abfangen kann. Das ist auch möglich, aber nicht ganz einfach: Prüfen, ob die Höhe zum Zeitpunkt "nadir" < -18 ° ist.

451

Online

33.0k

Users

83.4k

Topics

1.3m

Posts