Skip to content

Skripten / Logik

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

16.4k Themen 211.8k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    A
    @as Welches Diagramm verwendest du? Es gibt drei Diagramme, eins für heute, eins für Morgen und eins wo beide Tage drauf sind. Das Skript berücksichtig beide Tage.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    M
    Hallo, ich möchte die go-e Wallbox in den Überschusslademodus ( Eco) per Script schalten. Den http Befehl habe ich im Browser getestet und dieser funktioniert immer wenn ich im Browser es teste. Beim Script ändert sich in der Wallbox App leider nicht der Zustand obwohl der Befehl soweit ich sehen kann abgesetzt wird. Hier das Script: ![Bild Text]([image: 1764177607106-screenshot-2025-11-26-181634.png] Bild Link) Kann mir hier jemand dabei weiterhelfen? Vielen Dank Michael
  • 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
  • Plausibilität/Aktualität von Messwerten erkennen?

    monitoring
    4
    0 Stimmen
    4 Beiträge
    372 Aufrufe
    S
    @tugsi Solche Probleme habe ich glücklicherweise nicht und ja das kannst du dann mit dem Zeitstempel abfragen.
  • Frage zu Funktion onLog

    3
    0 Stimmen
    3 Beiträge
    292 Aufrufe
    P
    @mcu Echt jetzt? Was da rauskommt, steht doch in der verlinkten Doku: "To receive all logs the * could be used. In this case, the log output in handler will be disabled completely." Wenn man auf alle Logeinträge triggert ('*') und dann einen Fehler ins Log schreibt, produziert man eine Endlosschleife. Um dies zu verhindern, wird das Schreiben ins Log deaktiviert. Also console.error wird nicht ausgeführt. Oder?
  • Script funktioniert nur bedingt

    14
    0 Stimmen
    14 Beiträge
    800 Aufrufe
    CodierknechtC
    @manolo sagte in Script funktioniert nur bedingt: Thema kann geschlossen werden. Das kannst nur Du, indem Du den Eingangspost bearbeitest und ein "[gelöst] - " vor den Titel setzt.
  • Daten mit Blockly aus InfluxDB abrufen

    35
    1
    0 Stimmen
    35 Beiträge
    3k Aufrufe
    K
    @kdtcat ``` var parm1, parm2, result, BatteryLevel, PowerConsumptionTotal, PowerProductionTotal, EnergyProductionTotalDay, EnergyConsumptionTotalDay, EnergyExternalTotalOutDay, EnergyBatteryChargeDay, EnergyStorageTotalOutDay, StromverbrauchAnteilSolarTag, STromverbrauchAlleTag; // Beschreibe diese Funktion … async function iq(parm1, parm2) { // Beschreibe diese Funktion var ergebnis, fparm, fparm2; fparm = 'from(bucket: "solar") |> range(start: -1m) |> filter(fn: (r) => r["_field"] == ' + parm1 + ') |> aggregateWindow(every: 2m, fn: mean)'; fparm2 = '0_userdata.0.Enpal.' + parm2; sendTo('influxdb.0', 'query', fparm, async (result) => { test0 = (await jsonataExpression(result,'*[0]._value ')); setStateDelayed(fparm2, test0, true, parseInt(((0) || '').toString(), 10), false); }); return ergebnis; } schedule("*/2 * * * *", async () => { result = await iq('"Energy.Battery.Charge.Level"', 'BatteryLevel'); await wait(3000); BatteryLevel = Math.round(getState('0_userdata.0.Enpal.BatteryLevel').val * 100) / 100; setStateDelayed('0_userdata.0.Enpal.BatteryLevel', { val: BatteryLevel, ack: false }, parseInt(((0) || '').toString(), 10), false); result = await iq('"Power.Consumption.Total"', 'PowerConsumptionTotal'); await wait(3000); PowerConsumptionTotal = getState('0_userdata.0.Enpal.PowerConsumptionTotal').val; result = await iq('"Power.Production.Total"', 'PowerProductionTotal'); await wait(3000); PowerProductionTotal = getState('0_userdata.0.Enpal.PowerProductionTotal').val; result = await iq('"Energy.Production.Total.Day"', 'EnergyProductionTotalDay'); await wait(3000); EnergyProductionTotalDay = getState('0_userdata.0.Enpal.EnergyProductionTotalDay').val; result = await iq('"Energy.Consumption.Total.Day"', 'EnergyConsumptionTotalDay'); await wait(3000); EnergyConsumptionTotalDay = getState('0_userdata.0.Enpal.EnergyConsumptionTotalDay').val; result = await iq('"Energy.External.Total.Out.Day"', 'EnergyExternalTotalOutDay'); await wait(3000); EnergyExternalTotalOutDay = getState('0_userdata.0.Enpal.EnergyExternalTotalOutDay').val; result = await iq('"Energy.Battery.Charge.Day"', 'EnergyBatteryChargeDay'); await wait(3000); EnergyBatteryChargeDay = getState('0_userdata.0.Enpal.EnergyBatteryChargeDay').val; result = await iq('"Energy.Storage.Total.Out.Day"', 'EnergyStorageTotalOutDay'); await wait(3000); EnergyStorageTotalOutDay = getState('0_userdata.0.Enpal.EnergyStorageTotalOutDay').val; StromverbrauchAnteilSolarTag = EnergyProductionTotalDay - EnergyExternalTotalOutDay; StromverbrauchAnteilSolarTag = StromverbrauchAnteilSolarTag - EnergyBatteryChargeDay; setStateDelayed('0_userdata.0.Enpal.StromverbrauchAnteilSolarTag', { val: StromverbrauchAnteilSolarTag, ack: false }, parseInt(((0) || '').toString(), 10), false); STromverbrauchAlleTag = StromverbrauchAnteilSolarTag + EnergyStorageTotalOutDay + EnergyConsumptionTotalDay; setStateDelayed('0_userdata.0.Enpal.StromverbrauchAlleTag', { val: STromverbrauchAlleTag, ack: false }, parseInt(((0) || '').toString(), 10), false); console.info((['1: ',BatteryLevel,', 2: ',PowerConsumptionTotal,', 3: ',PowerProductionTotal,', 4: ',EnergyProductionTotalDay,', 5: ',EnergyConsumptionTotalDay,', 6: ',EnergyExternalTotalOutDay,', 7: ',EnergyBatteryChargeDay,', 8: ',EnergyStorageTotalOutDay,', 9: ',StromverbrauchAnteilSolarTag,', 10: ',STromverbrauchAlleTag].join(''))); });
  • Funktion zum Seitenabruf per Get funktioniert nicht mehr

    10
    0 Stimmen
    10 Beiträge
    703 Aufrufe
    jolicJ
    @haus-automatisierung said in Funktion zum Seitenabruf per Get funktioniert nicht mehr: @jolic Dann schau gerne mal in die Doku und verwende die asynchronen Funktionen httpGetAsynx und httpPostAsync. Dann haste auch ein Promise. Danke dir, das ist gut zu wissen! Da der interne httpGet-Befehl in ioBroker nativ verfügbar ist, werde ich mir diesen bei meinem nächsten Projekt genauer anschauen.
  • Telegram-Bot: Anzeige „1 Nutzer“

    27
    0 Stimmen
    27 Beiträge
    2k Aufrufe
    I
    Die Fehlermeldung unten in meinem geposteten Bild sieht ja auch nicht gesund aus. Ist zwar bei allen drei Bots so, daher wird es an dem Problem der Anzeige "1 User" nichts ändern, aber komisch ist es ja schon.
  • Schleife über alle Datenpunkte

    Verschoben
    13
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    R
    @paul53 Mit der Doku tue ich mich noch schwer, daher herzlichen Dank dass Du mir genau die richtige Stelle zum Nachlesen zeigst.
  • [GELÖST] Seit x Javascript Updates keine Module mehr geladen

    23
    1
    0 Stimmen
    23 Beiträge
    2k Aufrufe
    F
    @haus-automatisierung sagte in [GELÖST] Seit x Javascript Updates keine Module mehr geladen: Danke, Ein großes Danke geht vor Allem an Dich für deinen tollen Support und die vielen Neuerungen im Adapter!
  • Datenpunkt extern beschreiben

    monitoring communication
    4
    1
    0 Stimmen
    4 Beiträge
    254 Aufrufe
    R
    glaub hab mein fehler gefunden, datenpunkt anlegen und dann simple_api und web usw neustarten, schon kann beschrieben werden.
  • JAVA - Script Parse Error

    5
    0 Stimmen
    5 Beiträge
    390 Aufrufe
    haus-automatisierungH
    @seeandfeel sagte in JAVA - Script Parse Error: hätte ich wohl genauer suchen müssen das "request" deprecated ist. Normalerweise solltest Du vor dem Upgrade eine große Warnung bekommen haben, dass das der Fall ist. Und diese muss man manuell bestätigen. https://github.com/ioBroker/ioBroker.javascript/blob/d5772eaf30e865c4089b83c1198a86e2aac73774/io-package.json#L343-L383 Es ist erforderlich, alle Skripte zu aktualisieren, die das "Request"-Paket verwenden! Dieses Paket wird in zukünftigen Versionen entfernt. Bitte nutze die neuen "Bockly"-Blöcke für "httpGet" oder nutze eine andere Bibliothek (wie axios) im JavaScript-Code.
  • einen json String filtern und Bereiche löschen.

    17
    1
    0 Stimmen
    17 Beiträge
    856 Aufrufe
    S
    @mickym gebe zu... auch geil!
  • PV Überschuss Wallbox

    3
    0 Stimmen
    3 Beiträge
    338 Aufrufe
    paul53P
    @u66 sagte: Wärmepumpe, der ebenfalls mit Script gesteuert wird automatisch auszuschalten beim anstecken des Fahrzeugs an die Wallbox ? // IDs eintragen! const idConnect = ''; const idSoc = ''; const idPrio = '0_userdata.0.Wallbox.Ladeprio'; // Datenpunkt in Überschusssteuerung für WP prüfen! const idWP = 'tuya.0.46778228e09806828487.1'; var connect = getState(idConnect).val; var soc = getState(idSoc).val; function setPrio() { setState(idPrio, connect && soc < 95, true); // Grenzwert anpassen! } setPrio(); // Skriptstart on(idConnect, function(dp) { connect = dp.state.val; setPrio(); }); on(idSoc, function(dp) { soc = dp.state.val; setPrio(); }); on({id: idPrio, change: 'gt'}, function() { setState(idWP, false); });
  • [Vorlage] Anwesenheitssimulation - Script

    Verschoben
    271
    1
    1 Stimmen
    271 Beiträge
    65k Aufrufe
    L
    Hi, die Funktionalität des Scriptes ist soweit ausentwickelt. (für den Moment) Ich habe noch ein bischen Sanitäres gemacht im Coding, das Logging verbessert und eine check routine eingeführt, falls die Gruppen Definitionen inkonsistent eingestellt werden. Es gibt dann eine harte Fehlermeldung und Programmabbruch. Die Version 1.20 ist hochgeladen und steht im ersten Post zum Download bereit. vG Looxer
  • Liste aller CRON Jobs (2024)

    6
    0 Stimmen
    6 Beiträge
    390 Aufrufe
    Rene55R
    @liv-in-sky Ok. Bevor ich dann jemandem unnötig Arbeit aufhalse, lasse ich das mit dem Issue sein. Ich habs gerade in einem frischen Browser getestet. Hatte ich bisher tatsächlich noch nie so festgestellt.
  • [gelöst] getHistory - aggregate macht nichts?

    3
    1
    0 Stimmen
    3 Beiträge
    260 Aufrufe
    haus-automatisierungH
    @bananajoe sagte in getHistory - aggregate macht nichts?: Und kann mir - vermutlich selbst - die Frage beantworten: Ich muss auch die Schrittgröße step passend angeben? Genau. Damit definiert man die Größe der Bereiche für die Aggregierungs-Funktion.
  • Schreiben von Datenpunkten [gelöst]

    7
    2
    0 Stimmen
    7 Beiträge
    439 Aufrufe
    CodierknechtC
    @randyandy sagte in Schreiben von Datenpunkten [gelöst]: Ich dachte immer aktualisieren nimmt man bei Variablen und steuern bei Objekten die ewas ausführen. Variablen schreibt man mit "Setze ... auf". "Aktualisiere" nimmt man bei eigenen DP, "Steuere" bei DP die einem Adapter gehören. https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps/6
  • Skript Shelly 3EM zu Shelly 3EM Pro Messungen aufzeichnen

    4
    0 Stimmen
    4 Beiträge
    324 Aufrufe
    S
    @paul53 ok dann werde ich mal den Adapter anschauen und mich da mal einlesen.
  • Blockly: Garagentor automatisch schließen lassen

    11
    1
    0 Stimmen
    11 Beiträge
    710 Aufrufe
    L
    @lastactionhero nach nun 2 Wochen testen habe ich das Script noch um den Fall erweitert, dass bspw. bei Dunkelheit oder Dämmerung der Bewegungssensor gar keine Bewegung bei Öffnung des Tores erkannt hat. Damit funktioniert das Script ziemlich gut! Für alle, die es kopieren wollen, hier der Export: <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout_garagentor">timeout_garagentor</variable> </variables> <block type="on_ext" id="Rc,RDdc5.6wG*^S365kb" x="63" y="213"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="8hnUfm/?(yNLdqZYZioq"> <field name="oid">hm-rpc.1.000920C99B440F.1.MOTION</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="8AnIbRH(B2Z0mq*E[{%["> <field name="oid">hm-rpc.1.002420C995C575.1.DOOR_STATE</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="T?qf2^:iUp,w(UT*ZQz;"> <field name="NAME">timeout_garagentor</field> <next> <block type="controls_if" id="Mn:.=S/[gc[Thv5A|uXj"> <value name="IF0"> <block type="logic_multi_and" id="bfL7b$l[:-;i~hIrK|wL"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation> <value name="AND0"> <block type="logic_compare" id="*W{+nK5#|V!oF:.8L*s+"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="[r~|BdaEIVXhiu6{JM5X"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Garage_Autoclose</field> </block> </value> <value name="B"> <block type="logic_boolean" id="q=1%9$-8B}Z0U8%28k#)"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <value name="AND1"> <block type="logic_compare" id="Qq5B,Q|db2el8:aKjBWq"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="nx62AQcvUCmy#c@$Asax"> <field name="ATTR">val</field> <field name="OID">hm-rpc.1.000920C99B440F.1.MOTION</field> </block> </value> <value name="B"> <block type="logic_boolean" id="e1x]U3dj#0ZIAq`Xk+Gd"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="AND2"> <block type="logic_compare" id="_7d#`#s};ypO29N9upu6"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="mS]!-(O0uD9,u}`A#`td"> <field name="ATTR">val</field> <field name="OID">hm-rpc.1.002420C995C575.1.DOOR_STATE</field> </block> </value> <value name="B"> <block type="math_number" id="BV9G(8uj+VE?A.^me=a5"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="JQ!5`+_8gzc?@iT^Mi|C"> <field name="COMMENT">Nach 5 min ohne Bewegung automatisch schließen</field> <next> <block type="comment" id="BP05f8xMWyF:n[eD!g7H"> <field name="COMMENT">2 min davon vorgegeben vom Bewegungsmelder</field> <next> <block type="timeouts_settimeout" id="w?3#}$|H,rD_$OA}6lO="> <field name="NAME">timeout_garagentor</field> <field name="DELAY">3</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="eyPVpw@h|Otg_5=%p_iG"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">hm-rpc.1.002420C995C575.1.DOOR_COMMAND</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="5O?]J$QiwJydKxtg5!`Q"> <field name="NUM">3</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>
  • Blockly mit Liste funktioniert nicht (Warnungen)

    blockly javascript
    2
    1
    0 Stimmen
    2 Beiträge
    186 Aufrufe
    paul53P
    @oberfragger sagte: wo ist mein Fehler...? Die Variable i enthält keine Datenpunkt-ID, sondern den Vergleichstext. Anstelle der Schleife würde ich den Block "suche" verwenden. [image: 1722013697613-blockly_temp.jpg]
  • Script per URL Ausführen mit Variable

    9
    0 Stimmen
    9 Beiträge
    743 Aufrufe
    A
    @codierknecht Danke für Deine Erläuterungen!

873

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge