Skip to content

Skripten / Logik

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

16.4k Themen 211.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    P
    @ArnoD Ich muss mich hier @Modulo-N anschließen. Seit heute ca. 18:30 Uhr ist die Fehlermeldung nicht mehr aufgetaucht und kann somit nicht verifizieren, ob die Änderung etwas gebracht hat.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    AsgothianA
    @klixy23 sagte in Trigger werden im Script nicht ausgelöst: Wie kann ich das Problem weiter analysieren? Wie sieht das hier bei Dir aus:[image: 1763831819942-screenshot-2025-11-22-at-18.16.57.png] A.
  • 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
  • [GELÖST] Datum heute, morgen, übermorgen etc.

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    3k Aufrufe
    T
    Hi Buzzy, dann wird uebermorgen aber zum 01.04.2018 und nicht zum 31.03.2018. Gruß, Tom
  • Keine Log Ausgabe mehr innerhalb der javascript Instanz

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    689 Aufrufe
    GoerschG
    bei Verwendung von redis klappen auch die Log Ausgaben. Ich sah da keinen Zusammenhang, weshalb ich nicht erwähnt habe, dass ich von redis auf Datei gewechselt bin :oops:
  • Rechnen mit Blockly

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    935 Aufrufe
    G
    Hallo, ich bin zwar ganz neu in der ioBroker-Welt, aber als Lösungsansatz würde ich so etwas versuchen (geht sicherlich einfacher). [image: 6538_unbenannt.jpg] ! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule" id="D)hjst=#bI8.q{.M8fo%" x="13" y="13"><field name="SCHEDULE">/30 * 23 * * </field> <statement name="STATEMENT"><block type="comment" id="o9y2~.e+vl#wd5,emL%K"><field name="COMMENT">folgend nur als Platzhalter. Müssen natürlich Fenster rein</field> <next><block type="variables_set" id="H;Lll,Sw2!-bbt%,3/GB"><field name="VAR">1</field> <value name="VALUE"><block type="logic_boolean" id="nBU_d4mW]MSVU%p~0SA"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="bz.(J_3V2bd}T8H#UCW"><field name="VAR">2</field> <value name="VALUE"><block type="logic_boolean" id="249z^BAWy_HNwO[[kxv"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id=".hVrZQaUq^I%+Or/_b~K"><field name="VAR">3</field> <value name="VALUE"><block type="logic_boolean" id="fX3yd}EAb?YAce9l6*#"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="F]vJ:rMtL-9TZD7-|c+"><field name="VAR">4</field> <value name="VALUE"><block type="logic_boolean" id="TjC~)yjRJ/9-Ra#QD]q"><field name="BOOL">TRUE</field></block></value> <next><block type="variables_set" id="x/I11bjv7svsunHvlpeL"><field name="VAR">zähler</field> <value name="VALUE"><block type="math_number" id="ab.EyO6l5M++q!g/SF(4"><field name="NUM">0</field></block></value> <next><block type="comment" id="[4iH@I@/}|xy/=YEMS.{"><field name="COMMENT">jedes Fenster Prüfen und Variable zählen lassen</field> <next><block type="controls_if" id="OZ+StWRC@Zqcye+/E~{i"><value name="IF0"><block type="logic_compare" id="~QXY]|v4b-wp#]:AT~vF"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="-H5XGpx!5(7lVzV:A!-T"><field name="VAR">1</field></block></value> <value name="B"><block type="logic_boolean" id="GeU#JdwRus3FEyifXNpf"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="math_change" id="h#SsZj1*Ye8r1?LmM1Q#"><field name="VAR">zähler</field> <value name="DELTA"><shadow type="math_number" id="N%H;6~+E3!W@xS+cGqX/"><field name="NUM">1</field></shadow></value> <next><block type="debug" id="8o4=8V.}Iuny[%A~Sd,"><field name="Severity">warn</field> <value name="TEXT"><shadow type="text" id="j,-n2A{leL_s%W=@LzMF"><field name="TEXT">in if</field></shadow></value></block></next></block></statement> <next><block type="controls_if" id="z:EaXZkW~FyI{Ed/LTtf"><value name="IF0"><block type="logic_compare" id="Y0f2m+Z+[0gzPF]CioL"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="9^Ybgh/WErrq6RmJQA^k"><field name="VAR">2</field></block></value> <value name="B"><block type="logic_boolean" id="tK*pH~1ef([hAml|48u("><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="math_change" id="A8@B~xf+KZkI+IENd3jf"><field name="VAR">zähler</field> <value name="DELTA"><shadow type="math_number" id="OiiqN#NTd}Gc=KaP)iJ"><field name="NUM">1</field></shadow></value></block></statement> <next><block type="controls_if" id="nO?BtyB%s35K/vv/q22-"><value name="IF0"><block type="logic_compare" id=".aN)Ni##oiN+~?!LWd|H"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="MTL=c1~7jf+6R8h5eisF"><field name="VAR">3</field></block></value> <value name="B"><block type="logic_boolean" id="yN0.eUv]0N9cAB,6KRiq"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="math_change" id="s1wJ?e,Icyms5~O4q1=F"><field name="VAR">zähler</field> <value name="DELTA"><shadow type="math_number" id="5H5:q7S,K~u_1V^7H,52"><field name="NUM">1</field></shadow></value></block></statement> <next><block type="controls_if" id="@5p=K|.2lM[O:VfQl]."><value name="IF0"><block type="logic_compare" id="@QfQx7Q%~cC3LzyV{+J|"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="U0/!q|W{dy|^u1|NykyS"><field name="VAR">4</field></block></value> <value name="B"><block type="logic_boolean" id="Q#SGuc.5Z:G969o!G:K?"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="math_change" id="|*{16Ec]c@|88#e#IkHg"><field name="VAR">zähler</field> <value name="DELTA"><shadow type="math_number" id="avk,t|,CMHEjnLLC%cCu"><field name="NUM">1</field></shadow></value></block></statement> <next><block type="comment" id="T,.QZ#!H6=;-9ZE?P8"><field name="COMMENT">Ergebnis ein Datenpunkt schreiben</field> <next><block type="control" id="X;]{87[yzCK?CKF~{pAM"><mutation delay_input="false"></mutation> <field name="OID">vis.0.counter</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="convert_tonumber" id="Z+i4oT~C:;cYj4Q+i5ca"><value name="VALUE"><block type="variables_get" id="T0._2!.Ud1eeI2A:oPAu"><field name="VAR">zähler</field></block></value></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml>
  • Sonoff Neustart per http bei Verbindungsabbruch im LOG

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    339 Aufrufe
    J
    Kann man Daten aus dem Log iwie in Blockly einfügen?!
  • Variablen 0 / 1 und wahr / False Blockly

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    731 Aufrufe
    P
    man kann in der EasyESP oberfläche einstellen was er machen soll, wenn gedrückt wird. Wie du schon sagtest.. Wert 1 so lange gedrückt wird oder er wächselt den wert immer, wenn gedrückt wird, also er behält den Wert 1, bis noch mal gedrückt wird. Leider halt nur 1 und 0 (was ich persönlich besser finde) und nicht Wahr und False
  • Datenfile in Blockly aufrufen und Daten vergleichen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    216 Aufrufe
    Niemand hat geantwortet
  • Wie name/role/type/def usw. mit js auslesen?

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    470 Aufrufe
    N
    Vielen Dank :-)
  • [gelöst]Zeit zwischen Aktualisierung eines Datenpunktes ermitteln

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    S
    es kann so einfach sein… vielen dank, klappt wunderbar! on({id: 'javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_input', change:'any'}, function(data) { // in data.state.ts steht der aktuelle Timestamp // in data.oldState.ts steht der Timestamp der letzten Aktualisierung // Sind Zahlen in ms, also mit ... console.log(((data.state.ts-data.oldState.ts)/1000) + ' Sekunden seit letzter Aktualisierung'); setState("javascript.0.Stromzaehler.Normalstrom.Umdrehung_Zeit"/*Umdrehung_Zeit*/, ((data.state.ts-data.oldState.ts)/1000), true); });
  • Dimmwert mit Zeitsteuerung

    Verschoben
    25
    0 Stimmen
    25 Beiträge
    3k Aufrufe
    madjack84M
    ich habe gleiches mit dem virtuellen Kanal 2 gelöst. Ein CCU2 Programm setzt nun Kanal 2 um 21:00 auf 40% und um 5:00 wieder auf 100% Das Licht schaltet nachts nur auf 40%. soweit ok. Leider lässt sich dann allerdings der Dimmwert per Taster am Dimmer nicht mehr nach oben regulieren, da der Taster Kanal 1 steuert. >> Unter 40% geht dann noch aber durch die Verknüpfung nicht über 40% Setze ich dann in den Einstellungen die Taster am Kanal 2 nicht mehr auf inaktiv, sondern ein/aus heller/dunkler, dann lässt sich der Dimmer gar nicht mehr aktivieren. Wie wäre die Einstellung hier richtig um abends trotzdem bei Bedarf das Licht per Tastern noch zu erhöhen? Kann das leider aus den Beschreibungen nicht herauslesen :/ ja ich nutze auch ioBroker, aber ging davon aus, dass dies auch über die virtuellen Kanäle gehen muss. Bin ja eh schon begeistert über das Vorhandensein dieser Funktion :D grüße
  • Blockly Problem mit Variable

    Verschoben
    11
    1
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    wendy2702W
    OK. Dann geht es nur über Script.
  • Servicemeldungen per Mail?

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    paul53P
    Wenn Du ausschließlich eine Mail versenden willst, kann das Script stark vereinfacht werden, function sendMail(txt) { sendTo("email", { subject: "Servicemeldung", text: formatDate(new Date(), "YYYY-MM-DD hh:mm:ss.sss ") + txt + "\n" }); } on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) { var val = dp.state.val; var old = dp.oldState.val; if (val != old) { if(dp.common.name) sendMail(dp.common.name + ": " + val); else sendMail(dp.id + ": " + val); } });
  • [gelöst] exec-Prozess abbrechen.

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    218 Aufrufe
    J
    Mit "ps -ax" in der Konsole zeigt er mir folgendes an: 10902 ? S 0:00 /bin/sh -c omxplayer /opt/Ansagen/CountDown.mp3 10903 ? S 0:00 /bin/bash /usr/bin/omxplayer /opt/Ansagen/CountDown.mp3 10911 ? Sl 0:00 /usr/bin/omxplayer.bin /opt/Ansagen/CountDown.mp3 Zum Erfolg bringt mich der Befehl: killall omxplayer.bin Mein Problem ist alsogelöst ….. natürlich erst nachdem ich hier gefragt habe. Sorry Gruß Jörg
  • [gelöst]js-Skript runden auf 3 Stellen nach dem Komma

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    S
    okay… hab den Fehler gefunden, eine Klammer war fasch gesetzt... function precisionRound(number, precision) { var factor = Math.pow(10, precision); return Math.round(number * factor) / factor; } on({id: 'javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_input', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_kWh"/*Zaehlerstand_kWh*/, (precisionRound((getState("javascript.0.Stromzaehler.Normalstrom.Zaehlerstand_input").val / 75), 3)), true); });
  • 0 Stimmen
    11 Beiträge
    910 Aufrufe
    K
    Das Problem war, dass ich nach einer Lösung mit Socket IO gesucht habe (so wie Eingangs vorgeschlagen wurde). Aber der benötigte Adapter hierzu heißt nicht Socketio sondern Simple API ;)! Inzw. läuft mein Versuchsaufbau wunderbar! Vielen Dank für die Hilfe.
  • [Gelöst] Wert in Telegram ausgeben

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    960 Aufrufe
    BuZZyB
    Kann jedem mal passieren.. Dafür haben wir ja so eine tolle Community. :) Gruß
  • Google-Kalenderdaten usw. morgens täglich an Telegram

    Verschoben
    14
    1
    0 Stimmen
    14 Beiträge
    2k Aufrufe
    Paulchen67P
    @tempestas: Mit diesem Skript ! ```` // 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/count="inhalt.split("Morgen").length" -1;/wie/häufig/wird/"morgen"/gefunden?/posstart="inhalt.indexOf(" 'morgen',/0);/sucht/das/erste/mal/if(debug)/log("posstart/"+posstart);/if(posstart/!="-1){" falls/gefunden/wurde/gehts/weiter/stringshort="inhalt.substring(posStart," inhalt.length);/abschneiden/von/allem,/was/links/vom/ersten/treffer/steht/log("gekürzt/:"/+stringshort);/nthindex(stringshort,/'</span="">', 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(' ',"\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(/ /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(/ /gi," "); stringCut=stringCut.replace(/&/gi,"&"); stringCut=stringCut.replace(/"/gi,'"'); stringCut=stringCut.replace(//gi,'>'); ! sendTo('telegram', stringCut); } } ! // Trigger Schedule ! schedule('0 18 * * ', function(){ // Täglich um 18h ! Warnung(); }); ! // Bei Start ! Warnung();</br></br\s></style.></script.*></l){> erhälst du eine Telegram Nachricht mit allen Terminen (sei es Müll, Omas Geburtstag..), die morgen anstehen. Voraussetzung ist, dass dein Kalender "ersetze Datum mit Worten" aktiviert hat. Wenn du überall wo "Morgen" steht es auf "Heute" abwandelst, bekommst du alle Termine von heute ` Bei mir läuft das Script nicht. Ersetze Datum mit Worten ist aktiviert. Hab zum testen schedule('0 18 * * *', function(){ // Täglich um 18h auf aktuelle Zeit plus 2 Minuten gestell, aber da tut sich nichts. EDIT!!! Funktioniert jetzt.
  • Gelöst - Erstelltes Script via Shell löschen?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    P
    @AlCalzone: Hmmmm… dachte das geht. Das iobroker stop javascript.0 sollte aber tun. ` Top. Das geht. Ich habe den Adapter gestoppt, Script gelöscht, Adapter wieder gestartet. Vielen Dank
  • Erkennen von manuellen Änderungen am HMIP WTH

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    161 Aufrufe
    Niemand hat geantwortet
  • Gelöst - Blockly - "kleiner als letztes" Problem bzw. selbst Vergleichen :)

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    4k Aufrufe
    W
    Super Danke, jetzt habe ich es auch verstanden :) Top Support!!! Schönes Wochenende noch!
  • Javascript Adapter keine Ausgabe im Log Bereich des Editors

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    T
    Ist ein bekannter Fehler: viewtopic.php?f=22&t=11875&hilit=javascript+kein+log

329

Online

32.4k

Benutzer

81.4k

Themen

1.3m

Beiträge