Skip to content

Skripten / Logik

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

16.4k Themen 211.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    Ro75R
    Ich habe das Skript aktualisiert. Neuer Stand: 1.0.17. Aktueller Code, Beispiel, Archiv, Code aus meiner Umgebung und Parameterbeschreibung >> ALLES in Post 1. Ro75.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    AsgothianA
    Klar - das Blinken erfordert Aktion jede Sekunde. Das kostet :)
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Trigger variablen Problem

    8
    0 Stimmen
    8 Beiträge
    518 Aufrufe
    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 Stimmen
    15 Beiträge
    915 Aufrufe
    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 Stimmen
    13 Beiträge
    752 Aufrufe
    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 Stimmen
    26 Beiträge
    2k Aufrufe
    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 Stimmen
    25 Beiträge
    2k Aufrufe
    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 Stimmen
    3 Beiträge
    250 Aufrufe
    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 Stimmen
    1 Beiträge
    116 Aufrufe
    Niemand hat geantwortet
  • Personalisierte Antworten

    1
    0 Stimmen
    1 Beiträge
    145 Aufrufe
    Niemand hat geantwortet
  • (gelöst) Tageswerte in Blockly addieren

    4
    0 Stimmen
    4 Beiträge
    416 Aufrufe
    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 Stimmen
    2 Beiträge
    219 Aufrufe
    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 Stimmen
    17 Beiträge
    1k Aufrufe
    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 Stimmen
    3 Beiträge
    692 Aufrufe
    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 Stimmen
    10 Beiträge
    653 Aufrufe
    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 Stimmen
    1 Beiträge
    128 Aufrufe
    Niemand hat geantwortet
  • sh script zwecks reboot

    1
    1
    0 Stimmen
    1 Beiträge
    154 Aufrufe
    Niemand hat geantwortet
  • Datenpunkt schalten wenn Licht an oder aus ist

    6
    1
    0 Stimmen
    6 Beiträge
    245 Aufrufe
    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 Stimmen
    23 Beiträge
    924 Aufrufe
    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 Stimmen
    71 Beiträge
    9k Aufrufe
    J
    @paul53 DANKEEE
  • Fehler im Script

    javascript
    3
    1
    0 Stimmen
    3 Beiträge
    117 Aufrufe
    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 Stimmen
    3 Beiträge
    229 Aufrufe
    J
    @djmarc75 Danke Manchmal ist es einfacher als man denkt.

333

Online

32.4k

Benutzer

81.4k

Themen

1.3m

Beiträge