Skip to content

Skripten / Logik

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

16.5k Topics 213.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    GarfonsoG
    So, falls jemand testen mag: https://forum.iobroker.net/topic/83726/test-adapter-google-sharedlocations2 Es ist echt magisch. g Gerne in dem anderen Topic weiter diskutieren, falls es da Bedarf gibt.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    Z
    kann mir keiner helfen mit meinem Blockly?
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • VS Code + Cline + Devstral 2 (aktuell kostenlos)

    1
    3 Votes
    1 Posts
    132 Views
    No one has replied
  • KNX dpt 2.001 Zwangsführung steuern

    6
    0 Votes
    6 Posts
    151 Views
    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 Votes
    14 Posts
    374 Views
    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 Votes
    8 Posts
    256 Views
    HomoranH
    @Roelli jepp! genau so!
  • [Script] Die sprechende Kaffeemaschine – Home Connect

    javascript
    11
    1
    2 Votes
    11 Posts
    2k Views
    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 Votes
    14 Posts
    555 Views
    BananaJoeB
    @yablu87 ok, in meinem Kopf war bei "Ofen" irgendwie ein Bild eines Backofens ...
  • Anwesenheitscontrol basierend auf TR64 Adapter - Script

    Moved
    116
    1
    2 Votes
    116 Posts
    29k Views
    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 Votes
    6 Posts
    269 Views
    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 Votes
    9 Posts
    430 Views
    H
    @paul53 Danke dir auch für deine Hilfe.... :)
  • ioBroker >> OpenEPaperLink (OEPL)

    10
    3 Votes
    10 Posts
    1k Views
    K
    @awd4u Vielen Dank für Deine Anleitung!
  • javascript.0 bricht ab

    javascript
    23
    0 Votes
    23 Posts
    927 Views
    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 Votes
    6 Posts
    399 Views
    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 Votes
    2 Posts
    143 Views
    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 Votes
    13 Posts
    491 Views
    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 Votes
    10 Posts
    1k Views
    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 Votes
    28 Posts
    979 Views
    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 Votes
    1 Posts
    81 Views
    No one has replied
  • Gelöst: Bilder senden von einen IOB zum anderen IOB

    javascript
    23
    0 Votes
    23 Posts
    959 Views
    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...
  • 0 Votes
    32 Posts
    8k Views
    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
  • Mediola-Adapter Systemvariable befüllen

    1
    0 Votes
    1 Posts
    68 Views
    No one has replied

375

Online

32.6k

Users

82.1k

Topics

1.3m

Posts