Skip to content

Skripten / Logik

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

16.5k Themen 212.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    Ro75R
    Eventuell kannst du auch noch was aus "Beispielcode aus meiner Umgebung" entnehmen. Ro75.
  • Hilfe für Skripterstellung mit Blockly

    6k 79k
    6k Themen
    79k Beiträge
    NegaleinN
    @paul53 sagte in Blockly: has to be type "string" but received type "number": Ändere common.def in eine Zahl (0). wo find ich das?
  • 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
    65
    1 Stimmen
    65 Beiträge
    11k Aufrufe
    NegaleinN
    @Ro75 sagte in Scriptsammlung Vol. 2 -- Diskussion: Tankerkönig - Extended Skript erledigt :)
  • Analogwerte an loxone übertragen

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    5k Aufrufe
    L
    Leider kann man mit dem virtuellen Status in Loxone dann nicht weiterverwenden um eine nachgeschaltete Logik zu bedienen. Der Baustein hat in der Config nur einen Eingang, keinen Ausgang. Gibt es hier noch eine andere Lösung ohne die + - Buttons? Bis vor kurzem ging es bei mir noch mit einem virtuellen Eingang, der "nur Statusanzeige" aktiviert hatte. Jetzt geht das seit ein paar Tagen plötzlich nicht mehr...
  • VS Code + Cline + Devstral 2 (aktuell kostenlos)

    1
    3 Stimmen
    1 Beiträge
    75 Aufrufe
    Niemand hat geantwortet
  • Alexa Shopping List mit Bring synchronisieren

    174
    0 Stimmen
    174 Beiträge
    35k Aufrufe
    mcBirneM
    Ich habe die beiden Datenpunkte angepasst. Leider erhalte ich folgende Fehlermeldung: javascript.0 16:24:56.439 error compile failed at: script.js.Alexas.Bring_Synchronisieren2:36 javascript.0 16:24:56.439 error export default this; javascript.0 16:24:56.439 error ^^^^^^ javascript.0 16:24:56.439 error SyntaxError: Unexpected token 'export' javascript.0 16:24:56.439 error at new Script (node:vm:117:7) javascript.0 16:24:56.439 error at JavaScript.createVM (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:2174:25) javascript.0 16:24:56.439 error at JavaScript.prepareScript (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:2472:44) javascript.0 16:24:56.439 error at processTicksAndRejections (node:internal/process/task_queues:105:5) javascript.0 16:24:56.439 error at JavaScript.onObjectChange (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:659:25) Hat das Problem noch jemand? Oder weiß jemand, was ich machen kann?
  • KNX dpt 2.001 Zwangsführung steuern

    6
    0 Stimmen
    6 Beiträge
    100 Aufrufe
    paul53P
    @cortezz sagte: weil die von dir angegebene 3 und 2 als dual zahlen gelesen werden? Dezimal - binär 3 = 0b11 2 = 0b10 Javascript selbst unterscheidet nicht, sondern kennt nur Gleitkommazahlen.
  • SendTo-Blockly für Bilderstellung geht nicht

    14
    2
    0 Stimmen
    14 Beiträge
    307 Aufrufe
    haus-automatisierungH
    So wie ich das sehe wird aktuell immer der Default von 2000 ms genutzt.
  • Gerätenamen anstatt "Switch State" im Blockly

    8
    2
    0 Stimmen
    8 Beiträge
    220 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
    491 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
    28k 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
    237 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
    392 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
    853 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
    338 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
    129 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
    465 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
    947 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
    916 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.

535

Online

32.5k

Benutzer

81.7k

Themen

1.3m

Beiträge