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
    portyP
    mal wieder: Danke fürs updaten. Gibt es eigentlich Infos bezüglich der neuen Firmware? Ich habe das Firmwareupdate aktuell noch nicht durchgeführt.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @emil70 sagte: Das ist mein Netzwerk zu Hause. Dann musst du die IPs anpassen. Diese IPs sind reserviert und dürfen nicht in privaten Netzen verwendet werden. Beim Aufruf einer 192.168.x.y weiss der Router dass das eine private IP ist und sucht bei dir zu Hause. Nimmst du aber 125.123.x.y sucht der Router im Internet bei Chinanet.
  • 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": [] } ]
  • Hauspumpe über Alexa steuern

    8
    1
    0 Stimmen
    8 Beiträge
    620 Aufrufe
    R
    @haselchen danke für deine Hilfe. Jetzt funktioniert es. Danke euch beiden für die Hilfe und Ratschläge René
  • Datenpunkt & Objekt steuern/aktualisieren

    5
    0 Stimmen
    5 Beiträge
    460 Aufrufe
    M
    @codierknecht Okay, habe gesehen was der Adapter macht, das kann ich am Ende auch selber, hast du recht. Szenen-Adapter werde ich testen, danke!!!
  • 0 Stimmen
    12 Beiträge
    4k Aufrufe
    C
    @andreaskos Danke für dein Script. Es funktioniert einwandfrei. Gibt es eine Möglichkeit das auch für HSV zu nutzen. Ich möchte gerne über den MDT Glastaster 2 über 2 Tasten HSV Werte an die Hue Lampe senden.
  • PI(D) Regler - Adapter oder Skript?!

    14
    0 Stimmen
    14 Beiträge
    4k Aufrufe
    fu_zhouF
    @paul53 ich bin's mal wieder, nachdem jetzt sogar das E-Auto nach 15 Monaten Lieferzeit da ist... Wie kann ich den Regler aus dem Beispiel für z.B. 30 Sekunden lang "anhalten", weil meine Beobachtung ist folgende: Der go-E-Charger verändert die Ladeleistung mit ganzen Ampere-Sprüngen, d.h. wenn ich mit 6 A Lade und der Regler wg. PV-Überschuss Richtung 7 A steuert, springt auf einmal bei 1-phasigem Laden der Istwert von ca. 1.4 kW (6 A) auf 1.6 kW (7 A), was natürlich beim Regler eine Sprungantwort provoziert und auf 6 A zurückgeschaltet wird und dann geht's hin und her. Ich möchte xp aber nicht so groß wählen, dass der Sprung so klein ist, dass es nicht zum Runterschalten kommt, dann wird das ganze viel zu träge. Der Trigger ist also die Änderung des Ladestroms in der Wallbox, was dazu führen soll, dass der Regler für z.B. 30 Sekunden inaktiv ist, um den Leistungssprung ohne Reaktion abzuwarten. Kriegt man die "function control" für eine bestimmte Zeit angehalten, getriggert durch die Veränderung des Ladestrom? Ggf. kann man das erreichen, indem man für die Zeit den Sollwert auf den Istwert schreibt (x=w), dann gibt es keine Abweichung zwischen x und w und y wird nicht verändert. Die Frage ist dann halt, was passiert, wenn wieder auf den echten Istwert geschaltet wird, ist ja auch ein Sprung. Die "function control" kurz anzuhalten scheint da der bessere Weg zu sein... Danke schon mal vorab! Ergänzung: habe das jetzt erst einmal gelöst, indem ich xp dynamisch aus Blockly heraus hochsetze, um die Sprungantwort zu dämpfen, aber vielleicht hast du noch eine elegantere Idee? Hier das komplette Regler-Skript mit dynamischem Xp. // PI-Regler // Datenpunkt-IDs eintragen ! const xid = 'javascript.0.Wallbox.Netzleistung'; // Istwert const wid = 'javascript.0.Wallbox.Sollwert_Netzbezug'; // Sollwert const yid = 'javascript.0.Wallbox.Ladeleistung'; // Stellgröße const maxid = 'javascript.0.Wallbox.maxOut'; // Stellgröße Maximum zur Reglerbegrenzung const xpid = 'javascript.0.Wallbox.xp'; // xp: je größer, je langsamer // P-Band in K, Nachstellzeit in s const Xp = 50; // je größer, je langsamer ==> Initialwert, wird in "function control" dynamisch verändert const Tn = 5; // je größer, je langsamer var x = getState(xid).val; // Istwert var w = getState(wid).val; // Sollwert var m = getState(maxid).val; // Sollwert Maximum const PI = require('pi-controller'); // als zusätzliches NPM-Modul in JS-Config eintragen const pi = new PI(Xp, Tn); //pi.setOutputMax(m); // default: OutputMax = 100 ==> wird in "function control" aufgerufen, um dynamisches maxOut zu berücksichtigen function control() { const Xp = getState(xpid).val; // Xp kommt dynamisch vom Blockly-Skript pi.setOutputMax(m); // maxOut kommt dynamisch vom Blockly-Skript var y = pi.Control(w - x)+1.3; // Stellsignal mit 1.3 kW Offset um Totzeit zu reduzieren bis Mindestleistung von 1.4 kW erreicht ist setState(yid, Math.round(y*100)/100); //Stellwert auf 2 Nachkommastellen runden console.log(Xp); console.log(getState(yid).val); } control(); // Script start on(xid, function(dp) { x = dp.state.val; control(); }); on(wid, function(dp) { w = dp.state.val; control(); }); on(maxid, function(dp) { m = dp.state.val; control(); }); if (Tn) setInterval(control, 250 * Tn );
  • Blockly zum Ändern der Positionsangaben Rollo

    7
    1
    0 Stimmen
    7 Beiträge
    360 Aufrufe
    HomoranH
    @homoran sorry, was vergessen [image: 1678134453980-screenshot_20230306-212652_firefox.jpg]
  • NAD T778 AVR Steuerung Telnet HTTP

    4
    2
    0 Stimmen
    4 Beiträge
    642 Aufrufe
    S
    @rookie50 Hallo Rookie50! Danke für deine Rückmeldung! Den Link kenne ich, und es sind auch die Befehle die ich nutze. Ich habe mit der Großartigen Hilfe von jemanden mittlerweile meinen NAD in IoBroker einbinden können, allerdings mit Javascript und nicht mit Blockly. Blockly hat einfach nicht funktioniert. Das Skript ist im groben fertig und funktioniert! Allerdings möchte ich noch ein paar weitere Datenpunkte hinzufügen die der NAD da hergibt. Außerdem noch ein wenig Ordnung bei der Erstellung der Datenpunkte schaffen. Wenn es dann fertig ist und der eigentliche Programmierer dem zustimmt, würde ich es hier mit zur Verfügung stellen! Gruß SidM
  • Probleme beim iCal to Json Skript

    4
    0 Stimmen
    4 Beiträge
    471 Aufrufe
    GlasfaserG
    @curtis777 Kann dir damit nicht helfen , da ich es nicht nutze : Tablet in Wallpanel (wo die VIS läuft) oder Fully Kiosk APP aber in dem anderen Thread ... hast du es schon richtig gepotest ! Test Adapter Material Design Widgets v0.5.x ich würde dort auch die Installierte Version mit angeben !
  • Zahl aus Excel in Object schreiben

    blockly
    10
    0 Stimmen
    10 Beiträge
    898 Aufrufe
    OliverIOO
    @wagner sagte in Zahl aus Excel in Object schreiben: @oliverio Hallo - ich als neuling versuche daten aus dem IOBroker nach Excel zu schreiben und habe schon jedemenge post's gefunden und ausprobiert. exceljs habe ich installiert, jedoch, wenn ich "meine" excelarbeitsmappe öffnen möchte "C:\Users\MeinLG\Documents\iobroker-test.xlsx" kommt die fehlermeldung "Error: File not found: C:UsersMeinLGDocumentsiobroker-test.xlsx at XLSX.readFile (/opt/iobroker/node_modules/iobroker.javascript/node_modules/exceljs/lib/xlsx/xlsx.js:51:13). Was mache ich falsch!??? Problem 1 Der Iobroker muss auch auf die Datei zugreifen können. Woher soll er anhand dieses Pfades wissen, das die Datei auf dem Windows Rechner ist? Für die ersten Tests die Datei auf den Iobroker Rechner kopieren und die Rechte so setzen, das Iobroker die Datei lesen kann. Problem 2 Unter linux wird statt pfadttrenner \ immer / verwendet. \ hat eine andere Bedeutung Node was auf Windows läuft kann das zwar verstehen, aber nur dort. Dein Node läuft unter linux
  • Siemens Logo Wochenschaltuhr über Vis steuern

    4
    0 Stimmen
    4 Beiträge
    376 Aufrufe
    Heiko GlohrH
    @eric-0 Hallo, da ich vor dem selben Problem stehe, frage ich mal nach ob sich schon was ergeben hat. Ich habe meiner Wochenuhr in der Logo die Parameter VM zugeordnet: also zB. B373 Wochenschaltuhr Wochentag Byte 97 B373 Wochenschaltuhr Einschaltzeit Word 98 B373 Wochenschaltuhr Ausschaltzeit Word 100 Im S7 Adapter habe ich unter DB3 angelegt DB3 97 DB3 98 DB3 100 In den Objekten sehe ich aber nicht die in der Logo (B373) eingetragen sind sondern ich sehe da false und wenn ich da drauf gehe mit der Maus sehe ich Zeitstempel von jetzt Keine Ahnung was ich da falsch mache
  • Werte (JSON) an URL senden

    22
    3
    0 Stimmen
    22 Beiträge
    3k Aufrufe
    M
    @paul53 Danke schon mal für deine Hilfe. Ich habe auf jeden Fall etwas gelernt, auch wenn es nicht zum Erfolg geführt hat. @mickym Hab NodeRed jetzt mal schnell gegoogelt und hört sich wie ein "potentes" Blockly an. Also Flussdiagramme erstellen ohne zu programmieren, etc. Aber die Adapterbeschreibung ist sehr kurz und ich werde mich heute Abend nicht mehr damit beschäftigen, ob ich nur den Adapter installieren muss, oder noch weitere Änderungen vornehmen muss.. Lieber wäre mir eine Lösung ohne zusätzlichen Adapter :)
  • Ungewollte Skriptausführung

    6
    4
    0 Stimmen
    6 Beiträge
    535 Aufrufe
    I
    @paul53 said in Ungewollte Skriptausführung: Enthält also die Einschaltdauer (Brennerlaufzeit) des Tages? Richtig. Und über die Brennerlaufzeit kann ich den Verbrauch berechnen.
  • Ambilight mit Philips Hue verbinden

    Verschoben
    28
    0 Stimmen
    28 Beiträge
    5k Aufrufe
    wendy2702W
    @djmarc75 Kein Thema.
  • Überschußladen mit Shely 3EM und Shelly 1

    23
    1
    0 Stimmen
    23 Beiträge
    3k Aufrufe
    T
    @paul53 Moin kurze Rückmeldung beide Skripte funktionieren...vielen Dank euch beiden
  • Beleuchtung einschalten bei öffung eines Tores

    5
    1
    0 Stimmen
    5 Beiträge
    509 Aufrufe
    L
    @wal Danke
  • Problem beim umstellen von request auf axios

    javascript
    1
    0 Stimmen
    1 Beiträge
    251 Aufrufe
    Niemand hat geantwortet
  • Hikvision Alarmserver

    2
    0 Stimmen
    2 Beiträge
    332 Aufrufe
    M
    Hallo Ich möchte mich kurz melden. Mittlerweile habe ich den Fehler gefunden. Ich hatte im ctx das device an das Skript übergeben. Im Skript hatte ich aber schon durch probieren deviceName zugegriffen was logischerweise gar nicht übergeben wurde und somit auch nicht vorhanden war. Vermutlich wurde dadurch das Skript bzw. das Event nicht abgearbeitet. Mittlerweile bin ich nun mit dem Handling und dem Versand beschäftigt. Trotzdem Vielen Dank
  • Steuerung der PV Solaranlage

    javascript blockly
    21
    0 Stimmen
    21 Beiträge
    3k Aufrufe
    a200A
    @laser Der WR ändert die Wirkung verlangsamt. Also kein Sprung von 100 auf 50%. Ich bin bei dem Thema dran und eine 300-Steuerung klappt bei mir ganz gut. Also ich versuche zu 300W abzugeben, sonst drossele ich die Produktion.
  • Wallbox Mennekes Amtron auslesen - Adapter aus Skript?

    javascript monitoring
    18
    1 Stimmen
    18 Beiträge
    7k Aufrufe
    D
    Hallo, hast du etwas rausgefunden? Ich stehe vor demselben Problem...
  • Json Werte per MQTT senden ?

    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    mickymM
    @yoshi Hast Du die Datenpunkte auch unbestätigt beschrieben? [image: 1676840383809-b1088743-1ed5-4b5f-9ef5-a36b27caef0a-image.png]
  • Log Error an Pushover melden

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    M
    @dicken Hi - hat mir echt geholfen. Danke! Habe die Ausgabe noch etwas "ge-pimpt", da ich davon ausgehe, dass die Meldungen unterschiedlich lang sein können. Muss ich aber erst noch testen...bis dahin der Zwischenstand: [image: 1676826577796-7a9c2085-9f63-4980-a36b-f566071dd099-grafik-resized.png]

302

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge