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
    S
    @porty hast du HEMS und sowas deaktiviert? nicht das was dazwischen funkt.... auch die Device ID eineggeben? (Muss ja sonst würde die regelung nicht funktionieren.... [image: 1773589243921-598a01b2-677f-4e13-aec0-9287d2155e7a-image-resized.png] vielleicht auch mal, in der app (MQTT AUS) und einmal den Netzeingangs und Ausgangs-modus auswählen und jeweils dort 0 eingeben Auch vielleicht den Debug modus aktivieren (vielleicht reicht ja erstmal Info), ob da was bei raus kommt... Ich nutze inzwischen einen leichten bezug, finde die Regelung dann etwas besser: TARGET_W: 20, // Zielwert am Zähler (20 = leichter Bezug). Ich mache gleich mal oben meine aktuellste version rein, habe ein paar kleine Optimierungen eingebaut
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    Thomas BraunT
    @paul53 Eine KI hat mir folgendes geflüstert: Die Warnmeldung im ioBroker-Log zeigt an, dass ein boolean-Wert (true/false) an einen State geschrieben wird, der eigentlich einen number-Wert erwartet. Das passiert konkret beim State switchbot-hub.0.DC2BC51B4688.press. Ursache Laut der Dokumentation des Adapters: Der Adapter erstellt für SwitchBot-Geräte zwei States: press (für das Auslösen eines Drucks) und state (für On/Off). Wenn das Gerät im Press-Modus betrieben wird, ist der state-Wert nicht relevant, und der press-State sollte als boolean (true/false) interpretiert werden. Wenn das Gerät im Switch-Modus betrieben wird, sollte der press-State eigentlich als number (z.B. 0/1) interpretiert werden, um den Status korrekt widerzuspiegeln. Lösung Du hast zwei Möglichkeiten, um die Warnung zu beheben: State-Typ im ioBroker anpassen Gehe in die ioBroker-Objektverwaltung. Suche den State switchbot-hub.0.DC2BC51B4688.press. Ändere den common.type des States von number auf boolean. Speichere die Änderungen und starte den Adapter neu. Skript anpassen (falls du den State selbst setzt) Falls du in einem Skript (z.B. JavaScript) den State switchbot-hub.0.DC2BC51B4688.press setzt, passe den Code so an, dass er einen number-Wert (z.B. 1 für true, 0 für false) statt eines booleans verwendet: // Statt: setState("switchbot-hub.0.DC2BC51B4688.press", true); // Verwende: setState("switchbot-hub.0.DC2BC51B4688.press", 1); mache ich ja momentan, aber das muss ich bei einem Neustart ja immer wieder machen. Nervt... :-) Wie kann man denn 2) in einem Blockly verwenden? Oder muss ich dafür ein reines skript laufen lassen?
  • 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
  • Stromsparscript für Media

    Moved
    5
    0 Votes
    5 Posts
    275 Views
    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?

    Moved
    4
    0 Votes
    4 Posts
    448 Views
    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…

    Moved
    8
    0 Votes
    8 Posts
    621 Views
    1
    Ok, danke! MfG
  • Skript arbeitet obwohl gelöscht

    Moved
    3
    0 Votes
    3 Posts
    211 Views
    F
    Hallo Danke werde ich testen. Danke Fränki
  • Z.B. Xiaomi Cube - Werte an Datenpunkt

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

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

    Moved
    14
    3
    1 Votes
    14 Posts
    25k Views
    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

    Moved
    3
    0 Votes
    3 Posts
    565 Views
    M
    Danke dir
  • Xml parsen die n-te

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

    Moved
    1
    0 Votes
    1 Posts
    221 Views
    No one has replied
  • Cannot find module 'csv-parse'

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

    Moved
    5
    1
    0 Votes
    5 Posts
    583 Views
    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

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

    Moved
    3
    0 Votes
    3 Posts
    437 Views
    M
    Kein Schwein ruft mich an, keine Sau interessiert sich für mich :) Push
  • Blockly Vorlagensammlung (?)

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

    Moved
    3
    1
    0 Votes
    3 Posts
    252 Views
    M
    OK eric, hast recht, die Benamung kommt schon aus HM raus. Blöd, dass man dort jeden Channel einzeln benamen muss..
  • WRGB flackert

    Moved
    1
    1
    0 Votes
    1 Posts
    115 Views
    No one has replied
  • [JS] Readfile cached ?

    Moved
    4
    0 Votes
    4 Posts
    475 Views
    snadorS
    Hi, ich muss das Thema nochmal hochholen, denn auch ich habe den Effekt. Speichere ich eine JSON Datei im Adapter, dann wird diese korrekt in der Instanz abgelegt, also unter /iobroker-data/files/adaptername.0/. Ich kann mit readfile (aus der conn.js / wird z.B. im VIS Adapter verwendet) die JSON Datei auch lesen aber dann greift der Cache :-) Egal ob ich die Datei ändere / umbenenne oder sogar lösche - ich kann die Datei immer erfolgreich lesen. Nicht mal ein Adapter Neustart ändert das. Erst wenn ich ioBroker stoppe / starte bekomme ich beim lesen einen neuen State / Ergebnis. Hat jemand eine Idee? Ich weis nicht so recht wo ich weiter machen soll… Danke!
  • Installation Tradfri

    Moved
    4
    0 Votes
    4 Posts
    455 Views
    R
    @Homoran: Und warum unter node red? ` Siehste, das hab ich gar nicht gesehen, weil ich immer die aktiven Themen durchgehe! :lol: Ich denke mal, dass du das zum richtigen Thema verschieben kannst, du weißt ja, wie das geht! :D Enrico
  • Datenübertragung mit SFTP

    Moved
    1
    0 Votes
    1 Posts
    161 Views
    No one has replied

592

Online

32.7k

Users

82.5k

Topics

1.3m

Posts