Skip to content

Skripten / Logik

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

16.5k Themen 213.4k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    B
    Hi, Würde gerne meinen Solarflow 800 Pro mit 4 PV Modulen (gesamt ca. 1700 Wp) zur Null-Einspeisung mit iobroker und Tasmota smartmeter betreiben. Sollte das mit dem Script möglich sein?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    paul53P
    @Cephalopod sagte: Also "schlampig" Programmiert? Sieht so aus. Ich hätte die Button so programmiert: // NET USB Down if (id === adapter.namespace + '.Device.MediaDown' && state.val === true) { const new_val = 'NTCDOWN'; adapter.log.debug('new_val: ' + new_val); adapter.setState(adapter.namespace + '.Device.command', {val: new_val, ack: false}); }
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • [Skript] Philips TV steuern

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    7k Aufrufe
    AlCalzoneA
    => http://forum.iobroker.net/viewtopic.php?f=36&t=9299 Tester willkommen!
  • In welchem Script wird Schalter genutzt

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    646 Aufrufe
    OstfrieseUnterwegsO
    Ich hatte mal vor langer Zeit einen Erweiterungswunsch in Jira eingestellt. Ich hätte gerne die Möglichkeit bei jedem Objekt einfach feststellen zu können wo es benutzt wird. Also welche Subscriptions es gibt, ob es in irgendwelchen Scenes drin ist, Enums, Scripte usw. Ich weiß aber nicht, ob das irgendwie in Trello übertragen wurde.
  • [UMFRAGE] Wie organisiert ihr eure Skripts?

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    785 Aufrufe
    P
    Hallo, ich lass mal einen Screenshot sprechen: [image: 261_bildschirmfoto_2017-11-26_um_02.15.08.jpg] Es gibt Skripte, die nur eine kleine Sache erledigen und es gibt ganz komplexe Skripte, die zB via RegExp mehrere Objekte überwachen. Ich mag schon gern diese komplexen Dinger, die mit RegExp zB alle LOWBAT Datenpunkte oder so überwachen und gleich automatisch die richtigen Logs auswerfen. Leider sind die sehr schwer zu lesen und benötigen oft so viele Kommentar- und Erklärtextzeilen, dass man auch gleich einfachen Code auf mehrere Skripte verteilen könnte. Es gibt also alle Variationen (nach Raum, nach Gewerk, nach Funktion, …). Chaos mit System eben :lol: Pix
  • [gelöst] ioBroker Werte werden nicht in Scripte übernommen

    Verschoben
    5
    3
    0 Stimmen
    5 Beiträge
    737 Aufrufe
    L
    Hallo zusammen, erstmal danke für die Antworten. Ich habe mir das Ganze nochmal angeschaut, da der Fehler doch noch da zu sein schien. Es war am Ende aber ganz trivial… Ich Idiot habe auf die falschen Objektpunkte getriggert und in einem anderen Script einen Fehler in meiner Berechnung gehabt. Beides zusammen hat mich dann glauben lassen, dass in Skripten die Werte aus dem Objektbaum nicht berücksichtigt werden. Ich habe jetzt auch die Scripte nach meinen Vorstellungen sortiert, ohne Probleme. Gruß Larry
  • Probleme mit Astro-Funktion

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    3k Aufrufe
    S
    Hi! In dem ersten Beitrag hatte ich dieses Skript schon mal angeführt. Insgesamt sieht es bei mir so aus: schedule({astro: "sunset", shift: 0}, function () { setState("hm-rpc.0.XXX.1.STATE", true); //Lichtschlauch am Spieltrum setState("hm-rpc.0.XXX.1.STATE", true); //Lichtschläuche an der Magnolie log('Abenddämmerung - Außenbeleuchtung wird eingeschaltet'); sendTo("system.adapter.pushover.0",'Abenddämmerung - Außenbeleuchtung wird eingeschaltet'); }); Das andere Skript speichert inzwischen sauber die Zeiten in die angelegte Variablen. Aber dieses hier löst nicht aus. Habe zum Testen das pushover aktiviert.
  • Konvertierung von Werten

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    R
    Hier mal ein Beispiel: [image: 2216_berechnen.jpg] Für "steuere Objekt" musst du noch ein Objekt anlegen. Dann bei der Berechnung das gleiche Objekt auswählen (bei dir LEVEL) wie im Trigger. Danach wird dann bei jeder Änderung des Ursprungsobjektes die Berechnung ausgeführt. Was ich jetzt nicht weiß, wie das bei Javaskript mit Punkt- und Strichrechnung ist. Musst du dir ausprobieren. :D Enrico
  • Mehrere Trigger fuer eine bestimmte Zeit abfangen (z.B. Sturmklingeln) (Blockly)

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    3k Aufrufe
    N
    Danke, ich wollte auch nur sicher sein. Nur nicht, dass es Grundsaetzlich anders sein soll, ich gewoehne mir das an, und hinterher wundere ich mich, warum die Haelfte nicht funktioniert oder sowas. Administration ist mir nicht fremd, aber Programmieren ist einfach doch sehr neu fuer mich, da will ich nicht gleich bei den grundsaetzlichen Sachen mir Fehler angewoehnen…
  • Anfänger Frage: Wie ein bash script mit Alexa verbinden?

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    623 Aufrufe
    DutchmanD
    @NyanCat: So, falls jemand anders noch das Problem haben sollte, ich habs geschafft. Habe mit Blocky jetzt erst mal einen testscript zusammengestellt. (siehe Bild) Bitte sagen, falls jemand da noch ne elegantere Lösung kennt. Danke und Grüße. ` Sieht schon ok aus so, mit anderen Worten: abhängig von der Variable schickst du das nötige Kommando per Konsolen Befehl –----------------------- Send from mobile device
  • Rollladen Script mit Sunrise/Sunset und zusätzlicher Bedingung

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    L
    mensch was eine komplexe logik, aber ich habs verstanden mit deiner Hilfe, Danke! :) naja eigentlich nicht komplex, aber da muss man erstmal drauf kommen wenn man das nicht tag für tag programmiert :) Ich habs mal versucht selbst um die abendliche Funktion zu erweitern! Habs jetzt so mal ans Laufen gebracht und bin gespannt obs klappt :) // Datenpunkt-IDs const idAuto = 'Dummyschalter.0.Automation.Rolloautomatik'; // Dummyschalter für Rolladenautomatik const idWinter = 'Dummyschalter.0.Automation.Rollo_winter'; // Dummyschalter für Winterbetrieb const idWinterRauf = 'scene.0.Rollo_hoch'; // Szene Rolladen rauf im Winter const idSommerRauf = 'scene.0.Rollo_hoch'; // Szene Rolladen rauf im Sommer const idWinterZu = 'scene.0.Rollo_winter_runter'; // Szene Rolladen runter im Winter const idSommerZu = 'scene.0.Rollo_sommer_runter'; // Szene Rolladen runter im Sommer // Variablen werden bei Skriptstart initialisiert var auto = getState(idAuto).val; var winter = getState(idWinter).val; var tag = isAstroDay(); var morgens = compareTime('6:30', '8:00', 'between'); var abends = compareTime('17:00', '21:50', 'between'); function Rollosrauf() { if(auto) { if(winter) setState(idWinterRauf, true); else setState(idSommerRauf, true); } } function Rollosrunter() { if(auto) { if(winter) setState(idWinterZu, true); else setState(idSommerZu, true); } } schedule('30 6 * * *', function() { morgens = true; if(tag) Rollosrauf(); }); schedule('0 8 * * *', function() { morgens = false; if(!tag) Rollosrauf(); }); schedule('0 17 * * *', function() { abends = true; if(!tag) Rollosrunter(); }); schedule('50 21 * * *', function() { abends = false; if(tag) Rollosrunter(); }); schedule({astro: 'sunrise'}, function () { tag = true; if(morgens) Rollosrauf(); }); schedule({astro: 'sunset'}, function () { tag = false; if(abends) Rollosrunter(); }); on(idAuto, function(dp) { auto = dp.state.val; }); on(idWinter, function(dp) { winter = dp.state.val; });
  • [ VORLAGE ] Nächste X Termine anzeigen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    996 Aufrufe
    Niemand hat geantwortet
  • Schleifen und Timeouts

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    590 Aufrufe
    AlCalzoneA
    Im Prinzip kannst du das fast so machen wie du geschrieben hast - aber die Schleife ist humbug. Aktuell schaltest du nach 2 Minuten die Lampe 6x aus und beendest das Intervall sofort. Stattdessen brauchst du eine Variable, die du vor dem 2-Minuten-Intervall auf 0 setzt und in jedem Intervalldurchlauf um 1 erhöhst. Ist diese gleich 6, Licht ausschalten und Intervall beenden. Oder du benutzt Dutch's Vorschlag: Funktion "Licht aus" (damit du den Schaltvorgang nur 1x definieren musst) Timer A mit 2 Minuten Verzögerung => "Licht aus" aufrufen, Timer B stoppen. Timer B mit 12 Minuten Verzögerung => "Licht aus" aufrufen. Bei Trigger: Wenn Timer laufen, diese stoppen. Dann Timer A/B starten.
  • Frage zu JS Code (Neuling kenn sich noch nicht so aus)

    Verschoben
    21
    0 Stimmen
    21 Beiträge
    2k Aufrufe
    P
    Hallo, hab das mal schnell im Online-Editor geschrieben. Das sollte auch gehen und nutzt RegExp. Als Beispiel und Denkanstoß debug kann man weglassen (natürlich dann auch die Logzeile) Einzeilige Kommentare mit // beginnen, mehrzeilige Kommentare in /* und */ einschließen Hinweis: in der if-Abfrage ist das Ausrufezeichen genutzt. Das ist die Kurzschreibweise für die Abfrage auf false. Grundsätzlich gilt ja: wenn mindestens ein Gerät auf true, dann anwesend. Wenn alle Geräte auf false, dann abwesend. /* Andrea und Christian Handy auf Anwesenheit prüfen Regexp auf radar.0.Christian_Tablet.here und radar.0.Andrea_Handy.here */ var debug = true; // Bei Änderung on(/^radar\.[0-9]\.*here$/, function (obj) { // Triggert bei Wertänderung if (debug) log('Anwesenheitserkennung: ' + obj.common.name + ' auf ' + obj.state.val + ' gesetzt ' >; if (obj.state.val) setState("hm-rega.0.950", true); // wenn ein Trigger true, dann anwesend else { if (!getState('radar.0.Andrea_Handy.here').val && !getState('radar.0.Christian_Tablet.here').val) setState("hm-rega.0.950", false); // wenn jetzt beide false dann abwesend } }); // bei Skriptstart if (getState('radar.0.Andrea_Handy.here').val || getState('radar.0.Christian_Tablet.here').val) setState("hm-rega.0.950", true); else setState("hm-rega.0.950", false); Ach, mit der Vorschau Funktion im Forum-Editor kann man den Text nochmal prüfen und ggf. Schreibfehler finden :-D Gruß Pix
  • [Script] Abfrage Wertänderung ?

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    807 Aufrufe
    C
    Ah jetzt ja :) Dann passt das doch und ich brauche einfach ein zweites was dann beim ausschalten triggert also wenn die watt absinken. Danke! LG Michael
  • [FRAGE] Balkengrafik mit javascript über simple-api

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    464 Aufrufe
    Niemand hat geantwortet
  • Bri Wert bei Philips Hue

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    M
    Guten Morgen, dank der vorangegangenen Hinweise konnte ich feststellen das es etwas mit den Variablen zu tun hat. Im Vorsystem habe ich zu besseren Erkennbarkeit die Variablen auf ein deutsches: ein und aus umgestellt. Diese Variablen werden als String über mqtt versendet. Ich sehe dass auch so unter Objekte (siehe Anhang). Mein Script sieht derzeit so aus wie im 2ten Bild im Anhang, aber es läuft nicht, nur die Fehlermeldung kommt. Ist da noch was im MQTT-Teil verkehrt? Ich tappe völlig im dunkeln! Danke für Eure Zeit! Gruß Marko 4195_mqtt-hue_3.jpg 4195_mqtt-hue_4.jpg
  • Farbe aus einen Bild auslesen

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    T
    …Danke euch beiden. Beides sehr hilfreich! ! ```` ! var Jimp = require("jimp"); var pixel; var RGB; var pixel_rgb; var red_value; var green_value; var blue_value; ! //Return as RGB ;-) //######################################## Jimp.read("E:/test.jpg", function (err, image) { pixel = image.getPixelColor(100,100); RGB = Jimp.intToRGBA(pixel); pixel_rgb = JSON.stringify(RGB); red_value = RGB['r']; green_value = RGB['g']; blue_value = RGB['b']; console.log(pixel_rgb); console.log(red_value); console.log(green_value); console.log(blue_value); //Return as HEX //######################################## function padStart(source, targetLength,padString) { targetLength = targetLength>>0; //floor if number or convert non-number to 0; padString = String(padString || ' '); if (source.length > targetLength) { return source; } else { targetLength = targetLength - source.length; if (targetLength > padString.length) { padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed } return padString.slice(0,targetLength) + String(source); } } ! console.log('#' + padStart(pixel.toString(16), 8)); }); ! ```` …..wenn es noch jemand benötigt! Grüße, Torsten
  • [Gelöst] Fragen zu Blockly

    Verschoben
    67
    1
    0 Stimmen
    67 Beiträge
    9k Aufrufe
    S
    @rantanplan: Schau mal hier für Ideen. http://forum.iobroker.net/viewtopic.php … 4&start=20 Grüße ` Danke den Tipp. Damit hast Du mir weitergeholfen. Habe jetzt die Woche abends das Bewässerungsprogramm fertiggestellt. Bei über 15 Grad wird jetzt 3 Tage die Woche bewässert in Abhängigkeit der Regenmenge und der Menge die durch die Bewässerung in den Boden kommt. Ein Riesenskript. :D Danke nochmal. Grüße, Stefan
  • [gelöst] JavaScript: gesetzte setStateDelayed abfragen

    Verschoben
    23
    0 Stimmen
    23 Beiträge
    5k Aufrufe
    htreckslerH
    Damit, also mit dem Verstehen des "ack" tu ich mich echt verdammt schwer. Vielleicht kann mir das jemand anhand eines Beispiels erklären? Was ich bisher glaube/vermute Ich setze über ein Script, sagen wir mal, einen Schalter der CCU auf true. In dem Moment ist ack = false. Wenn die CCU den Befehl jetzt bestätigt setzt die CCU den Wert auf ack=true. Daran könnte ich dann erkennen das der Befehl erfolgreich war. Ist das so?
  • [gelöst]Datum in Backupskript

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    462 Aufrufe
    K
    Google konnte mir dann doch weiterhelfen #Datum definieren datum=`date +%Y_%m_%d` #Backup kopieren scp /opt/iobroker/backups/$datum* admin@192.168.1.11:xxxxxxx/xxxxxxx/xxxxxx
  • [Problem] Berechnungen mit Variablen, warum klappt das nicht?

    Verschoben
    24
    0 Stimmen
    24 Beiträge
    4k Aufrufe
    AlCalzoneA
    @Homoran: Und ein Einsteiger erwartet natürlich, dass Arbeitsschritte nacheinander abgearbeitet werden und man im dritten Schritt auf das Ergebnis vom ersten Schritt zugreifen kann. ` Die Erwartung kann ich nachvollziehen. Dennoch (und das sollte Einsteigern verständlich gemacht werden) sollten States nicht als Variablenersatz gesehen werden, da der Rattenschwanz dahinter zu groß ist (DB-Aktualisierung, mögliche UI-Aktualisierung, Skript-Trigger, etc…). Das erwartete Verhalten, das du beschreibst, ist mit Skript-Variablen gegeben. Dafür sind sie da und dafür sollten sie benutzt werden. Das hat nichts mit "nicht schön" zu tun. Zwischenergebnisse von Rechnungen sollten in Variablen landen, nicht in States. States sind gedacht für etwas langlebigere Werte mit Bedeutung. Jedes System hat Grenzen innerhalb derer man arbeiten soll/muss. Klare Regeln wie States sind für Eingabewerte (wie Sensordaten) und Endergebnisse von Berechnungen Variablen sind für Zwischenwerte verstehen auch Anfänger, wenn man es entsprechend kommuniziert. Das ursprüngliche Problem vom TE ist für mit von der Kategorie "Bist du dir sicher, dass du das wirklich machen willst? Ich glaube nicht!"

484

Online

32.6k

Benutzer

82.3k

Themen

1.3m

Beiträge