Skip to content

JavaScript

2.5k Topics 49.9k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • ID Selektor - Welche ID hat die Änderung verursacht? DONE

    3
    1
    0 Votes
    3 Posts
    422 Views
    cengC
    @liv-in-sky Danke, wie kann man so blind sein, dass zu übersehen... Reingezogen tut... Vielen Dank
  • TV Programm Mini Anzeige - HTML Tabelle

    javascript
    327
    3
    6 Votes
    327 Posts
    81k Views
    liv-in-skyL
    @oliverio @oliverio sagte in TV Programm Mini Anzeige - HTML Tabelle: aber alles was im browser angezeigt wird, kann auch eingelesen werden stimmt - du hast recht - ist alles noch da und lesbar- aber eben anders als früher - daher weiß mein sccript nicht, was zu tun ist
  • [gelöst] DP anlegen, Name als Variable - Syntaxfehler?

    3
    0 Votes
    3 Posts
    255 Views
    P
    @armilar Danke! Klappt. Keine Ahnung warum das davor nicht ging, dachte das schon probiert zu haben...
  • Dynamisch erstellte Variablen.

    43
    0 Votes
    43 Posts
    5k Views
    OliverIOO
    @ptr Im Detail muss ich das morgen mal ausprobieren. Generell sehe ich in deinem Code aber 2 Problembereiche zu dem du dir die Konzepte mal nochmal durchlesen solltest scope https://developer.mozilla.org/en-US/docs/Glossary/Scope?retiredLocale=de Du definierst manche variablen innerhalb von Funktionen (bspw multitimer) obwohl ich den Eindruck habe das sie außerhalb einer Funktion definiert werden sollte. Im verlinkten Artikel liest du, das variablen immer nur sichtbar innerhalb eines scopes sind und von außerhalb nicht adressierst ist. Dann gibt es noch den asynchronen Funktionsausfall, der ebenfalls eine andere Art von scope erzeugt, wie man eigentlich so erwartet. Wird ein scope verlassen, bspw weil die Funktion abgearbeitet ist, dann wird der scope zerstört und die Daten sind verloren. Beim erneuten Aufruf der Funktion wird ein neuer scope erzeugt. Die früheren darin verfügbaren Daten sind weg. Auch deine mehrfach ineinander verschachtelten Funktionen sind schon möglich. Als Anfänger würde ich das aber nicht machen, da sonst der Überblick über die scopes schwierig ist und uU den Kopf zur Explosion bringt. Mit einem guten debugger sieht man das (bspw vs Code). Aber die scriptoberfläche von Iobroker ist da nicht sought geeignet. Verwendung von promises, await und async https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise?retiredLocale=de https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function Await kann nur bei Funktionen verwendet werden, die auch ein promise zurückgeben. Settimeout gibt aber nur das Timer Handle zurück. Daher funktioniert await da nicht. Wenn du eine strikte Reihenfolge bestimmter Schritte als Ergebnis von asynchroner Abarbeitung einhalten willst musst du dich erst recht noch mehr mit promises beschäftigen, da das der Mechanismus der Wahl dafür ist.
  • Protokoll lesen

    6
    0 Votes
    6 Posts
    901 Views
    bahnuhrB
    @andreas-5 sagte in Protokoll lesen: Entweder sehe ich es noch nicht richtig oder das ist dann nicht das, was ich möchte. Doch, das ist es. Nimm den Logparser. Dann bekommst du DP mit deinen Ergebnissen. Und dann schreibst du ein Script das auf die Veränderungen dieser DP reagiert und dir dann eine Mail oder telegram sendet.
  • Ordner auf neue Dateien überwachen

    37
    0 Votes
    37 Posts
    7k Views
    A
    @ente34 sagte in Ordner auf neue Dateien überwachen: @tomily Ungefähr so Du benötigst aber den neuesten javascript-Adapter 4.11.0 const fs = require('fs'); const util = require('util'); const readdir = util.promisify(fs.readdir); const stat = util.promisify(fs.stat); const lstat = util.promisify(fs.lstat); async function checkDir(dir) { let files = []; try { files = await readdir(dir); let newestFileAge = 0; let newestFile = ''; for (let file of files) { let fullpath = dir + '/' + file; const s = await lstat(fullpath); if (s.isFile()) { const stats = await stat(fullpath); if (stats.mtimeMs > newestFileAge) { newestFileAge = stats.mtimeMs; newestFile = file; } } } let seconds = (new Date().getTime() - new Date(newestFileAge).getTime()) / 1000; console.log(`newest file "${newestFile}" created before ${seconds} seconds`); } catch (e) { console.log(e); } } checkDir('c:/temp'); Hallo in die Runde. Ist schon ein bisschen älter das Thema aber ich habe dazu noch eine Frage. Was muss ich an diesem Code ändern, damit ich auch Unterverzeichnisse auf neuste Dateien prüfen kann ? Danke
  • Bitte um Sample Code für "sendToAsync"

    javascript
    4
    0 Votes
    4 Posts
    616 Views
    M
    https://github.com/ioBroker/ioBroker.javascript/issues/1198 Ich glaube, dass ich auch den Bug gefunden habe.
  • Stromzähler auslesen Json-String

    6
    2
    0 Votes
    6 Posts
    1k Views
    B
    Vielen herzlichen Dank euch beiden, hätte nicht gedacht, dass ich so schnell Hilfe bekomme! Klasse Forum! LG Stefan
  • Javascript Adapter startet nach update häufig nicht mehr

    3
    0 Votes
    3 Posts
    326 Views
    crunchipC
    @geko-eder sagte in Javascript Adapter startet nach update häufig nicht mehr: nicht mehr gestartet haben, nachdem ich ein Update gemacht hatte. Ich mache das Nachts automatisch, auf einer Proxmox VM fährst du die VM dabei runter? warum nicht im snapshot mode
  • ical Abfrage ob letzter Abruf erfolgreich war und wann?

    javascript
    9
    0 Votes
    9 Posts
    698 Views
    liv-in-skyL
    @cash der vergleich der daten wird auch eine zeit beanspruchen - daher kann man evtl gleich die daten schreiben - bin kein adapter entwickler - daher ?? von welchen true sprichst du ? [image: 1669123971790-image-009.png] @Homoran bei mir werden auch immer beide werte upgedatet [image: 1669124095660-image-010.png]
  • Abfrage, ob Mitglied in Liste

    javascript
    3
    1
    0 Votes
    3 Posts
    348 Views
    M
    @paul53 Genau das wars. Danke Dir!
  • Zigbee2Mqtt Converter ME16

    1
    0 Votes
    1 Posts
    243 Views
    No one has replied
  • [gelöst] - Learning JS - ein erster Versuch

    31
    1 Votes
    31 Posts
    2k Views
    CodierknechtC
    @homoran Achtung Goldwaagenalarm. Virtuell natürlich
  • Grundlast berechnen

    17
    0 Votes
    17 Posts
    2k Views
    paul53P
    @chrille1507 Die Mindestdauer der Abwesenheit hängt von den Gewohnheiten ab, aber man wird nicht alles ausschalten, bevor man nur den Müll raus bringt. Skriptvorschlag: const idAnwesend = 'abc'; const idZaehler = 'xyz'; // kWh const idGrundlast = '0_userdata.0.xyz'; // W var standVerlassen; on(idAnwesend, function(dp) { if(dp.state.val) { // Rückkehr let dauer = (dp.state.lc - dp.oldState.lc) / 3600000; // h if(dauer > 5 && standVerlassen) { let grundlast = 1000 * (getState(idZaehler).val - standVerlassen) / dauer; setState(idGrundlast, Math.round(grundlast), true); } } else standVerlassen = getState(idZaehler).val; });
  • Script funzt nicht mehr

    22
    2
    0 Votes
    22 Posts
    2k Views
    CodierknechtC
    @homoran Du hast es nicht anders gewollt: https://forum.iobroker.net/topic/60034/learning-js-ein-erster-versuch
  • Selector - Filter funktioniert nicht bei Enums (gelöst)

    3
    3
    0 Votes
    3 Posts
    449 Views
    T
    @paul53 ja grad mal versucht keine Änderung Irgendwie erkennt er den von Hand angelegten Enum nicht…
  • Ordnerüberwachung, die bei Änderung eine Mailnot. sendet

    9
    0 Votes
    9 Posts
    306 Views
    AlanVA
    @glasfaser ok werd ich mir anschauen vielen dank für den hinweis
  • Event handling abbrechen bzw. Event verwerfen

    javascript
    3
    0 Votes
    3 Posts
    283 Views
    H
    @mickym du hast Recht, insofern ich sofort aus dem Eventhandler raus will. Das Problem jedoch ist, dass der Thermostat-DP aus dem Event trotzdem gesetzt wird. In dem Event-Handler schreibe ich ja quasi einen extra user-Datenpunkt. Ich möchte aber den Thermostat-DP nicht schreiben, wenn das Fenster auf ist. Man könnte das auch anders lösen, aber dann muss ich bei mir leider sehr viel in den Skripten ändern
  • delete folder in objects

    9
    0 Votes
    9 Posts
    635 Views
    liv-in-skyL
    @paul53 @MCU Danke euch beiden Werde Mal testen
  • Lampe an der Haustüre und Abwesenheit

    13
    0 Votes
    13 Posts
    681 Views
    M
    @mickym Danke, Du hast es auf das reduziert, was es ist: Ein Logikproblem... Und ich habe jetzt mehrmals lesen müssen, bis ich es verstanden habe: Der Trigger ist meine Ankunft zuhause. Das ist auch deswegen sinnvoll, weil ich vielleicht auch Dinge triggern will, wenn ich tagsüber ankomme... Das lasse ich mal so sacken, und starte mein konzeptionelles Denken nochmal neu...

469

Online

33.1k

Users

83.7k

Topics

1.3m

Posts