Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.5k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    paul53P
    @M1R0O [sagte]: lässt Blockly kein Runden auf 0 Nachkommastellen zu. Doch, dieser Block rundet kaufmännisch auf ganze Zahlen: [image: 1777033820333-blockly_temp.jpg]
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    hg6806H
    Danke für die Antworten. Der Adapter ist dafür etwas überdosiert, ist aber interessant, dass es sowas gibt. Das mit dem Zeitplan hatte ich mir auch schon überlegt, dachte es gibt was anderes oder besseres. Ich denke stündlich reicht in dem Fall.
  • Hilfe für Skripterstellung mit Node-RED

    955 13k
    955 Themen
    13k Beiträge
    mickymM
    @Tontechniker Man kann solche Filter aber auch OHNE neue Nodes zu installieren mit einfachen Standard-Switch Nodes realisieren: [image: 1776865319208-af3cab3c-2716-43f4-b7df-7f74e8bf051b-image.jpeg] ggf. einfach nochmal meinen alten Thread anschauen: https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered
  • Telegram Steuerung mit Pin Eingabe

    javascript blockly communication
    2
    0 Stimmen
    2 Beiträge
    364 Aufrufe
    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 Stimmen
    9 Beiträge
    887 Aufrufe
    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 Stimmen
    6 Beiträge
    638 Aufrufe
    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 Stimmen
    53 Beiträge
    7k Aufrufe
    G
    @AlCalzone Es ist vollbracht 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(); });
  • Problem mit Logik

    blockly
    15
    1
    0 Stimmen
    15 Beiträge
    384 Aufrufe
    J
    @surfer09 Der Grund warum man es vermeidet auf falsch zu prüfen, denn das muss dann auch extra eingetragen werden. Wahr wird immer ohne extra Angabe geptüft. Falsch wird somit durch nicht wahr ersetzt ;) Paul hat das ja so umgesetzt, wie ich es beschrieben hatte.
  • Wo liegt mein Fehler? Blinkskript

    blockly
    15
    1
    0 Stimmen
    15 Beiträge
    508 Aufrufe
    HomoranH
    @JB_Sullivan sagte in Wo liegt mein Fehler? Blinkskript: Ich dachte Uhrzeit/Datum ist auch ein Wert ist es auch, aber das wird nie true Falls Wert ist die Kurzform von Falls Wert = true
  • Bose Soundtouch steuern

    Verschoben
    286
    0 Stimmen
    286 Beiträge
    79k Aufrufe
    Stefan G. 0S
    Gibt es denn eine Möglichkeit mit dem Adapter auf den Eingang HDMI ARC umzuschalten? Über den Key PRODUCT unter "sources" kann ich leider nur auf HDMI 1 umschalten. Leider scheint @SwedishChef auch auf GitHub nicht mehr reinzuschauen.
  • Fehler: Cannot install npm packet: sshpass

    javascript
    2
    0 Stimmen
    2 Beiträge
    124 Aufrufe
    opossumO
    Hallo, antworte mir mal selber. Ich hatte das Paket sshpass in den Haupteinstellungen der Javascript-Instanz in der Rubrik "Zusätzliche npm-module" eingetragen. Habe das jetzt erst mal entfernt. Mal sehen, welches Script da jetzt meckert.
  • [Gelöst] Skript lässt sich nicht löschen.

    blockly
    13
    1
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    paul53P
    @technodj23 sagte: Das hat funktioniert! Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].
  • Scene rekursiv

    javascript scenes
    1
    0 Stimmen
    1 Beiträge
    181 Aufrufe
    Niemand hat geantwortet
  • MQTT Auswertung

    blockly
    1
    0 Stimmen
    1 Beiträge
    192 Aufrufe
    Niemand hat geantwortet
  • Blockly Script-Steuerung von Shelly 2.5 mit Enocean Tastern

    blockly
    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    G
    @MCU Ich habe jetzt eine noch einfachere Lösung für alle die hier mal drüber stolpern. Da der Shelly ne Strommessung integriert hat,kann man gsnz einfach sagen wenn shelly unter 10W, dann fahren, wenn darüber dann stoppen.
  • mit Variablen im Blockly rechnen?

    blockly
    2
    1
    0 Stimmen
    2 Beiträge
    417 Aufrufe
    paul53P
    @joachim-knape sagte: geht das im Bockly überhaupt? Ja, aber verwende besser einen Alias.
  • Smarter Adventskranz, Wochennummer in Logiken

    blockly
    11
    1
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    nik82N
    @paul53 Ah, vielen Dank, da wäre ich jetzt nicht drauf gekommen:-) Danke
  • [gelöst] Blockly funktioniert im gewählten Zeitraum nicht

    blockly
    5
    1
    0 Stimmen
    5 Beiträge
    525 Aufrufe
    I
    @crunchip Sorry, ich bin Anfänger und mir war nicht klar was ich da falsch hatte... @iKlaus Danke, jetzt hab ich es kapiert - mit einigen Tests zu einem Zeitplan wurde es mir klar :-) @Dr-Bakterius Danke, genau so habe ich es letztendlich aufgebaut. Nochmal Danke an alle! Grüße Markus
  • Cronjob - 1. Advent triggern?

    blockly javascript
    3
    0 Stimmen
    3 Beiträge
    234 Aufrufe
    nik82N
    @e-s sagte in Cronjob - 1. Advent triggern?: @nik82 Schau mal hier Cool, vielen Dank.
  • Skript teilweise ohne Funktion -

    blockly javascript
    10
    0 Stimmen
    10 Beiträge
    922 Aufrufe
    A
    @UncleSam bereits von einem dritten geschehen. https://github.com/UncleSamSwiss/ioBroker.loxone/issues/58
  • 0 Stimmen
    9 Beiträge
    3k Aufrufe
    E
    @Has3nb3inMH Hi, bei mir habe ich folgendes eingetragen: [image: 1606554587582-bildschirmfoto-2020-11-28-um-10.06.20.png]
  • YAHKA Farbumrechnung

    multimedia
    2
    0 Stimmen
    2 Beiträge
    313 Aufrufe
    R
    @Scheddy Hallo Scheddy, konntest du das Thema mittlerweile lösen? Ich habe die Saturation fix auf 100, so kann ich zumindest die Farbe etwas wechseln, es stimmt aber nicht mit dem Color-Picker zusammen.
  • One Time Passwort prüfen.

    security blockly
    3
    0 Stimmen
    3 Beiträge
    424 Aufrufe
    M
    @UncleSam Das Passwort generiere ich mit der App "OT Auth", hiermit lässt sich das generirte OTP sehr gut in die Zwischenablage übernehmen und danns päter mit den IOS Kurzbefehlen wieder verwenden. Der Algorithmus ist aber wohl mit dem Google Auth kompatibel.

566

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge