Skip to content

Skripten / Logik

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

16.5k Topics 213.3k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    Norwegen60N
    Hallo, ich habe bisher iobroker Daten in eine MsSQL-Datenbank geschrieben und die in einem SQL-Script stark vereinfacht so ausgelesen: sendTo('sql.0', 'query', 'SELECT 1 AS test;', async(result) =>{setState(DataPoint , getAttr((getAttr(result, 'result')[0]), ''), true); }); und mit {console.log('### SQL-Test: '+ String(DataPoint) + ' = ' + String(getState(DataPoint).val))}; Das hat funktioniert. Jetzt habe ich auf MariaDB umgestellt. Daten werden auch problemlos in DB geschrieben. Adapter arbeitet also korrekt und Rechte sind vorhanden. Ich schaffe es aber nicht mehr auf irgendeine Weise Werte abzurufen. Die ganze SQL-Logik ist in eine DB-function verlegt. sendTo('sql.0', 'query', "SELECT fnTest AS test;", function(result) {console.log('Result 1: ', result);}); Result bleibt leer. Aber auch folgende Abfragen liefern nichts, bzw 0 zurück: sendTo('sql.0', 'query', "SELECT 1 AS test;", function(result) {console.log('Result 1: ', result);}); sendTo('sql.0', 'query', "SELECT 1 AS test;", result => console.log('Result 2: ', result)); sendTo('sql.0', 'query', 'SELECT 1 AS test;', result =>{ setState(DataPoint , getAttr((getAttr(result, 'result')[0]), ''), true); }); {console.log('Result3: '+ String(DataPoint) + ' = ' + String(getState(DataPoint).val))}; sendTo('sql.0', 'query', 'SELECT 1 AS test;', async(result) =>{ setState(DataPoint , getAttr((getAttr(result, 'result')[0]), ''), true); }); {console.log('Result4: '+ String(DataPoint) + ' = ' + String(getState(DataPoint).val))}; Hat jemand eine Idee, was ich beim Abruf eines sql mit MariaDB anders machen muss? Danke im Voraus Gerd
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    AsgothianA
    Ich denke in deinem Fall greift diese Lösung nicht. Die Lösung ist den Baustein [image: 1770589884460-screenshot-2026-02-08-at-23.31.01.png] durch das folgende Konstrukt zu ersetzen: [image: 1770590133517-screenshot-2026-02-08-at-23.35.29.png] Zusätzlich muss vor jeder anderen Ansteuerung der Aussenlampe Ecke ein [image: 1770590157266-screenshot-2026-02-08-at-23.35.55.png] gesetzt werden. A.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Trigger variablen Problem

    8
    0 Votes
    8 Posts
    580 Views
    NewpicselN
    Moin @paul53 Ich hab da mal etwas gebastelt 🙈 aber das ist für mich wie spanisch (ein paar Wörter kennt man, einiges hat man schon mal gehört und der Rest ist eigentlich chinesisch!) Ich hoffe du kannst mir dabei etwas helfen? Ich möchte die Funktion etwas simpler gestalten und mit Blockly weiter machen, deshalb soll in der Funktion lediglich der Timer gesetzt werden, wenn dieser abgelaufen ist, soll der DP (triggerID) mit dessen wert aktualisiert werden. Für den Timer stehen zwei Optionen (.fensterSensor_Delay und .fensterSensor_GlobalDelay) in Sekunden zur Verfügung, wenn "Delay" = 0, soll "GlobalDelay" verwendet werden, falls nicht dann "Delay" var triggerID = 0_userdata.0.Eigene_Objekte.Netatmo.Home.Rooms.Wohnzimmer.extFenster_erkennung.fensterStatusOpen [image: 1698393635580-timer.jpg] var idx = ids.indexOf(triggerID); var baseIDex = triggerID.slice(0, (triggerID.lastIndexOf('.'))); var baseIDroom = baseIDex.slice(0, (baseIDex.lastIndexOf('.'))); var baseIDhome = baseIDroom.slice(0, (baseIDroom.lastIndexOf('.') - 6)); if (idx == -1) { idx = ids.push(triggerID) - 1; timers[idx] = null; } if (timers[idx]) clearTimeout(timers[idx]); timers[idx] = setTimeout(function() { setState(triggerID, (getState(triggerID)), true,); }, parseInt(((((getState(([baseIDex,'.fensterSensor_Delay'].join(''))).val == 0 ? getState(([baseIDhome,'.extFensterSensor_GlobalDelay'].join(''))).val : getState(([baseIDex,'.fensterSensor_Delay'].join(''))).val) * 1000)) || '').toString(), 10));
  • "Alle" Objekte aus Baum abfragen bei Stateänderung

    15
    2
    0 Votes
    15 Posts
    1k Views
    paul53P
    @maniac sagte: Diese Funktion wählt alle Datenpunkte aus die "true" sind? Nein, es werden alle Datenpunkte ausgewählt, deren ID "unify.0.defaults.clients." und ".is_online" enthält. "falls Wert von id" filtert die Datenpunkte, deren Wert true ist.
  • Check Blockly - verursacht Absturz

    13
    1
    0 Votes
    13 Posts
    796 Views
    D
    @homoran Aber das war ein guter Anstoß, hab es nun wie folgt umgebaut: [image: 1698352671109-3d76914e-2887-424b-86b4-e6080db43536-image.png] Allerdings hatte ich beim ersten Versuch bei dem roten X noch eine zusätzliche UND Bedingung mit der Uhrzeit drin --> Absturz So wie abgebildet geht es jetzt, hab es auch durchgetestet...irgendwie muss er mit der Uhrzeit oder dem Format ein Problem haben!?!?!
  • Blockly startet nicht

    26
    1
    0 Votes
    26 Posts
    2k Views
    Meister MopperM
    @cdn sagte in Blockly startet nicht: Danke Euch allen! Dann solltest du den thread auf [gelöst] setzen (den Titel deines ersten Entrags editieren).
  • Speedtest Verständnisproblem mit den Werten

    25
    3
    0 Votes
    25 Posts
    3k Views
    MartinPM
    es gibt auf Github ein Projekt -> https://github.com/bb-Ricardo/fritzinfluxdb @dp20eic Habe ich mir schon angeschaut - scheint aber erstmal out-of-the box die speziellen Signalqualitätswerte-Tabellen der Kabel-Fritzbox nicht auszulesen. Nur sehr rudimentäre Infos werden bei der Kabel-Fritzbox abgefragt... https://github.com/bb-Ricardo/fritzinfluxdb/blob/main/fritzinfluxdb/classes/fritzbox/service_definitions/connection_info.py Ich würde da zwar Hand anlegen, aber meine Python-Kenntnisse sind noch schlechter, als die von Javascript .... Die Signalqualitäts-Messwerte sind es, die mich interessierten, weil beim sporadischen Schauen in die Fritzbox Weboberfläche immer die "nicht korrigierbaren Fehler" in den Kanälen gegenüber dem vorigen Blick angestiegen ware. Die Signalqualität auf der Leitung sollte eigentlich durchgehend so gut sein, dass maximal "korrigierbare Fehler" auftreten, die durch die Signalkodierung mit Fehlerkorrektur-Overhead, der bei der Übertragung genutzt wird glattgebügelt werden können. Da wollte ich schauen, wie der zeitliche Anstieg so ist - ob die Fehler z. B. immer im Burst auftreten, wenn irgendein Ereignis eintritt (Zündfunken der Gasheizung z.B.).
  • Datenbank-Werte mit Blockly oder JS in State schreiben

    3
    0 Votes
    3 Posts
    272 Views
    G
    @arteck Hi danke für die Antwort. Die Werte die ich aus der Datenbank an die SPS schicken will sind Befehle die die SPS ausführen soll. Dadurch habe ich zusätzlich einen "Befehlslog" der im nachhinein hilfreich ist um Fehler oder Zustände nachzuvollziehen. (Die SPS führt Dauertests durch) Die Befehle werden ursprünglich in einer CSV-Datei parametriert und nach auslesen der Datei in die Datenbank geschrieben. Daher der Aufwand Gruß Glatter
  • Untere Batterieentladungsgrenze dynamisch über modbus setzen

    1
    0 Votes
    1 Posts
    117 Views
    No one has replied
  • Personalisierte Antworten

    1
    0 Votes
    1 Posts
    146 Views
    No one has replied
  • (gelöst) Tageswerte in Blockly addieren

    4
    0 Votes
    4 Posts
    463 Views
    DasBo1975D
    @paul53 Super Danke. Genau so sieht meine Blockly aus. Nur das ich nicht auf Wert grösser als letztes getriggert habe. Ich Danke
  • Node-Red Abfrage von Alexa2-Adapter Devices

    2
    0 Votes
    2 Posts
    245 Views
    mickymM
    @mrdanger sagte in Node-Red Abfrage von Alexa2-Adapter Devices: Man muss die Query immer ansprechen. Wie kann man kontinuierlich in node-red die Query auslösen, um den State zu aktualisieren. Ich kenne mich weder mit Alexa noch mit dem Adapter aus. Aber Du kannst ja den Datenpunkt mit einer Query über die Inject Nodes zyklisch auslösen. Ob das Sinn macht, kann ich Dir aber nicht sagen. Vielleicht solltest Du die Frage allgemein stellen, da es ja mit NodeRed nur indirekt zu tun hat.
  • Skripte für PV und Verbrauch

    17
    0 Votes
    17 Posts
    1k Views
    CodierknechtC
    @srkonus Ich häng Dir hier mal das Script an. Spoiler <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable id="W$IcW%-i75K]exS?F/*7">zaehlerstand</variable> <variable id="VH#/(hm_L!hkq-%j-*{k">verbrauch</variable> </variables> <block type="on" id="eO!*FZ#KP/@uNd#5y`[F" x="-362" y="213"> <field name="OID">opendtu.0.114190525113.ac.phase_1.power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="zKk64!}O2zHxfR-mRJ2]"> <field name="NAME">timeout</field> <next> <block type="timeouts_settimeout" id="]zNJC.zJ~yA7cr}tVOBA"> <field name="NAME">timeout</field> <field name="DELAY">240</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="variables_set" id="@Z[E$P0an4Px+LO=cjTx"> <field name="VAR" id="W$IcW%-i75K]exS?F/*7">zaehlerstand</field> <value name="VALUE"> <block type="get_value" id="e_vlSHCM~8n;3DqCxvwk"> <field name="ATTR">val</field> <field name="OID">sonoff.0.ESP8266_SML.eHZM_Tarif1_in</field> </block> </value> <next> <block type="variables_set" id="OGZe,6C8:Dx~U9m7sEyN"> <field name="VAR" id="VH#/(hm_L!hkq-%j-*{k">verbrauch</field> <value name="VALUE"> <block type="math_arithmetic" id="nfelQi3rXPo`D_m0HZ1^"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="pq(QH_-Xm+buxEkjV?yf"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Qtg^gtF*^}A,UYEuy$}f"> <field name="VAR" id="W$IcW%-i75K]exS?F/*7">zaehlerstand</field> </block> </value> <value name="B"> <shadow type="math_number" id="Z[+VQbUq:VD.duby-`Wa"> <field name="NUM">1</field> </shadow> <block type="get_value" id="j#/04pc,5~**qeZ,{4K0"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Test.zaehlerstand</field> </block> </value> </block> </value> <next> <block type="comment" id="@oVZQU_19WNlezKTwl]F"> <field name="COMMENT">wenn Produktion auf 0 geht</field> <next> <block type="controls_if" id="wW06~RY:yH@cMjEd|{D*"> <value name="IF0"> <block type="logic_negate" id="1CrFTuW_HQ15zYpF4}-e"> <value name="BOOL"> <block type="on_source" id="}Cs8U+q%8yLx(o/MY~?i"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="A308QpgANqqK%T$BUekH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Test.zaehlerstand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="JX9?=wP^t+^qF)n*_`9a"> <field name="VAR" id="W$IcW%-i75K]exS?F/*7">zaehlerstand</field> </block> </value> <next> <block type="comment" id="9/yd!j/d]!n}_A:FBrGn"> <field name="COMMENT">entweder so</field> <next> <block type="update" id="XfK1+v`i}eM.6LO6b6XM"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Test.nachtverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="c!%ADMbQwx}i%$b3sz:x"> <field name="VAR" id="VH#/(hm_L!hkq-%j-*{k">verbrauch</field> </block> </value> <next> <block type="comment" id="dZ.OHe[PeJEako141`)0"> <field name="COMMENT">oder so (saldierend)</field> <next> <block type="update" id="R[Mxgj2yeKO24%z]s2bp"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Test.nachtverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="=UPMOUY/v@-7+`^TmjRZ"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="d?k/dK*P:SNt:nh2vK{L"> <field name="NUM">1</field> </shadow> <block type="get_value" id="?H|jTT2npG87/7m@%},C"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Test.nachtverbrauch</field> </block> </value> <value name="B"> <shadow type="math_number" id="us=:06)umI4bF#ix;PyU"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="b=F}(;ZU3Bcm(+92yt.."> <field name="VAR" id="VH#/(hm_L!hkq-%j-*{k">verbrauch</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml> Der gezeigte Block hängt nicht ohne Grund im Bereich "Trigger", da er direkt mit dem darüber liegenden Trigger-Block zu verwenden ist. Wenn ein Trigger feuert, sind so ziemlich alle Eigenschaften des zugehörigen Objektes bekannt. Es macht also nicht wirklich Sinn, z.B. die Objekt-ID, den Namen oder eben den Wert des feuernden Objektes nochmal über "Wert von" zu lesen. [image: 1698093045957-2fa05d4e-9257-4404-9dbc-6027358611f8-image.png]
  • Suche ein Blockly für Tibber Adapter

    3
    0 Votes
    3 Posts
    737 Views
    P
    @xbow42 Habe mich auch mit dem Thema beschäftigt und schon einiges ausprobiert. Habe folgendes Problem mit einem Blockly das den Tibber Connect Adapter abfragt. Ich wollte damit meinen BMW in der Garage immer dann laden wenn der Strompreis z.B. unter 0,20 Cent ist.[image: 1697996777151-bildschirmfoto-2023-10-22-um-19.46.09.png] "Hier habe ich einen Wert eingetragen der den Vorgang eigentlich starten sollte." Daher habe ich Blockly so ähnlich aufgebaut wie Du das gemacht hattest. Ich habe das Script da sich die Kosten nur stündlich ändern mit anderen Objekten als den Tibber aktuellen Preis getestet. Die Schaltungen erfolgen und auch die Werte werden dann in das Protokoll aufgenommen. Nur wenn ich den Link zu den Tibber Objekt Werten eintrage passiert gar nichts. Habs schon stundenlang mit anderen Werten probiert. Wo könnte da der Fehler sein?
  • Verzweifele an WhatsApp

    10
    2
    0 Votes
    10 Posts
    778 Views
    L
    Unfassbar: Adapter gelöscht und neu aufgesetzt und schon ist der Block da und das Senden funktioniert. Manchmal passieren sehr seltsame Dinge! Erstmal vielen Dank für eure Hilfe
  • Wifi light Adapter - RGB dimmen

    1
    0 Votes
    1 Posts
    132 Views
    No one has replied
  • sh script zwecks reboot

    1
    1
    0 Votes
    1 Posts
    170 Views
    No one has replied
  • Datenpunkt schalten wenn Licht an oder aus ist

    6
    1
    0 Votes
    6 Posts
    258 Views
    paul53P
    @mico sagte: die sollen dann andere Sachen schalten über Scripte wenn das Licht eingeschaltet wird; Weshalb können das nicht die Alias-DP? Die DP unter "0_userdata.0" sind unnötig, wenn sie nur den einzelnen Licht-Wert abbilden. Übrigens macht man es mit 8 Einzel-Triggern, was enorm Ressourcen spart: [image: 1697816889421-blockly_temp.jpg]
  • Wärmeplatte Kunstglucke / PWM / PID-Regler

    23
    0 Votes
    23 Posts
    930 Views
    B
    @paul53 sagte in Wärmeplatte Kunstglucke / PWM / PID-Regler: Soll ein bestimmter Sollwert eingehalten werden Das wollte ich damit ausprobieren. Es geht nicht nur um die schlechte Luft, sondern auch um beschlagene Fensterscheiben. Da bin ich am Testen ab wann die Scheiben beschlagen. Ich wollte noch nicht den Taupunkt ins Spiel bringen. Ich hoffe das es auch so geht. Danke für die Hilfe.
  • Warmwasser schalten mit PV Überschuss

    71
    1
    0 Votes
    71 Posts
    10k Views
    J
    @paul53 DANKEEE
  • Fehler im Script

    javascript
    3
    1
    0 Votes
    3 Posts
    118 Views
    paul53P
    @ticaki sagte: newState.val ist, ist das ein Alias für state.val? Ja, newState ist die ältere Version.
  • Ordner im Skript Verzeichnis werden nicht angezeigt

    3
    2
    0 Votes
    3 Posts
    262 Views
    J
    @djmarc75 Danke Manchmal ist es einfacher als man denkt.

351

Online

32.6k

Users

82.3k

Topics

1.3m

Posts