Skip to content

Skripten / Logik

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

16.6k Themen 213.8k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    K
    Hui, da muß ich das Thema nochmal aufwärmen oder eher erweitern. Kann ich denn auch verschwindende Nachrichten generieren ? Ich habe was vom Parameter "expired_time" gehört aber noch kein funktionierendes Script gefunden. Wie geht das? MfG
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    Murphy 0M
    Du loggst dich mit Adapter in der Zendure Cloud ein und holst von dort die Werte. Den Key bekommst du in der App. Unten auf Profil und dann auf Authorisierungs Cloud Schlüssel. Das hat mit Offline Bezrieb erst mal nix zu tun. In diesem Modus müsst ihr beachten, dass alle Energieprofile in der App deaktiviert sind.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    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
  • yahaka soll homeatic PRESS_SHORT machen

    communication
    6
    0 Stimmen
    6 Beiträge
    598 Aufrufe
    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 Stimmen
    2 Beiträge
    236 Aufrufe
    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 Stimmen
    3 Beiträge
    141 Aufrufe
    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 Stimmen
    4 Beiträge
    2k Aufrufe
    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 Stimmen
    22 Beiträge
    1k Aufrufe
    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

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    3k Aufrufe
    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 Stimmen
    4 Beiträge
    324 Aufrufe
    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 Stimmen
    5 Beiträge
    675 Aufrufe
    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 Stimmen
    1 Beiträge
    104 Aufrufe
    Niemand hat geantwortet
  • Blockly: Retriggerbare Monoflop mit TimeOut (A)

    blockly
    3
    1
    0 Stimmen
    3 Beiträge
    393 Aufrufe
    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

    Verschoben
    7
    2
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    arteckA
    @apollon77 tuts immer noch nicht...
  • mit Blockly Variablen Ansagen lassen über Alexa

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

    javascript
    1
    0 Stimmen
    1 Beiträge
    284 Aufrufe
    Niemand hat geantwortet
  • Gelöst: TopApp Widget

    javascript
    1
    1
    0 Stimmen
    1 Beiträge
    128 Aufrufe
    Niemand hat geantwortet
  • Telegram Steuerung mit Pin Eingabe

    javascript blockly communication
    2
    0 Stimmen
    2 Beiträge
    359 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
    821 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
    627 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 :+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(); });
  • Problem mit Logik

    blockly
    15
    1
    0 Stimmen
    15 Beiträge
    367 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
    499 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

401

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge