Skip to content

Skripten / Logik

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

16.4k Topics 211.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Topics
    48k Posts
    A
    @MaLei said in E3DC Hauskraftwerk steuern: Die Steuerung müsste bei mir z. B. jetzt im Winter immer zwischen 0 und 4 Uhr den Batteriespeicher und ggf. das Auto laden ... Wenn dann der Strompreis inklusive der Netzentgelte am günstigsten ist, wird das ja auch gemacht. Aber ich (bzw. die Steuerung) muss die Zeiten berücksichtigen. Das macht ja nicht Tibber (oder welcher Stromanbieter auch immer). Indirekt ja, indem der Strompreis dann ja günstiger sein müsste.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Topics
    78k Posts
    AsgothianA
    @MartinP Alles Spekulation. Die entscheidenden Informationen liegen uns nicht vor. Weder wo die Verzögerungen her kommen, noch warum sie so problematisch sein sollen. Bevor da nicht mehr Informationen kommen macht es wenig Sinn sich den Kopf an der Glaskugel aufzureiben. A.
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Topics
    13k Posts
    F
    DANKE! Ich Blindfisch. Habe bei den Adaptern selbst geschaut, und beim Admin, dachte unter dem hängt alles, was er "administriert". "SYSTEM" habe ich komplett übersehen - Schande. Über Wochen nicht laden: ja, kommt vor, v.a. wenn sich unterwegs DC-Gelegenheiten (Bauhaus...) ergeben, dann nehm' ich da den Strom mit. Und lass es nur 10 - 14 Tage sein die das Ding nicht gebraucht wird. Ein Schalter an der Box selber wäre toll, hat sie aber nicht. Oder ein fernsteuerbarer Sicherungsautomat. Aber so geht man(n) wenigstens mal in den Keller :), Bewegung soll ja gesund sein... Wenn ich die Lichtorgel abschalte vergesse ich womöglich die Box abzuschalten...
  • Keine Log Ausgabe mehr innerhalb der javascript Instanz

    Moved
    4
    1
    0 Votes
    4 Posts
    688 Views
    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

    Moved
    2
    0 Votes
    2 Posts
    931 Views
    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

    Moved
    2
    0 Votes
    2 Posts
    339 Views
    J
    Kann man Daten aus dem Log iwie in Blockly einfügen?!
  • Variablen 0 / 1 und wahr / False Blockly

    Moved
    5
    0 Votes
    5 Posts
    731 Views
    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

    Moved
    1
    0 Votes
    1 Posts
    215 Views
    No one has replied
  • Wie name/role/type/def usw. mit js auslesen?

    Moved
    3
    0 Votes
    3 Posts
    466 Views
    N
    Vielen Dank
  • [gelöst]Zeit zwischen Aktualisierung eines Datenpunktes ermitteln

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    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

    Moved
    25
    0 Votes
    25 Posts
    3k Views
    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 grüße
  • Blockly Problem mit Variable

    Moved
    11
    1
    0 Votes
    11 Posts
    1k Views
    wendy2702W
    OK. Dann geht es nur über Script.
  • Servicemeldungen per Mail?

    Moved
    9
    0 Votes
    9 Posts
    1k Views
    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.

    Moved
    2
    0 Votes
    2 Posts
    218 Views
    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

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    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 Votes
    11 Posts
    910 Views
    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

    Moved
    7
    0 Votes
    7 Posts
    958 Views
    BuZZyB
    Kann jedem mal passieren.. Dafür haben wir ja so eine tolle Community. Gruß
  • Google-Kalenderdaten usw. morgens täglich an Telegram

    Moved
    14
    1
    0 Votes
    14 Posts
    2k Views
    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?

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    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

    Moved
    1
    0 Votes
    1 Posts
    161 Views
    No one has replied
  • 0 Votes
    6 Posts
    4k Views
    W
    Super Danke, jetzt habe ich es auch verstanden Top Support!!! Schönes Wochenende noch!
  • Javascript Adapter keine Ausgabe im Log Bereich des Editors

    Moved
    2
    1
    0 Votes
    2 Posts
    1k Views
    T
    Ist ein bekannter Fehler: viewtopic.php?f=22&t=11875&hilit=javascript+kein+log
  • Bräuchte Hilfe bei Steuerung von Luftfeuchtigkeit

    Moved
    4
    1
    0 Votes
    4 Posts
    692 Views
    V
    super danke ich habs geschafft allerdings dauert es ewig bis er wieder abschaltet… Wie häufig wird der Sensor nach dem Wert abgefragt? 4030_test3.png

274

Online

32.4k

Users

81.4k

Topics

1.3m

Posts