Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.4k Themen 211.8k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    A
    @as Welches Diagramm verwendest du? Es gibt drei Diagramme, eins für heute, eins für Morgen und eins wo beide Tage drauf sind. Das Skript berücksichtig beide Tage.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    M
    @paul53 Vielen lieben Dank für Deine Hilfe. Mit GET läufts perfekt. Ich dachte das GET für "abholen" von Werten verwendet wird und POST für das Senden von Befehlen. Nochmal vielen Dank lg Michael
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Scriptsammlung Vol. 2

    Angeheftet Gesperrt
    3
    3 Stimmen
    3 Beiträge
    4k Aufrufe
    NegaleinN
    :exclamation:Achtung: Diese Scripts sind teils auch ungetestet bzw. nur vom Ersteller getestet worden. :exclamation: Blockly :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: :heavy_minus_sign: diverse Scripte Schimpfwortgenerator (BananaJoe, Nikolai Radke) Ein Schimpfwortgenerator ioBroker-Forum-Thread: Schimpfwortgenerator Witze aus API (mading) Ein Witzegenerator ioBroker-Forum-Thread: Witzegenerator Bilder mittels LLM ChatGPT Vision ananalysieren (David G.) Bilder mit ChatGPT ananalysieren ioBroker-Forum-Thread: Bilder mittels LLM ChatGPT Vision ananalysieren Visualisierung Agentdvr-Aufnahmen in der Visualisierung darstellen (David G.) Agentdvr-Aufnahmen anzeigen ioBroker-Forum-Thread: Agentdvr-Aufnahmen in der Visualisierung darstellen Trash HTML Widget VIS2 (skvarel) Trash HTML Widget VIS2 ioBroker-Forum-Thread: Trash HTML Widget VIS2 GitHub GitHub
  • Scriptsammlung Vol. 2 -- Diskussion

    Angeheftet
    63
    1 Stimmen
    63 Beiträge
    11k Aufrufe
    NegaleinN
    @skvarel said in Scriptsammlung Vol. 2 -- Diskussion: Mein Trash-Script um den Trash-Adapter in VIS2 nutzen zu können. Danke findest du unter Blockly --> Visualisierung
  • Alexa Shopping List mit Bring synchronisieren

    168
    0 Stimmen
    168 Beiträge
    34k Aufrufe
    OreiderO
    @Sil4s Danke, hatte auch die regelmäßigen Aktualisierungen. Hab mal auf deine geänderte Version umgestellt. Bisher schaut alles gut aus! Danke dafür!
  • SendTo-Blockly für Bilderstellung geht nicht

    10
    2
    0 Stimmen
    10 Beiträge
    79 Aufrufe
    M
    Hallo Matthias, danke für die Rückmeldung. eCharts läuft bei mir in Version 2.0.10, bei canvas hab ich mit dem von Dir genannten Befehl ein Rebuild gemacht. Die selber angelegte Datei hab ich gelöscht und dann mein Skript laufen lassen. Allerdings klappt das nicht, die Datei wird nicht neu angelegt und ich erhalte im Protokoll folgende Meldungen: Error: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/echarts-tmp.jpg' at Object.openSync (node:fs:561:18) at Object.readFileSync (node:fs:445:35) at loadImage (/opt/iobroker/node_modules/pushover-notifications/lib/pushover.js:34:15) at Pushover.send (/opt/iobroker/node_modules/pushover-notifications/lib/pushover.js:206:51) at Pushover.sendNotification (/opt/iobroker/node_modules/iobroker.pushover/main.js:204:23) at Pushover.processMessage (/opt/iobroker/node_modules/iobroker.pushover/main.js:82:18) at Pushover.onMessage (/opt/iobroker/node_modules/iobroker.pushover/main.js:37:33) at Pushover.emit (node:events:519:28) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7309:20) at Immediate.<anonymous> (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/build/esm/lib/states/statesInRedisClient.js:286:37) pushover.0 2025-11-25 18:42:00.074 error unhandled promise rejection: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/echarts-tmp.jpg' pushover.0 2025-11-25 18:42:00.074 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). Gibt das vielleicht mehr Aufschluss, was schief läuft? Danke für die Unterstützung! Gruß Martin
  • Gerätenamen anstatt "Switch State" im Blockly

    8
    2
    0 Stimmen
    8 Beiträge
    113 Aufrufe
    HomoranH
    @Roelli jepp! genau so!
  • [Script] Die sprechende Kaffeemaschine – Home Connect

    javascript
    11
    1
    2 Stimmen
    11 Beiträge
    1k Aufrufe
    B
    @sigi234 said in [Script] Die sprechende Kaffeemaschine – Home Connect: @Bongo said in [Script] Die sprechende Kaffeemaschine – Home Connect: @sigi234 Ich habe noch einen Geschirrspüler und einem Backofen von Siemens über Home-Connect. Da wird das Programm für die Kaffeemaschine sicher nicht funktionieren. Aber ich plane auch für diese Geräte ein Script zu machen. Wird aber noch dauern :-) Hallo, hast du schon ein Skript für den GS? Nein, dazu bin ich noch nicht gekommen.
  • Temperaturänderung für Ofen an/aus

    14
    0 Stimmen
    14 Beiträge
    320 Aufrufe
    BananaJoeB
    @yablu87 ok, in meinem Kopf war bei "Ofen" irgendwie ein Bild eines Backofens ...
  • Anwesenheitscontrol basierend auf TR64 Adapter - Script

    Verschoben
    116
    1
    2 Stimmen
    116 Beiträge
    27k Aufrufe
    D
    Hallo allerseits, alter Thread, mal schauen ob noch jemand liest: Hab schon länger ein Anwesenheitsscript am laufen - wird aber irgendwie immer schlechter. Andauernd bekomme ich nachrichten, dass entweder ich oder meine Frau nicht zuhause seien .. obwohl das nicht stimmt. Habe versucht das mit einer kleinen Wartezeit zu mildern .. aber auch keine Erlösung. Stelle das hier mal ein .. vielleicht habt ihr ja eine Idee für mich (womöglich kann man da gar nichts machen, weil es an der Fritzbox oder an den Handies liegt): [image: 1762623997970-0a146a77-49b8-4ad8-8f62-81e9d29e74fa-grafik.png]
  • Variable wird nicht ausgegeben

    6
    2
    0 Stimmen
    6 Beiträge
    164 Aufrufe
    D
    @homoran Ok .. jetzt hab ich's verstanden .. danke! Mal wieder der Groschen, der Pfennigweise fällt.
  • [ gelöst ]. Auslösenden Kontakt anzeigen lassen ... wie

    9
    0 Stimmen
    9 Beiträge
    276 Aufrufe
    H
    @paul53 Danke dir auch für deine Hilfe.... :)
  • ioBroker >> OpenEPaperLink (OEPL)

    10
    3 Stimmen
    10 Beiträge
    1k Aufrufe
    K
    @awd4u Vielen Dank für Deine Anleitung!
  • javascript.0 bricht ab

    javascript
    23
    0 Stimmen
    23 Beiträge
    630 Aufrufe
    CodierknechtC
    @digi-bit sagte in javascript.0 bricht ab: die ins Nevada geführt hat <besserwissermode> Das Ding heißt "Nirvana" :grin: </besserwissermode>
  • ioBroker wenn online-sonst OpenCCU

    6
    0 Stimmen
    6 Beiträge
    266 Aufrufe
    BananaJoeB
    @cäptnblaubär sagte in ioBroker wenn online-sonst OpenCCU: Die Zwangsabhängigkeit in Proxmox wegen fehlendem (Ziel-)storage war mir bis dato nicht bewußt. Bin strikt nach Vorgaben zum Einbinden eines QNAP-NAS als Backup-Ziel vorgegangen. Das wird irgendetwas anders gewesen sein, etwas wichtiges des Containers oder der VM muss dort gelegen haben. Und wenn es nur eine ISO oder eine andere Datei war. War wohl dann nicht per Proxmox Backup Server? Wäre aber ein separates Thema. Ich sehe das wie @Samson71 : Ein System richtig redundant halten bzw. auf den Ausfall vorbereitet sein. Und das geht mit ioBroker nun mal super, gerade wenn es als VM (von mir aus auch als Container) und insbesondere mit Proxmox. Mit 2 Stück kann man eine Replikation einrichten so das das 2. Gerät sogar mitlaufen kann und bei Hardwareausfall schnell übernehmen kann. Do kann man dann auch im laufenden Betrieb Updates einspielen und dafür die VMs (geht nicht kit Container) ohne Unterbrechung (Herunterfahren) verschieben. Mit dem Proxmox Backup Server (der gerne ein NAS als Ziel haben kann) kann man duzende Backups bei geringen Speicherbedarf vorhalten. Dahin kann man auch gut das ioBroker Backup senden lassen. Ganz nebenbei kann man vor Upgrades, insbesondere vor größeren Umbauten, z.B. Update Debian von Bookworm auf Trixie, neue NodeJS Version etc. mal eben vorher einen Snapshot (aka Spielstand speichern) machen und so bei Bedarf wieder zurück springen (aka Spielstand laden) Das geht mit einem Bare-Metal-System eher schlecht, und die CCU wäre Bare-Metal, oder?
  • Webhook von homey an IOB-TR064-Adapter löst Anruf aus

    2
    0 Stimmen
    2 Beiträge
    100 Aufrufe
    FriedhofsblondF
    @friedhofsblond Habe mal bischen was getestet - aber ehrlich steh ich auf dem Schlauch wie ich einen Wert vom homey auf IOB senden kann. Ich habe noch die App Simple-API im IOB installiert und einen Datenpunk erzeugt. Dieser Punkt soll dann ja per Webhook geändert werden auf on oder off , damit ich diesen im Blockly nutzen kann. Geht das schon in die Richtung - oder bin ich total falsch ?? [image: 1762277637524-26ed0a36-2e6a-4648-a407-6ad3680b0388-image.png] [image: 1762277141697-screenshot-2025-11-04-182011.png] [image: 1762277205673-screenshot-2025-11-04-182619.png] update: so ist es richtig, setzt den Alarm auf true oder false: [image: 1762288559552-screenshot-2025-11-04-213522.png]
  • [gelöst] Nuos A8T - ESP32 Chipsatz - Scripte

    13
    1
    -1 Stimmen
    13 Beiträge
    317 Aufrufe
    D
    @oliverio Moin, wenn Du den gesamten, auch den Vorthread (wurde leider geschlossen) liest wird es dir klar sein. https://forum.iobroker.net/topic/82370/nuos-a8t-esp32-chipsatz-email-info-protokoll/10?_=1762146987441 VG dojodojo
  • Werte per Telegram an iobroker senden

    10
    0 Stimmen
    10 Beiträge
    854 Aufrufe
    B
    Falls es jemanden interessiert ist hier ein Taschengeld Script: Javascript: // Taschengeld-Verwaltung mit wöchentlicher Gutschrift + VIS-Steuerung // Stand: November 2025 // Anpassungen: 24h-Zeit ohne Sekunden + HTML-Log-Tabelle + nur 20 letzte Einträge const kinder = { Alrik: { konto: '0_userdata.0.Taschengeld.Alrik.Konto', einzahlung: '0_userdata.0.Taschengeld.Alrik.Einzahlung', auszahlen: '0_userdata.0.Taschengeld.Alrik.Auszahlung', btn_einzahlen: '0_userdata.0.Taschengeld.Alrik.Einzahlen', btn_auszahlen: '0_userdata.0.Taschengeld.Alrik.Auszahlen', woechentlich: '0_userdata.0.Taschengeld.Alrik.Woechentlich', log: '0_userdata.0.Taschengeld.Alrik.Log' }, Theda: { konto: '0_userdata.0.Taschengeld.Theda.Konto', einzahlung: '0_userdata.0.Taschengeld.Theda.Einzahlung', auszahlen: '0_userdata.0.Taschengeld.Theda.Auszahlung', btn_einzahlen: '0_userdata.0.Taschengeld.Theda.Einzahlen', btn_auszahlen: '0_userdata.0.Taschengeld.Theda.Auszahlen', woechentlich: '0_userdata.0.Taschengeld.Theda.Woechentlich', log: '0_userdata.0.Taschengeld.Theda.Log' } }; // 🧾 Logik: Eintrag im Log speichern (HTML-Tabelle, 24h-Zeit, max. 20 Einträge) function logEintrag(kind, betrag, art) { const datum = new Date().toLocaleString('de-DE', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false }); const logPfad = kinder[kind].log; let aktuellesLog = getState(logPfad).val || ''; // Wenn noch keine Tabelle existiert → Grundstruktur erzeugen if (!aktuellesLog.includes('<table')) { aktuellesLog = ` <table style="width:100%; border-collapse:collapse; font-family:Arial; font-size:12px;" border="1"> <thead style="background:#ddd;"> <tr> <th style="padding:4px;">Datum</th> <th style="padding:4px;">Art</th> <th style="padding:4px;">Betrag</th> </tr> </thead> <tbody></tbody> </table>`; } // Neue Tabellenzeile (neueste Einträge oben) const neueZeile = ` <tr> <td style="padding:4px;">${datum}</td> <td style="padding:4px;">${art}</td> <td style="padding:4px; text-align:right;">${betrag.toFixed(2)} €</td> </tr>`; // Neue Zeile am Anfang des Tabellenkörpers einfügen aktuellesLog = aktuellesLog.replace(/(<tbody>)/, `$1${neueZeile}`); // Nur die letzten 20 Einträge behalten const tbodyInhalt = aktuellesLog.match(/<tbody>([\s\S]*?)<\/tbody>/); if (tbodyInhalt) { const alleZeilen = tbodyInhalt[1].match(/<tr>[\s\S]*?<\/tr>/g) || []; const begrenzteZeilen = alleZeilen.slice(0, 20); // Nur die ersten 20 behalten (neueste zuerst) const neuerTbody = "<tbody>" + begrenzteZeilen.join("") + "</tbody>"; aktuellesLog = aktuellesLog.replace(/<tbody>[\s\S]*?<\/tbody>/, neuerTbody); } setState(logPfad, aktuellesLog); } // 🕗 Wöchentliche Auszahlung (Sonntag 08:00 Uhr) schedule("0 8 * * 0", () => { for (const kind in kinder) { const kontoPfad = kinder[kind].konto; const betragPfad = kinder[kind].woechentlich; const betrag = parseFloat(getState(betragPfad).val) || 0; const standAlt = parseFloat(getState(kontoPfad).val) || 0; const standNeu = standAlt + betrag; setState(kontoPfad, standNeu); logEintrag(kind, betrag, "Wöchentliche Gutschrift"); } }); // 💰 Einzahlung per Button for (const kind in kinder) { on({ id: kinder[kind].btn_einzahlen, change: 'ne' }, () => { const betrag = parseFloat(getState(kinder[kind].einzahlung).val); if (isNaN(betrag) || betrag <= 0) return; const konto = kinder[kind].konto; const stand = parseFloat(getState(konto).val) || 0; setState(konto, stand + betrag); logEintrag(kind, betrag, "Manuelle Einzahlung"); // Reset setState(kinder[kind].einzahlung, 0); setState(kinder[kind].btn_einzahlen, false); }); } // 💸 Auszahlung per Button for (const kind in kinder) { on({ id: kinder[kind].btn_auszahlen, change: 'ne' }, (obj) => { const btnStatus = obj.state.val; if (btnStatus !== true) return; // Nur reagieren, wenn Button gedrückt (true) const betrag = parseFloat(getState(kinder[kind].auszahlen).val); const konto = kinder[kind].konto; const stand = parseFloat(getState(konto).val) || 0; if (isNaN(betrag) || betrag <= 0 || betrag > stand) { console.warn(`[Taschengeld] Ungültiger Auszahlungsbetrag für ${kind}: ${betrag}`); setState(kinder[kind].btn_auszahlen, false); return; } setState(konto, stand - betrag); logEintrag(kind, betrag, "Auszahlung"); // Reset setState(kinder[kind].auszahlen, 0); setState(kinder[kind].btn_auszahlen, false); }); } Objekte unter 0_userdata 0 anlegen: [image: 1762114774582-2025-11-02-21_17_02-clipboard.png] Hier eine vis-2: [image: 1762114855292-2025-11-02-21_20_28-clipboard.png]
  • Reagieren auf Homematic Fensterkontakt

    28
    3
    0 Stimmen
    28 Beiträge
    644 Aufrufe
    paul53P
    @jay-jey sagte: Hier noch das andere Blockly Dann verwende direkt den Tasten-Datenpunkt als Trigger zur Abfrage, ob noch Fenster offen sind: [image: 1762097076890-blockly_temp.jpg] EDIT: Die Prüfung ohne Vergleich funktioniert sowohl mit 0/1 als auch mit false/true.
  • Tradfri LED1624G9 und E1524/E1810

    1
    0 Stimmen
    1 Beiträge
    58 Aufrufe
    Niemand hat geantwortet
  • Gelöst: Bilder senden von einen IOB zum anderen IOB

    javascript
    23
    0 Stimmen
    23 Beiträge
    570 Aufrufe
    MartinPM
    @michihorn Die Integration meiner Kameras in iobroker ist rudimentär ... Reolink-Adapter für die beiden richtigen Kameras, und frigate per MQTT für eine experimentell genutzte ESP32 CAM. Bisher keine Web-Visualisierung der Kameras in Vis2 o. Ä. Für das "Angucken" nutze ich die Web-Oberfläche von Frigate bzw die Reolink App und den Browser am PC. "Nach Hause telefonieren" können die Reolink Cams nicht, da sie in der Fritzbox den Internet-Zugang gesperrt bekommen haben. Das Ablagern der Bilder auf dem USB-Drive am Server dient nur der Langzeitarchivierung ... Aus Platzgründen räume ich täglich per Cron Job alle Aufzeichnungen, die älter sind, als 50 Tage auch auf diesem USB-Drive ab. Fand es wichtig, die Dateien "einfach so" in einem Netzwerkshare liegen zu haben...
  • [gelöst] Hargassner HV40 Daten über telnet abgreifen

    heating javascript monitoring
    32
    0 Stimmen
    32 Beiträge
    8k Aufrufe
    A
    @70sman ja bei mir auch, die haben seit Juli eine neue FW, seit dem ist das alles gefixt :) es geht mit dem normalen Adapter von ioBroker. Aber wie fragst du alle Adressen ab, die Digitalen DAQ? MfG

361

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge