Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    D
    @maxclaudi sagte: Allen einen wunderschönen, sonnigen guten Morgen, @Rico-Sander sagte: Vieles was hier diskutiert wird im Zusammenhang mit der Firmware- und HEMS-Aktualisierung trifft für mich nicht zu. habe auch kein Update durchgeführt. Weil ich kein HEMS nutze, ist es für mich nicht wichtig. Von den letzten Updates war ich mehr enttäuscht. Echte Verbesserungen gab es - für mich - nicht. Für mich waren es mehr Reglementierungen. @Rico-Sander sagte: Laden über AC-Anschluss, Entladen über AC-Anschluss - sonst nix. Bypass-Funktion und Grid-Dose benötige ich nicht. Selbst wenn Du mehr benötigen würdest, wüsste ich nicht was aktuell unter API 2 dagegen spricht. Die größten Veränderungen/Neuerungen durch das aktuelle Update sind bisher die Einführung von HEMS2 und Umstellung auf TLS. Zendure schreibt zwar: X bekannte Probleme behoben, jedoch welche das sein sollen, wird nicht erwähnt. Bei meinem Gerät sollen es 2 Probleme sein. Kann aber kein Problem feststellen und HEMS nutze ich nicht. @Rico-Sander sagte: Daher: Kann ich gefahrlos bei Verwendung des HTTP-Scriptes die Updates fahren oder gibt es Probleme mit dem SSL- und Port-Problem? Vermutlich nicht, da ich ja kein MQTT nutze - richtig? SSL mit Port:8883 ist nur für (nicht offizilles , Cloud-) MQTT Das Script nutzt reines HTTP mit dem Webserver des Zendure-Geräts. Zendure-Gerät und App nutzen zusätzlich "nicht offizielle" MQTT-Verbindung zur Cloud. Für das Script bedeutet das: Wenn Zendure durch die Firmware zenSDK nicht auch reglementiert oder grundlegend was verändert hat, dann funktioniert es wie zuvor. Es gab mit dem Update ein paar Änderungen und ein zusätzlicher Key. Bisher wurden mir keine Einschränkungen gemeldet. @Daniel-8 sagte: Bei mir ist alles gut. Hey, freut mich. @Daniel-8 sagte: ...hat Zendure bei Hems 2 und den neuen Firmwares was geändert. Ich habe noch kein Update gemacht. Bin etwas vorsichtig, da im Zendure Forum sehr viele Probleme haben. warte auch ab. Evtl. benötige ich keins. @Daniel-8 sagte: Was ist eigentlich der socCompSwitch? Das ist nicht bekannt und noch nicht dokumentiert. Habe eine Vermutung und kann es - ohne Update -nicht testen. socCompSwitch, bedeutet wahrscheinlich: State of Charge Compilation Switch. Denke es wird sich um einen neuen Schalter handeln, der eine Kalibrierung manuell auslösen wird. Damit man die automatische (wöchentliche oder monatliche) SoC-Kalibrierung zu nicht gewollten Zeiten beeinflussen, verhindern oder vorziehen kann? Das ist nur meine Vermutung -reine Spekulation - ! Habe den Schalter mal hinzugefügt, falls jemand auf eigene Gefahr und eigenes Risiko selbst testen möchte, was der Schalter bewirkt. Unter API 2 habe ich den Schalter schon gesetzt und getestet. Befehl wird abgeschickt und Empfang bestätigt. Auswirkungen hatte es bei mir überhaupt keine. War zu erwarten, weil socCompSwitch in der API2-Firmware nicht implementiert ist. Konnte den Schalter mehrmals - unter API 2 - gefahrlos bei meinem 1600AC+ setzen - ohne jede Veränderung. Funktionieren oder was bewirken wird der Schalter (sehr wahrscheinlich nur) erst nach Firmware-Update auf zenSDK API Version: 3. Noch einmal: Alles zu socCompSwitch sind nur Vermutungen aufgrund von Tests und Beobachtungen. edit: Falls jemand set socComp nach Update mit zenSDK API Version: 3 testen sollte, wäre ich über Rückmeldungen sehr dankbar. Habe mich heute doch mal getraut mein Solarflow 800 Pro auf die Firmware 2.0.1 upzudaten. Habe dann mal den setsocComp auf 1 und 2 geschrieben. Konnte aber keinerlei Veränderung feststellen
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    amg_666A
    @emil70 sagte: httpGet(url=http://125.123.6.5/snap.jpeg, error=timeout of 2000ms exceeded) Der erste Fehlereintrag im Log, also der ganz unten, sage, dass das httpGet nicht geklappt hat. Ich würde mal mit den 2 Sekunden im Blockly rumspielen, also erstmal höhersetzen auf 3 Sekunden und dann schauen, obs klappt. Achtung: Bei dem http(Get) im Blockly stehen bei dir Timeout 2 Sek, wenn dud as auf 3 änderst musst du auch das Intervall (das grüne "Ausführen" höher setzen
  • Hilfe für Skripterstellung mit Node-RED

    961 13k
    961 Themen
    13k Beiträge
    Marc BergM
    Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht. Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen: [ { "id": "0101b52dd8b0e69c", "type": "inject", "z": "tab_restart", "name": "Flow neu starten", "props": [ { "p": "baseUrl", "v": "http://nuc.fritz.box:1880", "vt": "str" }, { "p": "flowId", "v": "56a35d28dbb8d4c1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 160, "y": 140, "wires": [ [ "ffb73632947a1b74" ] ] }, { "id": "ffb73632947a1b74", "type": "http request", "z": "tab_restart", "name": "GET /flow/:id", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 370, "y": 140, "wires": [ [ "78e47724692d9c26" ] ] }, { "id": "78e47724692d9c26", "type": "change", "z": "tab_restart", "name": "deaktivieren", "rules": [ { "t": "set", "p": "flow", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 140, "wires": [ [ "b570b346c80301a6" ] ] }, { "id": "b570b346c80301a6", "type": "http request", "z": "tab_restart", "name": "PUT (aus)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 770, "y": 140, "wires": [ [ "a062c2baa0932d3e" ] ] }, { "id": "a062c2baa0932d3e", "type": "delay", "z": "tab_restart", "name": "1s warten", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "outputs": 1, "x": 960, "y": 140, "wires": [ [ "664a32887d83b305" ] ] }, { "id": "664a32887d83b305", "type": "change", "z": "tab_restart", "name": "aktivieren", "rules": [ { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 220, "wires": [ [ "83d399c90d46240f" ] ] }, { "id": "83d399c90d46240f", "type": "http request", "z": "tab_restart", "name": "PUT (ein)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 320, "y": 220, "wires": [ [ "529c0e1896d1f278" ] ] }, { "id": "529c0e1896d1f278", "type": "debug", "z": "tab_restart", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 480, "y": 220, "wires": [] } ]
  • einen json String filtern und Bereiche löschen.

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

    3
    0 Stimmen
    3 Beiträge
    532 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); });
  • Liste aller CRON Jobs (2024)

    6
    0 Stimmen
    6 Beiträge
    567 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
    368 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
    612 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
    533 Aufrufe
    stefu87_CHS
    @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
    1k 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
    292 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
    955 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
    3k 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.
  • Kein "Mülleimer" um Scripte zu löschen...?

    5
    1
    0 Stimmen
    5 Beiträge
    570 Aufrufe
    S
    @paul53 ja, habe auch was selektiert... das Issue scheint dann mich zu betreffen.... habe schon öfters nen Skript gelöscht, habe schon gedacht ich wäre bl** :) Danke :-)
  • Hue Push API für Hue Adapter

    164
    8 Stimmen
    164 Beiträge
    47k Aufrufe
    cashC
    @antimon wenn es nicht 100% funkitionieren würde, würde ich es nicht nutzen. Das meiste halt per Bewegungsmelder. Beim Schalter würde man eine Verzögerung von ein paar ms mehr eh nicht merken. Ich kann aber auch keine Verzögerung ggü der Zuordnung von Bewegungsmelder und Lampe aus der Hue App erkennen. Der Unterschied ist halt das ich mit Script mehr machen kann und die Hue Bridge nicht belastet wird und man so mehr Komponenten an die Bridge hängen kann. Alles in Javascript geschrieben. Nutze ein Synology mit 16MB Speicher. ioBroker läuft im Docker.
  • Blockly-Editor: Datenpunkt-Auswahl kaputt?

    14
    1
    0 Stimmen
    14 Beiträge
    694 Aufrufe
    MartinPM
    @thomas-braun said in Blockly-Editor: Datenpunkt-Auswahl kaputt?: Zwei unterschiedliche Versionen des gleichen Adapters installiert haben? Natürlich nicht - jetzt habe ich wieder alles auf 8.3.1 zurückgebaut, mit Deinem Befehlsschnipsel iob update iob upgrade ADAPTER@VERSION Mir ist auch wieder eingefallen, warum ich das umgebaut hatte: https://github.com/ioBroker/ioBroker.javascript/issues/1633 Um einen Issue zu erstellen, soll man das Verhalten auch mit dem letzten Beta aus dem github testen, sonst besteht die Gefahr, dass der Issue kommentarlos geschlossen wird ... Meine Motivation, Issues zu schreiben, ist durch dieses Langzeiterlebnis nicht gerade gestiegen ... Bevor ich mir nicht eine Spielwiese Iobroker-Installation gebastelt habe (es steht noch ein ggfs. geeigneter alter PC ohne Betriebssystem in der Ecke herum (Core2Duo 6600 - den möchte ich aber aus Stromverbrauchsgründen nicht durchlaufen lassen...). Vielleicht investiere ich in eine 250 GB SATA SSD .... alles andere sollte so lauffähig sein...
  • Chromecast url2play - hat sich was geändert ?

    1
    1
    0 Stimmen
    1 Beiträge
    216 Aufrufe
    Niemand hat geantwortet
  • Gelöst: Licht-Skript mit Sensor funktioniert nicht mehr

    15
    1
    0 Stimmen
    15 Beiträge
    891 Aufrufe
    ?
    @paul53 ja genau. Weil in jeder Jahreszeit sollte es um 16.00 Uhr eigentlich noch Hell genug also >80 Lux sein. Den DP setze ich am Anfang des Skripts zurück: [image: 1721205593075-b4f573c6-d3bf-4235-a30d-6511f38d7c0d-image.png]
  • Trigger wenn neues SubObjekt angelegt wurde?

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    A
    @paul53 Danke - tut so als "CSV": script.js.common.WLAN-NewDeviceNotify: wlanids init:unifi.0.default.clients.XX:XX:XX:XX:XX:XX.mac,unifi.0.default.clients.YY:YY:YY:YY:YY:YY.mac, ...
  • Blockly mehrere Geräte zusammenfassen

    blockly
    7
    0 Stimmen
    7 Beiträge
    665 Aufrufe
    C
    Perfekt. Vielen Dank für eure Unterstützung. Ich habe es per Szenen konfiguriert.
  • Instar 9408 MQTT unnötige Einträge im logfile

    6
    0 Stimmen
    6 Beiträge
    606 Aufrufe
    R
    @arteck sagte in Instar 9408 MQTT unnötige Einträge im logfile: ja kann man.. Mir ist das nicht gelungen. Ich habe das Thema hier diskutiert: https://forum.iobroker.net/topic/72715/mqtt-topics-ignorieren und hier ein Issue angelegt: https://github.com/ioBroker/ioBroker.mqtt/issues/429 @Jensemann200 Hat das Herausfiltern der MQTT Topics bei dir jetzt geklappt?
  • Umsetzung Go-e Controller, PV Ertrag- Daten Darstellung

    12
    0 Stimmen
    12 Beiträge
    805 Aufrufe
    T
    Versuche den go-e Controller dazu zu bewegen das er Überschulssladen ohne das zusätzliche go-e Modul regelt. Wo sollten denn die Werte in den Datenpunkten dargestellt werden wenn Überschussleistung vorhanden ist?
  • Shelly Plus 2PM Rolladen Skript (Yahka)

    blockly climate
    2
    1
    0 Stimmen
    2 Beiträge
    588 Aufrufe
    N
    @ionar Hallo! Super cool, dass du deine Arbeit hier geteilt hast, vielen Dank dafür! Ich habe die letzten Monate immer wieder versucht die Rollladen über den Shelly 2 PM in yahka zu bekommen und bin kläglich gescheitert. EDIT Nach etwas Probiererei habe ich es geschafft, dein Skript soweit einzurichten :) Allerdings wird dauerhaft angezeigt "wird geöffnet". Kannst du sagen, was ich hier ggf. falsch gemacht habe? "EDIT-2* Ich habe jetzt den Datenpunkten den initialen Wert "open" gegeben - danach lief alles :) Ganz vielen Dank nochmal für das Bereitstellen dieser tollen Lösung! Vielen Dank vorab! Nick

241

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge