Skip to content

JavaScript

2.5k Topics 49.4k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • [Gelöst] iobroker Pfad auf neue Datenpunkte überwachen

    3
    0 Votes
    3 Posts
    286 Views
    boriswernerB
    @paul53 onObject und die Funktionssignatur hab ich in der Autovervollständigung vom Javascript Editor gefunden (hab einfach mal geschaut, was mir so vorgeschlagen wird). Dein Beispiel funktioniert, allerdings wird das on bei jeder Wertänderung eines beliebigen Datenpunktes in dem Pfad ausgelöst. Das ist eine andere Eventquelle als ich gehofft hatte (wie im ersten Post beschrieben wollte ich lieber auf das Event "Datenpunkt wurde erstellt" reagieren, statt "Datenpunktwert hat sich geändert"), das hilft mir aber auch, da ich das jetzt einfach noch auf den "name" Datenpunkt erweitern kann. Der ändert sich nie. Somit habe ich jetzt folgende Lösung für mein Problem (log ist natürlich nur Beispielhaft): on({id: /^octoprint\.0\.files\..+\.name/, change: "ne"}, function(dp) {log(dp.id);}); und ich bedanke mich vielmals bei dir. Manchmal denkt man einfach zu kompliziert :-)
  • basic-ftp - kopieren/verschieben dir synology

    javascript
    4
    0 Votes
    4 Posts
    295 Views
    bahnuhrB
    @asgothian Danke nochmal für die Anregung. Hätte ich auch selber drauf kommen können ;-) Habe auch schon mehrfach mit ssh2 gearbeitet. Und nun auch so gelöst. mfg Dieter
  • [gelöst] Fehler bei Verwendung des 'net' Modules

    5
    0 Votes
    5 Posts
    385 Views
    P
    @oliverio Vielen Dank für Deine Erklärung. Jetzt funktionieren beide Versionen des Scripts! Vielen Dank.
  • Datums-Format YYYYMMDD

    15
    0 Votes
    15 Posts
    1k Views
    T
    @mickym hat funktioniert, super vielen Dank an Euch Allen. Wünsch Euch einen schönen Abend. [image: 1741638871424-67abdc67-1568-419c-8942-df8f336421d0-image.png]
  • [Frage] javascript-code zum Auslesen von Ertragswerten

    javascript template
    21
    0 Votes
    21 Posts
    2k Views
    N
    @asgothian Habe es doch gerade ausprobiert. Gibt aber eine Fehlermeldung: javascript.0 19:32:52.547 info Stopping script script.js.smarthome_trost.neu_history_influxdb javascript.0 19:32:52.592 info Start JavaScript script.js.smarthome_trost.neu_history_influxdb (Javascript/js) javascript.0 19:32:52.595 info script.js.smarthome_trost.neu_history_influxdb: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 19:32:52.597 info script.js.smarthome_trost.neu_history_influxdb: Starting "energy-stats" logging to http://localhost:8086 into bucket "iobrokerdata" by org Trost javascript.0 19:32:52.598 error script.js.smarthome_trost.neu_history_influxdb: ReferenceError: loggingTemplate is not defined javascript.0 19:32:52.598 error at start (script.js.smarthome_trost.neu_history_influxdb:53:45) Kann man das reparieren?
  • Verbindung mit neuer Ecoflow Api

    17
    1 Votes
    17 Posts
    3k Views
    R
    @haus-automatisierung Eventuell hilft Dir das Beispiel von mir ja schon weiter Die Verbindung klappt sehr gut, alle Devices wurden in den Objektbaum eingetragen. Vielen Dank. Leider komme ich aber nicht weiter, wie die Werte aus der Powerstream ermittelt werden: pv1InputWatts pv2InputWatts pvToInvWatts permanentWatts Für weitere Hilfen bin ich daher sehr dankbar. Gruß Ralf Für eine
  • Adapter history.0 auswerten für 16 Datenpunkte und 12 Monate

    62
    0 Votes
    62 Posts
    8k Views
    L
    @paul53 Ich habe einen eingegrenzt und gefunden: [image: 1741475257828-fehler-in-den-daten.png] Ein Timestamp des DP war weder True noch False In 12 betrachteten Monaten ist das 2 mal vorgekommen. Finale Version: [image: 1741478426540-09.03.script-final.png] var ed, obj, result, lastValue, onTime, i, value, ts; getHistory({ id: 'ID auswählen', start: getDateObject('2025-09-01 00:00').getTime(), end: getDateObject('2024-03-01 00:00').getTime(), aggregate: 'none', removeBorderValues: true, }, async (err, result) => { if (err) { console.error(err); } else { ed = 0; if (result.length > 0) { ((obj) => { if (typeof obj === 'object') { obj['val'] = false; } })((result.slice(-1)[0])); obj = result[0]; lastValue = getAttr(obj, 'val'); if (lastValue) { onTime = getAttr(obj, 'ts'); } var i_end = result.length; var i_inc = 1; if (2 > i_end) { i_inc = -i_inc; } for (i = 2; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) { obj = result[(i - 1)]; value = getAttr(obj, 'val'); ts = getAttr(obj, 'ts'); if ((typeof value == 'boolean') && (typeof ts == 'number') && (value != lastValue)) { lastValue = value; if (value) { onTime = ts; } else { ed = (typeof ed === 'number' ? ed : 0) + (ts - onTime); } } } } console.info((Math.round(ed / 360000) / 10)); } }); Für größere Zeiträume muss der Parameter limit von getHistory vergrößert werden. Im Standard liest getHistory 2000 Timestamps für den Datenpunkt ein. Die Erweiterung des Limits ist nicht im Skript darüber enthalten, sondern wurde im Objekt von getHistory eingetragen. Das Skript funktioniert nun einwandfrei! Ich möchte mich bei allen Herzlich bedanken für den Support! Insbesondere bei @paul53 und @David-G
  • onMessage aktuell auch ohne result async möglich?

    7
    0 Votes
    7 Posts
    390 Views
    haus-automatisierungH
    @ben1983 Kannst auch null setzen
  • Funktion mit unterschiedlicher Anzahl an paramtern

    13
    1
    0 Votes
    13 Posts
    617 Views
    Ben1983B
    @haus-automatisierung OK, danke. Nur folgendes: Wenn ich Bspw. so eine Funktion deklariere: const SendTelegram = { /** * @param Message message to send * @param Options Username, Visulog, SendInstanz */ alles: function (Message,Options){ ....... //code } } Die liegt in einem Globalen Skript, ist also überall verfügbar. Wenn ich sie innerhalb des Skripts aufrufe, dann wird mir das angezeigt: [image: 1740994454886-3a62fcb8-1ebd-4e11-95a4-e1c30c394e2b-image.png] in einem nicht globalen Skript, allerdings: [image: 1740994498201-f6aecbff-3a56-47af-8e40-b4bb143be1ed-image.png] Ich weiß nun, was die options sind, aber warum wird das nicht angezeigt? EDIT: !!!! Es geht doch.... nachdem die Fenster einmal geschlossen waren und wieder geöffnet wurde, wird es angezeigt. OK, ich gebs aus... fenster erneut geschlossen und geöffnet und es wird schon wieder nicht angezeigt
  • Wann ist ein nach der Erzeugung dp verfügbar?

    16
    0 Votes
    16 Posts
    882 Views
    mcm1957M
    @ben1983 OK - Für Javascript im Javascript Adapter gelten tw. andere Regeln. Wenn Unetrscheide allerdings eher verwirrend sind und aufwärtskompatibel anpassbar scheinen dann macht es ev. durchaus Sinn ein Issue zu erstellen. Bluefox migriert den Javascritp adapter meines Wissens nach z,Z zu Typescript. Da kann man ggF kompatible (!) Anpassungen durchaus vornehmen. Aber das müssen die Maintainer entscheiden.
  • [gelöst] History per script auslesen: Wie warten auf Daten?

    10
    0 Votes
    10 Posts
    935 Views
    D
    @ticaki Super. Das scheint zu funktionieren. Besten dank!
  • [gelöst] Einlesen eines Arrays in Javascript klappt nicht

    34
    0 Votes
    34 Posts
    3k Views
    T
    @ben1983 ich kannte \z nicht mal. Hab Chatgpt gefragt ohne Javascript zu erwähnen und der meint dazu [image: 1740782213318-bildschirmfoto-2025-02-28-um-23.36.48.png]
  • Wert einer URL auf eine URL von Shelly schreiben

    1
    0 Votes
    1 Posts
    201 Views
    No one has replied
  • Scrypt schaltet in Software aber nicht Physisch

    4
    0 Votes
    4 Posts
    381 Views
    P
    @geschild Oh ja Danke das funktioniert.
  • PAJ GPS abfragen

    127
    0 Votes
    127 Posts
    19k Views
    D
    @negalein gerne.. der Support ist äußerst Infomationsfreudig
  • controller.js frist Ram und javascript.X bei >90%

    14
    1
    0 Votes
    14 Posts
    1k Views
    CodierknechtC
    @tasuanetrukiat sagte in controller.js frist Ram und javascript.X bei >90%: da ich das mit den Blockly Skripten noch nicht vollständig verstanden habe Lesestoff: https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps Ganz wichtig: "Trigger in Trigger" - nicht machen, niemals, never ever!
  • [Skript] Atlantic Wärmepumpe über Cozytouch abfragen

    107
    3 Votes
    107 Posts
    23k Views
    Samson71S
    @ricki-1337 sagte in [Skript] Atlantic Wärmepumpe über Cozytouch abfragen: genannten Platine in HA einbinden. Falsches Forum? Wir sind hier bei ioBroker, nicht bei HA. Du solltest Dich mit der Fragestellung an das HA-Forum wenden und/oder ggf. auf GitHub nachfragen.
  • zig gleiche Einträge in JS-Protokollanzeige

    18
    3
    0 Votes
    18 Posts
    1k Views
    OliverIOO
    @ticaki ja, hab gerade ausprobiert. dann ist das relativ neu. das war früher nicht so. da gab es immer wieder fälle, das sich das aufmultipliziert hat
  • HttpGet Balkonkraftwerk => Nachts Errors in Protokoll

    14
    1
    0 Votes
    14 Posts
    1k Views
    O
    @fichtenmoped82 , bei einer ähnlichen Fragestellung habe ich den Radar Adapter zu Hilfe genommen. Damit können Geräte (der WR in Deinem Fall) auf Anwesenheit überwacht werden. Dann kannst Du die HTTP Abfrage gegen den WR nur ausführen, wenn Radar für den WR ein „true“ in den zugehörigen DP schreibt. In etwa so, wie @MartinP weiter oben schreibt, nur ohne Ping. Spart neben den Log Einträgen auch noch Rechenleistung -;) Gruß
  • Cannot redeclare block-scoped variable

    36
    0 Votes
    36 Posts
    4k Views
    H
    @oliverio hast Recht. Hätte gleich ein paar Hardcopys machen sollen.

521

Online

32.9k

Users

83.0k

Topics

1.3m

Posts