Skip to content

Skripten / Logik

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

16.6k Topics 214.0k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    RoddiEFR
    Ok dann warte ich lieber und fang eine frische Installation an wenn die neue Version fertig ist. Wäre es möglich beim aktuallisieren vom ersten Beitrag auch die Versionsnummern zu ändern wie schon jemand Vorgeschlagen hatte? Das macht das es einfacher wenn Änderungen anliegen. Thx
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    B
    @Murphy-0 Hatte noch nen kleinen Bug, jetzt sieht es schon viel besser aus.
  • 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
  • Skript Heizung - Homematic Geräte

    heating blockly
    12
    0 Votes
    12 Posts
    749 Views
    paul53P
    @Wieger-Daniel sagte: manchmal wäre mir etwas kürzere Sendeintervalle lieber Dann müssten die Batterien öfter gewechselt werden.
  • Alexa Sprachausgabe Blockly für Spülmaschine fertig

    blockly
    13
    0 Votes
    13 Posts
    1k Views
    da_WoodyD
    @lololo nichts anderes als die ausgabe der beiden DPs
  • yahaka soll homeatic PRESS_SHORT machen

    communication
    6
    0 Votes
    6 Posts
    602 Views
    L
    @crazyskater Das bedeutet also Siri muss einen virtuellen Schalter bekommen, den sie einschaltet und für Sie gleich wieder als ausgeschaltet darfgestellt wird. So sehe ich das zumindest. Wird auch hier nochmal von @apollon77 auf englisch erklärt: https://github.com/ioBroker/ioBroker.admin/issues/505 Also: Einen "Switch" in YAHKA anlegen, welcher On/Off kennt, diesen dann mit deinem Trigger auf On schalten und per Script wieder auf Off zurücksetzen ist die Lösung.
  • Szenen verhalten sich anders nach Update auf 2.3.0

    scenes
    2
    2
    0 Votes
    2 Posts
    236 Views
    S
    Hat hier jemand eine Idee? Es werden ohne Änderung an der Szene nach dem Update vom Adapter immer wieder die Skripte aus den Szenen nach und nach gestartet. Eigentlich vermute ich keinen Fehler in den Skripten sondern tippe auf ein anderes Verhalten vom Szenzen Adapter. Hier ein Beispiel wo ich einen PC vorher mit an/ausgeschaltet habe: Ausführen bei TRUE var wol = require('wake_on_lan'); var PC = "XX"; on({id: "ping.0.PC.192_168_1_12" ,val: false}, function () { wol.wake(PC); log("WOL für PC wurde ausgeführt", "info") }); Ausführen bei FALSE on({id: "ping.0.PC.192_168_1_12" ,val: true}, function () { exec('net rpc shutdown -C "Der PC wird ausgeschaltet" -I 192.168.1.12 -U USER%PW') log("PC wurde ausgeschaltet", "info") });
  • Unerklärbare Temperaturverschiebung

    blockly
    3
    0 Votes
    3 Posts
    141 Views
    L
    @Homoran Bäm! Fehler gefunden. Hatte in einem ganz anderen Script Bad und Schlafzimmer verwechselt. Danke dir!
  • Homematic IP - Eco Modus an und ausschalten

    climate heating
    4
    1
    0 Votes
    4 Posts
    2k Views
    L
    das ist zwar nicht die Antwort auf euer Problem, aber ich habe einfach eine automatische Sollwertabsenkung bei Abwesenheit per Blockly gebastelt (Abwesenheitsmodus). Wenn man nach Hause kommt, geht es wieder in Normalbetrieb. Zusätzlich habe ich noch eine kleine Nachricht per Telegram eingerichtet, aber das bräuchte man nicht.
  • Wert von Datenpunkt spiegeln?

    blockly
    22
    1
    0 Votes
    22 Posts
    1k Views
    J
    @saeft_2003 Nein, weil hier sofort geändert wird. Ich hatte das ein Zeit lang so für eine Treppenhausschaltung laufen und nie Probleme.
  • Gelöst [Blockly] Punkt durch Komma ersetzen

    Moved
    9
    0 Votes
    9 Posts
    3k Views
    haselchenH
    Tatsächlich bin ich an dem Punkt/Komma Problem ewig heute gescheitert. Und dann habe ich mal diesen Tip mit dem Leerzeichen im Textfeld umgesetzt und war doch ein wenig angesäuert. Wieso muss ich in einem Texfeld 1 Leerzeichen eingeben, damit das Satzzeichen korrekt ausgesprochen wird? Da kommt doch kein Mensch drauf. @Matzebhv Dank an Dich, hast mir die Nacht gerettet ;)
  • Automatisierte Erneuerung der Letsencrypt Zert.

    template
    4
    0 Votes
    4 Posts
    325 Views
    UncleSamU
    @pi4 sagte in Automatisierte Erneuerung der Letsencrypt Zert.: Wann wird die neue Version ca. zur Verfügung stehen und wo kann ich das dann nachlesen, ob das Problem in dieser Version wirklich behoben ist? Wann weiss ich auch nicht (hätte im November sein sollen ;-) ). Ob es drin ist, wirst du hier sehen: https://github.com/ioBroker/ioBroker.js-controller/blob/master/CHANGELOG.md
  • view in jqui dialog close event / trigger

    javascript
    5
    0 Votes
    5 Posts
    678 Views
    H
    @MCU Hab mal getestet. Die Vis.0 Objekte ändern sich nicht wenn ein Dialog angezeigt wird. über 'Setze Wert' kann ich abfangen wann und welcher Dialog geöffnet wird. Ich würde aber gerne wissen wann der Dialog geschlossen wird. [image: 1607472576920-screenshot-2020-12-09-010019.png]
  • Home Connect - Kochfeld - Lüfter/Licht-Taste nutzen

    communication
    1
    0 Votes
    1 Posts
    104 Views
    No one has replied
  • Blockly: Retriggerbare Monoflop mit TimeOut (A)

    blockly
    3
    1
    0 Votes
    3 Posts
    397 Views
    I
    Dachte ich mir schon fast, dass es so eine Kleinigkeit ist. Ich hatte den STOP-Befehl schon im und unterhalb von TimeOut gehabt, ober oberhalb... Vielen Dank für die schnelle Hilfe. Da kann ich jetzt mit dem Programm weiter machen.
  • [Frage] Dialog per Javascript öffnen

    Moved
    7
    2
    0 Votes
    7 Posts
    2k Views
    arteckA
    @apollon77 tuts immer noch nicht...
  • mit Blockly Variablen Ansagen lassen über Alexa

    blockly
    2
    0 Votes
    2 Posts
    278 Views
    Albert KA
    @Hicki zB so [image: 1607293838603-88af5bae-2fe3-40d7-87b6-819cda8c0a32-image.png]
  • Grünbeck Wasserenthärtung SC18 Kapazität

    javascript
    1
    0 Votes
    1 Posts
    284 Views
    No one has replied
  • Gelöst: TopApp Widget

    javascript
    1
    1
    0 Votes
    1 Posts
    128 Views
    No one has replied
  • Telegram Steuerung mit Pin Eingabe

    javascript blockly communication
    2
    0 Votes
    2 Posts
    364 Views
    N
    @Rudi-Ment Hallo, du legst dir neues javascript, hängst dich mit (on) Trigger an dein telegram adapter (telegram.0.communicate.request) , wertest den request aus ob dein Befehl gekommen ist, auf den du reagieren willst, wenn ja holst du den pin-Wert ab mit getState und wertest deine logik aus. vg
  • Steuerung Alexa und shelly dimmer2 gemeinsam

    blockly
    9
    1
    0 Votes
    9 Posts
    854 Views
    Daniel NeimsD
    Hallo zusammen, ich bin auch gerade dabei unsere Wohnzimmer Lampen zum dimmen zu bringen. Auch ich habe festgestellt das der Wert Switch nicht vernünftig geschaltet werden kann. Er springt ganz kurz auf den Wert der vorgegeben wird und dann wieder zurück. Dann muss ich 5 mal meinen Taster in der Visu drücken damit er wieder aus geht. Woran kann das liegen, bzw. ist das bekannt? Bei den anderen Shellys die ich im Einsatz habe (Shelly 1) wird mit diesem wert zuverlässig ein und aus geschaltet. Der Taster aus der Shelly App über den zuverlässig geschaltet wird, der muss doch auch irgendwo auflaufen oder? Viele Grüße
  • Array über VIS

    javascript blockly
    6
    1
    0 Votes
    6 Posts
    629 Views
    L
    @Chris_78 Halo Chris .. Hast du eine Lösung gefunden, um von der VIS aus in ein spezifisches Array Element zu schreiben ? Ich habe zwei Elemente in einem Array. Pos1 und Pos2 ... Möchte in der VIS zwei Felder, oder Schieber nutzen die eine Zahl von 0-100 jeweils in die zwei Elemente des Arrays schreiben. Vielleich wäre Deine Lösung, falls Du was gefunden hast, ebenfalls für mich nutzbar .. Danke im Voraus ... Luc
  • Daten Seriell von Paradigma Solaranlage lesen

    javascript communication heating
    53
    0 Votes
    53 Posts
    7k Views
    G
    @AlCalzone Es ist vollbracht :+1: es Funktioniert DANKE!!!!! Ein besonderes Dankeschön an @AlCalzone! Hier das Fertige Skript für alle Paradigma Nutzer die sich über folgenden Link einen Adapter gelötet haben. Seite mit Bauanleitung: createState("Paradigma_Kollektor"); createState("Paradigma_Speichertemperatur"); createState("Paradigma_Solarvorlauf"); createState("Paradigma_Aussentemperatur"); createState("Paradigma_Solarrücklauf"); createState("Paradigma_Durchfluss"); createState("Paradigma_PWMPumpe"); createState("Paradigma_Tagesleistung"); createState("Paradigma_Gesamtleistung"); createState("Paradigma_Status"); createState("Paradigma_StatusText"); createState("Paradigma_Fehlercode"); createState("Paradigma_FehlercodeText"); const { Transform } = require("stream"); class PreambleParser extends Transform { /** * @param {Buffer} preamble * @param {number} payloadLength */ constructor(preamble, payloadLength) { super(); this.receiveBuffer = Buffer.allocUnsafe(0); this.preamble = preamble; this.payloadLength = payloadLength; } _transform(chunk, encoding, callback) { this.receiveBuffer = Buffer.concat([this.receiveBuffer, chunk]); while (this.receiveBuffer.length >= this.preamble.length) { // Check if the buffer starts with the preamble const preambleIndex = this.receiveBuffer.indexOf(this.preamble); if (preambleIndex === -1) { // not found, wait for the next chunk break; } // Skip bytes before the preamble this.receiveBuffer = skipBytes(this.receiveBuffer, preambleIndex); // Check if we still have enough data if ( this.receiveBuffer.length >= this.preamble.length + this.payloadLength ) { // Yes, emit it this.push( this.receiveBuffer.slice( this.preamble.length, this.preamble.length + this.payloadLength ) ); // And skip the bytes this.receiveBuffer = skipBytes( this.receiveBuffer, this.preamble.length + this.payloadLength ); } else { // no, wait until we do break; } } callback(); } } /** Skips the first n bytes of a buffer and returns the rest */ function skipBytes(buf, n) { return Buffer.from(buf.slice(n)); } // --- const parser = new PreambleParser( Buffer.from("fc3e2401", "hex"), // Start der Datenpakete 38 // Wie viele Bytes nach dem Start ausgewertet werden ); parser.on("data", (chunk) => { if (Date.now() - lastCheck < 30000) return; lastCheck = Date.now(); //console.log(chunk.toString("hex")); val = chunk.readUInt16LE(0) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Kollektor', val /10, true); val = chunk.readUInt16LE(2) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Speichertemperatur', val /10, true); val = chunk.readUInt16LE(4) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Solarvorlauf', val /10, true); val = chunk.readInt16LE(6) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Aussentemperatur', val /10, true); val = chunk.readUInt16LE(10) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Solarrücklauf', val /10, true); val = chunk.readUInt16LE(12) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Durchfluss', val /10, true); val = chunk.readUInt8(14) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_PWMPumpe', val /10, true); val = chunk.readUInt16LE(29) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Tagesleistung', val , true); val = chunk.readUInt16LE(32) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Gesamtleistung', val , true); val = chunk.readUInt8(17) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Status', val, true); switch(val) { case 0: setState('Paradigma_StatusText', 'Warten auf Sonne', true); break; case 1: setState('Paradigma_StatusText', 'Frostschutz', true); break; case 2: setState('Paradigma_StatusText', 'Anschieben', true); break; case 3: setState('Paradigma_StatusText', 'Einschaltverzögerung', true); break; case 4: setState('Paradigma_StatusText', 'erwärmt Speicher', true); break; case 5: setState('Paradigma_StatusText', 'Speicher voll', true); break; case 6: setState('Paradigma_StatusText', 'Kollektor überhitzt', true); break; case 7: setState('Paradigma_StatusText', 'Hand, Test oder Aus', true); break; case 8: setState('Paradigma_StatusText', 'Messung', true); break; default: setState('Paradigma_StatusText', val, true); } val = chunk.readUInt8(18) // liest eine 2-byte-Zahl ab Position 0 ohne Bytes zu tauschen setState('Paradigma_Fehlercode', val, true); switch(val) { case 0: setState('Paradigma_FehlercodeText', 'OK', true); break; case 1: setState('Paradigma_FehlercodeText', 'Kein Volumenstrom', true); break; case 2: setState('Paradigma_FehlercodeText', 'Luft in der Anlage', true); break; case 4: setState('Paradigma_FehlercodeText', 'Vor- u. Rücklauf vertauscht', true); break; case 5: setState('Paradigma_FehlercodeText', 'Zonenventil defekt', true); break; case 6: setState('Paradigma_FehlercodeText', 'Falsche Uhrzeit', true); break; case 7: setState('Paradigma_FehlercodeText', 'Druckabfall in der Anlage', true); break; case 9: setState('Paradigma_FehlercodeText', 'Falsche Hydraulik', true); break; case 10: setState('Paradigma_FehlercodeText', 'Rohrisolierung', true); break; case 11: setState('Paradigma_FehlercodeText', 'Stromversorgung n. konstant', true); break; case 12: setState('Paradigma_FehlercodeText', 'OLV defekt', true); break; case 13: setState('Paradigma_FehlercodeText', 'Zu wenig Volumenstrom', true); break; case 14: setState('Paradigma_FehlercodeText', 'Speicher unterkühlt durch Frostschutz', true); break; case 20: setState('Paradigma_FehlercodeText', 'Fühler Außentemperatur falsch montiert', true); break; case 21: setState('Paradigma_FehlercodeText', 'Ausfall Kollektorfühler', true); break; case 22: setState('Paradigma_FehlercodeText', 'Ausfall Fühler Solarrücklauf', true); break; case 23: setState('Paradigma_FehlercodeText', 'Störung Kollektrofühler', true); break; case 24: setState('Paradigma_FehlercodeText', 'Frostschutz', true); break; case 25: setState('Paradigma_FehlercodeText', 'Fühler TSA u. TAM vertauscht', true); break; case 26: setState('Paradigma_FehlercodeText', 'Ausfall Fühler Solarvorlauf', true); break; case 27: setState('Paradigma_FehlercodeText', 'Ausfall Fühler Außentemperatur', true); break; case 34: setState('Paradigma_FehlercodeText', 'Überhitzung Speicher 1', true); break; case 35: setState('Paradigma_FehlercodeText', 'Überhitzung Speicher 2', true); break; case 49: setState('Paradigma_FehlercodeText', 'Solarstation unterkühlt', true); break; case 50: setState('Paradigma_FehlercodeText', 'Kollektor eingefroren', true); break; default: setState('Paradigma_FehlercodeText', val, true); } }); let lastCheck = 0; // 0 sorgt dafür, dass gleich zu Beginn einmal ausgelesen wird const SerialPort = require('serialport'); // Port öffnen const port = new SerialPort('/dev/ttyUSB0'); port.pipe(parser); // Port bei Skriptende schließen: onStop(() => { port.close(); });

577

Online

32.7k

Users

82.5k

Topics

1.3m

Posts