Skip to content

JavaScript

2.5k Topics 49.7k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Scriptoptimierung Solarprognose

    18
    1
    0 Votes
    18 Posts
    2k Views
    icebearI
    @arteck said in Scriptoptimierung Solarprognose: poste mal den JSON aus dem Hauptordner {"1733468400":[0,0],"1733472000":[0.144,0.144],"1733475600":[0.443,0.587],"1733479200":[0.668,1.255],"1733482800":[0.702,1.957],"1733486400":[0.753,2.71],"1733490000":[0.63,3.34],"1733493600":[0.56,3.9],"1733497200":[0,3.9],"1733551200":[0,0],"1733554800":[0.144,0.144],"1733558400":[0.21,0.354],"1733562000":[0.443,0.797],"1733565600":[0.614,1.411],"1733569200":[1.962,3.373],"1733572800":[1.775,5.148],"1733576400":[0.951,6.099],"1733580000":[1.068,7.167],"1733583600":[0,7.167],"1733637600":[0,0],"1733641200":[0.048,0.048],"1733644800":[0.157,0.205],"1733648400":[0.506,0.711],"1733652000":[3.037,3.748],"1733655600":[3.281,7.029],"1733659200":[2.798,9.827],"1733662800":[2.275,12.102],"1733666400":[1.092,13.194],"1733670000":[0,13.194],"1733727600":[0,0],"1733731200":[0.144,0.144],"1733734800":[0.443,0.587],"1733738400":[0.641,1.228],"1733742000":[0.761,1.989],"1733745600":[0.78,2.769],"1733749200":[0.65,3.419],"1733752800":[0.421,3.84],"1733756400":[0,3.84],"1733814000":[0,0],"1733817600":[0.144,0.144],"1733821200":[0.443,0.587],"1733824800":[0.614,1.201],"1733828400":[0.702,1.903],"1733832000":[0.699,2.602],"1733835600":[0.59,3.192],"1733839200":[0.396,3.588],"1733842800":[0,3.588]}
  • [gelöst] Typkonvertierung in Typescript

    6
    0 Votes
    6 Posts
    532 Views
    T
    @iob69 https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#best-practice
  • Statistics Daten auf einen anderen Datenpunkt übertragen

    1
    0 Votes
    1 Posts
    270 Views
    No one has replied
  • [Gelöst] Javascript in vis mit button triggern

    javascript
    16
    0 Votes
    16 Posts
    1k Views
    I
    @oliverio @BananaJoe Ok, jetzt klappt es auch mit meinem Button, vielen Dank :-) Musste noch eine Abfrage einbauen, damit die funktion auch nur auf die set-Action reagiert und nicht zweimal: on(DPTestPunkt, async (data) => { if (getState(DPTestPunkt).val) { console.log('button pressed'); setTimeout(function() { setState(DPTestPunkt , false); }, 400); } });
  • Obi Bluetooth Lichterkette in IOBroker integrieren

    4
    1
    0 Votes
    4 Posts
    774 Views
    F
    @oliverio node-ble und noble habe ich zuerst versucht, das hat überhaupt nicht funktioniert, darum bin ich dann auf dbus gewechselt und das hätte auch super funktioniert, wenn ich rausgefunden hätte, wie ich die Befehle im richtigen Format sende. :) Die Lichterkette erwartet nämlich strings und das habe ich einfach nicht hinbekommen und meine online suche hat gezeigt, ich bin da nicht der Einzige. :D Irgendwie ist alles was mit bluetooth zu tun hat immer ein absoluter krampf! Ich habe jetzt eine neue Version die 100% zuverlässig ist, falls das jemand gebrauchen kann: (diese benutzt das gatttool) const { exec } = require('child_process'); // MAC-Adresse des Geräts und Handle der GATT-Characteristic const deviceAddress = '24:35:02:27:DE:6E'; const characteristicHandle = '0x0025'; // Pfade zu den Datenpunkten const datapointOnOff = 'javascript.0.MeineVariablen.Lichterkette_OnOff'; const datapointBrightness = 'javascript.0.MeineVariablen.Lichterkette_Helligkeit'; // Warteschlange und Status const actionQueue = []; let isProcessing = false; // Funktion: Shell-Befehl ausführen mit Debugging und Timeout function executeCommand(command, timeout = 10000) { console.log(`Führe aus: ${command}`); return new Promise((resolve, reject) => { const process = exec(command, (error, stdout, stderr) => { if (error) { console.error(`Fehler: ${stderr || error.message}`); return reject(stderr || error.message); } console.log(`Erfolg: ${stdout}`); resolve(stdout.trim()); }); setTimeout(() => { process.kill('SIGTERM'); reject('Befehl abgebrochen (Timeout)'); }, timeout); }); } // Funktion: GATT-Wert schreiben mit Wiederholungslogik async function writeGattValueWithRetries(value, maxRetries = 10, initialDelay = 500) { let attempts = 0; let delay = initialDelay; while (attempts < maxRetries) { try { console.log(`Versuch ${attempts + 1}/${maxRetries}: Sende GATT-Befehl`); await writeGattValue(value); console.log('Befehl erfolgreich gesendet.'); return; // Erfolgreich, keine weiteren Versuche notwendig } catch (error) { attempts++; console.error(`Fehler beim Senden (Versuch ${attempts}):`, error); if (attempts >= maxRetries) { console.error('Maximale Anzahl an Versuchen erreicht. Abbruch.'); throw new Error('GATT-Befehl konnte nach mehreren Versuchen nicht gesendet werden.'); } console.log(`Warte ${delay} ms vor erneutem Versuch...`); await new Promise((resolve) => setTimeout(resolve, delay)); delay *= 2; // Verzögerung verdoppeln } } } // Funktion: GATT-Wert schreiben async function writeGattValue(value) { const command = `gatttool -b ${deviceAddress} --char-write-req --handle=${characteristicHandle} --value="${value}"`; console.log(`Sende GATT-Befehl: ${command}`); try { const output = await executeCommand(command); console.log(`GATT-Befehl erfolgreich: ${output}`); } catch (error) { console.error('Fehler beim Schreiben auf die GATT-Characteristic:', error); throw new Error('GATT-Wert konnte nicht geschrieben werden.'); } } // Funktion: Helligkeit berechnen function calculateBrightnessHex(brightnessPercent) { const brightnessHex = Math.round((brightnessPercent / 100) * 0x64).toString(16).padStart(2, '0'); return `030101${brightnessHex}`; } // Funktion: Lichterkette steuern async function controlLight(action, brightness = null) { try { if (action) { if (brightness !== null) { const brightnessValue = calculateBrightnessHex(brightness); await writeGattValueWithRetries(brightnessValue); } else { const value = action === 'on' ? '01010101' : '01010100'; await writeGattValueWithRetries(value); } } } catch (error) { console.error('Fehler bei der Steuerung der Lichterkette:', error); } } // Funktion: Warteschlange abarbeiten async function processQueue() { if (isProcessing) return; // Verhindert gleichzeitige Verarbeitung isProcessing = true; while (actionQueue.length > 0) { const { action, brightness } = actionQueue.shift(); // Nächsten Befehl aus der Warteschlange holen console.log(`Verarbeite Aktion: ${action}, Helligkeit: ${brightness}`); await controlLight(action, brightness); } isProcessing = false; } // Datenpunkte erstellen, falls nicht vorhanden createState(datapointOnOff, false, { name: 'Lichterkette On/Off', type: 'boolean', role: 'switch', read: true, write: true, def: false }, () => { // Event Listener für Zustandsänderungen registrieren on({ id: datapointOnOff, change: 'ne' }, async (obj) => { const action = obj.state.val ? 'on' : 'off'; actionQueue.push({ action, brightness: null }); processQueue(); }); }); createState(datapointBrightness, 100, { name: 'Lichterkette Helligkeit', type: 'number', role: 'level.dimmer', read: true, write: true, def: 100, min: 0, max: 100 }, () => { // Event Listener für Helligkeitsänderungen registrieren on({ id: datapointBrightness, change: 'ne' }, async (obj) => { const brightness = obj.state.val; if (brightness < 3) { // Wenn Helligkeit unter 3%, Lichterkette ausschalten console.log('Helligkeit unter 3% - Lichterkette wird ausgeschaltet.'); setState(datapointOnOff, false); // Setzt On/Off-Datenpunkt auf false } else { // Ansonsten Helligkeit setzen actionQueue.push({ action: 'on', brightness }); processQueue(); } }); }); // Debugging: Manuelle Steuerung /*(async () => { try { console.log('Teste Steuerung: Einschalten mit 50% Helligkeit...'); actionQueue.push({ action: 'on', brightness: 50 }); processQueue(); console.log('Teste Steuerung: Ausschalten...'); actionQueue.push({ action: 'off', brightness: null }); processQueue(); } catch (error) { console.error('Fehler bei manueller Steuerung:', error); } })(); */
  • [gelöst] Speedtest-Skript liefert falsche Werte

    7
    1
    0 Votes
    7 Posts
    657 Views
    SKBS
    @thomas-braun Wenns ja dann an einer defekten SSD liegen könnte, könnte man das Thema ja auf "gelöst" setzen ;)
  • Grohe Sense Guard Intelligente Wassersteuerung in Iobroker einlesen...

    13
    0 Votes
    13 Posts
    4k Views
    H
    @e-s Schau ich mir mal an...danke
  • GELÖST Sperriges JSON vom Tasmota Stromzähler Script

    9
    0 Votes
    9 Posts
    822 Views
    paul53P
    @martinp sagte: Ist die Abfrage ob das Attribut gefunden wurde in der Funktion "TestVar" so korrekt? Wenn der Wert 0 kein gültiger Wert ist, funktioniert diese Prüfung. Falls der Wert 0 ein gültiger Wert sein kann, prüfe "MyVal != null". [image: 1732534835615-blockly_temp.jpg]
  • Skript für ParcelAPP iOS (Alternative zum Parcel Adapter)

    1
    11
    0 Votes
    1 Posts
    337 Views
    No one has replied
  • httpGet funktioniert nach update node.js nicht mehr

    4
    0 Votes
    4 Posts
    516 Views
    S
    Zur Info: es scheint kein Problem von httpGet zu sein, wie ich zunächst vermutete, sondern ein Problem der node-sonos-http-api in Verbindung mit Node.js 20. Der Entwickler schrieb mir dazu auf GitHub: I think this is related to this global change in Node 20: nodejs/node#43522 The Sonos players probably doesn't like keep-alive, and might not properly respond with a Connection: close. The http api will maintain connections and try to send new requests over the old socket and probably confusing the player. Since this only affects requests that happen within 30-90 seconds (not sure what the default timeout is), this might appear random. I'll see if I can reproduce it, I haven't run this project under newer Node.js versions in a long time. Hat jemand ähnliche Probleme mit der node-sonos-http-api?
  • Skript für Sonnenwenden, Tagundnachtgleiche und Jahreszeiten

    1
    2
    3 Votes
    1 Posts
    642 Views
    No one has replied
  • Cronjobs anzeigen [gelöst]

    20
    0 Votes
    20 Posts
    2k Views
    J
    @paul53 Brauche keine Scriptgrenzen überschreiten, sondern nur in einem Script mehrere JS-Script Funktionen. Hab alles erledigt, sitze nun am nächsten Problem, welches noch einmal kniffliger ist. Dazu mache ich einen neuen Thread auf. Danke Dir jedenfalls! Du hast mir wieder sehr weitergeholfen!
  • Modul durch module.exports und require einbinden

    6
    0 Votes
    6 Posts
    833 Views
    T
    @franzda Das was paul geschrieben hat und das hier: Da gehts um eigene externe Module, Klassen und TS. https://forum.iobroker.net/post/1078253 Edit: habs selbst nochmal gelesen ist noch immer interessant, was man nicht alles vergisst.
  • Trigger stoppen / löschen

    4
    0 Votes
    4 Posts
    459 Views
    T
    @dan78 Mir fällt kaum ein Grund ein warum in einem Trigger einen anderen Trigger aktivieren soll außer halt das was ich dem BWM Skript oben habe: Trigger BWM an -> Trigger auf BMWs werden gesetzt Trigger BWM aus -> alle Trigger auf BWMs werden entfernt. Naja bin das aber gerade am entfernen, weil sich da nach nem Jahr wieder einzulesen ist nervig. Ne Variable ist schneller verstanden.
  • Problem mit "Fenster offen Script"

    71
    1
    0 Votes
    71 Posts
    5k Views
    werner2000xW
    @paul53 sorry, habe falsch eingefügt. Jetzt klappt es. :-)
  • Hue Lampe alle Zustände auslesen (und später zurückspielen)

    4
    0 Votes
    4 Posts
    466 Views
    Ro75R
    @fenderbender OK, aber für was alles sich merken wollen. Bisherige(n) Wert(e) merken - so viele können es sein - neuen Wert setzen und wenn fertig alte Werte wieder rein. Das sind maximal drei Werte. Ro75
  • VIS Slideshow funktioniert nicht mehr

    6
    1
    0 Votes
    6 Posts
    553 Views
    T
    @arteck @Homoran Also, da lag tatsächlich der Fehler... Ihr seit TOP !! Vielen Dank.
  • Hilfe für Javascript nicht Versteher

    6
    0 Votes
    6 Posts
    688 Views
    A
    @nape1 Hallo Ich habe das gleiche Problem das das script nicht lauft. Habe es dann hir gelesen mit dem c. Bekommst du mittlerweile Daten aus der WP ich bin zwar verbunden aber so wie Beschrieben mit einzelne Daten bekomme ich nichts laut Bespreibung auf der Wiki Seite. Villeicht kannst mir helfen fals du es hinbekommen hast. mfg Andi
  • Signal über Beendigung eines Skriptes

    javascript
    3
    0 Votes
    3 Posts
    211 Views
    2
    @paul53 Genau das habe ich gesucht. Besten Dank!
  • This topic is deleted!

    6
    -1 Votes
    6 Posts
    33 Views

383

Online

33.0k

Users

83.4k

Topics

1.3m

Posts