Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.3k 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
    maxclaudiM
    @Daniel-8 sagte: Also habe ich das richtig interpretiert, das eine 8 Sekundenabfrage kein Problem darstellt Richtig. Es kann auch mit 6 Sek. gefahrlos getestet werden. Das Skript arbeitet mit einer Warteschlange (Queue). Das heißt, alle Anfragen (Watt lesen oder Werte schreiben) werden nacheinander abgearbeitet. Damit das stabil bleibt, müssen die Intervalle auf die Timeout-Zeit (2 Sek.) abgestimmt sein. Voraussetzung ist eine gute, stabile und nicht überlastete WLAN-Verbindung. Evtl. ein extra WLAN mit Access Point (AP) nur für Zendure-Gerät(e). Abfrage-Intervall (GET) const intervalGet = 8; Standard (Empfohlen): 8 Sekunden Technisches Minimum: 5 Sekunden @Daniel-8 sagte: und zwischen dem senden immer 5 Sekunden Pause sind? Richtig. Man kann zwar theoretisch schneller Befehle im ioBroker auslösen, aber das Skript lässt diese erst nach der eingestellten Pause, der Reihe nach, in die Warteschlange. Sende-Pause (POST) const minTimeBreakForSetDpSec = 5; Standard (Empfohlen): 5 Sekunden Technisches Minimum: 4 Sekunden Warum diese Mindestwerte? Stabilität. Die 2x-Timeout-Regel: Sobald Du einen Wert sendest (POST), schickt das Skript sofort eine Abfrage (GET) hinterher, um den Status zu aktualisieren. Im Fehlerfall (WLAN-Lag) dauert dieser Vorgang bis zu 4 Sekunden (2x 2 Sek. bei 2000ms Timeout). Die Sende-Pause muss also immer länger als diese 4 Sekunden sein, sonst stauen sich die Befehle in der Warteschlange.. Abfrage-Puffer: Das Abfrage-Intervall (GET) muss deutlich über dem Timeout liegen, damit das Skript Zeit hat, die Warteschlange nach einem Fehler sauber zu leeren. Wichtig: Bei schlechtem WLAN Wenn das WLAN nicht absolut stabil ist, sollte man die Zeiten nicht verringern, sondern eher erhöhen: intervalGet: auf 10–12 Sekunden minTimeBreak (Pause): auf 8 Sekunden Bei schlechtem Empfang laufen Anfragen evtl. oft in den 2-Sekunden-Timeout. Wenn man dann zu schnell neue Anfragen nachschiebt, "verstopft" die Kommunikation zum Zendure-Gerät komplett und der interne Prozessor (ESP) kommt nicht mehr hinterher. Könnte evtl. sogar die Kommunikation beenden. Nur so ist sichergestellt, dass über HTTP alles reibungslos funktioniert. Mir ist kein Weg bekannt, das auf andere Weise "sicherer" über HTTP zu gewährleisten. Mit den Standard-Einstellungen funktioniert es im Dauerbetrieb sehr zuverlässig.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HumidorH
    @paul53 Danke, du triggerst eine Funktion Alarm1, die selbstständig alle 5min ausgeführt wird, außer der Trigger stoppt diese. [image: 1775796578011-bildschirmfoto-2026-04-10-um-06.49.28.png]
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Themen
    13k Beiträge
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • Script Sonnenstand und Einstrahlung

    Verschoben
    35
    1
    0 Stimmen
    35 Beiträge
    12k Aufrufe
    giorgrazG
    @giorgraz I found this adapter https://github.com/ioBroker/ioBroker.parser Can we use/call it on the script to get data, for any day, of meteo forecast parameter file ?
  • Alexa Sprachausgabe nach Zeitplan läuft in Schleife

    blockly javascript
    1
    1
    0 Stimmen
    1 Beiträge
    159 Aufrufe
    Niemand hat geantwortet
  • Skipte werden mehrfach ausgeführt?

    Verschoben
    23
    0 Stimmen
    23 Beiträge
    4k Aufrufe
    AlCalzoneA
    @bernd33-1 sagte in Skipte werden mehrfach ausgeführt?: Steht dieser auf Start und ich reboote den Rechner, dann laufen alle Scripte 3 mal. Poste am besten mal einen Log, der den ioBroker-Start zeigt. Vielleicht erkennt man daran etwas.
  • Javascript batterie Status per mail

    javascript monitoring
    1
    0 Stimmen
    1 Beiträge
    266 Aufrufe
    Niemand hat geantwortet
  • (GELÖST) Blockly Inhalt wird immer doppelt ausgeführt.

    javascript blockly
    3
    5
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    R
    @paul53 sagte in Blockly Inhalt wird immer doppelt ausgeführt.: @rayman Zum Schluss wird der Triggerdatenpunkt auf 0 gesetzt, wodurch wieder getriggert wird. Außerdem: Anstelle von wiederhole und Ausführen timeout verwende Ausführen Intervall und zähle im Intervall die Variable volValue runter, bei 0 stoppe das Intervall. Danke dir Paul. Ich habe den Eintrag nun wie folgt angepasst: [image: 1557384565840-bildschirmfoto-2019-05-09-um-08.48.51.png] Klappt: [image: 1557384575317-bildschirmfoto-2019-05-09-um-08.49.12-resized.png] Danke dir für die rasche und gute Hilfe! Ich markiere den Thread nun als ERLEDIGT
  • Kopieren von Dateien auf NFS per exec funktioniert nicht

    javascript
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    A
    Das einbinden in die VM habe ich dann nicht mehr getestet. Das Kopieren der Backups durch BackItUp funktioniert auch irgendwie nicht mehr. Daher habe ich mir das Verschieben der letzten Backups jetzt selbst per Skript gebastelt. find /opt/iobroker/backups/ -mtime -2 -exec mv {} /mnt/DS112/LAN/Intel_NUC6CAYH/Backup/ioBroker \; Alle Dateien in /opt/iobroker/backups/ die jünger sind als 2 Tage, werden nach /mnt/DS112/LAN/Intel_NUC6CAYH/Backup/ioBroker verschoben. Das funktioniert, allerdings verschiebt er mir den gesamten Ordner backups. (Sodass /mnt/DS112/LAN/Intel_NUC6CAYH/Backup/ioBroker/backups entsteht) Das möchte ich gerne vermeiden. Welche Option kann ich dem mv Befehl mitgeben? Beim cp Befehl wäre es ja -r, den gibt es aber bei mv nicht!?
  • [gelöst] Adapter Status / bzw Adapter Start Stop von Javascript aus ?

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    J
    Gefunden! Vielen Dank! [image: 1557322188400-kodi3.png]
  • Javascript.0 Scriptenabled Common Logik ?

    javascript
    3
    0 Stimmen
    3 Beiträge
    349 Aufrufe
    S
    Super paul53, besten Dank.
  • Einfachen Skript: Spezifische Zeit an oder aus

    blockly
    5
    0 Stimmen
    5 Beiträge
    419 Aufrufe
    Z
    @pix OK, danke. Das mit den Szenen muss 8ch mich noch ein Arbeiten.
  • wired HM-sensoren

    javascript
    1
    0 Stimmen
    1 Beiträge
    201 Aufrufe
    Niemand hat geantwortet
  • findindex

    javascript
    6
    0 Stimmen
    6 Beiträge
    551 Aufrufe
    tcjT
    Danke an alle für eure Hinweise. Ich habe jetzt ein Funktion geschrieben, die das Array durchläuft. In etwa so wie von @OliverW gezeigt.
  • Schaltaktor mit verschiedenen einschalt Varianten steuern

    blockly
    4
    0 Stimmen
    4 Beiträge
    372 Aufrufe
    H
    Ich habe es mit einer "Direkte Geräteverknüpfungen" zwischen Bewegungsmelder und Dimmer gemacht. Der Bewegungsmelder sendet bei Erfassung und auch die Helligkeit, so wird das licht erst bei einer Helligkeit von und der Dimmer nur auf 30% für 5 Minuten. Nachts muss es nicht so hell erleuchten, da man noch im Halbschlaf ist! [image: 1557055304027-bwm-bad.jpg]
  • Kann mir jemand helfen?

    javascript
    2
    0 Stimmen
    2 Beiträge
    370 Aufrufe
    S
    wart mal nen Moment ..... angeblich gibt es gerade Probleme mit der Cloud ... https://forum.iobroker.net/topic/22215/cloud-adapter-verbindungsabbrüche
  • 0 Stimmen
    5 Beiträge
    488 Aufrufe
    M
    @Mic said in Skript "lügt": Ich hab mal kurz Dein Script umgeschrieben, Du fügst ja das String " offen." immer hinzu, egal wie der Status ist. Hi Mic, das ist ok so. In dem eigentlichen Skript füge ich in einer Schleife alle Fenster zu einem Ausgabe String zusammen. Da wird vorher geprüft ob offen oder zu ist und nur bei offen werden sie hinzugefügt. in dem Testskript hier steht das "offen" halt noch mit drin. Entscheidend ist der Status der über die Variabel ausgegeben wird.
  • [gelöst] Blockly: wo finde ich mehrfach "und" "oder" Baustein

    Verschoben
    12
    3
    0 Stimmen
    12 Beiträge
    9k Aufrufe
    R
    @metaxa sagte in [gelöst] Blockly: wo finde ich mehrfach "und" "oder" Baustein: Mahhh, vielen Dank Rainer! War gsd nur eine kurze Leitung, daher der Weg nicht so weit runter :D Eventuell kanns noch jemand - auf der Leitung stehend - brauchen: Lösung: [image: 488_l_sung_mehrere_und.jpg] Ergebnins (übersichtlich): [image: 488_l_sung_script.jpg] mehr als 2-fach geht nicht? LG und schönen Sonntag noch, mxa Junge, junge... endlos danach gesucht. Das hat weitergeholfen. Danke 😂
  • Javascript Befehel aus VIS starten

    javascript scenes
    6
    2
    0 Stimmen
    6 Beiträge
    666 Aufrufe
    M
    @sigi234 said in Javascript Befehel aus VIS starten: @manu96 Kennst du das? Link Text Ne das kannte ich noch nicht. Danke für den Tipp.
  • Blockly rechnen mit Zeiten

    Verschoben
    7
    1
    0 Stimmen
    7 Beiträge
    7k Aufrufe
    S
    Hi, ich will eigentlich etwas Vergleichbares Steuern. Ein Timer, der mittels Mqtt übermittelt wird und dadruch variable ist, derzeit aber noch auf 16:00 Uhr fest ist. Das Licht soll jedoch 5 Minuten vor dem Timer angehen. Ich habe versucht mich an deinem Skript zu orientieren aber es klappt leider nicht. <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="z}kg|mI[kX$/z;}UeFnC">Zeit_Timer</variable> <variable type="" id="Offrx@ShSg8?(XB1XoXW">Vorlauf_Minuten</variable> <variable type="" id="fbCFwgjpuQyO=ox-@lqY">Zeit_in_Minuten</variable> <variable type="" id="uRSlnmWZ9D9l{,FK*.CI">Startzeit_in_Minuten</variable> <variable type="" id="Dx2cmEA2G[7Rk/~v^=iY">Startzeit_Minuten</variable> <variable type="" id="q)V*4t+J1NGUNKuMMq!e">start_ss</variable> <variable type="" id="CCd}L`-iRJU14NDa?-07">start</variable> <variable type="" id="Z^}ceHl8=w*CKe)=UntZ">start_mm</variable> <variable type="" id="yr7$.;.y`[93[3Z@zz($">start_min</variable> </variables> <block type="schedule" id="|e%$lB3UL3Su,7x{O+PM" x="-412" y="354"> <field name="SCHEDULE">*/30 * * * * *</field> <statement name="STATEMENT"> <block type="comment" id="sZ{txregW9_QtgFGlWT%"> <field name="COMMENT">meine Grundwerte</field> <next> <block type="variables_set" id="04A(,ASt%7L8iZmPa:eX"> <field name="VAR" id="z}kg|mI[kX$/z;}UeFnC" variabletype="">Zeit_Timer</field> <value name="VALUE"> <block type="text" id="XFL57PiWm`P:VNVF[uO6"> <field name="TEXT">16:00</field> </block> </value> <next> <block type="variables_set" id="o=?h6B5j[Q*X5.^Psf#B"> <field name="VAR" id="Offrx@ShSg8?(XB1XoXW" variabletype="">Vorlauf_Minuten</field> <value name="VALUE"> <block type="math_number" id="C)UPQLXsO6%nND^4a-@n"> <field name="NUM">5</field> </block> </value> <next> <block type="comment" id="i5Z^DNy;EoJ(THY#~V1K"> <field name="COMMENT">Berechnung</field> <next> <block type="variables_set" id="kDht]1_`ZaF9VHz5a42H"> <field name="VAR" id="fbCFwgjpuQyO=ox-@lqY" variabletype="">Zeit_in_Minuten</field> <value name="VALUE"> <block type="convert_from_date" id="hm#WbBeMg53!cl96P-,0"> <mutation format="false" language="false"></mutation> <field name="OPTION">mid</field> <value name="VALUE"> <block type="variables_get" id="#.94la:IJpa=6AZJvE]["> <field name="VAR" id="z}kg|mI[kX$/z;}UeFnC" variabletype="">Zeit_Timer</field> </block> </value> </block> </value> <next> <block type="variables_set" id="?J|0veis#ArX3kAJn-cw"> <field name="VAR" id="uRSlnmWZ9D9l{,FK*.CI" variabletype="">Startzeit_in_Minuten</field> <value name="VALUE"> <block type="math_arithmetic" id="!5H7PshzI?r]f%s{Rc@8"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="#R$;31%U`rEujqjB2Uml"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="^Y|#W^nIuPqevv1xPQnK"> <field name="VAR" id="fbCFwgjpuQyO=ox-@lqY" variabletype="">Zeit_in_Minuten</field> </block> </value> <value name="B"> <shadow type="math_number" id="z~i_{35X!SD(]h)a{[B}"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="VMH3*HK;P+F$}{IIQ-A!"> <field name="VAR" id="Offrx@ShSg8?(XB1XoXW" variabletype="">Vorlauf_Minuten</field> </block> </value> </block> </value> <next> <block type="variables_set" id="]bb`/bksbrf1:XSUsyw:"> <field name="VAR" id="Dx2cmEA2G[7Rk/~v^=iY" variabletype="">Startzeit_Minuten</field> <value name="VALUE"> <block type="math_modulo" id="Kz/qP]qAjWMg467rzr.z"> <value name="DIVIDEND"> <shadow type="math_number" id="I3JV.jPqu#R]=m%yRcy#"> <field name="NUM">64</field> </shadow> <block type="variables_get" id="[H$!e0P?b#d,Jy$}NF(N"> <field name="VAR" id="uRSlnmWZ9D9l{,FK*.CI" variabletype="">Startzeit_in_Minuten</field> </block> </value> <value name="DIVISOR"> <shadow type="math_number" id="C%0:Y=+pa|~KddvdTpp2"> <field name="NUM">60</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="Xg`E[ch|+GsIlb;D?9}6"> <field name="VAR" id="q)V*4t+J1NGUNKuMMq!e" variabletype="">start_ss</field> <value name="VALUE"> <block type="math_arithmetic" id="LDsr=ST$[n_z@4^cZ)WB"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="4MiU2nLX)Pq#|L`NY~0^"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="+c9Xm7n)}2WVZ/5uYw~y"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="R1o)nTe.JeWdc)Db0=`X"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="=t{9+:xs=P!MA9#)rK:w"> <field name="VAR" id="yr7$.;.y`[93[3Z@zz($" variabletype="">start_min</field> </block> </value> <value name="B"> <shadow type="math_number" id="c|Feu6iq1~U9rd_$W5?t"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="l.+;^d%$N3xQ`lSixwGO"> <field name="VAR" id="Z^}ceHl8=w*CKe)=UntZ" variabletype="">start_mm</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="/2F?`b}HH=osw$?LdGGI"> <field name="NUM">60</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="a6m?;gvKf?:4J%)a,d_$"> <field name="VAR" id="CCd}L`-iRJU14NDa?-07" variabletype="">start</field> <value name="VALUE"> <block type="text_join" id="ksx)Vm}cTypk_H:aawd["> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="f`dfhmH?TJKWAN;;ZnkT"> <field name="VAR" id="q)V*4t+J1NGUNKuMMq!e" variabletype="">start_ss</field> </block> </value> <value name="ADD1"> <block type="text" id="2,x!9GF,ldj_0IszHGeU"> <field name="TEXT">:</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="L:FZ}.Ox-gW?Fx7=JxL1"> <field name="VAR" id="Z^}ceHl8=w*CKe)=UntZ" variabletype="">start_mm</field> </block> </value> </block> </value> <next> <block type="comment" id="cU~;[Yp@3:$!1w;wOMc,"> <field name="COMMENT">Abfrage der Zeit und Steuerung</field> <next> <block type="controls_if" id="e}#qr}oEK?vLGOVAl@)F"> <value name="IF0"> <block type="time_compare_ex" id="^-by2v:c@o47[(q1-=HJ"> <mutation end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">==</field> <value name="START_TIME"> <shadow type="text" id="6MX(2LM7^,%1ehw=(,RB"> <field name="TEXT">12:00</field> </shadow> <block type="variables_get" id="(xaKxHD(|VB5i7wTO?k!"> <field name="VAR" id="CCd}L`-iRJU14NDa?-07" variabletype="">start</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="8E_Q-1+Vo9XydYCQEGSx"> <mutation delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-1#2C04AC#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="|.`Jz5(JSM=f[ly1V5@Q"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
  • Fritzbox TR064 ESP Klingel Datenpunkt ?

    javascript
    26
    0 Stimmen
    26 Beiträge
    3k Aufrufe
    S
    @SBorg sagte in Fritzbox TR064 ESP Klingel Datenpunkt ?: Och, ich bin alt .... Ich bin älter,
  • Rolladensteuerung mit Blockly (Anfänger)

    Verschoben
    19
    2
    0 Stimmen
    19 Beiträge
    5k Aufrufe
    Semie1S
    @buggybeast71 Guten Morgen, darf ich frage wie du das mit der Morgendämmerung gelöst hast im Script. Ich bin auch noch Anfänger. Danke einen schönen Tag
  • TV Program per Telegram

    javascript multimedia blockly
    1
    0 Stimmen
    1 Beiträge
    291 Aufrufe
    Niemand hat geantwortet

330

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge