Skip to content

Skripten / Logik

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

16.5k Themen 213.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

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

    7k 79k
    7k Themen
    79k Beiträge
    S
    Hallo zusammen, ich möchte in ioBroker eine Alias-Struktur aufbauen, allerdings ohne die bekannten Adapter. Dabei möchte ich vorab herausfinden, welche Datenpunkte durch meine Skripte eigentlich genutzt werden. Ist es möglich, dies durch Bordmittel herauszufinden ? Vielen Dank und Beste Grüße schweiger2
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • PV Überschuss berechnen

    51
    0 Stimmen
    51 Beiträge
    5k Aufrufe
    S
    @paul53 Danke
  • Alarm wenn sich BIT aus Word ändert

    14
    2
    0 Stimmen
    14 Beiträge
    952 Aufrufe
    T
    @paul53 danke, das wuste ich nicht. aber somit ist mein bedenken eh unrelevant
  • [gelöst]Berechnung und Datenpunkt erzeugen

    13
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    J
    @karel-puhli alles klar, wieder was gelernt
  • Licht-Schaltung funktioniert so leider nicht

    4
    2
    0 Stimmen
    4 Beiträge
    197 Aufrufe
    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 Stimmen
    11 Beiträge
    261 Aufrufe
    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 Stimmen
    55 Beiträge
    5k Aufrufe
    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

    Verschoben
    90
    1
    0 Stimmen
    90 Beiträge
    24k Aufrufe
    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 Stimmen
    8 Beiträge
    763 Aufrufe
    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 Stimmen
    7 Beiträge
    558 Aufrufe
    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 Stimmen
    7 Beiträge
    827 Aufrufe
    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 Stimmen
    7 Beiträge
    973 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
    3k 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
    421 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
    304 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
    958 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
    880 Aufrufe
    G
    Ich habe hier einen Neustart versucht
  • Syntax Checker im Editor markiert korrekte Werte

    javascript
    2
    0 Stimmen
    2 Beiträge
    239 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
    798 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
    352 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

749

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge