Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.8k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    M
    @maxclaudi Hey, danke für Deine schnelle Antwort trotz Zeitmangels. Gerne etwas ausführlicher wenn mehr Zeit ist. Das 30min Intervall bestätigt sich. Wenn ich es richtig verstehe vermutest Du einen Temp-Schutzmechansimus? Dafür ist die Temp doch eigentlich nicht hoch genug. Bei den Batterien ist diese unter 30°. Die Spannung ist bei mir auch bei 3,3xV [image: 1786034104836-58dd895f-c947-45d3-86e8-101e117a87aa-image.jpeg] Zum Zeitpunkt des Screenshots zeigt er einen SoC von 85% an
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    W
    @paul53 Bombe! Vielen Dank! Gleich die erste Version passt perfekt. Möchte nur um 11 Uhr entscheiden ob es sinnvoll ist die Klima einzuschalten. Brauch das nur im Sommer, drum interessiert Winterzeit nicht. Vielen Dank Dir
  • Hilfe für Skripterstellung mit Node-RED

    963 13k
    963 Themen
    13k Beiträge
    A
    @Marc-Berg sagte: @ak68 sagte: Wie kann ich den Adapter manuell updaten ? Gar nicht, du müsstest warten, bis der Adapter hochgezogen wird. Alternativ den sun-position Node downgraden, oder benötigst du das Update fachlich? Danke, habe jetzt down-gegraded :(
  • Liste/Anzahl aller Elemente mit Rolle = battery.percent

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    277 Aufrufe
    Niemand hat geantwortet
  • Hilfe beim Auslesen eines Wertes (iCal)

    Verschoben
    42
    3
    0 Stimmen
    42 Beiträge
    9k Aufrufe
    E
    Das habe ich schon probiert. Dann zeigt er genau an, was auf dem Bild ist. Die Termine für heute UND für Morgen (was ja "1" ja ist). "0" eingeben stattdessen brachte auch nicht das ersehnte. Verstehe nicht warum man nicht im Adapter nur die heutigen Tage einstellen kann. :(
  • Gibt es einen einfachen Test, ob Skripte generell gehen?

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    405 Aufrufe
    padrinoP
    Hi, doch, das hatte ich. :( Vielen Dank für den Hinweis! Jetzt klappen schon einige Sachen :D - was aber sicher zu weiteren Fragen führt. :? CU, padrino
  • Wert aus javaScript an CCu2 senden

    Verschoben
    7
    1
    0 Stimmen
    7 Beiträge
    825 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
    311 Aufrufe
    Niemand hat geantwortet
  • Script für Türöffner

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k 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 :?: :?:
  • 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
    335 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
    1k 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
    259 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
    1k 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
    8k 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
    5k 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
    608 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 :-)

417

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge