Skip to content

JavaScript

2.5k Topics 49.2k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • (gelöst) $Selector: Zimmer ausgeben

    3
    0 Votes
    3 Posts
    288 Views
    ice987I
    @paul53 Wunderbar, Danke!
  • Script auf Ende einer Funktion warten lassen

    5
    0 Votes
    5 Posts
    648 Views
    D
    @alcalzone Das habe ich mir schon gedacht. Vielen Dank
  • Gelöst: Neuste Datei (mp4) finden

    javascript
    17
    0 Votes
    17 Posts
    520 Views
    M
    @mickym sagte in Neuste Datei (mp4) finden: /Letztes Kamerabild Giethoorn Boot********************************* ** Juli 2021 ** RING, Kamera ** ** Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam ** geändert:26.07.21, 16.8.21 *******************************************************************************/ var zähler = 0; var old_recent; var old_create; var create; var path = require('path'); var fs = require('fs'); var request = require('request'); on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; await wait(100); old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val; old_create = getState('ring.0.doorbell_21502358.History.created_at').val; create = getState('ring.0.doorbell_21502358.created_at').val; var getMostRecent = function (dir, cb) { var dir = path.resolve(dir); var files = fs.readdir(dir, function (err, files) { var filesFiltered = files.filter(function (v) { var filepath = path.resolve(dir, v); if ( filepath.slice(-4) === '.mp4') return true; }) var sorted = filesFiltered.map(function (v) { var filepath = path.resolve(dir, v); return { name: v, time: fs.statSync(filepath).mtime.getTime() }; }) .sort(function (a, b) { return b.time - a.time; }) .map(function (v) { return v.name; }); if (sorted.length > 0) { cb(null, sorted[0]); } else { cb('Y U NO have files in this dir?'); } }) } getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) { if (err) console.error(err); console.log(recent); setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent); setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm")); const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent); writeFile("vis.0", "/NL/01Boot.mp4", boot); }); }); Herzlichen Dank, das klappt :-)
  • UDPRAW von Hyperion zu IOBroker

    15
    1
    0 Votes
    15 Posts
    1k Views
    R
    @1rfsnet Hyperion sendet die Daten ja als hex Werte, die dann in rgb umgewandelt werden, und diese könntest du direkt vergleichen, und dann nach dem Set state eine halbe Sekunde pause einfügen
  • Insert Objects from Folder into Array

    4
    0 Votes
    4 Posts
    277 Views
    paul53P
    @zäsch sagte: Gibt es eine andere, elegante Möglichkeit mein Array mit den IDs zu befüllen, wenn man nicht den gesamten Namen hat? Versuch es mal so: const idsSL = $('hue.0.Flur_.SL*'); var set = []; idsSL.each(function(id, i) { let name = getObject(id).common.name; if(name.startsWith('SL.')) set.push(id); }); Die Abfrage des Namensbeginns kann man sich evtl. sparen?
  • Hilfe bei Trigger

    2
    0 Votes
    2 Posts
    242 Views
    T
    @pv_mainz Um dir helfen zu können braucht es mehr Infos. Was genau ist 40206_M_AC_Current? EDIT: Und was genau ist 40083_Wechselrichter_Produktion/40084_Wechselrichter_Produktion_Scale und wie oft wird das aktualisiert. Aktuell wäre meine Idee die: }, function () { on('modbus.0.holdingRegisters.40083_Wechselrichter_Produktion', function(obj) { work(obj.state.val); }); on('modbus.0.holdingRegisters.40206_M_AC_Current', function(obj) { work(getState('modbus.0.holdingRegisters.40083_Wechselrichter_Produktion').val); }); function work(value){ var timeout = setTimeout(function () { clearTimeout(timeout); var factorState = getState('modbus.0.holdingRegisters.40084_Wechselrichter_Produktion_Scale'); convertValue(value, factorState ? factorState.val : 0); }, 100); } }
  • [gelöst] Script wird nicht immer ausgeführt

    javascript
    5
    0 Votes
    5 Posts
    351 Views
    M
    @ticaki Danke dir, das ist es. Ich hatte gar nicht richtig registriert, dass ich schon fast alles dafür im Script stehen hatte. Manchmal braucht es eben doch noch einen Anstoß von außen :D
  • Timer Objekte bei Script-Neustart

    4
    0 Votes
    4 Posts
    379 Views
    L
    @oliverio Vielen Dank für die ausführliche Erklärung. Dann werde ich jetzt mal meine riesen Skripte ein wenig in kleine Skripte aufteilen um einen besseren Überblick über die Speichernutzung zu bekommen.
  • (gelöst) Name des Skriptes auslesen

    5
    1
    0 Votes
    5 Posts
    389 Views
    ice987I
    @paul53 @Glasfaser so einfach ist das: log("Name: " + name); Vielen Dank für eure Hilfe!
  • Konstantes Dimmen bei gedrückter Taste

    8
    0 Votes
    8 Posts
    844 Views
    KeromidaK
    @asgothian Danke für die sehr ausführliche und verständliche Antwort! Das bringt jetzt auch eindeutig Licht ins Dunkel wieso mein Code nicht geklappt hat.
  • Shelly api als Datenpunkt anlegen

    1
    1
    0 Votes
    1 Posts
    255 Views
    No one has replied
  • Eigene Klassen importieren und an mehreren Stellen verwenden

    21
    0 Votes
    21 Posts
    2k Views
    AlCalzoneA
    @jlssmt Richtig, alle "echten" Skripte laufen in ihrem eigenen separaten Kontext. Wenn du Daten zwischen diesen austauschen willst, musst du States nutzen oder messages zwischen den Skripten austauschen: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#messageto
  • [gelöst] Javascript: Zugriff auf Unterelem. funktion. nicht

    12
    0 Votes
    12 Posts
    784 Views
    paul53P
    @loxdus sagte: Habe eben gesehen das es schon wieder eine neue Version gibt. Mit dieser Version muss das wieder rückgängig gemacht werden: @loxdus sagte in [gelöst] Javascript: Zugriff auf Unterelem. funktion. nicht: Der Wert musste in ein javascript Objekt umgewandelt werden.
  • createDevice - welches package?

    5
    0 Votes
    5 Posts
    508 Views
    tomidrT
    @paul53 Danke, hat jetzt funktioniert, nachdem ich im JS Adapter setObject explizit freigegeben habe ;)
  • wie parse ich Arrays unter Javascript 5.2.8

    javascript
    4
    0 Votes
    4 Posts
    229 Views
    M
    @paul53 ok - dann verstehe ich bei mir den Log-Eintrag nicht: javascript.0 2021-08-06 23:29:23.976 info Could not parse value for id javascript.0.Wohnzimmer.Schattenwerte into array: Unexpected token , in JSON at position 3 Allerdings sehe ich gerade, wenn ich das Objekt bearbeite, dass beim Zustandstyp kein Eintrag hinterlegt war. Ich habe jetzt an der Stelle den Typ Zeichenkette hinterlegt. Seit dem habe ich keinen Eintrag mehr. Verstanden habe ich das aber ehrlich gesagt nicht wirklich... [image: 1628285738604-98652735-52de-49d2-ae89-8ab4e6e97b32-grafik.png]
  • JS:Out of memory

    20
    0 Votes
    20 Posts
    2k Views
    V
    Ich habe nun mal folgendes per Zufall entdeckt. Ob es nun mit dem gesagten Fehler im Zusammenhang ist.... Für die Lichtsteuerung habe ich eine HUE-Bridge in NR eingebunden. Das folgende Verhalten ist ebenfalls auf einem 2. System mit ebenfalls einer (anderen) HUE-Bridge nachvollziehbar. Beim Update der HUE-Bridge scheint sich diese kurz vom Netz zu trennen, also kurzzeitig nicht mehr für NR erreichbar zu sein. Dadurch startet das komplette NR neu! Kann bei jedem Update oder trennender Netzverbindung zur Bridge nachvollzogen werden. Hat dies auch schon wer gehabt? Es sind sicherlich einige hier mit NR und HUE. Gruss Pat
  • Poolpumpe, Solarsteuerung, PH Dosierung bräuchte etwas Hilfe

    3
    0 Votes
    3 Posts
    302 Views
    coyoteC
    @mickym danke dir, bin gerade am Testen, ob ich es nicht doch ganz einfach mit dem mytime Adapter hinbekomme. Den kann ich, auf 6h setzen, nachdem die Pumpe morgens 3h gelaufen ist pausieren, falls die Pumpe dann tagsüber die restlichen 3h noch gelaufen ist, kann ich mit dem "end" DP von mytime mir einfach eine Sperre setzen, damit sie Abends nicht mehr einschaltet. Test läuft
  • [gelöst] Anwesenheit und Pushover bei Bewegung

    9
    0 Votes
    9 Posts
    469 Views
    5
    @paul53 Ich sehe schon ich hab noch viel zu lernen, vielen Dank für Deine Hilfe.
  • [gelöst]finde fehler im script nicht

    javascript
    21
    0 Votes
    21 Posts
    509 Views
    liv-in-skyL
    @homoran ich teste morgen nochmal alles durch - dann gibt es das update
  • CSV vom NAS auslesen

    9
    0 Votes
    9 Posts
    1k Views
    OliverIOO
    @pat du zeigst hier die inhalte des falschen verzeichnisses an. wenn du csv als zusätzliches modul in den einstellungen des javascript-adapters einträgst, dann wird dies im folgenden pfad installiert /opt/iobroker/node_modules/iobroker.javascript/node_modules/csv-parse/ verwende im iobroker umfeld bitte npm nicht direkt oder nur wenn du genau weißt was du tust. das kann ggfs. Schwierigkeiten machen.

336

Online

32.8k

Users

82.7k

Topics

1.3m

Posts