Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    Holger EtzelH
    Hallo zusammen, gibt es für das Skript Zeitsteuerung von Pittini schon eine Vis-2 View? Gruß Holger
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    Thomas BraunT
    @emil70 Das ist mit ziemlicher Sicherheit nicht in deinem Privaten Netz zu Hause... whois 125.123.6.5 % [whois.apnic.net] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html % Information related to '125.123.0.0 - 125.123.255.255' % Abuse contact for '125.123.0.0 - 125.123.255.255' is 'anti-spam@chinatelecom.cn' inetnum: 125.123.0.0 - 125.123.255.255 netname: CHINANET-ZJ-JX country: CN descr: CHINANET-ZJ Jiaxing node network descr: Zhejiang Telecom admin-c: CZ4-AP tech-c: CJ55-AP status: ALLOCATED NON-PORTABLE mnt-by: MAINT-CHINANET-ZJ mnt-lower: MAINT-CN-CHINANET-ZJ-JX last-modified: 2008-09-04T07:09:54Z source: APNIC role: CHINANET-ZJ Jiaxing address: No.101 Zhongshan Road,Jiaxing,Zhejiang.314001 country: CN phone: +86-573-2050040 fax-no: +86-573-2079999 e-mail: antispam_jx@zjnoc.hz.zj.cn remarks: send spam reports to anti-spam@mail.jxptt.zj.cn remarks: and abuse reports to anti-spam@mail.jxptt.zj.cn remarks: Please include detailed information and times in UTC admin-c: CH100-AP tech-c: CH100-AP nic-hdl: CJ55-AP mnt-by: MAINT-CHINANET-ZJ last-modified: 2019-08-09T07:47:10Z source: APNIC role: CHINANET ZHEJIANG address: No. 257 Qingjiang Road, Hangzhou, Zhejiang.310066 country: CN phone: +86-571-86821752 fax-no: +86-571-86988329 e-mail: anti_spam_zjdx@189.cn remarks: send spam reports to 15325717748@189.cn remarks: and abuse reports to 15325717748@189.cn remarks: Please include detailed information and times in UTC admin-c: CZ61-AP tech-c: CZ61-AP nic-hdl: CZ4-AP mnt-by: MAINT-CHINANET-ZJ last-modified: 2023-08-11T08:33:28Z source: APNIC % This query was served by the APNIC Whois Service version 1.88.48 (WHOIS-UK2)
  • Hilfe für Skripterstellung mit Node-RED

    961 13k
    961 Themen
    13k Beiträge
    Marc BergM
    Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht. Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen: [ { "id": "0101b52dd8b0e69c", "type": "inject", "z": "tab_restart", "name": "Flow neu starten", "props": [ { "p": "baseUrl", "v": "http://nuc.fritz.box:1880", "vt": "str" }, { "p": "flowId", "v": "56a35d28dbb8d4c1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 160, "y": 140, "wires": [ [ "ffb73632947a1b74" ] ] }, { "id": "ffb73632947a1b74", "type": "http request", "z": "tab_restart", "name": "GET /flow/:id", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 370, "y": 140, "wires": [ [ "78e47724692d9c26" ] ] }, { "id": "78e47724692d9c26", "type": "change", "z": "tab_restart", "name": "deaktivieren", "rules": [ { "t": "set", "p": "flow", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 140, "wires": [ [ "b570b346c80301a6" ] ] }, { "id": "b570b346c80301a6", "type": "http request", "z": "tab_restart", "name": "PUT (aus)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 770, "y": 140, "wires": [ [ "a062c2baa0932d3e" ] ] }, { "id": "a062c2baa0932d3e", "type": "delay", "z": "tab_restart", "name": "1s warten", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "outputs": 1, "x": 960, "y": 140, "wires": [ [ "664a32887d83b305" ] ] }, { "id": "664a32887d83b305", "type": "change", "z": "tab_restart", "name": "aktivieren", "rules": [ { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 220, "wires": [ [ "83d399c90d46240f" ] ] }, { "id": "83d399c90d46240f", "type": "http request", "z": "tab_restart", "name": "PUT (ein)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 320, "y": 220, "wires": [ [ "529c0e1896d1f278" ] ] }, { "id": "529c0e1896d1f278", "type": "debug", "z": "tab_restart", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 480, "y": 220, "wires": [] } ]
  • Licht mit BWM schalten aber mit Prio auf Alexa Befehl

    43
    1
    0 Stimmen
    43 Beiträge
    4k Aufrufe
    DuffyD
    @paul53 Hallo Paul53, in deiner Frage war auch schon die Lösung. Wenn man in dem iot Adapter mehrere Datenpunkte eingibt, was ja bei Lampen ganz nützlich sein kann, reagiert das Script nicht mehr. Hier ein Beispiel: [image: 1680620502412-2.png] Wenn man aber nur einen Datenpunkt eingibt erkennt das Skript auch wieder das schalten der Lampe. Hier ein Beispiel: [image: 1680620401215-3.png] In diesem Fall dient "Licht Arbeitszimmer" der Scripsteuerung und "Lampe Arbeitszimmer" dem Dimmen und der Farbänderung. Danke für Deine Mühe und den Denksanstoß. VG Duffy
  • Wert aus Array auslesen

    3
    1
    0 Stimmen
    3 Beiträge
    381 Aufrufe
    TimmerxT
    Super funktioniert perfekt
  • Solar Ertrag Tag/Monat berechnen

    4
    1
    0 Stimmen
    4 Beiträge
    960 Aufrufe
    S
    @rrov1 Danke für die Information. Habe aber nicht geschnallt wie der Adapter funktioniert und bin deshalb auf die Lösung von Paul umgestiegen, Danke für die schnelle Antwort. @paul53 reverse_energy_total So hat es mir die Fa. Kolbe mitgeteilt, werde die Werte einmal beobachten. Sourceanalytix-Adapter Ist jetzt installiert, auch wenn ich den Adapter erst einmal nicht gefunden wurde. Repository auf Beta umgestellt. Auch hier erst einmal nicht geschnallt wie es funktioniert, habe aber eine Anleitung gefunden. Anleitung Smarthomejetzt.de Danke für die schnelle Hilfe. Gruß Hans-Dieter
  • Got unexpected ID: hm-rega -Benötige Hilfe

    25
    0 Stimmen
    25 Beiträge
    3k Aufrufe
    HomoranH
    @tomate sagte in Got unexpected ID: hm-rega -Benötige Hilfe: Des Rätsels Lösung war, dass ich auf die Systemvariable der Homematic im Sekundentakt neue Werte abgeben wollte. das hab ich von Anfang an vermutet.
  • unsubscribe: empty name -- Wie finde ich den Verursacher?

    6
    0 Stimmen
    6 Beiträge
    586 Aufrufe
    GlasfaserG
    @tomate sagte in unsubscribe: empty name -- Wie finde ich den Verursacher?: Der Fehler tritt nicht auf??? Na , dann würde ich beim nächsten mal auf die Uhrzeit schauen wenn es wieder sporalisch im Log erscheint . Was .. bzw. welches Skript um diese Zeit der Auslöser ist !
  • Länge und Breite aus DP auslesen

    8
    0 Stimmen
    8 Beiträge
    605 Aufrufe
    C
    @paul53 Jo nu löppt es Ich hatte es schon richtig, aber weil sich nichts getan hat hab ich weiter versucht und das Ganze verschlimmbessert. Na ja wieder was dazu gelernt. Vielen Dank für die Hilfe.
  • Screenshot wird nicht erstellt.

    35
    1
    0 Stimmen
    35 Beiträge
    3k Aufrufe
    Curtis777C
    @andre Lieber Andre, und Lieber @Glasfaser Das war der Fehler. Danke euch, es läuft schon zumindest teilweise. Leider scheint es noch immer das Problem zu geben, das ich gehofft habe zu umgehen. PhantomJS hat anscheinend auch das Problem die MaterialWidgetAdvanced Widgets anzuzeigen. So sollte es aussehen bzw sieht es im Chrome Browser aus. [image: 1680024873498-2112dc9e-d4a9-4906-a925-0786a25fe962-image.png] und der Screenshot sieht dann so aus: [image: 1680024956475-168a95aa-63ec-4eef-8235-a9cf3ff44468-image.png] Danke euch!
  • Script zum Schalten einer Steckdose am Ecoflow zum laden

    37
    0 Stimmen
    37 Beiträge
    2k Aufrufe
    paul53P
    @würfel sagte: Verzögerung für das Ausschalten einzubauen ? Wo? So kann man unterschiedliche Verzögerungen für Ein- und Ausschalten realisieren: [image: 1680022897274-blockly_temp.jpg]
  • Frage: alias Konvertierungsfunktion

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    G
    @codierknecht said in Frage: alias Konvertierungsfunktion: Wobei Deine Lösung vermutlich etwas weniger Ressourcen frisst Ich habs gerade mal verglichen. Bei 100.000 Konvertierungen ist die Math.round()-Variante meist um 30ms schneller als die parseFloat()-Variante - auf meinem Pi4. 17:10:06.158 info javascript.0 (6125) script.js.common.Testen.Performance: -899 17:10:06.389 info javascript.0 (6125) script.js.common.Testen.Performance: 37 17:10:06.609 info javascript.0 (6125) script.js.common.Testen.Performance: 30 17:10:06.830 info javascript.0 (6125) script.js.common.Testen.Performance: 29 17:10:07.049 info javascript.0 (6125) script.js.common.Testen.Performance: 1029 17:10:07.269 info javascript.0 (6125) script.js.common.Testen.Performance: 29 17:10:07.487 info javascript.0 (6125) script.js.common.Testen.Performance: 29 17:10:07.707 info javascript.0 (6125) script.js.common.Testen.Performance: 30 17:10:07.923 info javascript.0 (6125) script.js.common.Testen.Performance: 28 17:10:08.141 info javascript.0 (6125) script.js.common.Testen.Performance: -973 Die Liste zeigt insgesamt 10 Versuche. Es wird die Dauer der Versuche mit parseFloat() von der Dauer mit Math.round() abgezogen. Das ist das Script: let loops:number = 100000; for (let j=0; j<10; j++) { // Erster Versuch let start=new Date().getMilliseconds(); for (let i=0; i<loops; i++) { parseFloat((i / 1000).toFixed(2)); } let end=new Date().getMilliseconds(); let duration=end-start; // Zweiter Versuch start=new Date().getMilliseconds(); for (let i=0; i<loops; i++) { Math.round(i / 10) / 100 } end=new Date().getMilliseconds(); let duration2=end-start; console.log(duration - duration2); }
  • Tasmota: mit Schalter unterschiedliche Szenen steuern

    21
    0 Stimmen
    21 Beiträge
    4k Aufrufe
    BananaJoeB
    @sorai Öhm, was genau willst du machen? Die von dir zitierte Anleitung dient der folgenden Funktion: Kurzer druck schaltet das direkt angeschlossene Gerät/Licht Langer druck (Hold) schaltet ein anderes Tasmota-Gerät Das mit der SetOption32 ... mhh lauf der offziellen Anleitung, ja es sind inzwischen 0.1 Sekunden-Schritte. Bei läuft es überall wo ich es einsetzt noch mit einer 3, in einem Zimme rnutze ich 5. wenn ich drüber nachdenke sind es keine 5 Sekunden, muss ich mal beobachten. In meiner Anleitung auf meiner Webseite habe ich mal einen Hinweis dazu eingebaut. Das habe ich neulich noch nach meiner eigenen Anleitung eingerichtet. Die Rule reagiert ja auf ON Switch1#State=3 Und das ist Hold laut Dokumentation: [image: 1680016468057-60323010-a4d0-4635-bc65-698f7984b526-image.png] https://tasmota.github.io/docs/Rules/#rule-trigger Hast du noch mehr Rules laufen?
  • Q: [selbst gelöst] Fehler in Scripten (Blockly)

    5
    0 Stimmen
    5 Beiträge
    174 Aufrufe
    R
    @homoran Ok, danke für den Hinweis. Ich hatte zwar schon so eine leise Ahnung, dass mit dem Begriff "global" eine etwas andere "Funktion" verbunden sein könnte, habe das aber ehrlicherweise ignoriert und auch nicht weiter vertieft. Gab ja auch bislang keine Probleme. Und Scripte, die andere Scripte triggern, wirds wohl auf absehbare Zeit bei mir nicht geben. Aber wer weiß... Der Hinweis mit dem Draft-Ordner ist ist gut und eigentlich viel aussagekräftiger, da selbstsprechender Name. Werde ich stehenden Fußes umsetzen. Zu den Logs: Richtig. Logs vorher lesen! Bisher hatte ich zum Glück keine Notwendigkeit auf Fehlersuche zu gehen. Von daher waren die Logs für mich bisher kein Thema. Aber es zeigt sich, dass so eine Community ziemlich nützlich ist. Auch bei Themen, die eher rechts und links von der eigentlichen Frage/vom eigentlichen Problem liegen. Der "Beifang" also :-) Kurz: habe schon eine Menge an kleinen Dingen dazugelernt. Danke Euch dafür... VG Peter
  • SayIt wird ausgeführt obwohl skript nicht mehr existiert

    6
    0 Stimmen
    6 Beiträge
    608 Aufrufe
    H
    @meister-mopper Danke für den Hinweis. Habe ich schon 'durchgekämmt' - nur das aktuelle Skript wurde gefunden.
  • Einen Telegram-User mit Rules-Skript anschreiben

    1
    0 Stimmen
    1 Beiträge
    171 Aufrufe
    Niemand hat geantwortet
  • Fahrzeug Standortabfrage mit Alexa

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    DJMarc75D
    @brunoz immer gerne
  • kleiner Webserver auf Win Tablet

    2
    1
    0 Stimmen
    2 Beiträge
    151 Aufrufe
    liv-in-skyL
    @bahnuhr vielleicht geht dmit was?: https://bobbyhadz.com/blog/npm-warn-old-lockfile-the-package-lock-json-file-was-created npm install --package-lock-only
  • Fehler bei "Installing iobroker.javascript@6.1.4..."

    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    O
    @thomas-braun danke, hat sich erledigt. VG
  • [Gelöst] JSON Tabelle per Email oder Telegram senden

    8
    0 Stimmen
    8 Beiträge
    820 Aufrufe
    nik82N
    @paul53 Du bist einfach der Beste! Vielen lieben Dank
  • UDP-Befehl mittels Blockly / JavaScript senden?

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    OliverIOO
    @slemy im javascript adapter läuft node. hier ein beispiel direkt aus der node dokumentation import dgram from 'node:dgram'; import { Buffer } from 'node:buffer'; const message = Buffer.from('FF13029CA52580AA7761646D696E0061646D696E002E', 'hex'); const client = dgram.createSocket('udp4'); client.send(message, 8899, '192.168.1.183', (err) => { client.close(); }); https://nodejs.org/docs/latest-v18.x/api/dgram.html#socketsendmsg-offset-length-port-address-callback ich hab hier mal auf die version 18 LTS verlinkt. da hat sich aber mit 19 auch nix verändert. Nicht durch die Doku verwirren lassen. Mit node kannst du auch udp server entwickeln. Das ist ein wenig komplexer die verwendeten module/bibliotheken sind bestandteile von node, daher müssen sie nicht in den javascript adapter einstellungen eingetragen werden. Wenn du das senden willst, FF 13 02 9C A5 25 80 AA 77 61 64 6D 69 6E 00 61 64 6D 69 6E 00 2E musst du nur die hexzahlen der reihe nach ohne leerzeichen schreiben. Ich habe dir den code oben mal aufbereitet. theoretisch einfach nur copy paste. sofern deine angaben alle stimmen. die hex zahlen kann ich nicht überprüfen const message = Buffer.from('FF13029CA52580AA7761646D696E0061646D696E002E', 'hex'); // Prints <Buffer FF 13 02 9C A5 25 80 AA 77 61 64 6D 69 6E 00 61 64 6D 69 6E 00 2E>, all data represented. https://nodejs.org/api/buffer.html#buffers-and-character-encodings (ziemlich am Ende des Abschnitts
  • Roborock bei Abwesenheit, aber nur 1x täglich starten

    5
    0 Stimmen
    5 Beiträge
    444 Aufrufe
    S
    @paul53 Auch eine gute Idee. Werde morgen mal ausprobieren, was ich am besten umgesetzt bekomme. Danke dir.
  • Cronjob immer letzter Tag im Monat

    Verschoben
    24
    0 Stimmen
    24 Beiträge
    8k Aufrufe
    CodierknechtC
    @endurance Nein, das Script startet um 23:30 Uhr und prüft, ob der Tag in 12 Stunden zufälligerweise der 1. ist. Dann ist ja der aktuelle Tag der letzte des Monats und die Verarbeitung soll durchgeführt werden. Laufen muss das Script ja nur vom 28. bis zum 31. - denn nur an diesen Tagen besteht die Chance, dass der nächste Tag der 1. ist.

219

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge