Skip to content

Skripten / Logik

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

16.6k Topics 214.0k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    A
    @azzkikrboy sagte in E3DC Hauskraftwerk steuern: Jetzt stelle ich mir die Frage wie die beiden zusammen Arbeiten, besonders wenn es um die Batterieladung geht. Die beiden arbeiten nicht zusammen. Wenn du schnellladen aktivierst wird das Skript CC deaktiviert um EVCC nicht in die querer zu kommen. Bei allen anderen Ladeeinstellungen hat das Skript CC Vorrang, bedeutet Ladeschwelle hat Prio.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    B
    @Murphy-0 Wieder was dazu gelernt, dachte immer man soll die Akkus nur ab und zu zum kalibrieren mal ganz voll laden. Der Spannungsverlauf kurz vor erreichen der 3,5V sah bei mir ähnlich aus. Auch die Akku Temperaturen lagen auch in dem Bereich wie bei dir. Die hyperTmp lag so knapp unter 40°C. Muss ich mal beobachten, denke bis 40°C kann ich noch ohne Lüfter auskommen. Danke noch mal für deine super hilfreichen Rückmeldungen und die Unterstützung! Habe sehr viel dabei gelernt.
  • 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
  • Hilfe beim Auslesen eines Wertes (iCal)

    Moved
    42
    3
    0 Votes
    42 Posts
    8k Views
    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?

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

    Moved
    7
    1
    0 Votes
    7 Posts
    696 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
    286 Views
    No one has replied
  • Script für Türöffner

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

629

Online

32.7k

Users

82.5k

Topics

1.3m

Posts