Skip to content

Skripten / Logik

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

16.5k Themen 213.4k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    S
    ich habe es selber in einem unterordner von common Versuch mal vielleicht die Koordinaten selbst einzutragen (ich meine auf 4 stellen nach dem Punkt/Komma) Sonst bin ich gerade überfragt... [image: 1770917845379-ddb5d35f-b93f-434c-866f-2bdec03e0fbb-image.png]
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    S
    @MCU Vielen Dank für diesen wichtigen Tip. Ich bin dann zusätzlich noch von RGB auf xy umgestiegen, weil Hue damit nativ arbeitet. Durch deinen Hinweis konnte ich das Blitzen vermeiden, die jetzt überflüssige Szene löschen und vor allen Dingen meine sonstigen Skripte massiv ausdünnen. Top !
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Zustand online/offline einer Webseite prüfen

    3
    0 Stimmen
    3 Beiträge
    246 Aufrufe
    Dr. BakteriusD
    @dexic Wenn es nicht unbedingt mit dem ioBroker realisiert werden muss, kann man auch php Server Monitor: https://github.com/phpservermon/phpservermon/ verwenden.
  • MQTT Keepalive im Skript

    49
    0 Stimmen
    49 Beiträge
    4k Aufrufe
    mickymM
    @humidor Wenn Du was beschreiben willst, dann musst Du das in dem W-Ast machen. [image: 1706892816072-783806a0-d7e8-4300-9a3d-8d8811339dc7-image.png] So wie ich verstehe - ist der R-Ast zum Lesen (Read), der W-Ast (Write) zum Schreiben und der N-Ast gibt Dir die Rückmeldungen. Welche Kommandos du sinnvoll absetzt - musst Du selbst irgendwo nachlesen. Nur es sieht so aus, wenn Du zum Beispiel den Wert 200 setzen willst - dann musst Du das direkt als Objekt mit der Eigenschaft value machen. Das kannst Du direkt als Objekt in das topic schreiben oder Dir von einer Change Node in ein Objekt wandeln. Oder bei -200 musst halt das Minuszeichen davormachen. [image: 1706893347587-e2ef63be-024d-4527-ada4-8fcf322ff57f-image-resized.png] Spoiler [ { "id": "d58f8f81774bf58b", "type": "debug", "z": "7e6af0015415146d", "name": "Wert schreiben. ", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 900, "y": 3900, "wires": [] }, { "id": "734dc9abc7699899", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "{\"value\":200}", "payloadType": "json", "x": 610, "y": 3860, "wires": [ [ "d58f8f81774bf58b" ] ] }, { "id": "83b5c3a123fe3b49", "type": "change", "z": "7e6af0015415146d", "name": "", "rules": [ { "t": "move", "p": "payload", "pt": "msg", "to": "payload.value", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 620, "y": 3920, "wires": [ [ "d58f8f81774bf58b" ] ] }, { "id": "94cd39c501330640", "type": "inject", "z": "7e6af0015415146d", "name": "", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "200", "payloadType": "num", "x": 430, "y": 3920, "wires": [ [ "83b5c3a123fe3b49" ] ] } ] Ansonsten musst Du aber jemand fragen, der solche Systeme betreibt - da kann ich auch nicht weiterhelfen.
  • Blockly Objekt ID Unterschiede

    blockly javascript
    6
    2
    1 Stimmen
    6 Beiträge
    963 Aufrufe
    haus-automatisierungH
    @marting Die Frage ist eher, warum Du nichts dazu gefunden hast... wo muss ich besser werden? :)
  • Max Objekte in IDs from Selektor

    4
    0 Stimmen
    4 Beiträge
    420 Aufrufe
    CodierknechtC
    @simplyclever Dann vielleicht häppchenweise. Der Selektor muss ja nicht unbedingt gleich auf alles unterhalb der Instanz gucken. Etwas in der Art renault.0.VF1xxxxxxxxxxxxxx1.general.vehicleDetails.battery.* könnte ja reichen. Da nimmt man sich dann halt peu á peu den nächsten Abschnitt vor.
  • Nulleinspeisung mit Tibber Puls und opendtu

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    M
    @mashpony ich musste nochmal das ganze etwas optimieren. Der Tibber node unterteilt die leistungswerte in +. und - Deswegen die Funktion um Einspeisung vom Bezug abzuziehen. Hinten habe ich mit dem deadband das ganze noch etwas geglättet das es nicht immer wie wild regelt. außerdem ist der WR jetzt nach unten auf 10% limitiert. [ { "id": "7bf3afac51a18e13", "type": "tab", "label": "PVNull", "disabled": false, "info": "", "env": [] }, { "id": "2dacc22b5419c832", "type": "mqtt out", "z": "7bf3afac51a18e13", "name": "WR MQTT", "topic": "solar/116484658617/cmd/limit_nonpersistent_absolute", "qos": "", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "87b2d138566ff5cc", "x": 1910, "y": 300, "wires": [] }, { "id": "992140f008964c0e", "type": "function", "z": "7bf3afac51a18e13", "name": "Berechnung für WR Limit", "func": "// MAX generation of the inverter Watts\nvar maxPower = 1600;\n\n// Get current power limit or default\nvar power = context.get('power') || maxPower;\npower += msg.payload;\n\n// clamp power between 0 and max\nif (power > maxPower) power = maxPower;\nif (power > 0) power = power + 150;\nif (power < 10) power = 160;\n\n// Wenn keine Werte vom Zähler kommen dann 600 W\n//if (power == 0) power = 1600;\n\n// store current powerlimit and update message\ncontext.set('power', power);\nmsg.payload = power;\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1430, "y": 300, "wires": [ [ "cfc7a51cd2515e7c", "50883943a3e33578" ] ] }, { "id": "cfc7a51cd2515e7c", "type": "debug", "z": "7bf3afac51a18e13", "name": "WR Wert", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1680, "y": 220, "wires": [] }, { "id": "7c9607b020e57be9", "type": "tibber-feed", "z": "7bf3afac51a18e13", "name": "B4D", "active": true, "apiEndpointRef": "acaea9XXXXXXXXXX", "homeId": "6453fa8f-XXXXXXXXXXXXX", "timestamp": false, "power": true, "lastMeterConsumption": false, "accumulatedConsumption": false, "accumulatedProduction": false, "accumulatedConsumptionLastHour": false, "accumulatedProductionLastHour": false, "accumulatedCost": false, "accumulatedReward": false, "currency": false, "minPower": false, "averagePower": false, "maxPower": false, "powerProduction": true, "minPowerProduction": false, "maxPowerProduction": false, "lastMeterProduction": false, "powerFactor": false, "voltagePhase1": false, "voltagePhase2": false, "voltagePhase3": false, "currentL1": false, "currentL2": false, "currentL3": false, "signalStrength": false, "x": 50, "y": 300, "wires": [ [ "303c3a9e684e3aca", "acd3b41ba56f0995" ] ] }, { "id": "303c3a9e684e3aca", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber output", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 260, "y": 220, "wires": [] }, { "id": "f2cca6ecae7ad5fc", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber positiv", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "positiv", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 640, "y": 220, "wires": [] }, { "id": "727ade03c58e2d2b", "type": "change", "z": "7bf3afac51a18e13", "name": "Positiv", "rules": [ { "t": "set", "p": "positiv", "pt": "msg", "to": "payload.power", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 430, "y": 300, "wires": [ [ "f2cca6ecae7ad5fc", "e957d8fb0f0bd489" ] ] }, { "id": "52b31c00780196ab", "type": "delay", "z": "7bf3afac51a18e13", "name": "", "pauseType": "rate", "timeout": "10", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "10", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": true, "allowrate": false, "outputs": 1, "x": 1110, "y": 300, "wires": [ [ "992140f008964c0e", "aed44dec4557ee97" ] ] }, { "id": "aed44dec4557ee97", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach delay", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1390, "y": 220, "wires": [] }, { "id": "50883943a3e33578", "type": "rbe", "z": "7bf3afac51a18e13", "name": "", "func": "deadband", "gap": "30", "start": "", "inout": "out", "septopics": true, "property": "payload", "topi": "topic", "x": 1690, "y": 300, "wires": [ [ "2dacc22b5419c832", "fb6e2a22c5dd3e5f" ] ] }, { "id": "fb6e2a22c5dd3e5f", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach Filter", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1910, "y": 220, "wires": [] }, { "id": "acd3b41ba56f0995", "type": "time-switch", "z": "7bf3afac51a18e13", "name": "zeitschaltung", "lat": "48.1492455", "lon": "12.0148575", "startTime": "sunrise", "endTime": "sunset", "startOffset": 0, "endOffset": 0, "x": 250, "y": 300, "wires": [ [ "727ade03c58e2d2b" ], [] ] }, { "id": "779a354a9c204395", "type": "inject", "z": "7bf3afac51a18e13", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "00 22 * * *", "once": false, "onceDelay": 0.1, "topic": "", "payload": "1600", "payloadType": "num", "x": 1370, "y": 360, "wires": [ [ "50883943a3e33578" ] ] }, { "id": "e957d8fb0f0bd489", "type": "change", "z": "7bf3afac51a18e13", "name": "Negativ", "rules": [ { "t": "set", "p": "negativ", "pt": "msg", "to": "payload.powerProduction", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 620, "y": 300, "wires": [ [ "7576e3b12206f405", "cac94db4ac79fe23" ] ] }, { "id": "7576e3b12206f405", "type": "debug", "z": "7bf3afac51a18e13", "name": "Tibber - negativ", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "negativ", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 840, "y": 400, "wires": [] }, { "id": "6f770f0a3305a631", "type": "debug", "z": "7bf3afac51a18e13", "name": "nach rechner", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 1070, "y": 360, "wires": [] }, { "id": "cac94db4ac79fe23", "type": "change", "z": "7bf3afac51a18e13", "name": "Suptrahieren", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "msg.positiv - msg.negativ", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 300, "wires": [ [ "52b31c00780196ab", "6f770f0a3305a631" ] ] }, { "id": "87b2d138566ff5cc", "type": "mqtt-broker", "name": "", "broker": "192.168.1.2", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" }, { "id": "acaea9118c2d1751", "type": "tibber-api-endpoint", "queryUrl": "https://api.tibber.com/v1-beta/gql", "feedConnectionTimeout": "30", "feedTimeout": "60", "queryRequestTimeout": "30", "name": "B4D" } ] [image: 1706607905892-bildschirmfoto-2024-01-30-um-10.40.44-resized.png]
  • Objekt / Datenpunkt sperren möglich?

    javascript
    12
    0 Stimmen
    12 Beiträge
    734 Aufrufe
    M
    @djmarc75 Mit welchem Ziel? Der existente Datenpunkt Volume wird durch einen Bug geändert, obwohl er das nicht soll. Mit dem Effekt, dass sich die Lautstärke der Lautsprecher ändert. Das möchte ich nicht.
  • Alexa Sprachausgabe reihenfolge ändern

    9
    0 Stimmen
    9 Beiträge
    200 Aufrufe
    DJMarc75D
    @timowald sagte in Alexa Sprachausgabe reihenfolge ändern: Ich hatte den verwendet aha, also Tankerkönig - sowas gehört im Eingangspost erwähnt ! Das sind 3 Nachkommastellen und damit kann Alexa (nicht der Adapter sondern die Geräte) nichts anfangen.
  • Fixe Liste als Szenario / DropDown Auswahl nutzen

    1
    0 Stimmen
    1 Beiträge
    181 Aufrufe
    Niemand hat geantwortet
  • Blockly Script -> ein Script für mehrere Trigger

    24
    1
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    paul53P
    @cheffe sagte: exportieren Spoiler <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="Hi#eH=aV#vRl=,^ygpGJ">idsSrc</variable> <variable id="xmlJs;}Sy%29W|+F.NyC">colors</variable> <variable id="Yhg0(ku+)2HzqtF%`)Y(">idsDst</variable> <variable id="HA8wOV^!Mo*mVkmuE`{G">path</variable> <variable id="DkSf^#3^q_TCS/]@U1f|">color</variable> </variables> <block type="variables_set" id="ZMmnT=Sgjmi[-81-5:T7" x="62" y="62"> <field name="VAR" id="Hi#eH=aV#vRl=,^ygpGJ">idsSrc</field> <value name="VALUE"> <block type="lists_create_with" id="GC|S:*pW~Z~r2b9@=FfC"> <mutation items="3"></mutation> <value name="ADD0"> <block type="field_oid" id="skLX]bOBk|j*A:|{6S67"> <field name="oid">default</field> </block> </value> <value name="ADD1"> <block type="field_oid" id="deqLr_^vEI%YW4p#Ft;w"> <field name="oid">default</field> </block> </value> <value name="ADD2"> <block type="field_oid" id="C7KgG]w4;Cf_5UD$XjB*"> <field name="oid">default</field> </block> </value> </block> </value> <next> <block type="variables_set" id="-4N9.Y]Qe;9:lX0ARkDl"> <field name="VAR" id="Yhg0(ku+)2HzqtF%`)Y(">idsDst</field> <value name="VALUE"> <block type="lists_create_with" id="hACXIS)K?`+!A/}V3.@t"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="tdS:Gvo,qdR-v4EF%D5N"> <field name="TEXT">fritzdect.0.DECT_130770174577-1.</field> </block> </value> <value name="ADD1"> <block type="text" id="7Sbp]]Hk]o(3(lOv=Hdt"> <field name="TEXT">fritzdect.0.DECT_1307701xxxxx-1.</field> </block> </value> <value name="ADD2"> <block type="text" id="6+#W2Ll^v!p-lVlDHe!}"> <field name="TEXT">fritzdect.0.DECT_1307701xxxxx-1.</field> </block> </value> </block> </value> <next> <block type="on_ext" id="IbyVK%nhw1e;G[XO=,ZH"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="#K4xW+0~Z/V!)b=W%pJO"> <field name="oid">default</field> </shadow> <block type="variables_get" id="qBcGS~jE=R?iWxiTbkGP"> <field name="VAR" id="Hi#eH=aV#vRl=,^ygpGJ">idsSrc</field> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id="bDt/7kIkUcvh|mzux5h9"> <field name="VAR" id="HA8wOV^!Mo*mVkmuE`{G">path</field> <value name="VALUE"> <block type="lists_getIndex" id="!^+`}av#Hr0]D*@zqTg("> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="u?O$mJqm}|{AFnc3W53."> <field name="VAR" id="Yhg0(ku+)2HzqtF%`)Y(">idsDst</field> </block> </value> <value name="AT"> <block type="lists_indexOf" id="2oq|1``]/mB3]lgN0`r}"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="cj_vdh4R}:x?Ey2AE-y*"> <field name="VAR" id="Hi#eH=aV#vRl=,^ygpGJ">idsSrc</field> </block> </value> <value name="FIND"> <block type="on_source" id="]I.I,=i+XZ8MM$-jw3Ll"> <field name="ATTR">id</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id=".-I,h2xyWa|SzGjFsGFH"> <field name="VAR" id="DkSf^#3^q_TCS/]@U1f|">color</field> <value name="VALUE"> <block type="lists_getIndex" id="Ff!f[H06W-8:!Hf@MS9!"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="F*thvjBv_%$3b]!*eba("> <field name="VAR" id="xmlJs;}Sy%29W|+F.NyC">colors</field> </block> </value> <value name="AT"> <block type="on_source" id="X98X9-/y?U0uI`*rb[`z"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="controls_if" id="q%DN/O2K^zy0y^*`SJ~U"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="G8`poFCeW?wsW/s{7:Uu"> <field name="OP">EQ</field> <value name="A"> <block type="convert_type" id="XVq3|UyI}*y7ZA||_sGA"> <value name="ITEM"> <block type="variables_get" id="?llSUTx335xf~y{Cc7t*"> <field name="VAR" id="DkSf^#3^q_TCS/]@U1f|">color</field> </block> </value> </block> </value> <value name="B"> <block type="text" id="o+.M^C~ZBwDu]t7PJMCo"> <field name="TEXT">number</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="bzIJj2|2J:ki/X_kJbl=" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="v:FgL~c4TV?QqS}-XxW9"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="[CY5#utPi%^zn/i6vYn4" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="`:71W.^^|Ekvx}tg4H=#"> <field name="VAR" id="HA8wOV^!Mo*mVkmuE`{G">path</field> </block> </value> <value name="ADD1"> <block type="text" id="u?t0tI3MwLtSBl?=FTGe"> <field name="TEXT">temperature</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="ymtV(ImH`B(JpW`z_/Q:"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id=")^U5ec$XLTJ~Zstbg6W4"> <field name="VAR" id="DkSf^#3^q_TCS/]@U1f|">color</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="5.BL.WR6]-D;e(kZa{[:"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="control_ex" id="}k9jaEh_X![G^K/3:Btg"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="v:FgL~c4TV?QqS}-XxW9"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="TgL1NmzQR)W=J))(1ioa" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="wl?@Nld1?Izax^[TVq{m"> <field name="VAR" id="HA8wOV^!Mo*mVkmuE`{G">path</field> </block> </value> <value name="ADD1"> <block type="text" id="RHlVCR98ZQMhQgJ?fS[W"> <field name="TEXT">hue</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="ymtV(ImH`B(JpW`z_/Q:"> <field name="BOOL">TRUE</field> </shadow> <block type="lists_getIndex" id="o226vJK8#-Igf*R.q(RQ"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="OyGNR)7e#W,!+E;rY8s."> <field name="VAR" id="DkSf^#3^q_TCS/]@U1f|">color</field> </block> </value> <value name="AT"> <block type="math_number" id="PAGqQ5DHK-95whM$,clx"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="Tv~lO]wGDR;^eR,e?CG_"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="2JUnTRJbGXqpzemH(~i3"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="v:FgL~c4TV?QqS}-XxW9"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="O[rkhu9F8{$dS=F?pu!P" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="9Z~h:7mKfnI`FdOtlrDm"> <field name="VAR" id="HA8wOV^!Mo*mVkmuE`{G">path</field> </block> </value> <value name="ADD1"> <block type="text" id="Mm{6;kcRL9lklHoypMZs"> <field name="TEXT">saturation</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="ymtV(ImH`B(JpW`z_/Q:"> <field name="BOOL">TRUE</field> </shadow> <block type="lists_getIndex" id="z2O@l~[$f,5jm|Boc6dw"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="xc8+d1XIetOqO0#1IWFK"> <field name="VAR" id="DkSf^#3^q_TCS/]@U1f|">color</field> </block> </value> <value name="AT"> <block type="math_number" id="#2y`xCANn8V-hLH[5b*p"> <field name="NUM">2</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="8%L08aYlqhack6-0uzg="> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> <block type="variables_set" id="qFS2e]_GWaviVI*`|H8s" x="762" y="512"> <field name="VAR" id="xmlJs;}Sy%29W|+F.NyC">colors</field> <value name="VALUE"> <block type="lists_create_with" id="=SIs;){U:ghJ8YewEFpZ"> <mutation items="7"></mutation> <value name="ADD0"> <block type="math_number" id="6}O8rkTF:Hf9[/4qKF!+"> <field name="NUM">2700</field> </block> </value> <value name="ADD1"> <block type="math_number" id="ieZq0A1KZ,9yvOFQD;wE"> <field name="NUM">3000</field> </block> </value> <value name="ADD2"> <block type="math_number" id="4CGsih6V^m?4pn+MlHhV"> <field name="NUM">3400</field> </block> </value> <value name="ADD4"> <block type="lists_create_with" id="krR,bF^+9-G1|839tckw" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="math_number" id="c.$p*jW^C5,=ulXp*IEm"> <field name="NUM">35</field> </block> </value> <value name="ADD1"> <block type="math_number" id="*NJwV9~gw*0-*6t2q!TQ"> <field name="NUM">214</field> </block> </value> </block> </value> <value name="ADD5"> <block type="lists_create_with" id="OY{[N3oMc`m{E,f]~!In" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="math_number" id=")P9(a`_osVe_Eib,s76a"> <field name="NUM">35</field> </block> </value> <value name="ADD1"> <block type="math_number" id="a_JgcVfP_2a}:KX10#JL"> <field name="NUM">140</field> </block> </value> </block> </value> </block> </value> </block> </xml>
  • Blockly für persistenten Shelly Zähler

    7
    1
    0 Stimmen
    7 Beiträge
    637 Aufrufe
    B
    Ich danke euch vielmals für eure Eingaben! Damit habe ich alle Herausforderungen lösen können. :-)
  • Awtrix Light - Benachrichtigung bist DP geändert

    11
    1
    0 Stimmen
    11 Beiträge
    829 Aufrufe
    U
    @haus-automatisierung Ja meeeega, vielen vielen Dank, Perfekt, jetzt macht das Gerät genau was ich will, erheblicher Mehrwert :kissing_smiling_eyes:
  • Telegram - Nachrichten aus Gruppen empfangen

    2
    2
    0 Stimmen
    2 Beiträge
    211 Aufrufe
    BananaJoeB
    ok, ich kann mir die Frage selbst beantworten: https://core.telegram.org/bots/faq#what-messages-will-my-bot-get [image: 1706093552148-61b7c798-6306-4642-94f0-c966cff7b231-image.png] Hier hat einer eine Lösung gefunden die Nachrichten doch zu lesen: https://stackoverflow.com/questions/53016170/telegram-bot-receiving-commands-from-other-bot mal schauen ...
  • Script für einen SpeedTest über speedtest.net

    Verschoben javascript
    177
    0 Stimmen
    177 Beiträge
    46k Aufrufe
    Thomas BraunT
    @daniel-schmitz87 sagte in Script für einen SpeedTest über speedtest.net: ich habe wie angegeben den Befehlt: sudo npm install --global speed-test ausgeführt. Macht man nicht so. Vor allen Dingen NICHT per sudo. Und Konsolentext NICHT als Bildchen hier rein sondern als Text in Codetags eingebettet. Mach es am besten über das Skript von @SKB : https://forum.iobroker.net/topic/48700/speedtest-skript-von-kreyenborg-koeln-für-kabel-gigabit
  • Rolladensteuerung über Zeitraum und Helligkeit

    9
    2
    0 Stimmen
    9 Beiträge
    619 Aufrufe
    CluniC
    @triplex Ich habe vor ein paar Monaten ein riesiges Blockly programmiert, welches eine Steuerung meiner Rollladen unter diversen Blickpunkten ermöglicht. Grundsätzlich wird nach Astrozeiten gefahren. Man kann aber eine frühste bzw späteste Zeit für Öffnen und Schließen und zusätzlich Offsets zur Astrozeit vorgeben. Fürs Wochenende/Feiertage kann man nochmals separat eine eigene frühste Öffnungszeit setzen. Dann kann man noch jedem Rollladen eine eine Zufallszeit in Sekunden und einen Offset geben, so dass man bestimmen kann, dass bestimmte Rollläden definiert zum Schluss gefahren werden (z.B. Terrassentür). Alle anderen fahren durch die Zufallszahlen jeden Tag in anderer Reihenfolge. Des weiteren kann man einstellen, ob Rollläden z.B. nur bei Anwesenheit oder Abwesenheit gefahren werden sollen. Fenstersensoren werden auch unterstützt. Damit können Rollläden z.B. bei offener Tür gesperrt werden. Oder man kann einstellen, dass ein Rollladen beim Öffnen eines Fensters automatisch zum Lüften geöffnet und beim Schließen wieder geschlossen wird. Man kann auch noch eine Mindesttemperatur fürs Öffnen vorgeben, damit nicht der Panzer bei festgefrorenem Rollladen zerrissen werden kann. Es fehlt noch die Steuerung der Abschattung im Sommer. Alle Einstellungen sind dafür schon vorhanden, aber das muss ich irgendwann noch im Angriff nehmen vor dem Sommer. Die Skripte kann ich dir gerne zukommen lassen. Aber sie sind SEHR umfangreich und wahrscheinlich für Außenstehende trotz Kommentare schwer verständlich. Es gibt außerdem ein Skript, welches sich um das Anlegen der Rollläden im Userbereich kümmert. Das müsste natürlich auf deine Rollläden speziell angepasst werden. Da ich momentan nicht viel Zeit habe, kann ich dir da leider auch keine Unterstützung zu geben - das heißt du müsstest dich im Großen und Ganzen ganz alleine da durch kämpfen. Hier mal nur ein Teilausschnitt meines Blocklys: [image: 1705918513976-252bf30b-043b-4cd8-bca4-fffc3c204016-image.png] Allgemeine Einstellungen: [image: 1705918770315-b162dffb-1519-4db1-94e8-0e5448d1eac7-image.png] Einstellungen für jeden Rollladen: [image: 1705918818771-63a098e7-6904-460c-a79d-aa9bf5ab1d4a-image.png]
  • simple-ssh mehrere Befehle senden

    19
    0 Stimmen
    19 Beiträge
    1k Aufrufe
    Marc_el_KM
    @oliverio sagte in simple-ssh mehrere Befehle senden: evtl andere reihenfolge? Ich habe das Problem, dass wenn ich zuerst den iobroker stoppe, dass dann keine Befehle mehr ankommen. Mir stellt sich nur noch die Frage, ob man eine Abfrage machen kann, dass der iobroker auch vollständig beendet wurde?
  • binde object funktioniert nicht

    5
    2
    0 Stimmen
    5 Beiträge
    450 Aufrufe
    M
    @codierknecht Danke das war mir so nicht klar - mit der Erklärung ist es logisch... Vielen Dank!
  • aus JSON(?) Temperaturen als Datenpunkt generieren

    5
    0 Stimmen
    5 Beiträge
    466 Aufrufe
    CodierknechtC
    @haus-automatisierung sagte in aus JSON(?) Temperaturen als Datenpunkt generieren: Du brauchst keinen zusätzlichen Adapter hierfür. Einfach das Objekt manuell anlegen und pflegen im Objekt-Tab. Also zumindest bei mir hat der Alias-Adapter nie das gemacht was ich wollte oder was ich erwartet hätte. Darum ist er gleich wieder rausgeflogen.
  • Zeitsteuerung alle 1,5 Std. Probleme

    3
    1
    0 Stimmen
    3 Beiträge
    181 Aufrufe
    paul53P
    @mico sagte: alle 1,5 Stunden Vorschlag: [image: 1705489383195-blockly_temp.jpg]
  • erkennen ob script, Adapter oder System neu gestartet wurde

    26
    0 Stimmen
    26 Beiträge
    2k Aufrufe
    jmeister79J
    Ich habs jetzt nur so überflogen: Ich schließe mich hier @paul53 an. Der Javascriptadapter startet erst wenn das System seine Umgebungsvariablen eingelesen hat. Alles andere wäre fatal. (EVA Prinzip) Ich sehe hier also nicht wirklich ein Problem. Meine ganzen Scripte sind so, dass sie alleine laufen können. Hast Du Abhängigkeiten der Scripte untereinander ist JS für dich die falsche Plattform, dann musst du entweder mit einer SPS arbeiten oder deine Scripte so umbauen, dass sie untereinander Kommunizieren mit Schnittstellen, das ist aber ein riesiger umbau und m.E. völlig unnötig, da die DP hier die Schnittstelle sind. Vorsicht: DP schreiben asynchron. Du musst also mit Triggern arbeiten wenn Du eine vernünftige Kommunikation haben willst. JS ist nicht Echtzeit.
  • Gleitender Durchschnitt, Min., Max. über def. Zeitraum

    Verschoben javascript
    113
    0 Stimmen
    113 Beiträge
    28k Aufrufe
    C
    @paul53 wie wo muss ich das erfassen... idee wäre zusätzlich

671

Online

32.6k

Benutzer

82.3k

Themen

1.3m

Beiträge