Weiter zum Inhalt

JavaScript

2.5k Themen 49.8k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Syrlex Plus 10 connect SL - App reverse engineering

    15
    1
    1 Stimmen
    15 Beiträge
    1k Aufrufe
    ?
    @tombox 1000 Dank!!!
  • Java Script - Objekt JSON

    8
    0 Stimmen
    8 Beiträge
    533 Aufrufe
    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 Stimmen
    8 Beiträge
    799 Aufrufe
    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 Stimmen
    53 Beiträge
    7k Aufrufe
    D
    @ticaki @paul53 hab den Fehler bei mir im Code gefunden, danke euch für eure Hilfe!
  • Dateigröße mit Bordmitteln

    15
    0 Stimmen
    15 Beiträge
    884 Aufrufe
    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...
  • Dieses Thema wurde gelöscht!

    0
    0 Stimmen
    0 Beiträge
    2 Aufrufe
    Niemand hat geantwortet
  • [Gelöst] Self signed certificate ignorieren

    3
    1
    0 Stimmen
    3 Beiträge
    425 Aufrufe
    D
    @codierknecht super das war einfach wenn man es weiss 😄 Danke für die Hilfe
  • Fehler bei httpGet(), aber kein Fehlercode

    6
    0 Stimmen
    6 Beiträge
    562 Aufrufe
    ?
    @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 Stimmen
    5 Beiträge
    356 Aufrufe
    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 Stimmen
    9 Beiträge
    832 Aufrufe
    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 Stimmen
    3 Beiträge
    234 Aufrufe
    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 Stimmen
    17 Beiträge
    1k Aufrufe
    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 Stimmen
    19 Beiträge
    2k Aufrufe
    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 Stimmen
    7 Beiträge
    878 Aufrufe
    F
    @paul53 said in JS Funktion: !!val Es ist bitter wie einfach die Lösung sein kann Vielen Dank! :-)
  • Anpassung eines Scripts / Hilfe benötigt

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    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 Stimmen
    4 Beiträge
    523 Aufrufe
    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 Stimmen
    6 Beiträge
    365 Aufrufe
    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 Stimmen
    3 Beiträge
    376 Aufrufe
    F
    @liv-in-sky Das war die Lösung... Vielen Dank :-)
  • Erstellung eines Keyboard Arrays für Telegram

    javascript
    6
    0 Stimmen
    6 Beiträge
    531 Aufrufe
    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. @liv-in-sky danke schön die ticaki Lösung ist übersichtlicher
  • Script zum Steuern von Blauberg Wohnrauzmlüftern

    9
    2
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    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

393

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge