Skip to content

Skripten / Logik

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

16.6k Topics 213.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Danke habe ich gemacht. ( 1punkt) Die Objekt-ID "aktuell erzeugte Energie" wäre bei mir: Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM0_kWh plus Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM1_kWh (zusatz WR) wie kann ich das bewerkstelligen?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    T
    Hallo liebe Community, ich suche für den Sonos-Adapter ein Blockly-Skript mit folgender Funktion: Sobald eine Bewegung erkannt wird, soll – unabhängig davon, was zuvor auf dem Sonos-Player gespielt worden ist und auf welcher Lautstärke – automatisch ein bestimmter Radiosender gestartet und eine fest definierte Lautstärke eingestellt werden. Die Lautstärke lässt sich problemlos setzen, allerdings funktioniert das Starten des gewünschten Radiosenders nicht wie erwartet. Der Sender wird entweder gar nicht abgespielt oder der vorherige Inhalt läuft weiter. Hat jemand ein funktionierendes Beispiel oder einen Hinweis, wie man den Radiosender korrekt über Blockly bzw. aktiviert? Vielen Dank vorab für eure Unterstützung! [image: 1771825102026-bildschirmfoto-2026-02-23-um-06.37.59.png]
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Datenpunkte in Google Spreadsheet schreiben

    10
    0 Votes
    10 Posts
    977 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
    890 Views
    G
    Ich habe hier einen Neustart versucht
  • Syntax Checker im Editor markiert korrekte Werte

    javascript
    2
    0 Votes
    2 Posts
    240 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
    803 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
    359 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
  • JSON wird in "vis-inventwo - JSON Table" falsch dargestellt

    javascript
    2
    2
    0 Votes
    2 Posts
    271 Views
    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 Votes
    2 Posts
    107 Views
    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 Votes
    12 Posts
    843 Views
    FabioF
    @homoran sagte in Wie entschlüsselt man diese Iobroker Script-Warnung?: @fa-bio hoffen auf Infos ja :+1: :+1: :+1: :+1: ich glaube aber nicht das das passiert. ;-)
  • [Lovelace] HTML Code anzeigen

    20
    1
    1 Votes
    20 Posts
    2k Views
    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 Votes
    8 Posts
    620 Views
    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 Votes
    6 Posts
    429 Views
    blue231181B
    @paul53 hat funktioniert, vielen herzlichen Dank
  • Tagesschau-Script ändern!

    Moved
    10
    0 Votes
    10 Posts
    762 Views
    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 Votes
    6 Posts
    1k Views
    WalW
    Da das Skript immer grösser wurde, habe ich alles in einen Adapter migriert.
  • Node Red Werte aus Objekten

    10
    3
    0 Votes
    10 Posts
    1k Views
    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 Votes
    6 Posts
    560 Views
    O
    @paul53 wie immer besten Dank:+1: echt klasse wie du hier mit deinem Wissen hilfst und unterstützt. Hast du ne Kaffeekasse?:tea:
  • Ausführen einer Aktion zu bestimmten Zeit

    6
    2
    0 Votes
    6 Posts
    510 Views
    R
    Danke euch! Die Systemzeit vom Pi war falsch. Ist jetzt in der richtigen Zeitzone! Ich versuche mich jetzt mal am Zeitplan!
  • Sayit, doppelte Ansage und Lautstärke

    3
    2
    0 Votes
    3 Posts
    264 Views
    DJMarc75D
    @nachtfuchs Welche Version vom sayit ist installiert ? Und bitte auch mal die Einstellungen zeigen. Falls da "Cache" aktiviert ist dies dann mal deaktivieren. Skript mit Deinen Anforderungen und in Verbindung mit dem SayIt könnte folgend aussehen: [image: 1682248792429-screenshot-2023-04-23-131934.png] einfach mal so umsetzen, testen und das Ergebnis mitteilen :)
  • Problem mit dem Adapter History

    blockly monitoring
    4
    0 Votes
    4 Posts
    346 Views
    C
    @dp20eic Super vielen herzlichen Dank. Das habe ich gar nicht gesehen. Ich habe immer nur bei der Variablen geschaut
  • Alias DP Wert schreiben

    15
    0 Votes
    15 Posts
    1k Views
    paul53P
    @ostseeskipper sagte: im Objekte Tab hab ich noch nichts gesehen wie man da einen Alias anlegen kann Einfach Objekte unter "alias.0" erstellen. Bei Datenpunkten gibt es dann einen zusätzlichen Tab für die Alias-Eigenschaften. @ostseeskipper sagte in Alias DP Wert schreiben: über automatisch erstellen Diese Funktion habe ich nie genutzt. Sie könnte das Problem sein.
  • [gelöst]Enum und Trigger

    9
    0 Votes
    9 Posts
    586 Views
    O
    @paul53 Ich habs verstanden, war fachlich nicht korrekt ausgedrückt. jedenfalls macht die von @Codierknecht genannt Lösung was ich gesucht habe.

506

Online

32.7k

Users

82.4k

Topics

1.3m

Posts