Skip to content

JavaScript

2.5k Topics 49.7k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Zip Archiv erstellen

    6
    0 Votes
    6 Posts
    306 Views
    F
    @wolfgangfb also da gibt es 100te Beispiele auch hier im Forum :-) exec('ls -la /opt/iobroker >/opt/iobroker/hallo.txt', (err, out, e) => { if (err) console.error(err); if (e) console.error(e); require('fs').readFile('/opt/iobroker/hallo.txt', 'utf8', (err, data) => { if (err) console.error(err); else console.log(data); }) })
  • Klammern bei Funktionen ohne Parameter vergessen

    1
    0 Votes
    1 Posts
    89 Views
    No one has replied
  • Datapoint influxdb per script aktivieren

    3
    0 Votes
    3 Posts
    441 Views
    A
    @paul53 Vielen Dank. Funktioniert. Erspart mir Stunden um alles händisch zu aktivieren
  • Zugriff auf VIS Website triggert Datenpunktänderung

    javascript
    3
    0 Votes
    3 Posts
    350 Views
    M
    @codierknecht Danke. Das funktioniert.
  • Countdown Adapter html Table sortieren

    5
    0 Votes
    5 Posts
    633 Views
    A
    @codierknecht Sorry ich wusste nicht, dass man das in anderen Tools anders lösen kann. Soweit ich es verstehe, wird bei Lovelace die Html tabelle als Datenpunkt dargestellt und alle Anpassungen müssen über JS im vorhinein erledigt werden.
  • [gelöst] on() mit Vergleich und erst nach X Sekunden

    5
    0 Votes
    5 Posts
    487 Views
    F
    Falls jemand Interesse an der kompletten Lösung hat (Verbesserungsvorschläge willkommen). Aufgabe: Sende jede Minute eine Nachricht wenn bestimmte Fenster länger als X Minuten offen ist und die Aussentemperatur kleiner als "activeTemp" ist. Das hilft meiner vergesslichen Familie viel Heizenergie zu sparen :-) const aFenster = [ { "id": "hm-rpc.0.KEQ0006299.6.SENSOR", "descr": "in der Küche Richtung Garten" }, { "id": "hm-rpc.0.KEQ0006287.1.SENSOR", "descr": "im HWR" }, { "id": "hm-rpc.0.KEQ0006287.6.SENSOR", "descr": "im Wohnzimmer links" }, { "id": "hm-rpc.0.KEQ0006287.12.SENSOR", "descr": "im Wohnzimmer rechts" } ]; const idTemp = 'hm-rpc.1.NEQ0773998.1.TEMPERATURE'; // Aussentemperatur const activeTemp = 15; const delay = 5; // Minuten solange im Intervall unten 60000 steht var interval = null; aFenster.forEach(Fenster => on(Fenster.id, function (dp) { if (getState(dp.id).val) { console.log("Fenster " + Fenster.descr + " geoeffnet"); let cnt = 0; interval = setInterval(function () { cnt++; // wenn Counter größer als delay && Aussentemperatur kleiner als activeTemp if (cnt >= delay && getState(idTemp).val < activeTemp) { var duration = Math.round((Date.now() - dp.state.lc) / 60000) // sende Nachricht ins Log, oder via telegram, oder lass Alexa schimpfen.. console.log("Das Fenster " + Fenster.descr + " ist schon " + duration + " Minuten offen."); } }, 60000); } else { // Fenster schließt clearInterval(interval); console.log("Fenster " + Fenster.descr + " geschlossen"); } })); Danke noch mal @paul53!
  • [gelöst] gefühlte Temperatur

    45
    0 Votes
    45 Posts
    4k Views
    CodierknechtC
    @Peter666666 @paul53 sagte in gefühlte Temperatur: @peter666666 sagte: Es funktioniert. Dann setze bitte das Thema in der Überschrift des ersten Beitrags auf [gelöst]. Und eröffne für Dein Cloud-Problem einen neuen Thread.
  • Axios: Fail to parse JSON data','code':-1

    6
    0 Votes
    6 Posts
    559 Views
    cashC
    @issi sehr cool. Danke für den Hinweis. Bleibe aber vorerst bei meinen Script da ich von meinen 3 elgatos nur eine steuern möchte und ich den Status auch nur Mo-Fr. von 7:00 - 16:00 abfrage. Somit vermeide ich unnötige Abfragen in meinen Netz. Falls mein Script dann mal wieder nicht läuft steige ich aber wahrscheinlich um.
  • [Tester gesucht] Roborock-API

    81
    14 Votes
    81 Posts
    32k Views
    wendy2702W
    @oxident OK. Hatte nicht mitbekommen das @Meistertr hier nicht mehr aktiv ist
  • Globales Skript in anderem globalen Skript verwenden

    1
    0 Votes
    1 Posts
    217 Views
    No one has replied
  • Wie Script ändern damit neuster Eintrag als erstes ist?

    2
    0 Votes
    2 Posts
    220 Views
    paul53P
    @chris76e sagte: neuste Eintrag als erstes Zeilen 32, 33 table.unshift(obj); if(table.length > 100) table.pop();
  • [gelöst] Zeichen in String einfügen

    13
    0 Votes
    13 Posts
    2k Views
    paul53P
    @delamaris sagte: es funktioniert. Dann setze bitte das Thema in der Überschrift des ersten Beitrags auf [gelöst].
  • Gelöst: Bild von Motioneye nach VIS kopieren mit JavaScript

    javascript
    24
    0 Votes
    24 Posts
    3k Views
    I
    @michihorn das verstehe ich schon. nur ich brauche den Pfad von Motioneye zum zuletzt aufgenommen Bild
  • [gelöst] function in function

    9
    0 Votes
    9 Posts
    800 Views
    CodierknechtC
    @ptr sagte in [gelöst] function in function: Es geht um das Thema: https://forum.iobroker.net/topic/62228/multitimeout-wie-function-übergeben-von-blockly-in-js Hatte ich schon gelesen und antworte daher dort ...
  • on({id: ....mit timer kombiniert? Mehrfacher Aufruf??

    10
    0 Votes
    10 Posts
    881 Views
    CodierknechtC
    @paul53 Cool - das wandelnde Programmierhandbuch hat wieder zugeschlagen
  • Löschen von Objekten in Aufzählungen [solved]

    7
    0 Votes
    7 Posts
    763 Views
    cengC
    Danke @paul53 Danke für den Support @paul53 Mittlerweile bin ich nach rumprobieren da... if(existsObject('enum.rooms.' + RaumnameAmDevice)) { console.log('Raum ' + RaumnameAmDevice + ' vorhanden'); let obj = getObject('enum.rooms.' + RaumnameAmDevice) if(obj.common.members.includes(DP_Selected)) { console.log('DP ist in Raumaufzählung vorhanden. Obj ' + JSON.stringify(obj)); let idx = obj.common.members.indexOf(DP_Selected); console.log(DP_Selected + ' ist in der Aufzählung für ' + RaumnameAmDevice + ' an Stelle ' + idx); if(idx > -1) { console.warn('Lösche ' + DP_Selected + ' ID:' + idx); obj.common.members.splice(idx, 1); setObject('enum.rooms.' + RaumnameAmDevice, obj, function (err) { if (err) console.error('Fehler: Lösche ID ' + idx + ' | DP ' + DP_Selected + ' aus Aufzählung ' + String(RaumnameAmDevice) + ' fehlgeschlagen. Error=' + err, 'error'); }); if (getState('0_userdata.0.Global.Debug').val == true) { console.log(('Raumzuweisung für DP_Selected: ' + DP_Selected + ' | RaumAmDevice: ' + RaumnameAmDevice + ' RaumAmDP '+ RaumnameAmDP + ' gelöscht')); } } } else { console.log(DP_Selected + ' ist nicht Aufzählung vorhanden'); } } else { if (getState('0_userdata.0.Global.Debug').val == true) { console.log(('Raum ' + RaumnameAmDevice + ' ist nicht in Aufzählung vorhanden. DP Selected:' + DP_Selected)); } }
  • [gelöst] kein Log in JS-Scripten möglich

    22
    0 Votes
    22 Posts
    2k Views
    L
    @mrjeschke Ja, das war es! 1000 Dank! Was mich aber brutal ärgert: ich war der Meinung, dass ich hätte das schon ausprobiert bzw. umgestellt .... . Es ist halt wie so häufig: das Problem sitzt vor der Tastatur und sieht den Wald vor lauter Bäumen nicht ....
  • Durchfluss Liter/Min aus Zählerstand

    19
    0 Votes
    19 Posts
    1k Views
    K
    Bei meinen zyklischen Daten (Wasserzähler, früher auch S0 Stromzähler) habe ich den Zyklus durch die Sensoren vorgeben lassen. Diese senden jede Minute neue Daten (Gesamtsumme). Dann kann man auf die Datenpunkte triggern und "old" funktioniert auch wieder. Das Ursprungsskript von @paul53 passt dann, wenn man den timeout block raus nimmt.
  • Time-triggerd Skript wird nicht ausgelöst

    11
    0 Votes
    11 Posts
    764 Views
    CodierknechtC
    @chco sagte in Time-triggerd Skript wird nicht ausgelöst: Perfekt, danke! Naja - perfekt würde ich das nicht nennen. Ich jedenfalls finde die Logik dahinter mindestens "fragwürdig". Du willst also zwischen 04:00 und 06:00 Uhr schauen, ob das Handy zu 80 oder mehr % geladen ist und dann die dazu verwendete Dose abschalten? Was passiert, wenn Dein Handy um 05:59 Uhr zu 79% geladen ist und die 80% um 06:01 Uhr erreicht werden? Eben - nix! Sowas löst man üblicherweise mit einem Trigger und nicht über einen Zeitplan. on({id: "0_userdata.0.iPhone_battery", change: "ne"}, async function (obj) { if (obj.state.val >= 80) { // Steckdose wird ausgeschaltet setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false); // eine WhatsApp Benachrichtung senden sendTo('whatsapp-cmb.0', 'send', { text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.', /*hier fehlt noch etwas, oder?*/ // Text der WhatsApp Nachricht }); } });
  • Lampe jede Minute 10% heller

    3
    0 Votes
    3 Posts
    300 Views
    liv-in-skyL
    @chco setInterval mit 10 minuten wenn du die 100% hast : stoppe interval

275

Online

33.0k

Users

83.4k

Topics

1.3m

Posts