Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    J
    Hallo, anbei das nun fertige Skript im ersten Post.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    tiobbT
    werde ich dann mal testen was zuverlässiger läuft. Ich hatte dieses Blockly gebastelt, jetzt habe ich nur das Problem das die Meldungen im Minutentakt kommen, eine Meldung würde mir reichen, wie kann man das lösen? [image: 1784902339989-opera-momentaufnahme_2026-07-24_160554_192.168.178.75.png]
  • Hilfe für Skripterstellung mit Node-RED

    961 13k
    961 Themen
    13k Beiträge
    Marc BergM
    Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht. Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen: [ { "id": "0101b52dd8b0e69c", "type": "inject", "z": "tab_restart", "name": "Flow neu starten", "props": [ { "p": "baseUrl", "v": "http://nuc.fritz.box:1880", "vt": "str" }, { "p": "flowId", "v": "56a35d28dbb8d4c1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 160, "y": 140, "wires": [ [ "ffb73632947a1b74" ] ] }, { "id": "ffb73632947a1b74", "type": "http request", "z": "tab_restart", "name": "GET /flow/:id", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 370, "y": 140, "wires": [ [ "78e47724692d9c26" ] ] }, { "id": "78e47724692d9c26", "type": "change", "z": "tab_restart", "name": "deaktivieren", "rules": [ { "t": "set", "p": "flow", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 140, "wires": [ [ "b570b346c80301a6" ] ] }, { "id": "b570b346c80301a6", "type": "http request", "z": "tab_restart", "name": "PUT (aus)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 770, "y": 140, "wires": [ [ "a062c2baa0932d3e" ] ] }, { "id": "a062c2baa0932d3e", "type": "delay", "z": "tab_restart", "name": "1s warten", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "outputs": 1, "x": 960, "y": 140, "wires": [ [ "664a32887d83b305" ] ] }, { "id": "664a32887d83b305", "type": "change", "z": "tab_restart", "name": "aktivieren", "rules": [ { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 220, "wires": [ [ "83d399c90d46240f" ] ] }, { "id": "83d399c90d46240f", "type": "http request", "z": "tab_restart", "name": "PUT (ein)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 320, "y": 220, "wires": [ [ "529c0e1896d1f278" ] ] }, { "id": "529c0e1896d1f278", "type": "debug", "z": "tab_restart", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 480, "y": 220, "wires": [] } ]
  • Raumlüftung einzeln loggen

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    M
    @chris-1 said in Raumlüftung einzeln loggen: @martinschm said in Raumlüftung einzeln loggen: ich habe in jedem Raum Fenster mit mindestens zwei Flügeln. An jedem habe ich einen eigenen Fensterkontakt angebracht. Ich würde gerne erfassen, wann das letzte mal gelüftet wurde und wie lange. Ich hab oft Ideen, welche andere etwas merkwürdig finden. Schön, dass es mir auch mal so geht, dann kann ich die Leute bei mir besser verstehen Da "Lüften" ja ein weder objektiv, noch subjektiv fassbares Ergebnisse (Daten) liefert, wenn man die Anzahl der Fenster und die Dauer nimmt (zumal - bisher - kein Durchzug erfasst wird), möchte ich mir die Freiheit erlauben und Dir einen Gedankenanstoß? Vorschlag? machen. Was hälst Du von der Idee die allgemeine/gefühlte Luftqualität durch Messung von Luftfeuchte plus ggf Gas-/Partikel-Messung zu ermitteln? Da bräuchtest Du pro Zimmer nur 1 Sensoren-Set (Temp/Hum vermutlich eh schon je Zimmer vorhanden) und würdest im Mittel schnell sehen, welcher Raum der Übeltäter ist, so dass Dir kaskadiert vermittelt werden könnte, wo Lüften angesagt ist. Gruss von der Ostsee Chris Hi Chris, danke für den Impuls. Temp Sensoren hab ich in fast jedem Raum. Mir geht es allerdings auch so darum zu wissen wann in welchem Raum das letzte mal "frische" Luft rein gekommen ist. Außerdem soll in einem zweiten Schritt, darauf hingewiesen werden, wenn das Fenster vielleicht -bei Außentemperaturen unter 8 Grad - zu lange gelüftet wird und alles auskühlt. Viele Grüße Martin
  • Blockly String-Länge DP begrenzt?

    5
    1
    0 Stimmen
    5 Beiträge
    407 Aufrufe
    Chris 1C
    @djmarc75 @paul53 Orrrr... Fehler gefunden - die Unterbrechung durch Einkauf half wohl Nicht: Attribut "xyz" vom Object "tasmota" Sondern: Attribut "xyz" vom Object (Wert von Objekt "tasmota") Sorry Leute
  • Fälschlicherweise mehrfache Ausgabe einer Meldung verhindern

    40
    2
    0 Stimmen
    40 Beiträge
    4k Aufrufe
    paul53P
    @invidianer sagte: die Methode hier verwende? Weitere Alternative: [image: 1701294375400-blockly_temp.jpg]
  • Möglichkeiten zeitgesteuertes Script

    2
    0 Stimmen
    2 Beiträge
    351 Aufrufe
    paul53P
    @wolfshunter sagte: Geht sowas Siehe hier. Wenn nur der Jahreswert erfasst werden soll, kann man es direkt im CRON angeben: "59 59 23 31 12 *".
  • WS2812b einzeln steuern

    36
    0 Stimmen
    36 Beiträge
    5k Aufrufe
    W
    @ticaki Habe ich mir so ähnlich schon gedacht. :) Weißt du zufälligerweise, wie man dann wieder in den "normalen" Modus zurückkehren kann? Nachdem man via API einmal LEDs direkt angesteuert hat, reagiert die Weboberfläche nicht mehr, auch die Datenpunkte in iobroker haben keinen Effekt mehr. Ich hätte gerne quasi noch die Möglichkeit einer Idle-Animation. EDIT: Habs gefunden. Das Property heißt wled.0.ID.seg.0.sel und muss auf true, damit die normalen Animationen wieder laufen. EDIT2: Oder auch nicht, man muss zusätzlich das Property frz auf false setzen. Das steht wohl für Freeze. Leider lässt sich der Datenpunkt nicht schreiben, sprich man benötigt dann wohl dafür auch einen separaten API-Call, um das wieder zurück zu setzen.
  • Pylontech Tasmota Script

    34
    1
    0 Stimmen
    34 Beiträge
    7k Aufrufe
    Ralla66R
    @lucky51179 Script umschreiben oder Display über IO am einzelnen ESP betreiben Link Link Link
  • Objekt per exec versenden

    16
    0 Stimmen
    16 Beiträge
    623 Aufrufe
    mickymM
    OK dann hast Du ja nun eine Lösung.
  • Addition in Blockly ist ein Takt verpätet

    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    M
    @haus-automatisierung Jetzt Funktioniert es :-) Vielen lieben Dank!
  • iot Datenpunkt für eine Szene erstellen

    5
    0 Stimmen
    5 Beiträge
    500 Aufrufe
    geschildG
    @bongo Vielleicht hilft der letzte Post hier weiter. https://forum.iobroker.net/topic/37792/iobroker-iot-alexa-szenen Worin liegt der Unterschied zwischen einer Scene und einer Routine ?
  • Werte aus JS auslesen und in Datenpunkte einfügen

    127
    5
    0 Stimmen
    127 Beiträge
    15k Aufrufe
    Ralla66R
    @fimoknete Bisher sind ja keine Daten per ModbusMaster empfangen worden. Dies könnte ja an der falschen Abfrage der Register / Registerbreite liegen. Um den Weg zu prüfen: Battery < -> RS485/ USB Adapter <-> Rechner Modbus Poll ausführen und alle Register automatisch auslesen. keine Werte zurückgegeben, Verkabelung, Treiber ....... falsch Werte angezeigt. Kabelweg wahrscheinlich i.O, Registerwert 41008 prüfen wenn bei Modbus Poll keine Registerwerte zurück kommen wird das mit dem Adapter auch nicht gehen. Es wäre sehr von Vorteil wenn du mal die Bedienungsanleitung der Battery hier einstellst.
  • Gelöst: Script zur Abfrage der CPU Temp

    javascript
    16
    0 Stimmen
    16 Beiträge
    910 Aufrufe
    T
    @michihorn Auch wenns schon geht: const test = `cpu_thermal-virtual-0 Adapter: Virtual device temp1: +44.3°C (crit = +110.0°C) rpi_volt-isa-0000 Adapter: ISA adapter in0: N/A` const reg = /[0-9\.]+°C/; const result = test.match(reg); if (result) log(result[0]) javascript.0 (619) script.js.Test.Skript_2: 44.3°C
  • conbee

    2
    1
    0 Stimmen
    2 Beiträge
    179 Aufrufe
    M
    Bitte nicht antwortet da Doppelthread Ist im Bereich IOBroker / Allgemein
  • Tür-Überwachung

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    A
    @paul53 Du hast recht, die muss raus. Ist ein überbleibsel aus der Schleife von vorhin.
  • Zeitscripte die nicht laufen möchten

    4
    2
    0 Stimmen
    4 Beiträge
    266 Aufrufe
    M
    Prima habe das mit dem Script von Paul53 gut hinbekommen. Noch mal so zum Verstehen der Blockly script setzte aussenlampe auf wert von objekt aussenlampe; wenn dort der wert false steht ist es dann ein Wert oder ist false kein wirklicher wert? da ja bei falss mache ausenlampe aufgeführt wirt die bei true dann die Aussenlampe ausschaltet. Gruß Mico
  • Dyn. Liste darstellen und als Auswahlliste in VIS, iQontrol

    111
    0 Stimmen
    111 Beiträge
    15k Aufrufe
    liv-in-skyL
    @hoizi1994 das hier ist speziell für ein project (Bluesound Multiroom System ) was für eine anleitung auf github evtl meinst du sowas ? https://forum.iobroker.net/post/1065142 evtl ist es besser einen eigenen thread aufzumachen und etwas genauer zu erklären, was du machen möchtest
  • Shelly 3EM - negative Werte verhindern

    11
    1
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    MartinPM
    Dass die eine Hardware zwischendurch "komische" Werte liefert, während ein baugleiches anderes Exemplar korrekt funktioniert sollte erstmal zu Denken geben ... Von da her würde ich erstmal prüfen, ob die Werte, die der Wärmepumpen-Shelly liefert überhaupt stimmen. Daneben sollte ggfs. auch noch einmal überprüft werden, ob die Installation des WP-Shelly korrekt erfolgt ist. (Stromwandler richtig herum installiert, keine Vertauschungen) Falls das alles schon erfolgt ist, kann man dann als letzte Möglichkeit versuchen, die "faulen Eier" bei den Messwerten auszusortieren ...
  • PV und Infrarotheizung

    5
    1
    0 Stimmen
    5 Beiträge
    612 Aufrufe
    M
    @paul53 er schaltet sie jetzt beim ersten mal am Tag an und auch nach 30 Minuten wieder aus. Anschließend bleibt sie aber aus und geht nicht wieder an obwohl genug Leistung (>500) da ist und die Batterie voll ist (<98).
  • Problem mit Blockly Datum und Uhrzeit wird nicht angezeigt

    7
    1
    0 Stimmen
    7 Beiträge
    604 Aufrufe
    Damrak2022D
    @mickym Okay, danke an Euch
  • [gelöst] in SayIt Wetter und Geburtstagsscript -> Müllkalender mit einbinden

    Verschoben javascript
    230
    1
    0 Stimmen
    230 Beiträge
    89k Aufrufe
    lobomauL
    @tempestas Hi, ich nutze dein Script schon seit einige Jahren. Erstmal Danke dafür! Nun habe ich seit einigen Tagen eine Fehlermeldung. Vielleicht hat sich etwas am JavaScript-Adapter geändert? Am Script selbst habe ich nichts geändert. Kannst du etwas mit dem Fehler anfangen? Fehler: 2023-11-19 18:00:00.096 - error: javascript.0 (3058) Error in callback: ReferenceError: i_search is not defined 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at nthIndex (script.js.common.Telegram.Morgige_Termine:19:18) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Warnung (script.js.common.Telegram.Morgige_Termine:42:5) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Object. (script.js.common.Telegram.Morgige_Termine:82:4) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1617:34) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at listOnTimeout (node:internal/timers:569:17) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at processTimers (node:internal/timers:512:7) Script: Spoiler // Skript schaut täglich um 18h, ob im Kalender das Wort "Morgen" vorkommt. Wenn ja, wird ein Telegram geschickt mit dem betreffenden Termin bzw Terminen // tempestas 13.2.2018 // Skripteinstellungen var debug = false; // Suchfunktion für Termin-Cutoff function nthIndex(str, pat, n){ var L= str.length, i= -1; while(n-- && i++<L){ i= str.indexOf(pat, i); if (i < 0) break; } i_search =i; } //Funktion function Warnung() { var inhalt = getState("ical.0.data.html").val.toString(); // hier deine Müll-Kalender Instanz eingeben var count = inhalt.split("Morgen").length -1; // wie häufig wird "Morgen" gefunden? var posStart = inhalt.indexOf( 'Morgen', 0); // sucht das erste mal "Morgen" if(debug) log("posStart "+posStart); if(posStart != -1){ // falls "Morgen" gefunden wurde gehts hier weiter var stringShort = inhalt.substring(posStart, inhalt.length); // Abschneiden von allem, was links vom ersten "Morgen" Treffer steht if(debug) log("Gekürzt :" +stringShort); nthIndex(stringShort, '</span></span><br/>', count); // hier wird nun geschaut, wo es rechts abgeschnitten werden muss stringCut = stringShort.slice(0,i_search); // hier wird alles rechts abgeschnitten und so der finale String extrahiert if(debug) log("Fast Final: "+stringCut); // aufbereiten für telegram, entfernen von HTML Tags stringCut = stringCut.replace('</br>',"\n"); // Zeilenumbruch html durch telegram umbruch ersetzen // remove all inside SCRIPT and STYLE tags stringCut=stringCut.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); stringCut=stringCut.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags. stringCut=stringCut.replace(/<br>/gi, ""); stringCut=stringCut.replace(/<br\s\/>/gi, ""); stringCut=stringCut.replace(/<br\/>/gi, ""); // remove all else stringCut=stringCut.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: stringCut=stringCut.replace(/&nbsp;/gi," "); stringCut=stringCut.replace(/&amp;/gi,"&"); stringCut=stringCut.replace(/&quot;/gi,'"'); stringCut=stringCut.replace(/&lt;/gi,'<'); stringCut=stringCut.replace(/&gt;/gi,'>'); sendTo('telegram.0', stringCut); } } // Trigger Schedule schedule('0 18 * * *', function(){ // Täglich um 18h Warnung(); }); // Bei Start Warnung(); JavaScript: 7.1.4. Node.js: v18.17.1 NPM: 9.6.7 JS-controller: 5.0.16
  • BWM steuert Hue-Level nicht

    1
    1
    0 Stimmen
    1 Beiträge
    220 Aufrufe
    Niemand hat geantwortet

415

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge