Skip to content

Skripten / Logik

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

16.5k Topics 213.5k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    G
    @holgerwolf abgesehen von dem, was @ralf77 geschrieben hat: Ecoflow (die App) selbst kann inzwischen auch mit Shelly 3EM arbeiten. Was hast Du im Einsatz?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    B
    @redbull2906 Also ich haben keinen zusätzlichen mqtt Broker/Client im iobroker installiert, das geht mit dem integrierten mit dem ich eh schon Tasmota Geräte etc. auslese bzw. Steuere. Die mqtt Daten vom iobroker muss man nur in der App eintragen. In der App sieht man dann nicht mehr all zu viel aber das braucht man auch nicht. Was man sehen möchte kann man auch mit dem VIS oder dem Energiefluss Adapter visualisieren.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    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 Votes
    3 Posts
    247 Views
    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 Votes
    49 Posts
    4k Views
    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 Votes
    6 Posts
    966 Views
    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 Votes
    4 Posts
    420 Views
    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 Votes
    6 Posts
    1k Views
    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 Votes
    12 Posts
    738 Views
    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 Votes
    9 Posts
    200 Views
    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 Votes
    1 Posts
    181 Views
    No one has replied
  • Blockly Script -> ein Script für mehrere Trigger

    24
    1
    0 Votes
    24 Posts
    2k Views
    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 Votes
    7 Posts
    648 Views
    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 Votes
    11 Posts
    834 Views
    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 Votes
    2 Posts
    211 Views
    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

    Moved javascript
    177
    0 Votes
    177 Posts
    46k Views
    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 Votes
    9 Posts
    621 Views
    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 Votes
    19 Posts
    2k Views
    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 Votes
    5 Posts
    468 Views
    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 Votes
    5 Posts
    476 Views
    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 Votes
    3 Posts
    181 Views
    paul53P
    @mico sagte: alle 1,5 Stunden Vorschlag: [image: 1705489383195-blockly_temp.jpg]
  • erkennen ob script, Adapter oder System neu gestartet wurde

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

    Moved javascript
    113
    0 Votes
    113 Posts
    28k Views
    C
    @paul53 wie wo muss ich das erfassen... idee wäre zusätzlich

291

Online

32.7k

Users

82.3k

Topics

1.3m

Posts