Skip to content

Skripten / Logik

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

16.6k Topics 214.1k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    RoddiEFR
    Vielleicht noch hinzufügen das man die Alias ID nicht ändert sollte da sonst keine Daten im Dashboard von Grafana angezeigt werden. Ich habe mir einen "Wolf" gesucht warum ich keine Daten sehe da ich mir angewöhnt hatte immer Alias ID einzutragen. Natürlich wie immer auch hier gemacht zum Schreiben der Daten in die InfluxDB-1.8 , keine Daten in Grafana, den Alias gelöscht und nochmal probiert und siehe da es kamen Daten. Hat mich völlig verwirrt [image: 1774140557898-screenshot-2026-03-22-013953.png] Mfg.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    paul53P
    @LaBamba sagte: müsste dies nicht heißen, setze dauerhaft ein auf 0, damit die Pumpe bei unter 4 grad nicht läuft. Die Antwort findest du hier: [image: 1774129266281-blockly_temp.jpg] Ich habe dafür dauerAus verwendet, weil sich dauerEin nicht bei jeder Temperaturspanne ändert, sondern in einigen Fällen auf 15 Minuten bleibt. [image: 1774129588978-blockly_temp.jpg]
  • 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
  • Gelöst:Blockly: Addition 2er Variablen, stehe auf dem Schlauch

    Moved
    3
    1
    0 Votes
    3 Posts
    1k Views
    MatzebhvM
    Hi, der Wert kommt tatsächlich über den FHEM-Adapter als Text. Danke für den Hinweis! So geht das nun wie gewünscht: [image: 3514_blockly2.png] Matze
  • Schrankbeleuchtung

    Moved
    11
    0 Votes
    11 Posts
    1k Views
    CKMartensC
    Hab es jetzt wie paul53 mir empfohlen hat gemacht und heute früh hat es funktionert. Danke nochmals an alle. Carsten
  • Blockly, Radar, Alexa und Anwesenheitserkennung

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    MessiahsM
    Hallo Tom, für die Anwesenheitserkennung habe ich das AddOn "Radar" in ioBroker laufen. Sobald mein Handy in Reichweite ist, wird es somit von Radar erkannt (Bluetooth). In Radar kann für jedes Bluetooth-Gerät bereits einen Namen vergeben werden… also z.B. "Person1", deshalb wollte ich ungern weitere Variablen (Person1-Anwesend) erstellen. Ich habe es in JS wie folgt gelöst: function diffArray(arr1, arr2) { return arr1.concat(arr2).filter(function (val) { if (!(arr1.includes(val) && arr2.includes(val))) return val; }); } on({id: 'radar.0.whoHere', change: "ne"}, function (obj) { console.log('+++++++++ Anwesenheit +++++++++++ '); var newState = '', oldState ='', newStateArray = [], oldStateArray = [], changedPerson = '', sayString = "", delay=0; newState = (obj.newState.val ? obj.newState.val : ""); oldState = (obj.oldState.val ? obj.oldState.val : ""); console.log('newState: ' + newState); console.log('oldState: ' + oldState); if(newState.length>0){ newStateArray = (newState.split(", ") ? newState.split(", ") : newStateArray.push(newState) ); } if(oldState.length>0){ oldStateArray = (oldState.split(", ") ? oldState.split(", ") : oldStateArray.push(oldState) ); } // console.log('newStateArray.length: ' + newStateArray.length); // console.log('oldStateArray.length: ' + oldStateArray.length); changedPerson = diffArray(newStateArray, oldStateArray).toString(); changedPerson = changedPerson.replace(',',' und '); console.log('changedPerson: ' + changedPerson); if (newStateArray.length > oldStateArray.length){ // Person neu hinzugekommen sayString = "Willkommen zuhause " +changedPerson; delay =5000; } else { // Person hat den Bereich verlassen sayString = "Tschüss " + changedPerson; delay =0; } //Alexa ansteuern setState("alexa2.0.Echo-Devices.G000Jxxx.Commands.speak-volume"/*volume*/, 35); setStateDelayed("alexa2.0.Echo-Devices.G000xxx.Commands.speak"/*controlNext*/, sayString, delay, false); }); Grüße Markus Edit: code angepasst
  • Node Red Array in ioBroker nutzen

    Moved
    7
    0 Votes
    7 Posts
    12k Views
    A
    Hallo, vielen Dank für den Tip. Habe es jetzt mit dem Array hinbekommen. André
  • WOL Skript Fehler

    Moved
    7
    0 Votes
    7 Posts
    607 Views
    M
    @arteck: hast du auch die javainstanz kofiguriert ` nein, ging aber anscheinend auch ohne. danke trotzdem euch beiden
  • Blockly Anfänger möchte Rollos steuern Homematic Geräte

    Moved
    8
    1
    0 Votes
    8 Posts
    2k Views
    H
    @zakuma: Danke probiere ich mal so aus. Die Homematic Zentrale kann aber nur Tageszeit Sonnen auf/Untergang und dies ist mir zumindest bei Untergang eigentlich zu Früh. Hast schon recht das man die Grundfunktionen gut in der Zentrale nutzen kann, weiß aber nicht wann die Zentrale zu überladen ist. Man liest ja davon schon mal das zu viele Funktionen die Zentrale überladen deshalb wollte ich es direkt auslagern. ` Ich habe als eines der wenigen Scripte das Tageszeitenscript (such danach per Suchfunktion im Homematic-Forum) in der CCU laufen. Es befüllt eine Systemvariable mit den Werten Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend. Damit hast du genügend Zeitpunkte über den Tag verteilt, mit denen du arbeiten kannst. Dazu noch gewisse Verzögerungen in den Aktionen der Programme und fertig. Und was die Belastung der CCU betrifft, wirst du auch als Power-Anwender mit > 100 Geräten nicht an deren Grenzen kommen. Vorausgesetzt die von dir eingerichteten Programme arbeiten Funkhygienisch sauber und es gibt keine schlecht programmierten Scripte, die das System ausbremsen könnten. Gruß Manfred
  • Blockly 14 Tage timer

    Moved
    9
    0 Votes
    9 Posts
    1k Views
    A
    @Dutchman: Warum so kompliziert ? Jeden Tag laufen lassen und immer object + 1, Dan ne If wen object 13 für aus und setze auf null ` … wenn's auch einfach geht :-) Stimmt, so ist es eleganter.
  • Alle Unterobjekte abfragen

    Moved
    3
    0 Votes
    3 Posts
    911 Views
    P
    Oder mit regexp: https://github.com/ioBroker/ioBroker.ja ... some-state Scroll nach unten. Pix
  • [Vorlage] Denon Skript

    Moved
    141
    1
    0 Votes
    141 Posts
    34k Views
    MicM
    @djtale2003: Danke für den Tip. Das Script funktionert. Aber wie kann ich dort den Trigger auslesen? Und wie kann ich in meiner Homematic die Systemvariablen für den Inputkanal und Power binden? Mit dem "alten" Script hat das wundebar funktioniert. ` Welcher Trigger? Dieser Thread hier handelt nicht vom Denon-Adapter, daher empfehle ich Dir, einen neuen Thread aufzumachen mit Bezug auf den Denon-Adapter und möglichst genauer Fragestellung.
  • Homematic Ramp_time in blockly

    Moved
    1
    0 Votes
    1 Posts
    324 Views
    No one has replied
  • Umrechnung einer Variablen von Minuten in Stunden und Minuten

    Moved
    7
    0 Votes
    7 Posts
    2k Views
    W
    Ich wollte, wenn ich die Betriebsstunden über snips abfrage, das der Wert, der in der wago in Minuten eingetragen ist, umgerechnet ausgegeben wird.
  • Blockly Skript licht schalten

    Moved
    6
    0 Votes
    6 Posts
    2k Views
    B
    Hallo ihr zwei, Ich werde versuchen eure beiden Lösungsansätze in die Tat umzusetzen und Berichte euch anschließend. Vielen Dank für eure Unterstützung. Gesendet von meinem SM-A520F mit Tapatalk
  • Http-Befehl ausführen

    Moved
    5
    -1 Votes
    5 Posts
    2k Views
    BuZZyB
    var request = require("request"); request('http://192.168.178.78/test', function (error, response, body) { ..... hier dein Code um den body zu verarbeiten ..... }); Gruß
  • [gelöst] on Methode wird nicht ausgeführt

    Moved
    2
    0 Votes
    2 Posts
    768 Views
    P
    Hallo, ich empfehle dir, den langen ID-Namen in eine Konstante zu packen. Der ändert sich ja nicht und so kannst du den Code übersichtlicher machen und eine Fehlerquelle ausschließen. Denn ich glaube, hier liegt auch das Problem. Während createState() automatisch die Instanz des Javascript-Adapters auswählt, in der das Skript abgespeichert wurde, braucht on() den Adapternamen und die Instanz immer in der ID. const idLueften = "javascript." + instance + ".RaumklimaBerechnung.Wohnzimmer.Lueften"; createState(idLueften, false, { read: true, write: true, desc: "", type: "boolean", def: 0 }); schedule("* * * * *", function() { var ra = getState("xxx").val; var ri = getState("xxx").val; if (ri > (ra + 1)) { setState(idLueften, true); } if (ri < (ra)) { setState(idLueften, false); } }); //Telegram Nachicht senden on({id: idLueften, val: true}, function(obj) { console.log("Telegram Lüften versenden"); }); Gruß Pix PS: Oder ändere ergänze einfach deinen Code um die Instanz in der on()-Funktion (hier als Beispiel mit Instanz 0) ! //Telegram Nachicht senden on({id: "javascript.0.RaumklimaBerechnung.Wohnzimmer.Lueften", val: true}, function (obj) { console.log("Telegram Lüften versenden"); }); !
  • Blockly Variable mit Wert erzeugen

    Moved
    15
    1
    0 Votes
    15 Posts
    12k Views
    strikegunS
    Danke, das Wissen hat mir gefehlt! @umbm: Die eigentliche Funktion ist der Einzeiler-Block und über das Zahnrad links kannst du Parameter hinzufügen und benennen. Die Funktion selbst erstellst du dann über die 3 Punkte rechts im Block direkt als Javascript. Der große zusätzliche Block, der (erst) dann entsteht und im Blockly-Script eingefügt werden kann ist dann der Aufruf der eigentlichen Funktion mit Übergabe der Parameter. `
  • [Gelöst] Skript Lichtzählen verweigert Namen Homematic-Geräte

    Moved
    1
    0 Votes
    1 Posts
    273 Views
    No one has replied
  • Fhem adapter - auf Aliasname von obj zugreifen

    Moved
    5
    1
    0 Votes
    5 Posts
    423 Views
    paul53P
    @intershopper: Funktioniert ` Das Thema im Betreff des ersten Beitrags bitte als [gelöst] markieren.
  • Blocky: Teilerwert ermitteln und in Variable speichern =?

    Moved
    4
    0 Votes
    4 Posts
    649 Views
    Espace0401E
    Ich habe zu der genannten Art den Ferraris Zähler auszulesen auch mal eine Frage bzw. seit kurzem ein Problem. Mir wird unter Objecte/mqtt beim Stromzähler unter dem Reiter "Qualitätscode" device not connected angezeigt. Wenn ich den mqtt Stoppe und Starte, ist dieses Meldung für einige Zeit weg, kommt aber dann wieder. Das ESP Modul ist dabei jeder Zeit erreichbar. Jemand eine Idee woher das kommt? [image: 2622_bildschirmfoto_2018-11-04_um_19.46.07.png]
  • Rechenfehler?

    Moved Solved blockly
    4
    2
    0 Votes
    4 Posts
    2k Views
    I
    Kurz nach dem Absenden habe ich dann auch diese Erleuchtung gehabt. Der Wert von Dist_umgerechnet war so, wie er außerhalb stand, natürlich noch von der vorhergehenden Messung. Aber danke für euer schnelles Feedback! So funktioniert es jetzt: [image: 9586_javascript_-_iobroker3.png] Gruß ixy
  • Skript von Node Red triggern

    Moved
    2
    0 Votes
    2 Posts
    794 Views
    A
    Hallo, du solltest ein eigenes Objekt in ioBroker anlegen, z.B. unter Javascript.0 Dieses Objekt ist dann quasi dein "Eingabe-Objekt" für Blockly, d.h. eine Veränderung an diesem Objekt ist in Blockly dein Trigger. Mittels Node-Red schreibst Du dann einfach den gewünschten Wert in das Objekt. Blockly bekommt die Änderung mit und läuft los und kann dann natürlich auch den aktuellen Wert des Objekts weiterverwenden. Ich hoffe es ist klar was ich meine und ich hoffe dass ich richtig verstanden habe was du machen möchtest :-) Gruss Ralf

264

Online

32.7k

Users

82.5k

Topics

1.3m

Posts