Skip to content

Skripten / Logik

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

16.5k Topics 213.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    BananaJoeB
    @peterfido und ping heißt nicht das ein http-Aufruf funktioniert
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    K
    Hallo, wollt mich nur nochmal schnell zurückmelden - es funktioniert jetzt! Vielen Dank an alle für eure Unterstützung! :) Mfg Marcus
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • PV Überschuss berechnen

    51
    0 Votes
    51 Posts
    5k Views
    S
    @paul53 Danke
  • Alarm wenn sich BIT aus Word ändert

    14
    2
    0 Votes
    14 Posts
    952 Views
    T
    @paul53 danke, das wuste ich nicht. aber somit ist mein bedenken eh unrelevant
  • [gelöst]Berechnung und Datenpunkt erzeugen

    13
    0 Votes
    13 Posts
    1k Views
    J
    @karel-puhli alles klar, wieder was gelernt
  • Licht-Schaltung funktioniert so leider nicht

    4
    2
    0 Votes
    4 Posts
    197 Views
    maximal1981M
    @mico natürlich ist sie um 0500 noch an. wenn man um 0450 startet und 20 min verzögert = 0510
  • Werte im Skript händisch ändern

    11
    1
    0 Votes
    11 Posts
    261 Views
    W
    @dr-pie Wäre es da nicht sinnvoll, direkt auf die Helligkeit außen zu reagieren. Irgendwo einen Helligkeitssensor montiert und dann je nach Wert eben mehr oder weniger Helligkeit einstellen. Dann brauchst Du selber gar nix mehr machen, nichtmal Gedanken, wann das ideale Datum für die kurze oder längere Leuchtzeit wäre. Das würde ich smart nennen… Gruss, Jürgen
  • Problem bei Blockly und Shelly

    55
    2
    0 Votes
    55 Posts
    5k Views
    R
    @paul53 Alles klar, ich denke ich habe den Fehler jetzt auch gefunden. Der erste Timer war als Unbenannt drin. Ich habe jetzt nchmal "delayon" überall ausgewählt und das unbenannt ist raus. Jetzt hat es endlich funktioniert. Sorry für die Umstände und die Mühe mit mir aber ich danke dir vielmals, dass du die Geduld aufgebracht hast.
  • Yahka hue color nach hex convertieren

    Moved
    90
    1
    0 Votes
    90 Posts
    24k Views
    K
    Hallo Möchte hier mal meinen Beitrag teilen, der bei mir in Verbindung mit Tuya RGBW Controllern aus China läuft. Man benötigt 2 Skripte und ein paar Datenpunkte, die angelegt werden müssen. Skript wandelt die von Homekit gesendeten Werte für Hue und Saturation in HEX var red = "0_userdata.0.rgb_rot"; var green = "0_userdata.0.rgb_gruen"; var blue = "0_userdata.0.rgb_blau"; var hue = "0_userdata.0.rgb_hue"; //in Yahka mit Hue verknüpfen var saturation = "0_userdata.0.rgb_saturation"; //in Yahka mit Saturation verknüpfen var hex = "tuya.0.xxxxxxxxxxxxxxxxxxxxx.24-rgb"; //Hex Wert im Tuya Gerät, der geschrieben werden soll var hexUpdateFromHomekit = true; var hexUpdateFromHex = true; function updateRGB() { var h = getState(hue).val; var s = getState(saturation).val / 100; var v = 1; var c = v * s; var x = c * (1 - Math.abs((h / 60) % 2 - 1)); var m = v - c; var r = 0; var g = 0; var b = 0; if (h < 60) { r = c; g = x; } else if (h < 120) { r = x; g = c; } else if (h < 180) { g = c; b = x; } else if (h < 240) { g = x; b = c; } else if (h < 300) { r = x; b = c; } else { r = c; b = x; } r = Math.round((r + m) * 255); g = Math.round((g + m) * 255); b = Math.round((b + m) * 255); var hexValue = "#" + ("0" + r.toString(16)).slice(-2) + ("0" + g.toString(16)).slice(-2) + ("0" + b.toString(16)).slice(-2); setState(hex, hexValue); setState(red, r); setState(green, g); setState(blue, b); } on({id: hue, change: "ne"}, function (obj) { if (hexUpdateFromHex) { hexUpdateFromHomekit = false; updateRGB(); setTimeout(function () { hexUpdateFromHomekit = true; }, 2000); // 2 seconds } }); on({id: saturation, change: "ne"}, function (obj) { if (hexUpdateFromHex) { hexUpdateFromHomekit = false; updateRGB(); setTimeout(function () { hexUpdateFromHomekit = true; }, 2000); // 2 seconds } }); 2.Skript wandelt die in der Smart Life App eingestellten Hex-Werte rückwärtig über RGB wieder in Hue und Saturation. Die Live Listener pausieren sich gegenseitig um 2 Sekunden, damit man nicht in eine Schleife läuft. var red = "0_userdata.0.rgb_rot"; var green = "0_userdata.0.rgb_gruen"; var blue = "0_userdata.0.rgb_blau"; var hue = "0_userdata.0.rgb_hue"; //in Yahka mit Hue verknüpfen var saturation = "0_userdata.0.rgb_saturation"; //in Yahka mit Saturation verknüpfen var hex = "tuya.0.xxxxxxxxxxxxxxxxxxxxx.24-rgb"; //Hex Wert im Tuya Gerät, der geschrieben werden soll var hexUpdateFromHomekit = true; var hexUpdateFromHex = true; function updateHS() { var hexValue = getState(hex).val; hexValue = hexValue.replace("#", ""); var r = parseInt(hexValue.substring(0, 2), 16); var g = parseInt(hexValue.substring(2, 4), 16); var b = parseInt(hexValue.substring(4, 6), 16); r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, l = (max + min) / 2; if (max == min) { h = s = 0; } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } setState(hue, Math.round(h * 360)); setState(saturation, Math.round(s * 100)); setState(red, Math.round(r * 255)); setState(green, Math.round(g * 255)); setState(blue, Math.round(b * 255)); } on({id: hex, change: "ne"}, function(obj) { if (hexUpdateFromHomekit) { hexUpdateFromHex = false; setTimeout(function() { updateHS(); hexUpdateFromHex = true; }, 2000); } }); on({id: red, change: "ne"}, function(obj) { if (hexUpdateFromHex) { hexUpdateFromHomekit = false; updateHex(); setTimeout(function() { hexUpdateFromHomekit = true; }, 2000); } }); on({id: green, change: "ne"}, function(obj) { if (hexUpdateFromHex) { hexUpdateFromHomekit = false; updateHex(); setTimeout(function() { hexUpdateFromHomekit = true; }, 2000); } }); on({id: blue, change: "ne"}, function(obj) { if (hexUpdateFromHex) { hexUpdateFromHomekit = false; updateHex(); setTimeout(function() { hexUpdateFromHomekit = true; }, 2000); } }); function updateHex() { var r = getState(red).val; var g = getState(green).val; var b = getState(blue).val; r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, l = (max + min) / 2; if (max == min) { h = s = 0; } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } var hexValue = "#" + ("0" + Math.round(r * 255).toString(16)).slice(-2) + ("0" + Math.round(g * 255).toString(16)).slice(-2) + ("0" + Math.round(b * 255).toString(16)).slice(-2); hexUpdateFromHex = false; setState(hex, hexValue); setTimeout(function () { hexUpdateFromHex = true; }, 2000); // 2 seconds hexUpdateFromHomekit = false; setState(hue, Math.round(h * 360)); setState(saturation, Math.round(s * 100)); setTimeout(function () { hexUpdateFromHomekit = true; }, 2000); // 2 seconds } Somit wird Homekit und Smart Life App immer synchron gehalten. Was ich noch nicht zum laufen gebraucht habe ist das Dimmen der Farben über Homekit. Zieht man hier den Regler runter, geht der Tuya Controller in der Weiß-Modus und dimmt da runter. Da muss ich mich nochmal hinsetzen und das Dimmen über RGB implementieren.
  • Hilfe bei 2 Taster sollen 1 Shelly PlugS steuern

    8
    0 Votes
    8 Posts
    763 Views
    J
    @tom-haase Das sollte laufen, wobei ich den "umschalten" Block noch nie verwendet habe. Die Shelly müssen so aber als Schalter konfiguriert sein. Mit Taster läuft das nicht, wobei man da einfach im Trigger auf "ist größer als letztes" stellen muss, dann reagiert er nur auf die Flanke von 0 nach 1 .
  • Batterielevel auslesen

    7
    0 Votes
    7 Posts
    558 Views
    S
    @codierknecht Danke, dann habe ich es falsch verstanden. Ich bin nicht unbedingt auf Windows fixiert, Linux wäre auch möglich. Bei SNMP und wmi bin ich bis jetzt nicht fündig geworden den Ladezustand bequem auszulesen Das sieht auch sehr nett aus, werde ich mal testen. Anscheinend funktionieren die Funktionen vom Fully Kiosk Browser unter Windows, wundert mich das noch keiner die 2-3 verschiedenen Ansätze zu einem Browser verbunden hat. Ich kann leider nicht programmieren
  • Wenn Wochentag X dann Wert von Objekt Y

    7
    0 Votes
    7 Posts
    827 Views
    B
    @miwi Hallo miwi, klappt das Script bei dir einwandfrei bzw. zeigt die richtigen Werte an ? Bei mir kommt es immer mal wieder vor, dass er einen Tag verschluckt und nicht den Wert von z. B. vorgestern übernimmt.
  • (GELÖST) Syntax API REST Swagger via Curl etc.

    7
    0 Votes
    7 Posts
    973 Views
    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 Votes
    45 Posts
    3k Views
    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 Votes
    5 Posts
    421 Views
    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 Votes
    3 Posts
    304 Views
    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 Votes
    16 Posts
    2k Views
    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 Votes
    10 Posts
    958 Views
    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 Votes
    5 Posts
    880 Views
    G
    Ich habe hier einen Neustart versucht
  • Syntax Checker im Editor markiert korrekte Werte

    javascript
    2
    0 Votes
    2 Posts
    239 Views
    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 Votes
    7 Posts
    798 Views
    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 Votes
    2 Posts
    352 Views
    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

698

Online

32.6k

Users

82.2k

Topics

1.3m

Posts