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": [] } ]
  • (GELÖST) Syntax API REST Swagger via Curl etc.

    7
    0 Stimmen
    7 Beiträge
    1k Aufrufe
    M
    @pischleuder die Zugangsdaten sind das Token welches du beginnst wenn du dich via API mit den Login Daten authentifiziert. Also API token erstellen Mit token über die API die gewünschten Daten abfragen. Token ist nur begrenzt gültig
  • Script anhalten und wieder starten über ein anderes Script

    45
    0 Stimmen
    45 Beiträge
    4k Aufrufe
    AlexAtHomeA
    @bahnuhr Dann baue ich es vielleicht doch wieder um, aber erst nach meinem Urlaub... :-) Wobei, wie gesagt, "ständig" in dem Fall ja nur 1-3 mal pro Jahr wäre.
  • UND-Verknüpfung in Blockly

    5
    0 Stimmen
    5 Beiträge
    531 Aufrufe
    D
    @cluni Besten Dank für die Unterstützung, ich habe jetzt auch auf positive logik umgestellt und arbeite mit ODER (Fenster auf). [image: 1683199356496-ba2b8a3e-3378-4498-961c-99052d1a8ff0-image.png] Gruß Klaus
  • Befehl an Alexa - Zahl als Text in Nummer umwandeln

    3
    0 Stimmen
    3 Beiträge
    382 Aufrufe
    T
    du musst die Antwort zerlegen, die Worte per ersetze in Ziffern wandeln und richtig zusammensetzen. Danke. Ich hatte die wahnsinnige Hoffnung, dass man schon irgendwie eine Sprachanalyse von Alexa, Google oder ChatGPT nutzen kann... Dann werde ich wohl oder übel Routinen anlegen müssen und den Status dieser Routinen auswerten. Gruß Tom
  • Mit PV-Überschuss E-Auto laden: Wolkenerkennung?

    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    JohGreJ
    @badsnoopy667 Ja genau, bei mit hat tatsächlich Netz-OÖ im Bescheid die Einspeisebegrenzung vorgeschrieben. Bei der Abnahme der Anlage war der PV-Installateur und ein Techniker von Netz-OÖ da und der hat sich die Beschränkung in der Anlage explizit zeigen lassen. Liegt an unserem Trafo wo wir draufhängen, hab schon um Erhöhung angefragt und zurückgemeldet bekommen um 24.000€ erweitern sie mir den Trafo und dauert aufgrund Lieferschwierigkeiten 1-2 Jahre.
  • Datenpunkte in Google Spreadsheet schreiben

    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    P
    @simplyclever Vielen Dank!!! Ich werd mich am WE mal dransetzen. Sollte aber definitv mein Problem lösen. Melde mich danach zurück. VG Dominik
  • Steuerung JVC Projektor über TCP/IP

    javascript node-red blockly
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    G
    Ich habe hier einen Neustart versucht
  • Syntax Checker im Editor markiert korrekte Werte

    javascript
    2
    0 Stimmen
    2 Beiträge
    303 Aufrufe
    CodierknechtC
    @marty56 Gute Frage - würde mich auch interessieren. [image: 1683007556374-0224ca86-5d76-4f3d-bce4-83200fc8cfb9-image.png] Ich hab's bislang immer als "ist halt so" abgetan und es ignoriert.
  • Display ansteuern // "xrandr -d :0 --output HDMI-1 --off"

    7
    1
    0 Stimmen
    7 Beiträge
    915 Aufrufe
    mickymM
    @mrjeschke Danke, für Deine Rückmeldung. Mir geht es ja genauso und ich war sehr froh, dass Du mir damals geholfen hast, aber von den technischen Background habe ich auch keine Ahnung.
  • gezielt Werte aus InfluxDB mit Telegram verschicken

    2
    0 Stimmen
    2 Beiträge
    407 Aufrufe
    W
    @einencool Hi, ich kenne AhoiDTU nicht. Der "Yield.Day" hört sich aber schon mal gut an und mir scheint, dass du ihn schon in influxdb speicherst. Mit dem folgenden Blockly kannst du ihn aus influxDB auslesen und und über 7 Tage summieren. Das Versenden über Telegram funktioniert so, wie du es schon für die Einzelwerte geschafft hast. [image: 1682847782864-blockly_influxdb-anfrage.png] Spoiler var end, start, result, wertesumme, i, wert, zeit; // Get history from influxdb adapter end = (new Date().getTime()); start = parseFloat(end) - parseFloat(7) * 3600000; sendTo("influxdb.0", "getHistory", { "id": 'AhoiDTU.0.Yield.Day', "options": {start: start, end: end, aggregate: "none"} }, async function (result) { console.log('Ergebnis der Abfrage:'); // Rückmeldung von influxDB ausgeben: console.log(result); console.log('Die Einzelwerte:'); wertesumme = 0; // Rückmeldung von influxDB auswerten: var i_end = parseFloat(getAttr(result, 'result').length) - 1; var i_inc = 1; if (0 > i_end) { i_inc = -i_inc; } for (i = 0; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) { wert = getAttr(result, (['result.',i,'.val'].join(''))); wertesumme = (typeof wertesumme == 'number' ? wertesumme : 0) + wert; zeit = getAttr(result, (['result.',i,'.ts'].join(''))); console.log((['Wert: ',wert,' Zeit: ',formatDate(getDateObject(zeit), "TT.MM.JJJJ SS:mm:ss")].join(''))); } console.log(('Die Summe aller Werte: ' + String(wertesumme))); }); Falls du übrigens die influxDB-Abfrage anpassen möchtest, ist hier die Hilfeseite: https://github.com/ioBroker/ioBroker.influxdb Grüße, Philipp
  • JSON wird in "vis-inventwo - JSON Table" falsch dargestellt

    javascript
    2
    2
    0 Stimmen
    2 Beiträge
    327 Aufrufe
    OliverIOO
    @langer sagte in JSON wird in "vis-inventwo - JSON Table" falsch dargestellt: Am json ist nix falsch https://jsonlint.com/
  • zugriff auf last change eines DP in Alias möglich?

    2
    1
    0 Stimmen
    2 Beiträge
    134 Aufrufe
    paul53P
    @chris299 sagte: Die aufwändige Alternative über user-variable und Skript würde ich gern vermeiden.... Lässt sich aber nicht vermeiden. Der Alias spiegelt nur den Zustand eines Referenz-Datenpunktes. Konvertierungen sind nur mit dem Wert (val) möglich.
  • Wie entschlüsselt man diese Iobroker Script-Warnung?

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    FabioF
    @homoran sagte in Wie entschlüsselt man diese Iobroker Script-Warnung?: @fa-bio hoffen auf Infos ja ich glaube aber nicht das das passiert. ;-)
  • [Lovelace] HTML Code anzeigen

    20
    1
    1 Stimmen
    20 Beiträge
    3k Aufrufe
    planetkeaneP
    Ich habe mir jetzt ein neues Skript gebaut, dass direkt aus den Objekten von Sourceanalytix eine HTML Tabelle erstellt. Diese funktioniert auch ganz gut, obwohl ich da bestimmt noch ein paar Verbesserungen durchführen werde. Falls es jemanden interessiert: // Erstelle ein HTML-Objekt im Verzeichnis 0_userdata.0.test /* * >>>>>>> Hier Eingabewerte <<<<<<< */ var anzeigeName = 'Computer'; var verzeichnisSave = '0_userdata.0.HTML.StromverbrauchComputer'; var verzeichnisPfad = 'sourceanalytix.0.0_userdata__0__Energiezaehler__Computer'; // 1 für "consumed", 2 für delivered var methode = 2; //>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<< createState(verzeichnisSave, { type: 'string', common: { name: 'HTML-Objekt', role: 'html', read: true, write: false, }, native: {}, }); //schedule("*/30 * * * *", async function () { on({ id: [].concat(['0_userdata.0.TabellenHTMLAktualisieren']), change: "any" }, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Jahresvariablen var aktuellesDatum = new Date(), jahr = aktuellesDatum.getFullYear(), vorJahr = jahr - 1; // Gesamtvariable var GesamtJetzt = 0, GesamtVorher = 0, GesamtKostenJetzt = 0, GesamtKostenVorher = 0; /* * Hier den Spaltennamen eingeben */ // Erstelle den HTML-Code für die Tabelle var tableHTML = '<table><thead><tr><th>' + anzeigeName + '</th><th>Dieses Jahr</th><th>Letztes Jahr</th><th>Kosten</th></tr></thead><tbody>'; var names = ""; for (var i = 1; i <= 12; i++) { var month = (i < 10) ? "0" + i : i; if (i == 1) { names = "January"; } else if (i == 2) { names = "February"; } else if (i == 3) { names = "March"; } else if (i == 4) { names = "April"; } else if (i == 5) { names = "May"; } else if (i == 6) { names = "June"; } else if (i == 7) { names = "July"; } else if (i == 8) { names = "August"; } else if (i == 9) { names = "September"; } else if (i == 10) { names = "October"; } else if (i == 11) { names = "November"; } else if (i == 12) { names = "December"; } /* * Hier den Quellpfad angeben */ if (methode == 1) { var valueThisYear = getState(verzeichnisPfad + '.' + jahr + ".consumed.months." + month + "_" + names).val; var cost = valueThisYear * 0.33; GesamtJetzt += valueThisYear; var valueLastYear = getState(verzeichnisPfad + '.' + vorJahr + ".consumed.months." + month + "_" + names).val; var costLast = valueLastYear * 0.33; GesamtVorher += valueLastYear; GesamtKostenJetzt += cost; tableHTML += '<tr><td>' + i + '</td><td>' + valueThisYear + '</td><td>' + valueLastYear + '</td><td>' + cost.toFixed(2) + ' | ' + costLast.toFixed(2) + '</td></tr>'; } else if (methode == 2) { var valueThisYear = getState(verzeichnisPfad + '.' + jahr + ".delivered.months." + month + "_" + names).val; var cost = valueThisYear * 0.33; GesamtJetzt += valueThisYear; var valueLastYear = getState(verzeichnisPfad + '.' + vorJahr + ".delivered.months." + month + "_" + names).val; GesamtVorher += valueLastYear; var costLast = valueLastYear * 0.33; GesamtKostenJetzt += cost; tableHTML += '<tr><td>' + i + '</td><td>' + valueThisYear + '</td><td>' + valueLastYear + '</td><td>' + cost.toFixed(2) + ' | ' + costLast.toFixed(2) + '</td></tr>'; } } // Zwei Nachkommastellen GesamtJetzt = Math.round(GesamtJetzt * 100) / 100; GesamtVorher = Math.round(GesamtVorher * 100) / 100; GesamtKostenJetzt = Math.round(GesamtKostenJetzt * 100) / 100; GesamtKostenVorher = GesamtVorher * 0.33; GesamtKostenVorher = Math.round(GesamtKostenVorher * 100) / 100; tableHTML += '<tr><td>' + "Ge" + '</td><td>' + GesamtJetzt + '</td><td>' + GesamtVorher + '</td><td>' + GesamtKostenJetzt + ' | ' + GesamtKostenVorher + '</td></tr>'; tableHTML += '</tbody></table>'; /* * Hier den Speicherpfad angeben (2x) */ // Schreibe den HTML-Code in den HTML-Objektzustand als Zeichenfolge setState(verzeichnisSave, { val: tableHTML, ack: true }); // Lese den HTML-Code als Zeichenfolge var tableHTMLString = getState(verzeichnisSave).val; // Gib den HTML-Code in der Konsole aus // console.log(tableHTMLString); });
  • Ordner Überwachung und per SFTP weitergeben

    8
    0 Stimmen
    8 Beiträge
    798 Aufrufe
    bahnuhrB
    @liv-in-sky Vielen lieben Dank. Top Beschreibung von dir. Jetzt klappt es. Hab mich irgendwie zu blöd angestellt (Error 50 halt). mfg Dieter
  • [gelöst] Weckzeit Blockly löst falsch oder garnicht aus

    6
    2
    0 Stimmen
    6 Beiträge
    534 Aufrufe
    blue231181B
    @paul53 hat funktioniert, vielen herzlichen Dank
  • Tagesschau-Script ändern!

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    bahnuhrB
    @quarkmax ich hab jetzt dies: https://www.tagesschau.de/multimedia/livestreams/index~player.html einfach in den DP geschrieben. Mal schauen obs morgen noch geht. Für mich liegt es an dem Index, der gestern noch durch eine Zahlenfolge ersetzt wurde. kann dies aber nicht im Quelltext erkennen.
  • Bewegungsmeldung mit Frigate

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    WalW
    Da das Skript immer grösser wurde, habe ich alles in einen Adapter migriert.
  • Node Red Werte aus Objekten

    10
    3
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    Sascha HolzerS
    @mickym Da hab ich mir schon gedacht, aber ich finde es als Anfänger so tatsächlich übersichtlicher und man kann sich schnell was neues zusammenkopieren.
  • [gelöst] Funktionsrückgabe undefined

    6
    0 Stimmen
    6 Beiträge
    679 Aufrufe
    O
    @paul53 wie immer besten Dank echt klasse wie du hier mit deinem Wissen hilfst und unterstützt. Hast du ne Kaffeekasse?

315

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge