Skip to content

Skripten / Logik

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

16.6k Topics 213.9k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Ergebnis war positiv heute Nacht. Er hat wie sonst auch ca. 2% verloren. Die Änderung am Script war doch nicht so einfach, weil er am unteren soc nicht abgeschaltet hat. Habe es bisschen geändert und hoffe das es so läuft.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    paul53P
    @andre1de sagte: Problemen mit dem Zeitintervall über Mitternacht Probleme mit der Zeitspanne über Mitternacht gibt es nur bei Verwendung von Astro-Zeiten.
  • 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
  • Wert aus javaScript an CCu2 senden

    Moved
    7
    1
    0 Votes
    7 Posts
    694 Views
    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)

    Moved
    1
    0 Votes
    1 Posts
    285 Views
    No one has replied
  • Script für Türöffner

    Moved
    6
    0 Votes
    6 Posts
    908 Views
    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

    Moved
    12
    2
    0 Votes
    12 Posts
    2k Views
    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?

    Moved
    1
    0 Votes
    1 Posts
    303 Views
    No one has replied
  • Variablen in Global mit Blockly?

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    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

    Moved
    8
    0 Votes
    8 Posts
    906 Views
    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

    Moved
    1
    0 Votes
    1 Posts
    232 Views
    No one has replied
  • [gelöst] Homeatic IP Alarm siren über Script steuern

    Moved
    18
    0 Votes
    18 Posts
    2k Views
    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

    Moved
    8
    1
    0 Votes
    8 Posts
    859 Views
    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

    Moved
    11
    0 Votes
    11 Posts
    4k Views
    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

    Moved javascript template
    2
    1
    0 Votes
    2 Posts
    2k Views
    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

    Moved
    6
    1
    0 Votes
    6 Posts
    7k Views
    S
    Funktioniert super so (in diesem Fall auf 3 Nachkomma) [image: 5988_bitmap.png]
  • [gelöst]Wie kann ich mcrypt in node-red benutzen?

    Moved
    10
    0 Votes
    10 Posts
    2k Views
    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

    Moved
    53
    1
    0 Votes
    53 Posts
    4k Views
    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?

    Moved
    4
    1
    0 Votes
    4 Posts
    514 Views
    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

    Moved
    9
    0 Votes
    9 Posts
    1k Views
    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?

    Moved
    12
    1
    0 Votes
    12 Posts
    937 Views
    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

    Moved
    5
    1
    0 Votes
    5 Posts
    607 Views
    bergjetB
    Hab die 1.0.0 drauf speak-volume eingestellt, und nun funktioniert es.
  • [gelöst] Anzeigefehler Blockly stop

    Moved
    3
    1
    0 Votes
    3 Posts
    407 Views
    bergjetB
    @paul53: Man muss erst ein Intervall erzeugen bevor man es stoppen kann. ` Danke

497

Online

32.7k

Users

82.5k

Topics

1.3m

Posts