Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.5k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    P
    @Schimi sagte: habe mal ne neue version erstellt, weil ich auch wieder ins Limit gelaufen bin... > Danke fürs fixen. Vom ersten Eindruck passt das so. Ich bin vor 2 Tagen auch ans Limit gelaufen, obwohl der Monatszähler bestimmt unter 50 war. Den Zähler zu reseten hat nichts gebracht. Ging dann nur mit einem neuen API-Key.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @Berlon sagte: wieso gibt es bei true und false kleiner und größer? Zusätzlich zu der Info von @paul53 Binär ist false=0 und true=1. EDIT: @asgothian war schneller und genauer
  • Hilfe für Skripterstellung mit Node-RED

    956 13k
    956 Themen
    13k Beiträge
    S
    Hallo Zusammen, ich bin gerade am überlegen, wie ich folgende Aufgabe umsetzen könnte: Ein true an einer (Trigger)Node lässt einen Zähler laufen und setzt einen eigenen Ausgang auf true. Ein false der Trigger Node stoppt den Zähler setzt diesen aber nicht auf false. Ein true lässt den Zähler einfach weiterlaufen... Nach Ablauf der Zeit im Zähler wird der Ausgang des Zählers auf false gesetzt. Mehr soll nicht passieren. Ein separater Eingang am Zähler setzt diesen auf 0 zurück. Was ich damit anfangen möchte: Die Laufzeit der Poolpumpe wird auf eine Mindestlaufzeit von bspw. 4h überwacht -kann aber manuell bedient bei Bedarf länger laufen. Ein Trigger um 00:01Uhr setzt die Laufzeit zurück. Die Zählernode gilt hier als "Anforderung Pumpe wegen Mindestlaufzeit unterschritten". Ich habe noch keine brauchbaren Ideen, wie ich dass sauber und mit wenig Aufwand umsetzen könnte... Vielen Dank und VG Torsten
  • (Erledigt!) TypeScript Kompilierfehler

    7
    0 Stimmen
    7 Beiträge
    692 Aufrufe
    U
    @ticaki PERFEKT. DANKE!!! Wirklich vielen Dank.
  • Awattar Adapter - aktueller Preis dieser Stunde

    2
    0 Stimmen
    2 Beiträge
    419 Aufrufe
    HomoranH
    @peterredl Das Forum ist voll mit solchen Skripten! z.b. https://forum.iobroker.net/post/1068257
  • ESPHome Grillthermometer

    2
    0 Stimmen
    2 Beiträge
    618 Aufrufe
    B
    @jacke Bist du da schon weiter? Ich suche eigentlich einen Thermometer mit 2 Fühlern die ich auslesen kann. Einen für Kerntemp und einen für den Innenraum des Gasers..... Perfekt wäre Tasmota zb auf einem Esp.
  • 3 Hue Motion Sensoren in einem Raum

    7
    0 Stimmen
    7 Beiträge
    871 Aufrufe
    R
    @karel-puhli Egal wie ich es programmiert hatte, sind die Lichter immer wieder augegangen, wenn man länger vor dem Rechner sitzen geblieben. Habe die Bewegungsmelder so programmiert das der Ablauftimer immer wieder die anderen Bewegungsmelder unterbrochen hat. Habe dann die Hue Schalter so programmiert, dass wenn ich die Eintaste drücke die Bewegungsmelder deaktiviert wurden und bei der Austaste sie wieder aktiviert werden sollten. Wie gesagt, entweder ist das Licht ausgegangen obwohl jemand im Raum war oder die Lichter haben länger gebrannt als sie sollten, weil niemand mehr im Raum war und man vergessen hatte wieder den BWM mit Tastendruck zu aktivieren. Mit dem Präsenzsensor ist es so perfekt, und die Lichter brennen jetzt nur noch 1 Minute wenn niemand mehr im Raum ist. Bei den BWM musste ich auf 10 Minuten den Timer stellen.
  • Globale Funktionen für Alias Konvertierung?

    19
    0 Stimmen
    19 Beiträge
    1k Aufrufe
    paul53P
    @xelarep sagte: 0_userdata vermeiden und direkt im Alias konvertieren. new Date(1000 * (val + 60 * new Date().getTimezoneOffset())).toLocaleTimeString('de-DE') ... bezieht sich auf Wandlung Sekunden nach "hh:mm:ss". EDIT(18:15 Uhr): Korrigiert um Zeitzone.
  • Status negiert übertragen

    Verschoben
    34
    0 Stimmen
    34 Beiträge
    4k Aufrufe
    HomoranH
    @zimbl sagte in Status negiert übertragen: Beim GPIO..state...switch findet keine Änderung statt.... heisst genau was? https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1 @zimbl sagte in Status negiert übertragen: das Skript scheint nichts zu bewirken... nochmal: @homoran sagte in Status negiert übertragen: welches Skript? @zimbl sagte in Status negiert übertragen: ich kann ihn von Hand aus umschalten...direkt unter Objekte. wie genau? alles zeigen! so istcdas ein großes Rätselraten.
  • MQTT Daten value entfernen

    2
    2
    0 Stimmen
    2 Beiträge
    217 Aufrufe
    paul53P
    @raue sagte: Kann man dies mit einem script korrigieren. Nicht im Original-Datenpunkt. Mit [Alias](Link Adresse) kommt man ohne Skript aus. Im Alias macht man eine Lesekonvertierung JSON.parse(val).value
  • Jarolift TDEF mit Shelly 1 und iobroker steuern

    11
    1
    1 Stimmen
    11 Beiträge
    3k Aufrufe
    S
    @larry210472 Nutzt du die Simulation so noch und funktioniert das zuverlässig ? Habe die gleichen Motoren und habe überall Shelly 2.5 verbaut Grüße
  • Trigger variablen Problem

    8
    0 Stimmen
    8 Beiträge
    642 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
    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
    884 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
    278 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
    120 Aufrufe
    Niemand hat geantwortet
  • Personalisierte Antworten

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

    4
    0 Stimmen
    4 Beiträge
    493 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
    261 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
    2k 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
    762 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?

586

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge