Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 49.0k Posts

NEWS

  • Syrlex Plus 10 connect SL - App reverse engineering

    15
    1
    1 Votes
    15 Posts
    1k Views
    ?
    @tombox 1000 Dank!!!
  • Java Script - Objekt JSON

    8
    0 Votes
    8 Posts
    386 Views
    OliverIOO
    @schmidiv Da es jetzt noch nicht so deutlich da stand. Du legst einen Datenpunkt unter 0_userdata mit Typ String/Text an Den Wert kannst du mit getState und setState lesen und schreiben. Ein json Objekt das als Text vorliegt kannst du mit JSON.parse in ein Objekt umwandeln und vor dem Schreiben wieder mit JSON.stringify in Text umwandeln. Das ist einfacher wie mit getObject und extendObject zu hantieren.
  • JavaScript-Methode für das Auslesen des Objekt-Namens

    8
    1
    0 Votes
    8 Posts
    649 Views
    G
    @ticaki Danke dafür. Das sieht sehr interessant aus. Ich werde wohl auch noch Einiges an Syntax von JS/TS lernen. Ich schau es mir nächste Woche im Detail an - diese Woche komme ich nicht mehr dazu
  • Zeiten filtern Array

    53
    0 Votes
    53 Posts
    5k Views
    D
    @ticaki @paul53 hab den Fehler bei mir im Code gefunden, danke euch für eure Hilfe!
  • Dateigröße mit Bordmitteln

    15
    0 Votes
    15 Posts
    691 Views
    R
    @asgothian sagte in Dateigröße mit Bordmitteln: Erst einmal danke für die Rückmeldung und die Erklärung. Du musst das was oben steht durchaus auch 'korrekt' umsetzen: Ja klar :-) , aber das war ja eben mein Verständnisproblem Mit dem 'import' befehl importierst du eine Bibliothek. Damit ersetzt import fs from 'fs' nur var fs = require('fs') In der muss dann die Funktion aufgerufen werden die die Daten liefert:: Ok, das haste gut erklärt. Wieder was gelernt. Also danke-danke...
  • This topic is deleted!

    0
    0 Votes
    0 Posts
    2 Views
    No one has replied
  • [Gelöst] Self signed certificate ignorieren

    3
    1
    0 Votes
    3 Posts
    270 Views
    D
    @codierknecht super das war einfach wenn man es weiss 😄 Danke für die Hilfe
  • Fehler bei httpGet(), aber kein Fehlercode

    6
    0 Votes
    6 Posts
    485 Views
    ?
    @homoran Ja, das ist nichts geheimes. Kann sich jeder dort einen Token für die API generieren. @Codierknecht Nehme ich eine andere URL (z. B. http://www.aws32.de/) funktioniert alles. (Das ist nur eine meiner leeren Domains)
  • Steuersignale, bzw. Kopplung überwachen

    5
    0 Votes
    5 Posts
    257 Views
    H
    @haus-automatisierung ich wollte einen Schritt weiter auswerten. Also nicht, ob alles versendet wurde, sondern ob alles beim Empfänger ankam und der Empfänger dies bestätigte. Es geht um den Adapter „Fronius Wattpilot“. Besonderheit ist, dass Signale nicht direkt in den zugehörigen Datenpunkt geschrieben werden, sondern in einem Befehls-DP übergeben werden. z.B. um in den DP „psm“ eine 2 zu schreiben, muss ich in den DP „set_state“ den Befehl „psm;2“ schreiben.
  • [gelöst] Zeichenfolge aus iCal und DP setzten

    9
    0 Votes
    9 Posts
    617 Views
    AsgothianA
    @australien interessant - aber das zurück setzen sollte wegen der kurzen Zeitspanne (1 Min) direkt im Code-Pfad des setzen passieren. Dafür einen extra cron anzulegen ist eher wenig Sinnvoll. Timeout ist da besser /* Es wird die Instanz iCal.2 auf die Werte VIE-FRA oder VIE-MUC durchsucht. Falls ein Eintrag mit Beginn vor 07:01 gefunden wird, wird der Datenpunkt Frühaufsteher für die Umwälzpumpe aktiviert. Es wird auch die Zeit des Auslöseereignisses gespeichert. {1} Version 1.2. 24.01.2025 */ // Definiere hier die Minuten, um wie viele Minuten vor dem Event der Datenpunkt gesetzt werden soll const minutesBefore = 150; // Variablen für die Cron-Handles (wird beim Skriptstart auf undefined gesetzt) let cronHandle; let cronHandleReset; // Dieser Code wird ausgeführt, wenn sich der Datenpunkt 'ical.2.data.table' ändert on({id: 'ical.2.data.table', change: 'ne'}, function (obj) { let icalData = obj.state.val; // Die neuen Daten des iCal-Datenpunkts // Überprüfen, ob icalData ein Array ist if (Array.isArray(icalData)) { // Durchlaufe die ical-Daten und extrahiere die relevanten Informationen for (let event of icalData) { // Hole die Zusammenfassung des Ereignisses let eventSummary = event._object && event._object.summary ? event._object.summary.val : undefined; // Prüfe, ob ein gültiger eventSummary vorhanden ist if (typeof eventSummary === 'string') { // Hole die Startzeit und konvertiere sie in ein Date-Objekt let eventStart = event._object && event._object.start ? new Date(event._object.start) : undefined; if (eventStart) { // Definiere die Vergleichszeit (07:01) let compareTime = new Date(); compareTime.setHours(7, 1, 0, 0); // 07:01:00 am aktuellen Tag // Überprüfen, ob das Event VIE - FRA oder VIE - MUC ist und die Startzeit vor 07:01 liegt const flightDestinations = ['VIE - FRA', 'VIE - MUC']; // Liste der möglichen Flugziele if (flightDestinations.some(destination => eventSummary.includes(destination)) && eventStart < compareTime) { // Berechne den Zeitpunkt x Minuten vorher let activationTime = new Date(eventStart.getTime() - minutesBefore * 60 * 1000); // Prüfe, ob der berechnete Zeitpunkt in der Zukunft liegt let now = new Date(); if (activationTime > now) { // Berechne das Event-Datum und die Startzeit als String const eventDay = activationTime.toLocaleDateString('de-DE', {year: 'numeric', month: '2-digit', day: '2-digit'}); const eventStartTime = activationTime.toLocaleTimeString('de-DE', {hour: '2-digit', minute: '2-digit'}); // Setze die Startzeit in den ioBroker-Datenpunkt earlybird_time setState('0_userdata.0.Kalender_options.Reisen.earlybird_time', eventStartTime); // Lösche den vorherigen Cron-Job, falls vorhanden if (cronHandle) clearSchedule(cronHandle); // Erstelle einen neuen Cron-Schedule, um earlybird auf true zu setzen cronHandle = schedule( `{"time":{"exactTime":true,"start":"${eventStartTime}"},"period":{"once":"${eventDay}"}}`, async () => { // Setze earlybird auf true setState('0_userdata.0.Kalender_options.Reisen.earlybird', true); // Ausgabe zur Bestätigung console.log(`earlybird für ${eventSummary} ausgelöst um ${eventStartTime}.`); // Berechne die Zeit, wann earlybird auf false gesetzt wird (1 Minute später) let resetTime = new Date(activationTime.getTime() + 1 * 60 * 1000); const resetDay = resetTime.toLocaleDateString('de-DE', {year: 'numeric', month: '2-digit', day: '2-digit'}); const resetTimeStr = resetTime.toLocaleTimeString('de-DE', {hour: '2-digit', minute: '2-digit'}); // Lösche den vorherigen Reset-Cron-Job, falls vorhanden if (cronHandleReset) clearTimeout(cronHandleReset); // Erstelle einen neuen Cron-Schedule, um earlybird auf false zu setzen cronHandleReset = setTimeout(async () => { setState('0_userdata.0.Kalender_options.Reisen.earlybird', false); console.log(`earlybird für ${eventSummary} um ${resetTimeStr} wieder deaktiviert.`); }, 3600000); console.log(`Cron-Schedule für Reset von earlybird gesetzt: ${eventSummary} wird am ${resetDay} um ${resetTimeStr} deaktiviert.`); } ); console.log(`Cron-Schedule für earlybird gesetzt: ${eventSummary} wird am ${eventDay} um ${eventStartTime} ausgelöst.`); } else { console.log(`Aktivierungszeitpunkt für ${eventSummary} liegt in der Vergangenheit. earlybird wird sofort aktiviert.`); // Wenn der Zeitpunkt in der Vergangenheit liegt, sofort setzen let eventStartTime = eventStart.toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}); setState('0_userdata.0.Kalender_options.Reisen.earlybird_time', eventStartTime); setState('0_userdata.0.Kalender_options.Reisen.earlybird', true); // Berechne die Zeit, wann earlybird auf false gesetzt wird (1 Minute später) let resetTime = new Date(now.getTime() + 1 * 60 * 1000); const resetTimeStr = resetTime.toLocaleTimeString('de-DE', {hour: '2-digit', minute: '2-digit'}); // Lösche den vorherigen Reset-Cron-Job, falls vorhanden if (cronHandleReset) clearTimeout(cronHandleReset); // Erstelle einen neuen Cron-Schedule, um earlybird auf false zu setzen cronHandleReset = setTimeout(async () => { setState('0_userdata.0.Kalender_options.Reisen.earlybird', false); console.log(`earlybird für ${eventSummary} um ${resetTimeStr} wieder deaktiviert.`); }, 3600000); console.log(`earlybird für ${eventSummary} wird sofort ausgelöst und am ${resetTimeStr} zurückgesetzt.`); } } } else { console.warn(`Kein gültiger Startzeitpunkt für das Ereignis ${eventSummary}`); } } } } else { console.error('Fehler: ical.2.data.table enthält keine gültigen Array-Daten.'); } });
  • Raum und Funktion unter 0_userdata anpassen

    3
    2
    0 Votes
    3 Posts
    181 Views
    T
    async function addToEnum(enumName, newStateId) { if (!await existsObjectAsync(newStateId)) { log(newStateId + ' not exist!', 'warn') return; } let myEnum = await getObjectAsync(enumName); if (myEnum) { let pos = myEnum.common.members.indexOf(newStateId); if (pos === -1) { try { myEnum.common.members.push(newStateId); myEnum.from = "system.adapter." + "0"; myEnum.ts = new Date().getTime(); //@ts-ignore await setObjectAsync(enumName, myEnum); } catch (e) {log(e + ' add id: ' + newStateId,'error')} } } } so wirds benutzt: const enumFunctions = 'online' ... for (const idPart of watchingDevice.states) { let s = Array.prototype.slice.apply($('state(id='+idPart+')')) for (const id of s) { await addToEnum('enum.functions.'+enumFunctions,id) } } Ich füge dort States die ich raus gefiltert habe, der Gruppe überwachung hinzu. Ist auch 2 Jahre alt, heute geht ja selector.toArray()
  • [Q] Email- Attachment als Variable ?

    17
    0 Votes
    17 Posts
    1k Views
    R
    @codierknecht sagte in [Q] Email- Attachment als Variable ?: Darum läuft das in meinem Beispiel erst, wenn des exec ein Ergebnis gemeldet hat. Ah...ok. Dann muss ich mir DAS nochmal genauer ansehen. Tnx für den Hinweis. PS: Du meinst den function (error) - Zweig? PPS: Habe nochmal umgebastelt und Deine exec Version übernommenn. Lediglich das Zusammenbasteln des Dateinamens habe ich ausgelagert / beibehalten.
  • Namenskonflikte???

    19
    1
    0 Votes
    19 Posts
    1k Views
    T
    @ralf-2 Nur die javascript.d.ts. Das sind auch die Typen die für Systemfunktionen zur Verfügung stehen. Wüsste jetzt nicht was da fehlt. Übersicht müsste jemand machen. :) https://github.com/ioBroker/ioBroker.javascript/blob/master/lib/javascript.d.ts
  • [Gelöst] JS Funktion

    7
    1
    0 Votes
    7 Posts
    639 Views
    F
    @paul53 said in JS Funktion: !!val Es ist bitter wie einfach die Lösung sein kann :dart: Vielen Dank! :-)
  • Anpassung eines Scripts / Hilfe benötigt

    14
    0 Votes
    14 Posts
    1k Views
    paul53P
    @opöl sagte: unabhängig davon, ob es einen „von“ und „nach“ Datenpunkt gibt. Ich habe mir nicht das komplette Skript angesehen.
  • [Gelöst] JavaScript für Jarvis Benachrichtigung

    4
    1
    0 Votes
    4 Posts
    409 Views
    F
    @firechumper said in JavaScript für Jarvis Benachrichtigung: ring.0.doorbell_609102320.HD Snapshot.file Das war die Lösung! 1000 Dank <3
  • Wie beim Selector keine EIntrag abfangen?

    6
    0 Votes
    6 Posts
    276 Views
    T
    @ben1983 Ich benutze nie funktionen dahinter :D immer for (let i = 0 ... das toArray() wird aber jetzt immer hinzugefügt - dann geht for (const x of xxx)
  • [gelöst] Telegram InlineKeyboard

    3
    0 Votes
    3 Posts
    287 Views
    F
    @liv-in-sky Das war die Lösung... Vielen Dank :-)
  • Erstellung eines Keyboard Arrays für Telegram

    javascript
    6
    0 Votes
    6 Posts
    407 Views
    L
    @ticaki sagte in Erstellung eines Keyboard Arrays für Telegram: const a = '["button1", "Button2"]#' // den Fehler sieht man wohl try { const arr = JSON.parse(a); } catch { log('ich habs gesagt :)') } Perfekt! Danke das hatte mir gefehlt. :hugging_face: @liv-in-sky danke schön :blush: die ticaki Lösung ist übersichtlicher
  • Script zum Steuern von Blauberg Wohnrauzmlüftern

    9
    2
    0 Votes
    9 Posts
    1k Views
    N-b-dyN
    Auch wenn das ein altes Thema ist, ggf. finden sich hier gewillte Tester :) https://forum.iobroker.net/topic/78967/test-adapter-oxxify-fan-control-v0-0-x-github-latest

335

Online

32.7k

Users

82.4k

Topics

1.3m

Posts