Skip to content

Skripten / Logik

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

16.6k Themen 213.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    Pedder007P
    @Schimi Danke, läuft nun auch bei mir :-)
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    B
    @lesiflo Danke, wieder ein wertvoller Tipp! Ich bin einfach noch unerfahren mit der Steuerung von BKW mit Speicher aber so langsam werden mir die Zusammenhänge klarer dank der Unterstützung hier. Manchmal sieht man den Wald vor lauter Bäume nicht. Ich will die Akku-Entladung tagsüber begrenzen damit ich für die Nacht noch Kapazität für eine kleine Grundlasteinspeisung habe da ich festgestellt habe, dass der SF800Pro sonst in der Nacht offline geht und von selbst nicht mehr online geht.
  • 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
  • Wert aus javaScript an CCu2 senden

    Verschoben
    7
    1
    0 Stimmen
    7 Beiträge
    693 Aufrufe
    sigi234S
    Es funktioniert auch bei mir…........ehrlicherweise weis ich nicht so genau wie ich das hingebracht habe............ ;) [image: 2858_screenshot2__679_.png]
  • Iobroker startet immer mit sudo (nach Raspberry neustart)

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    285 Aufrufe
    Niemand hat geantwortet
  • Script für Türöffner

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    897 Aufrufe
    D
    Sicherheit ist gut offene Tür noch besser. Kann mir bitte jemand helfen? Morsen ist ein guter ansatz, nur wie setze ich es in einem Skript um :?: :cry: :?:
  • Script ausführen geht aufeinmal nicht mehr

    Verschoben
    12
    2
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    P
    Hab schon wieder ein Problem..nachdem ich mein Raspberry neustarte und iobroker automatisch startet kommt das Problem wieder.. Iobroker kann ich auch nur mit sudo stoppen ist das richtig? also wenn ich iobroker normal starte mit iobroker start ohne sudo dann geht alles. Wie kann ich das jetzt ändern das iobroker automatisch ohne sudo startet?
  • Script Homematic per ioBroker herunter fahren?

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    303 Aufrufe
    Niemand hat geantwortet
  • Variablen in Global mit Blockly?

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    paul53P
    @Michaelnorge: daß bei einem Neustart automatisch der Tagesbetrieb eingestellt ist? ` Im Skript (<u>nicht</u> unter global !) außerhalb von Triggern (Datenpunkt / Schedule) den Wert in den Sollwert-Datenpunkt schreiben. steuere Sollwert mit 20
  • Suche: JavaScript - Counter Verbrauch tageweise

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    906 Aufrufe
    paul53P
    Vorschlag (nicht getestet): const idPower = '...'; const idLaufzeit = 'Heizung1.Laufzeit_gestern'; createState(idLaufzeit, 0, {type: 'number', unit: 'min'}); // Datenpunkt für Laufzeit erzeugen var timer = null; var onTime = 0; on(idPower, function(dp) { if(dp.state.val > 100 && dp.oldState.val <= 100) { timer = setInterval(function() { onTime++; }, 1000); // Sekunden } if(dp.state.val <= 100 && dp.oldState.val > 100) clearInterval(timer); }); schedule('59 23 * * *', function() { setState(idLaufzeit, Math.round(onTime / 60), true); // Laufzeit in Minuten onTime = 0; });
  • Taster Sonoff

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    232 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Homeatic IP Alarm siren über Script steuern

    Verschoben
    18
    0 Stimmen
    18 Beiträge
    2k Aufrufe
    S
    Super so hat es geklappt. Alarmtröte dudelt schön, nur meine LED blinkt leider nicht, da waren die Lötpunkte aber auch echt enge. Vielen Dank für eure Hilfe :D
  • Zwischenwert mit Blockly

    Verschoben
    8
    1
    0 Stimmen
    8 Beiträge
    858 Aufrufe
    DutchmanD
    Variablen in ioBroker (objecte genannt) oder homematic brauchst du nur wen du die Variable außerhalb des Scripts sehen/abfragen möchtest. In diesem Fall reicht es wenn du die Variable im Script lässt, dafür gibt es einen Baustein. Möchtest du den Wert auch benutzen um zB in VIs an zu zeigen daß der Behälter voll ist erstellenä Dan ein object. (In blockly gibt es da auch einen Baustein für, object wird Dan unter JavaScript.0>object Name< erstellt) Sent from my iPhone using Tapatalk
  • Mit Blockly ein Adapter neustarten

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    4k Aufrufe
    J
    So Sigi, jetzt weiß ich endlich was Du meinst. Problem mit Deiner Antwort, es ist VIS und da habe ich noch überhaupt nix mit gemacht. Deshalb war das auch ein Rätsel was Du damit meinst.
  • [Beispiel]Skript errechnet Tage bis Termin

    Verschoben javascript template
    2
    1
    0 Stimmen
    2 Beiträge
    2k Aufrufe
    B
    Hallo, ich verwende dieses Script. // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird. // Ursprung: tempestas // Erweiterung: PicNic // http://forum.iobroker.net/viewtopic.php?f=21&t=3351&p=92282#p92282 //debug in Log ausgeben debug = true; // Anlegen JS State für VIS createState('javascript.0.muell.json', 0); // Array für Suchvariablen und Farbe des Müll-Icons var obj = { "Papiertonne": "darkblue"}; function muell(){ // Kalender auslesen (HTML Format) // ************************************************************************************** // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text // ************************************************************************************** var inhalt = getState("ical.0.data.html"/*HTML iCal table*/); // an deinen eigenen Kalender anpassen var inhaltString = inhalt.val.toString(); var inhaltStringReplace = inhaltString; var inhaltStringText; var i_search; // remove all inside SCRIPT and STYLE tags inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags inhaltStringReplace=inhaltStringReplace.replace(/ /gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, ""); // remove all else inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: inhaltStringReplace=inhaltStringReplace.replace(/ /gi," "); inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&"); inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"'); inhaltStringReplace=inhaltStringReplace.replace(/</gi,'<'); inhaltStringReplace=inhaltStringReplace.replace(/>/gi,'>'); if(debug) log(inhaltStringReplace); // n-ten Treffer finden function nthIndex(str, pat, n){ var L= str.length, i= -1; while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/wochentage/auf/deutsch/var/wochentag="['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'" ];/json/starten/muelljason="[" ;/schleife/zur/abarbeitung/des/arrays/object.keys(obj).foreach/(function/(val,/key)/","/trennung/der/daten/json./sollte/nur/eine/müllart/angegeben/sein,/dann/die/nächsten/drei/zewilen/auskommentieren/(key="">0) { muellJason += ","; } // Zuweisung der Farbe für das MüllIcon var iconColor = obj[val]; var muellIcon = " <svg class="icon dustbin &quot;+iconColor+&quot;" data-txt="dustbin@&quot;+iconColor+&quot;" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="35" height="35" viewBox="0 0 468 468" id="svg2996"><metadata id="metadata2998"> Created by potrace 1.8, written by Peter Selinger 2001-2007 <rdf:rdf> <cc:work rdf:about=""> <dc:format>image/svg+xml</dc:format> </cc:work> </rdf:rdf> </metadata></svg> "; // Position bestimmen var pos = inhaltStringReplace.indexOf( val, 1); if(debug) log("pos ist: "+pos); var inhaltStringText = inhaltStringReplace.substring((pos-13),pos-3); if(debug) log("Datum ist: "+inhaltStringText); nthIndex(inhaltStringText, ".", 1); var t_m = inhaltStringText.slice(0, i_search); var pos1 = i_search+1; if(debug) log("pos1: " +pos1 ); nthIndex(inhaltStringText, ".", 2); var m_m = inhaltStringText.slice(pos1, i_search); var pos2 = i_search+1; if(debug) log("pos2: " +pos2 ); var j_m = inhaltStringText.slice(pos2, inhaltStringText.len ); // Datum des Abholtages setzen um den Wochentag zu ermitteln var muelldate = new Date(j_m,m_m-1,t_m); // Hier kommt der Wochentag :-) var d = muelldate.getDay(); if(debug) log("Mülldate ist: "+wochentag[d]+", "+muelldate ); if(debug) log("Mülltag ist: "+t_m +" , " +m_m +" , " +j_m); // Datum heute ermitteln var today = new Date(); if(debug) log(today); //Tag ermitteln var t = today.getDate(); // Wochentag ermitteln zum testen var dd = today.getDay(); //Monat ermitteln var m = today.getMonth()+1; //Jahr ermitteln var j = today.getFullYear(); if(debug) log("Datum heute ist: "+wochentag[dd]+", "+t+m+j); // Berechnung Tagesdifferenzen var diff = 0; var tage = ""; var dim = DaysInMonth(m, j); // Tage des aktuellen Monats if(debug) log("Tage aktueller Monat: "+dim); if(j_m > j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat? diff = parseInt(dim) - parseInt(t) + parseInt(t_m); } else diff = parseInt(t_m) - parseInt(t); if(debug) log("Tage bis zum nächsten Müll: "+diff); if(!isNaN(diff)){ tage = diff } else { tage = "Heute"; } muellJason += "{\"Müllart\":\" "+val+"\",\"Tage\":\""+tage+"\"}"; // PASS DIR AN WIE DU WILLST: \"Ereignis\":\""+muellIcon+"\", \"Tag\":\""+wochentag[d]+"\",\"Datum\":\""+inhaltStringText+"\", }); // Ende forEach // json schließen muellJason += "]"; // und hier nun die Werte eintragen setState('javascript.0.muell.json', muellJason); log("Müllkalender aktualisiert!"); } schedule('30 5 * * *', function(){ // morgens um 5.30h wird aktualisiert muell(); }); // bei Start muell();</l){></br\></br\s\></style.*></script.*> Mein Jason sieht so aus. Heute Wertstoffhof geöffnet Heute Biotonne Morgen Wertstoffhof geöffnet Übermorgen Papiertonne In 5 Tagen Wertstoffhof geöffnet In einer Woche Wertstofftonne In einer Woche Wertstoffhof geöffnet Wie bekomme ich die Tage in das jason? Was mache ich falsch?
  • Runden in Blockly

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    7k Aufrufe
    S
    Funktioniert super so (in diesem Fall auf 3 Nachkomma) [image: 5988_bitmap.png]
  • [gelöst]Wie kann ich mcrypt in node-red benutzen?

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    T
    Ich habe herausgefunden wie es geht: :D Hier die Lösung, wie mcrypt (oder andere module) in node-red eingebunden werden können.Die Schritte: 1. installieren von mcrypt: cd /opt/iobroker/node-modules/iobroker.node-red npm install mcrypt 2. Anpassen der settings.js unter /opt/iobroker/iobroker-data/node-red Ganz am Ende mcrypt einfügen: ! functionGlobalContext: { ! // ! mcrypt:require("/opt/iobroker/node_modules/iobroker.node-red/node_modules/mcrypt") ! // os:require('os'), ! // bonescript:require('bonescript'), ! // arduino:require('duino') ! } 3. In der Function node wo mcrypt verwendet werden soll statt "require" mcrypt mit "global.get" referenzieren: var mcrypt = global.get('mcrypt'); Dann kann mcrypt ganz normal verwendet werden. z.B. zum Verschlüsseln: ! var mcrypt = global.get('mcrypt'); ! var key = " …hex-wert..."; ! var aeskey = new Buffer(key, 'hex'); ! var MCrypt = mcrypt.MCrypt; ! var Ecb = new MCrypt('rijndael-128', 'ecb'); ! Ecb.open(aeskey); ! var post = Ecb.encrypt(msg.payload).toString('base64'); ! msg.payload = post;
  • Sonnenprogramm

    Verschoben
    53
    1
    0 Stimmen
    53 Beiträge
    4k Aufrufe
    M
    Hi Paul, das war es glaube ich … zumindest kommt die warnung nicht mehr. Aber für einen Funktionstest war zu wenig Sonne. Zumidest sind die Rollos nicht wild rumgefahren, soweit alles gut... Vielen Dank :-)
  • Trigger mit Bedingung so möglich?

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    513 Aufrufe
    paul53P
    @bergjet: ich dachte vielleicht kann man auch einen bestimmten Wert triggern. ` Kann man in Javascript (valLe: 1). In Blockly ist man auf die Auswahl beschränkt. [image: 493_blockly_triggermodi.jpg]
  • Wert aus Google Assistant über IFTTT als Trigger in Szene

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    A
    Nun läuft es plötzlich…warum auch immer...es gibt stundenlang nicht... Hab übrigens einen Logikfehler festgestellt - in der Ausgabe des Applets von IFTTT habe anstatt $# nun $00# gemacht, da das Skript bei einstelligen Angaben immer den letzten Buchstaben mitgezogen hat und die Eingabe in das Rollladen-Objekt natürlich nicht zu lässig ist. Genauso muss ich das SKript auf die letzten drei Stellen erweitern, damit auch 100% als Angabe funktioniert. Danke auch wenn es nun von allein geklappt hat :-)
  • Abwesenheit per WLan - erst nach bestimmter Zeit?

    Verschoben
    12
    1
    0 Stimmen
    12 Beiträge
    936 Aufrufe
    L
    Versuchs mal mit meiner Lösung. Ich habs mal so getestet und funktioniert auch. Gesendet von meinem FRD-L09 mit Tapatalk
  • Alexa spricht nicht innerhalb eines timeout

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    607 Aufrufe
    bergjetB
    Hab die 1.0.0 drauf speak-volume eingestellt, und nun funktioniert es.
  • [gelöst] Anzeigefehler Blockly stop

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    407 Aufrufe
    bergjetB
    @paul53: Man muss erst ein Intervall erzeugen bevor man es stoppen kann. ` Danke

573

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge