Skip to content

Skripten / Logik

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

16.5k Themen 213.3k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    W
    Nachdem ich Typescript neu installiert habe funktioniert es jetzt
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    D
    Oha. Das war einfach. Danke sehr :-)
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Frage zu Funktion onLog

    3
    0 Stimmen
    3 Beiträge
    324 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
    936 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
    4k 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
    800 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
    3k 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
    286 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
    435 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
    997 Aufrufe
    S
    @mickym gebe zu... auch geil!
  • PV Überschuss Wallbox

    3
    0 Stimmen
    3 Beiträge
    364 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
    69k 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
    454 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
    283 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
    486 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
    373 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
    807 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
    219 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
    794 Aufrufe
    A
    @codierknecht Danke für Deine Erläuterungen!
  • Zeit seit letztem Regen für Rasenroboter [gelöst]

    26
    1
    0 Stimmen
    26 Beiträge
    2k Aufrufe
    HomoranH
    @dr-bakterius sagte in Zeit seit letztem Regen für Rasenroboter [gelöst]: gibt es schon "ewig". das hat mir Paul auch schon gesagt. @paul53 sagte in Zeit seit letztem Regen für Rasenroboter [gelöst]: @homoran sagte: letzte Änderung ohne Trigger! Wie oft hätte ich das gebraucht "Letzte Änderung" gab es an der Stelle schon immer. Hinzugekommen sind nur Attribute des statischen Objektes unter getObject(id).common.

751

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge