Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.4k 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
    HomoranH
    Seit einiger Zeit suche ich nach der Ursache einiger falschen Ergebnisse meiner Skripte. Heute habe ich ein neues Skript begonnen und wie üblich einige debug Blöcke zur Prüfung eingebaut. [image: 1775982042064-195.jpg] Ich war erschrocken, als die Addition in Wirklichkeit eine Textverkettung war, und erst durch zusätzliche Konvertierung der "Rohwerte" nach Zahl die richtigen Ergebnisse brachte. Bevor ich jetzt anfangen meine sämtlichen Skripte nach vergleichbaren Stellen zu durchsuchen und zu ändern, hier erst einmal die Frage(n) ist das gewollt? ist das ein Bug? habe ich einen (Denk)Fehler? Danke im Voraus edit: Sorry! v9.0.18
  • 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
  • *gelöst* Java Skript läuft mehrfach durch

    javascript blockly
    5
    3
    0 Stimmen
    5 Beiträge
    299 Aufrufe
    surfer09S
    @Glasfaser Super, perfekt! Jetzt kommt nur noch ein Eintrag im LOG! Danke für eure Hilfe! :-)
  • Licht soll xx Minuten an bleiben

    blockly template monitoring
    9
    1 Stimmen
    9 Beiträge
    904 Aufrufe
    Hermanito33H
    @paul53 Achso okey. So wollte ich es zwar eigentlich nicht aber das geht auch klar. Ich dachte eigentlich das man dann 2 Separate States dafür hat. Trotzdem Danke!
  • Aktion ausführen wenn Objekt länger als x Min

    javascript blockly
    4
    0 Stimmen
    4 Beiträge
    446 Aufrufe
    paul53P
    @tiego sagte: als "Wert" hast du eine Variable angelegt mit dessen Namen Nein, Wert ist eine Eigenschaft des Trigger-Datenpunktes (unter "Trigger"). Hat leider die gleiche Farbe wie eine Variable.
  • 2 BWM an Kellertreppe

    javascript blockly
    5
    1
    0 Stimmen
    5 Beiträge
    278 Aufrufe
    C
    @bahnuhr du hast prinzipiell recht. ich habe derzeit keine weiteren BWM im Keller. Daher wird das mit der Bewegungserkennung schwer. Kann ich aber natürlich ändern;-) Dank Dir, auch ohne blockly leuchtet mir das von dir geschrieben Szenario ein. Schönen Sonntag!
  • Blockly SendTo Reihenfolge festlegen!

    blockly
    5
    1
    0 Stimmen
    5 Beiträge
    777 Aufrufe
    Maik KrauseM
    Habs dann doch hinbekommen :)[image: 1587208035855-neue-bitmap.png]
  • Bluetooth Gerät verbinden

    javascript node-red communication
    2
    0 Stimmen
    2 Beiträge
    473 Aufrufe
    W
    sowas in der Richtung? https://forum.iobroker.net/topic/3522/gelöst-basic-speech-to-text-befehl-ausführen/9 Aufnahmegerät für die Spracherkennung? Alexa-Gerät?
  • Alexa Sprachausgabe

    javascript
    5
    0 Stimmen
    5 Beiträge
    771 Aufrufe
    dslraserD
    @ctnnemo sagte in Alexa Sprachausgabe: Daher habe ich nun die einzelnen Abschnitte in eine Variable geschrieben und die wird am Ende vorgelesen. Leider aber einfach runter geleihert. Hier auch noch zwei Tipps. Verwende in Deinem Text Satzzeichen, wie Komma oder Punkt, mit Leerzeichen dahinter. Also einfach wie Du es normalerweise auch schreiben würdest, dann spricht sie es auch so. Tipp zwei, ssml ist deutlich flexibler. Dort kannst Du Pausen, Betonungen, Sprachgeschwindigkeit, verschiedene Stimmen und vieles mehr selbst bestimmen.
  • Mehrere Echo Dots: Welcher hat den Befehl entgegengenommen?

    blockly javascript multimedia
    6
    0 Stimmen
    6 Beiträge
    657 Aufrufe
    dslraserD
    @bigd-73 wenn Du einfach mal Debugbausteine nimmst, wirst Du staunen welche Alexa zum Teil was hört... [image: 1587147472345-bildschirmfoto-2020-04-17-um-20.17.21.png] Export <block xmlns="http://www.w3.org/1999/xhtml" type="on_ext" id="?gr$o@h!NTpz7ncFkw9" x="37" y="137"> <mutation items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=",JW*_Fne3n279T7:v^/D"> <field name="oid">alexa2.0.History.name</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="eOvj$H9PlgC35bl*#^yn"> <field name="NAME">timeout</field> <next> <block type="timeouts_settimeout" id="]|Sd2-#AhJAE${RdAC2G"> <field name="NAME">timeout</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="variables_set" id="Yps_^d-kW+oe5cQMJ@@q"> <field name="VAR" id="tx]izPXI!BeK19VCX$" variabletype="">angesprochener_echo</field> <value name="VALUE"> <block type="get_value" id="~@yqzw9b:kyhv;sWile*"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.name</field> </block> </value> <next> <block type="debug" id="aZK+dR0ArHW/.T7s0TJG"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="8Sjo6Q$aWu%%ozq^o^CL"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="RGiVPIa(4NV*u.uhLA;F"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="S@z*(X!Yxn_Ym4^bVBDi"> <field name="TEXT">ECHO: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="AgP?eSw.F.CmS3tI0w3s"> <field name="VAR" id="tx]izPXI!BeK19V`CX$" variabletype="">angesprochener_echo</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> LOG Beispiel ohne timeout 20:20:45.576 info javascript.0 (2286) script.js.18_Test.ECHO_Test: ECHO: Wohnzimmer 20:20:49.776 info javascript.0 (2286) script.js.18_Test.ECHO_Test: ECHO: Flur 20:20:49.790 info javascript.0 (2286) script.js.18_Test.ECHO_Test: ECHO: Wohnzimmer 20:20:49.804 info javascript.0 (2286) script.js.18_Test.ECHO_Test: ECHO: Küche 20:20:51.859 info javascript.0 (2286) script.js.18_Test.ECHO_Test: ECHO: Wohnzimmer 20:20:59.709 info javascript.0 (2286) script.js.18_Test.ECHO_Test: ECHO: Wohnzimmer Und die stehen recht weit auseinander...., aber die Türen sind/waren offen. [image: 1587147714906-bildschirmfoto-2020-04-17-um-20.21.43.png]
  • DWD Warnung als Telegramm

    Verschoben
    67
    0 Stimmen
    67 Beiträge
    13k Aufrufe
    A
    Uhha ... Danke für die Info. :-) Das sieht umfassender aus ... das muss ich erstmal überblicken.
  • Wert des Triggers direkt abfragen?

    javascript blockly
    5
    2
    0 Stimmen
    5 Beiträge
    295 Aufrufe
    C
    @paul53 said in Wert des Triggers direkt abfragen?: @chrbo80 sagte: technisch läufts bei beiden optionen der anfrage gleich ab? Nicht ganz: Im ersten Beispiel werden die Datenpunkt-Eigenschaften (inkl. state.val = Wert) vom Trigger an die Callback-Funktion übergeben, im zweiten Beispiel wird der Wert mit getState(id).val abgefragt. Die erste Version ist zuverlässiger, da sich der Wert in der Zeit zwischen Trigger und Abfrage per getState(id).val schon wieder geändert haben kann. Ok - danke!
  • *gelöst* Wert am Ende des Tages in SQL Datenbank schreiben

    blockly
    2
    0 Stimmen
    2 Beiträge
    184 Aufrufe
    surfer09S
    Thema gab es schon einmal https://forum.iobroker.net/topic/28089/letzter-wert-eines-tages-in-datenbank-schreiben Hat sich also erledigt :-)
  • Skripten funktionieren nicht mehr richtig

    blockly
    10
    1
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    1
    Guten Morgen, mir sind diese Probleme seit neustem auch schon aufgefallen. Einige Skripte stellen teilweise einfach ihren Dienst ein. Tritt aber meistens auf wenn ich was in den Skripten geändert habe. Neustart des Skript Adapters hilft dann meistens. Einige Skripte sind mir auch schon in eine Endlosschleife gelaufen bzw. haben Aktionen weiterhin ausgeführt obwohl das Skript gestoptt war (Stop/Play Button) und ließen sich dann nur per Neustart des Adapters beenden.
  • Telegram Meldung auf VIS-Oberfläche

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    T
    Ich habe ein Skript erstellt, um Nachrichten zu protokollieren und in VIS darzustellen. In der nächsten Version kann man optional auch telegram pushs auslösen. Quittieren in VIS wird auch in der nächsten Version kommen. Der Wassersensor von Xiaomi ist dort integriert (nutze ich auch) Mehr dazu hier: https://forum.iobroker.net/topic/32207/script-messagehandler-nachrichten-protokollieren-vis/55
  • [gelöst] Windows PC lässt sich nicht remote herunterfahren

    javascript blockly multimedia
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    G
    Muss ich mir mal anschauen. Mir reicht allerdings der shutdown, alles andere ist eigentlich bereits via Autostart und Schaltsteckdose gelöst.
  • Blockly mehrere Objekt IDs beim trigger hinzufügen

    Verschoben
    19
    1
    0 Stimmen
    19 Beiträge
    9k Aufrufe
    HomoranH
    @jan_xx Screenshot bitte!
  • Log in Scripte fuzt nicht korrekt

    javascript
    3
    0 Stimmen
    3 Beiträge
    302 Aufrufe
    Mrs-BM
    @Homoran ahhh. Hatte ich schon probiert.. Aber jetzt funzt es.. DANKE dir und noch schöne Ostern :)
  • *gelöst* "Urlaub" aus Kalender auslesen

    blockly
    18
    0 Stimmen
    18 Beiträge
    2k Aufrufe
    M
    Hallo Freunde, was mach ich bei 2 Kalendern (2Personen) in einer Ical Instanz vereint. Kann ich mit dem Werkzeug "Ereignissen" auch die beiden Kalender unterscheiden? z.B. Person 1 hat Urlaub und die Person 2 hat keinen Urlaub. Gruß Michi
  • Verständnis-Frage: Was möchte der log bzw javascript ?

    javascript blockly
    8
    0 Stimmen
    8 Beiträge
    770 Aufrufe
    L
    Reicht es aus wenn ich verbose ausmache oder sollte man lieber danach forschen warum er im Modus "verbose" das ins log reinschreibt?
  • Xiaomi,Tradfri,usw prüfen ob online sind

    javascript
    2
    0 Stimmen
    2 Beiträge
    341 Aufrufe
    W
    schau mal auf youtube, da gibts was. Ist eigentlich so erklärt, dass man es hinbekommt. Keine Ahnung, ob es die Scripte dazu irgendwo fertig gibt. Evtl in der Verlinkung dazu. Hab hier n sonoff th16 mit tasmota liegen, der liefert nen Datenpunkt ob alive.
  • Wert (Strompreis) von Homepage auslesen

    javascript
    6
    0 Stimmen
    6 Beiträge
    796 Aufrufe
    M
    Ich muss doch gestehen, hier zu passen. Mit Hans' Aufruf und der korrekten SessionID erhalte ich als Antwort "Error: Wrong ProcessID![1]+ Fertig" Probiere ich es dann mit den "Post"-Befehlen, erhalte ich als Antwort ... Please enter content (application/x-www-form-urlencoded) to be POSTed: ... also eine Eingabeaufforderung, was bei "POST" ja auch nicht verwundert. Ich verstehe dann aber nicht, wie es heißen kann "Die zweite und dritte Anfrage eine Zeitreihe mit Preisen als JSON.". Hans, Du sprichst von Abfragen, aber liefert "POST"-Anweisungen? Ich komme leider nicht weiter.

590

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge