Skip to content

Skripten / Logik

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

16.5k Themen 213.3k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    azzkikrboyA
    @arnod OK, dann lass ich es leiber so :-) Als ich die neue Version kopiert habe ist mir aufgefallen, dass es ein neues Design für die Übersicht gibt. Wenn ich das neue .js bei mir einbaue, sieht es aber immer noch so aus wie vorher ... Ist zwar nur die Optik, sieht aber besser aus ;-) Woran kann das liegen? neu: [image: 1770466556270-ea702700-2a5a-49aa-bd8f-f6f4a89477dc-grafik.png] alt? (nach einfügen der neuen .js) [image: 1770467005603-d70df4e6-08b4-4c6b-abbc-914ac65bf5fe-grafik.png]
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    WinniW
    Das habe ich dann wohl falsch verstanden, weil Joachim schrieb: "Nun aber der Haken - betrete ich nach 30min wieder das Haus, soll er ja eigentlich NICHTS gemacht haben, sondern eben erst nach 240min" Aber egal, Hauptsache am Ende kommt eine gute Lösung für den to heraus :)
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • "Alle" Objekte aus Baum abfragen bei Stateänderung

    15
    2
    0 Stimmen
    15 Beiträge
    1k 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
    784 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
    3k 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
    272 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
    117 Aufrufe
    Niemand hat geantwortet
  • Personalisierte Antworten

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

    4
    0 Stimmen
    4 Beiträge
    463 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
    243 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
    736 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
    778 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
    132 Aufrufe
    Niemand hat geantwortet
  • sh script zwecks reboot

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

    6
    1
    0 Stimmen
    6 Beiträge
    257 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
    930 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
    10k Aufrufe
    J
    @paul53 DANKEEE
  • Fehler im Script

    javascript
    3
    1
    0 Stimmen
    3 Beiträge
    118 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
    260 Aufrufe
    J
    @djmarc75 Danke Manchmal ist es einfacher als man denkt.
  • Kostal Plenticore prognosebasiertes Batterieladung Vorlage

    javascript blockly monitoring
    2
    0 Stimmen
    2 Beiträge
    2k Aufrufe
    R
    @ostpower Ich habe auch einen Kostal WR, an dem allerdings ein BYD Speicher hängt und deshalb direkt eine Frage. Was versteht du/Kostal unter "intelligent laden" beim Kostal und dem schonenden laden? Es ist doch so, dass der WR den PV-Ertrag wie folgt verteilt: Erst den aktuellen Eigendarf decken, mit dem Überschuss den Akku laden und wenn der Akku voll ist wird der Überschuss eingespeist. Dabei kann mein Kostal (gem. Datenblatt) max.13A zur Ladung/Entladung nutzen. Daraus folgert bei den BYD-Akkus eine minimale Zeit von 2 Stunden zur vollständigen Ladung. Vorausgesetzt, es steht genügend Überschuss parat. Also 1/2 C, wie man es im Modellbau bezeichnen würde. Meine LiPos für das Modellauto lade ich sehr schonend mit 1C und sie können mit max. 80C entladen werden. Von daher ist 1/2C schon ein sehr schonender Wert. Bei mir ist der Speicher oft schon am Vormittag voll, sodass der max. Ladestrom selten ausgenutzt wird. Was würde es bringen, die Ladeleistung weiter zu drosseln und gleichzeitig einzuspeisen oder erst einspeisen und später am Tag den eigenen Akku laden? Wenn die PV-Anlage so groß dimensioniert wurde, dass ein Teil des Überschusses nicht eingespeist werden darf (70%-Regelung), würde ich lieber den Speicher vergrößern und mehr/länger einspeichern oder den WR vergrößern (damit dann die 70% kleiner sind als die installierten KWPeak). Was anderes wäre es in Verbindung mit Tibber, wenn du gerne deinen Speicher zu Zeiten von günstigen Tarifen laden möchtest um dann den gespeicherten Strom zu teureren Zeiten zu verbrauchen. Dazu müsstest du die Batteriesteuerung von intern auf extern umstellen. Das kann man nur über den Installateurzugang. Leider habe ich keinen, sonst hätte ich dies längst mal getestet. Wenn du mir an dieser Stelle unter die Arme greifen kannst, würde ich mich über eine private Nachricht freuen :) Ein sehr grober Versuch wäre noch, die Batterieladung/ -entladung über die WR "Zeitgesteuerte Batterienutzung" zu beeinflussen. Dann könnte man zu günstigen Strom-Tageszeiten oder hohen PV-Leistungen die Batterieentladung sperren und zu teurer Zeiten oder geringeren PV-Leistungen freigeben. Jedoch kann der WR die Batterie nicht aus dem Netz aufladen. Evtl. wird also der Speicher nicht voll. Hier würde mir nur einfallen, die min SoC zu billigen Stromzeiten auf 100% zu stellen, in der Hoffnung, dass der WR die Batterie dann auflädt und dazu auch aus dem Netz bezieht. Vorgesehen ist es scheinbar nicht, die Batterie aus dem Netz zu laden. LG RGT

700

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge