Skip to content

Skripten / Logik

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

16.4k Themen 211.9k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    P
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @psrelax sagte in E3DC Hauskraftwerk steuern: Hier sollte nicht geladen werden, da kurz darauf der Preis fällt. Bin ja gespannt, ob da wirklich geladen wird. Jetzt wurde es geändert auf 01:30 Uhr, warum auch immer das so ist, dass vorher ein anderer Zeitraum geplant wird. :-)
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    AsgothianA
    Was spricht dagegen eine 'wachsende' csv Datei auf dem iobroker zu haben, in die du direkt per Skript die einzelnen datenpunkte hinein schreibst ? Das kannst du relativ einfach über ein JS machen (Blockly glaub ich inzwischen auch). Dann musst du nicht den Umweg über einen Messenger machen. Letztendlich setzt du an der stelle an wo du aktuell die Daten an Telegramm schickst. Statt dessen kannst du da direkt in eine Datei schreiben, auf die du dann per Web Interface vom ioBroker (Dateimanager) zugreifen kannst. An der Stelle hast du dann schon alle Daten. A.
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Cron aus Skript neu starten

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    333 Aufrufe
    CKMartensC
    Ich habe es jetzt mal mit einem Skript getestet. Der Shedule der bei Änderung des Zeitpunktes über einen Datenpunkt erstellt wird, wird zwar gestartet, aber der ursprüngliche Shedule bleibt bestehen und läuft weiter. Ich muss also mit clearSchedule den "alten" Schedule löschen.
  • Exec funktioniert in Blockly nicht [gelöst]

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    J
    ok, ich nehme alles zurück… Es funktioniert wieder. Dennoch will ich hier keinen verarschen oder die Zeit stehlen und ich hätte mir nicht die Mühe gemacht hier ins Forum zu schreiben wenn es vorher nicht geklappt hätte. Ich muss gerade eben unbeabsichtigt etwas "richtig" gemacht haben. Habe vor ein paar Tagen alles (rasp und ibroker) neu aufgesetzt und alle Skripte wieder in den Java Adapter importiert. [image: 9043_hauptskript.jpg] siehe hauptskript -> WOL hat nicht mehr funktioniert -> also ein eigenes skript erstellt und nur das "Blockly exec" eingefügt: [image: 9043_blockly.jpg] hat ebenso nicht funktioniert das gleiche in Java erstellt: [image: 9043_java.jpg] -> hat funktioniert Jetzt funktioniert das Blockly auch wieder und das Hauptskript ebenso… Habe zuvor alles probiert. Zweiten Java Adapter installiert/Befehl über LXterminal ausgeführt ob da ein Fehler ist/ alle Adapter neugestartet/rasp rebootet/etc/ssh neu aktiviert...(bastle jetzt schon etwas länger an dem Zeug) (der exec Haken war gesetzt) KEINE AHNUNG was das jetzt war Mir ist aufgefallen wenn man "leere" Blockly Skripte (die ich oftmals als virtuellen Schalter nutze) nach dem neu aufsetzen importiere das das kein Blockly mehr sind sondern ein JAVA. -> Das hat zur Folge das ein anderes Skript das mit diesem Skript verknüpft ist nicht mehr auf das Skript reagiert, d.h. man muss das "Objekt" neu zuordnen obwohl sich nichts ändert -> danach funktioniert es wieder. Eventuell hing es damit zusammen. Das Hauptskript habe ich ja nicht verändert und es hat vorher schon einige Zeit problemlos funktioniert! Trotzdem Danke!
  • [Blockly] owntracks - Zone true oder false

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    376 Aufrufe
    X
    Ich weiß zwar nicht direkt ob es eine Integration vom Owntracks Adapter zum Places Adapter gibt, aber ich persönlich nutze den Places Adapter für die Interpretation von Standortdaten, da der Adapter darauf ausgelegt ist aus diversten Quellen mit Daten gefüttert zu werden und selbst wenn sich die Datenquelle ändern sollte braucht man keine Scripts anzupassen. Der Places Adapter bietet die Datenpunkte als Boolean (true/false) für die definierten Zonen.
  • (gelöst) [Blockly] Lampe soll mitgeschaltet werden…

    Verschoben
    4
    2
    0 Stimmen
    4 Beiträge
    420 Aufrufe
    E
    Ha, vielen Dank, das hat geholfen, warum auch immer :D
  • Stromsparscript für Media

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    274 Aufrufe
    K
    siehste alles nicht so schwer, zumindest die einfach Sachen :D Bei mir heißt nur eine Steckdose Subwoofer ^^ ich habe keinen Broadlink. Das einzige bei dem ich mir nicht sicher bin ob du das stop timeout und timeout überhaupt brauchst. Eigentlich schaltest du ja deine Steckdose eh mit einer Zeitverzögerung.
  • Variable Zeitsteuerung?

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    411 Aufrufe
    A
    Mit den Hinweisen in viewtopic.php?f=21&t=11060 scheine ich auch per Blockly zu meinem Ziel zu kommen.
  • If changed then if true…

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    494 Aufrufe
    1
    Ok, danke! MfG
  • Skript arbeitet obwohl gelöscht

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    208 Aufrufe
    F
    Hallo Danke werde ich testen. Danke Fränki
  • Z.B. Xiaomi Cube - Werte an Datenpunkt

    Verschoben
    2
    2
    0 Stimmen
    2 Beiträge
    281 Aufrufe
    C
    Es funktionieren jetzt alle Scripte… Ich musste den Javascript Adapter neu starten... Auf dem RPI3 habe ich 25% Ram frei. Kann es an so etwas liegen? Node 8.14.0 NPN 6.4.1
  • [gelöst] Klingelscript Problem mit Phantom JS

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    261 Aufrufe
    ChaotC
    :oops: :oops: Ich bin manchmal einfach blind. Mit dem richtigen Pfad /opt/iobroker/node_modules/iobroker.phantomjs/picture.png klappt das auch. Zur Vollständigkeit das komplette Klingelscript: ! ```` var sperre = false; ! on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) { if(!sperre) { sperre = true; sendTo('phantomjs.0', 'send', { url: 'http://192.168.XXX.XXX:8765/picture/2/current/?_username=admin&_signature=5xxxxxxxxxx65eeb8e3d5935741934ad', output: 'picture.png', // default value width: 800, // default value height: 600, // default value timeout: 2000, // default value zoom: 1, // default value ! 'clip-top': 0, // default value 'clip-left': 0, // default value 'clip-width': 800, // default value is equal to width 'clip-height': 600, // default value is equal to height 'scroll-top': 0, // default value 'scroll-left': 0, // default value ! online: true // default value }, function (result) { if (result.error) { console.error(JSON.stringify(result.error)); } if (result.stderr) { console.error(result.stderr); } if (result.stdout) { console.log(result.stdout); } console.log(result.output); }); timeout = setTimeout(function () { sendTo("email", "send", { text: '', to: 'XXXXXX@gmail.com', subject: 'Klingel', attachments:[ {path: '/opt/iobroker/node_modules/iobroker.phantomjs/picture.png', cid: "file1"}, ] }); }, 5000); setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}'); // oder //setState("vis.0.control.instance", 'FFFFFFFF'); //setState("vis.0.control.data", 'DemoView'); //setState("vis.0.control.command", 'changeView'); // muss immer letzte sein // Nach 10 Sekunden, zeige wieder Start View setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}'); }, 60000); setState("tr-064.0.states.ring"/*ring*/, '**611, 15'); sendTo("pushover", "send", { message: 'Klingel', file: "/opt/iobroker/node_modules/iobroker.phantomjs/picture.png", sound: "" }); timeout = setTimeout(function () { setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Player.volume"/*volume*/, 90, true); }, 500); timeout = setTimeout(function () { setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Commands.speak"/*speak*/, 'Es ist jemand an der Tür'); }, 1000); timeout = setTimeout(function () { setState("alexa2.0.Echo-Devices.G2A0P30774060LLE.Player.volume"/*volume*/, 50, true); }, 1500); setTimeout(function() { sperre = false; }, 5000); } });
  • Beispiel: aktuelles Datum formatieren und ausgeben

    Verschoben
    14
    3
    1 Stimmen
    14 Beiträge
    24k Aufrufe
    R
    Ja, ist erst ab der JSONata 1.6.4 implementiert. Und die wird noch nicht in NR genutzt. Liegt also nicht am ioBroker.NR. Hab mal ein Issues auf Github hinterlassen https://github.com/node-red/node-red/issues/2023 Soll wohl ab NR 0.20 erfolgen. Kannst es natürlich auf der JSONata-Seite testen: http://docs.jsonata.org/date-time-functions#frommillis
  • Telegram Menü Übersicht

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    556 Aufrufe
    M
    Danke dir
  • Xml parsen die n-te

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    602 Aufrufe
    M
    oder und das weiss ich jetzt nicht genau var xml_data='blablub deine xml daten'; var xml_obj = new DOMParser().parseFromString(xml, "text/xml"); und dann die daten über die Nodes und getElement… laden....
  • Vbus funktioniert nicht, auslesen nicht möglich

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    213 Aufrufe
    Niemand hat geantwortet
  • Cannot find module 'csv-parse'

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    T
    Noch jemand eine Idee, wie ich das csv-parse Modul eingebunden bekomme? Habe sogar schon den Javascript-Adapter neu installiert, sodass nun alles sauber ist. csv-parse ist nur noch unter folgenden Verzeichnissen zu finden: /opt/iobroker/node_modules/iobroker.javascript/node_modules/csv-parse /opt/iobroker/node_modules/iobroker.javascript/node_modules/csv-parse/samples/fs_read.csv Dennoch kommt folgender Fehler: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/lib/../../csv-parse' Ich weiß nicht, was er da mit dem lib-Ordner machen will? Ich hoffe, einer weiß noch eine Lösung oder Versuche, die man noch machen könnte. :|
  • PHP Skript aus Ip-Symcon übernehmen? Wer kann mir helfen?

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    513 Aufrufe
    M
    Wenn du mir sagst was du vor hast, so das ich das verstehen kann, kann ich dir vielleicht helfen. Was willst du mit der Datei machen und wo sollen die Daten hin…. Das RegEx war ja schon fertig und von daher müsste ich jetzt wissen ob es in einem Intervall laufen soll oder ähnliches. Es ist schneller programmiert wenn ich sowas bekomme: Alle 5 Minuten: LogDatei letzte Zeile lesen 2 Beispiel Zeilen Daten auswerten und in ein Objekt speichern. Beispiel wie es nachher aussehen soll..... Ich kann mit normalen javascript nicht löschen ausser über exec und dann ist es systemabhängig ob rm oder del. Oder aber mit NodeJS und fs weiss aber nicht ob das dann überall läuft, mein nodejs server in iobroker ist auch sehr buggy Siehe: viewtopic.php?f=21&t=20296 Dann kann ich das auch umsetzen :)
  • Alle Geräte eines Ordner selektieren für eine for Schleife

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    520 Aufrufe
    M
    Damit das Script selber nicht blockiert es einfach in einen Timeout reinsetzen, und es wird ein separater Thread erstellt…. und der läuft dann parallel. durch das function return function werden eigene variablen erst..... setTimeout( (function(a_klemmen){ return function(){ // Kann auch funktionieren wenn das hier einzelnd ist..... aklemmen.each(function(a_id, a_i) { return function(){ var dsid = a_id.replace("My_Devices.0.Digitalstrom.Klemmen.", "") console.log(dsid); console.log(getState(a_id).val); try { console.log(SessionToken = ${sessiontoken}); request({url: https://${dssip}:${dssport}/json/device/getOutputValue?dsid=${dsid}&offset=0, headers: {Cookie: token=${sessiontoken}}}, function(error, response, body) { console.log(body); }); } catch (e) { console.error(e); } }})(id, i); // Bis hier } })(klemmen),200);
  • Jalousie Steuerung / Rolladensteuerung • Z-Wave

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    388 Aufrufe
    M
    Kein Schwein ruft mich an, keine Sau interessiert sich für mich :) Push
  • Blockly Vorlagensammlung (?)

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    6k Aufrufe
    P
    Hallo stephan2k, es gibt ein paar Skripte in der iobroker-Doku. Wenn ich dich richtig verstehe, möchtest du verschiedene Projekte in einem Thread sammeln. Das geht allerdings - nach meiner Erfahrung - schief. :( Erwartungsgemäß werden dann Fragen zum Projekt gestellt und beantwortet. Es wird im Thread praktisch weiterentwickelt. Das ist auch gut so. Wenn nun aber mehrere Projekte in einem Thread vorkommen, gibt es schnell Chaos. Manchmall klappt es aber dennoch ganz ordentlich: viewtopic.php?f=30&t=1860 Man kann die Forum-User nicht zwingen, aber ein Hinweis auf Ordnung geht immer: Neues Thema -> neuer Thread Allgemeinere Frage -> neuer Thread und bei bestehendem evtl. passenden Thread verlinken, um dort die Diskussion nicht zu stören In der Frage schon möglichst viele Suchbegriffe einbauen, damit man das später findet (in deinem Eröffnungspost fehlt da zB der Begriff "blockly"). Gruß Pix EDIT: Oh, paul war mal wieder schneller :)
  • Homematic sprechenden Name verwenden

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    251 Aufrufe
    M
    OK eric, hast recht, die Benamung kommt schon aus HM raus. Blöd, dass man dort jeden Channel einzeln benamen muss..

907

Online

32.5k

Benutzer

81.6k

Themen

1.3m

Beiträge