Weiter zum Inhalt

JavaScript

2.5k Themen 49.2k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Import Statement

    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    J
    @derstecher gibt auch von mir einen daumen für die idee.
  • Rückgabe eines Wertes per return

    javascript
    6
    0 Stimmen
    6 Beiträge
    250 Aufrufe
    bahnuhrB
    @fastfoot Danke auch dir. Ich schau es mir an. Mit diesem await, promise, then steh ich noch ein bisschen auf Kriegsfuß.
  • rpi2 adapter - GPIOS programmtechnisch aktivieren

    1
    0 Stimmen
    1 Beiträge
    175 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Aufzählungen Toggeln

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    HomoranH
    @ben1983 sagte in [gelöst] Aufzählungen Toggeln: die stat dem setstae ein toggleState macht. wir drehen uns im Kreis! du willst anscheinend nicht toggeln, weil @homoran sagte in [gelöst] Aufzählungen Toggeln: hast du z.b. drei Lampen, von denen 2 AN sind, würde toggeln dazu führen, dass anschließend 2 Lampen AUS und eine AN sind.
  • on id change subscription mit mehreren Variablen

    5
    0 Stimmen
    5 Beiträge
    602 Aufrufe
    OliverIOO
    @neueklasse Das ist eine neuere Form der Funktion, diengegenüber der bisherigen in bestimmten Situationen Vorteile hat. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions?retiredLocale=de
  • GO-e und API V2

    13
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    HomoranH
    @randyandy sagte in GO-e und API V2: Bist DU der Entwickler der App ? Wenn ja, dann kann ich wahrscheinlich lange auf das Feature warten ! bitte einen vernünftigen Umgangston
  • JPG Bild von Webcam um 90° drehen

    4
    0 Stimmen
    4 Beiträge
    486 Aufrufe
    crunchipC
    @flexer du kannst im blockly je javascript Funktion einbauen [image: 1681469774846-533e44b4-16c0-4cc0-9645-696d833bb9a6-image.png]
  • [gelöst] key mit größten Wert in Struktur herausfinden

    8
    0 Stimmen
    8 Beiträge
    186 Aufrufe
    OliverIOO
    @ben1983 Beispiel siehe maxVal Beispiel von fastfood
  • Farbe des basic Bars zum Wert des Datenpunktes ändern

    javascript
    5
    3
    0 Stimmen
    5 Beiträge
    361 Aufrufe
    I
    @mcu Danke, an so Kleinigkeiten kann man verzweifeln. NACHTRAG: hatte noch einen Fehler in der Formel, durch copy and paste stimmte der Pfad zu dem Wert nicht {n:alias.0.Bezug_Leistung_total;n< -0.3 ?"green":n> 0.3 ?"red":"yellow"} jetzt funktioniert es Grün bei Einspeisung, Gelb ein kleiner Bereich von + - 0,3 kWh wenn wenig Strom fließt und Rot bei Bezug.
  • Google Fotos API Authentifizierung

    2
    0 Stimmen
    2 Beiträge
    271 Aufrufe
    M
    @maxpd Jemand einen Tipp?
  • Rückgabe body & error von request sind keine strings?

    5
    0 Stimmen
    5 Beiträge
    432 Aufrufe
    OliverIOO
    @gutgut30 said in Rückgabe body & error von request sind keine strings?: Ich war von groovy irgendwie mit error.toString auf dem Holzweg. Läuft jetzt fast richtig. error.toString() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString?retiredLocale=de aber bei den meisten Objekten kommt dann halt nur '[object Object]' raus. die wenigsten überlagern die Methode der Object-Klasse mit einer eigenen toString() Methode
  • Zykl. getState-Aufrufe vs. eigenes "Cache-Dictionary"

    18
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    F
    Ich bin selbst leicht "erstaunt", das es funktioniert, weil eigentlich darf die gecachte Instanz nur die default 1000 setState pro Minute triggern, aber der callback in den subscriptions läßt sich evtl. nicht auf die zurückverfolgen, oder ist so schnell rum, das noch kein Limiter anspricht? Und weil ich es in meiner "leeren" Instanz.1 getestet habe, läuft da auch sonst gar nix "use strict"; const loops=5000; let start=0; let end=0; async function test_asyncStartPingPong() { // short delay, to let everything register... await new Promise(r => setTimeout(r, 2000)); console.log("Start "+loops+".loops PingPong now!"); start=Date.now(); // start ping pong await setStateAsync('0_userdata.0.test1',loops); } on({id: '0_userdata.0.test1', change:'any'}, function (obj) { setState('0_userdata.0.test2', obj.state.val-1); }); on({id: '0_userdata.0.test2', change:'any'}, function (obj) { if (obj.state.val>0) setState('0_userdata.0.test1', obj.state.val-1); else { end=Date.now(); console.log(loops+".loops PingPong, received .val "+obj.state.val+" in " + obj.id + ", delta " + (end-start) + "ms"); } }); test_asyncStartPingPong(); Ohne "Caching" geht gar nix, obwohl in meinem Script keine getStates sind, werden welche angemosert, und globale/common Files habe ich keine expliziten in Instanz.1. Und die Werte schwanken "stark", der erste Wert ist direkt nach dem ich die Instanz neu gestartet habe, da ist die aber im Hintergrund evtl. noch dabei, den Cache zu füllen, nach 5 min Wartezeit ist das ganze 10x schneller, dann sogar nochmal etwas schneller, und dann ist es deutlich langsamer, da kann halt auch noch sonstwas auf dem ioBroker los sein, oder auch die anderen VMs auf dem esxi könnten "sonstwas" treiben... 21:59:15.800 info javascript.1 (327919) Start javascript script.js.TestInstanz1.PerformanceTests 21:59:15.813 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: registered 4 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 21:59:17.813 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: Start 5000.loops PingPong now! 22:00:00.194 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: 5000.loops PingPong, received .val -1 in 0_userdata.0.test2, delta 42380ms 22:05:12.407 info javascript.0 (327870) Stop script script.js.TestInstanz1.PerformanceTests 22:05:12.413 info javascript.1 (327919) Stop script script.js.TestInstanz1.PerformanceTests 22:05:12.416 info javascript.1 (327919) Start javascript script.js.TestInstanz1.PerformanceTests 22:05:12.422 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: registered 4 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 22:05:14.422 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: Start 5000.loops PingPong now! 22:05:19.332 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: 5000.loops PingPong, received .val -1 in 0_userdata.0.test2, delta 4910ms 22:05:42.881 info javascript.0 (327870) Stop script script.js.TestInstanz1.PerformanceTests 22:05:42.885 info javascript.1 (327919) Stop script script.js.TestInstanz1.PerformanceTests 22:05:42.931 info javascript.1 (327919) Start javascript script.js.TestInstanz1.PerformanceTests 22:05:42.934 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: registered 4 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 22:05:44.934 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: Start 5000.loops PingPong now! 22:05:49.415 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: 5000.loops PingPong, received .val -1 in 0_userdata.0.test2, delta 4481ms 22:06:04.647 info javascript.1 (327919) Stop script script.js.TestInstanz1.PerformanceTests 22:06:04.646 info javascript.0 (327870) Stop script script.js.TestInstanz1.PerformanceTests 22:06:04.650 info javascript.1 (327919) Start javascript script.js.TestInstanz1.PerformanceTests 22:06:04.653 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: registered 4 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 22:06:06.653 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: Start 5000.loops PingPong now! 22:06:17.941 info javascript.1 (327919) script.js.TestInstanz1.PerformanceTests: 5000.loops PingPong, received .val -1 in 0_userdata.0.test2, delta 11287ms Ich danke, man kann so eine ungefähre Aussage zur RoundTrip-Zeit machen, im Optimalfall ist es ca. 1 ms, die es vom setState bis zur Ankunft im subscribe-Callback braucht (auf meinem 3,7GHz-Xeon). Christian
  • WARN deprecated npm "Bitte um Hilfe"

    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    OliverIOO
    @pat Zur Information warum request deprecated ist kannst du hier lesen https://github.com/request/request/issues/3142 Grundsätzlich ist Request immer noch eine hervorragende Bibliothek, welche durch Iobroker ebenfalls noch verwendet wird. Daher musst du eigentlich nichts umstellen. Wenn dich diese Warnmeldungen wirklich stören, musst du die verwendete Bibliothek von Request auf beispielsweise Axios umstellen https://www.npmjs.com/package/axios
  • [gelöst] Script setzt keine states

    4
    0 Stimmen
    4 Beiträge
    129 Aufrufe
    jmeister79J
    @gaspode danke @Ro75 Danke Ich bin sooo dumm. Hatte mich über die Roten einträge geärgert... 1000 Dank
  • Gelöst: Trigger mit mehreren Auslösern

    5
    0 Stimmen
    5 Beiträge
    406 Aufrufe
    S
    @paul53 Vielen Dank, du hast Recht, so ist es wirklich besser. Bei nur einem Code hatte es gut geklappt. Ich hatte dann noch ein paar andere RFCodes mit anderen Aktionen in das Script aufgenommen und nur mit der "dp.state.val == " Variante klappt das wirklich sauber.
  • Comparetime mit GMT Zeiten

    3
    0 Stimmen
    3 Beiträge
    131 Aufrufe
    W
    @liv-in-sky Danke für den Tipp mit dem umrechnen in GMT, ich bin aber ehrlich gesagt ein Freund von Programmcode, bei dem ich auch nach einem halben Jahr noch auf den ersten Blick sehe, was da eigentlich passiert. Ich habe das jetzt wie folgt gelöst (könnte man natürlich auch als Einzeiler screiben): var Now = new Date(); console.log("GMT " + formatDate(GMT(Now), "YYYY.MM.DD_hh:mm")); console.log("MEZ " + formatDate(Now, "YYYY.MM.DD_hh:mm")); var CompareMEZ = compareTime("12:00", "14:00", "between") var CompareGMT = CompareTimeGMT("12:00", "14:00", "between"); console.log("CompareGMT " + CompareGMT + " CompareMEZ " + CompareMEZ); function GMT(Time){ var TimeNumber = Number(Time); var TimeOffset = Time.getTimezoneOffset(); // Minuten, negativ: -60 Winter, -120 Sommer return new Date(TimeNumber + TimeOffset * 60 * 1000); } function CompareTimeGMT(startTime, endTime, operation){ var NowGMT = GMT(new Date()); return(compareTime(startTime, endTime, operation, NowGMT)); } Das Ergebnis ist: 14:47:27.957 info javascript.0 (1498) script.js.Programmieren.Zeiten.gmt: GMT 2023.04.07_12:47 14:47:27.957 info javascript.0 (1498) script.js.Programmieren.Zeiten.gmt: MEZ 2023.04.07_14:47 14:47:27.958 info javascript.0 (1498) script.js.Programmieren.Zeiten.gmt: CompareGMT true CompareMEZ false
  • Trigger zum einschalten -nur 1x

    11
    0 Stimmen
    11 Beiträge
    750 Aufrufe
    O
    @codierknecht Versuch ich, alles zum gleichen Thema an einen Platz, z.B. alles was beim sonnenuntergang passieren soll. einiges davon soll aber vorher schon durch Mensch oder andere Einflüsse ausgeschaltet werden können. und die Scripte sollen ja auch nicht zu riesig werden und lesbar bleiben. Werd mir mal überlegen doch einige zusammenzulegen. Alternativ mach ich shift -10 Minuten schedule({astro: "solarNoon", shift: -10}, async function () {
  • nspanel script: state im alias bleibt 0

    10
    0 Stimmen
    10 Beiträge
    700 Aufrufe
    M
    @tt-tom hier nochmal das Ergebnis vom log: javascript.0 2023-04-03 21:30:03.740 info script.js.NSPanel.Muell_JS: Bio = true javascript.0 2023-04-03 21:30:03.740 info script.js.NSPanel.Muell_JS: Event2 = %Bioabfallbehaelter % javascript.0 2023-04-03 21:30:03.739 info script.js.NSPanel.Muell_JS: Wert = true javascript.0 2023-04-03 21:30:03.739 info script.js.NSPanel.Muell_JS: Event2 = %Wertstoffbehaelter % javascript.0 2023-04-03 21:30:03.738 info script.js.NSPanel.Muell_JS: Rest = true javascript.0 2023-04-03 21:30:03.738 info script.js.NSPanel.Muell_JS: Event2 = %Restabfallbehaelter % javascript.0 2023-04-03 21:30:03.737 info script.js.NSPanel.Muell_JS: Papier = true javascript.0 2023-04-03 21:30:03.735 info script.js.NSPanel.Muell_JS: Event2 = %Papierbehaelter %
  • [gelöst] Wer hat Inhalt eines Datenpunkt geändert

    9
    0 Stimmen
    9 Beiträge
    552 Aufrufe
    O
    @ostseeskipper Ich hab das jetzt so gelöst, das jedes Event(Script) das diesen Datenpunkt ändert auch einen zweiten Datenpunkt beschreibt und drin steht wer geändert hat.
  • Emails auswerten, Adapter stürzt ab

    5
    0 Stimmen
    5 Beiträge
    416 Aufrufe
    M
    @djmarc75 aaah, ich hatte das als Frage verstanden 😅 Das schaue ich mir mal an!

308

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge