Skip to content

Skripten / Logik

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

16.6k Topics 213.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    A
    @azzkikrboy Habe den Timer Aufruf Solcast in der Version 1.6.9 noch mal abgesichert.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    B
    @redbull2906 Ich würde sagen, dass man sich da nicht selbst kümmern muss, das sollte das BMS des Akkus regeln, so ist zumindest meine Sicht der Dinge.
  • 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
  • Remote Ruhezustand

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    I
    Vielen dank für den Tipp, es funkoniert nun einwandfrei !
  • Hilfe fürScript mit SQL

    Moved
    5
    1
    0 Votes
    5 Posts
    1k Views
    D
    @Thisoft: Kommst Du damit weiter? ` Super Danke Glaube ja, habe momentan wenig Zeit, Antwort kommt dann mal ;) muss jetzt nur noch durch das Thema Zeit durchlesen, zudsammennehmen meines Datums und der Zeit. Dann sollte es hinhauen.
  • 0 Votes
    3 Posts
    865 Views
    T
    Ich habe versucht einen neuen Enum anzulegen. [image: 3348_2017-09-03_21_29_24-iobroker.admin.png] [image: 3348_2017-09-03_21_29_38-iobroker.admin.png] Bei den Objekten fehlt aber die Auswahl. [image: 3348_2017-09-03_21_26_55-iobroker.admin.png] Außerdem wird alles in Kleinbuchstaben umgewandelt :(
  • [gelöst] Fadingzeit von HUE Lampen verlängern?

    Moved
    18
    1
    0 Votes
    18 Posts
    3k Views
    R
    Hab nur Ccu2, aber virtuelle Tasten gibts da ja auch. Schneller weiß ich nicht [emoji848][emoji6] Gesendet von iPad mit Tapatalk
  • Dynamische Event-Registrierung

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    T
    Ich habe das Skript noch weiter angepasst. Jetzt läuft es :) Für Interessierte: ! Das Skript speichert in der Variablen "LichterAn" ein Array mit den IDs der Lichter. Wird ein Licht ausgeschaltet, wird die ID aus der Liste entfernt. ! Mit "javascript.0.LichterAn.length" kann man die Anzahl der Lichter abfragen. ! "enum.functions.${funcLight}" ersetzen durch andere Werte natürlich möglich ;-) ! ```` // Skript zum prüfen ob Lichter an sind und einen EventHandler bei allen Lichtern registrieren. // Bei Änderung eines Lichts, wird die Variable 'javascript.0.LichterAn' geändert ! log("Rooms" + JSON.stringify(getObject("enum.functions.${funcLight}"))); ! createState('LichterAn', { name: 'Lichter an', desc: 'Lichter die an sind' }); ! var lightsOn = []; ! function filterValues(value) { return value != this; } ! function processObject (v, i, ar) { var state = getState(v); if (state.val === "null" || state.val === null) { setState(v, 0); log(v + ", State: false gesetzt"); log(v + ", State: " + getState(v).val); } else { log(v + ", State: " + state.val); if (state.val || state.val === 1) { lightsOn.push(v); } } setState('javascript.0.LichterAn', lightsOn); on({id: v, change: 'ne'}, function(obj) { var status = getState(v).val; var objList = getState('javascript.0.LichterAn', lightsOn); if (objList.val === null) { objList.val = []; } if (status) { log(v + ": an"); objList.val.push(v); setState('javascript.0.LichterAn', objList); } else { log (v + ": aus"); var list2 = objList.val.filter(filterValues, v); objList.val = list2; if (list2.length === 0) { objList.val = []; } setState('javascript.0.LichterAn', objList); } }); ! } ! var objects = getObject("enum.functions.${funcLight}").common.members; objects.forEach(processObject);
  • Blockly Dimmer

    Moved
    8
    1
    0 Votes
    8 Posts
    2k Views
    T
    Ein Neustart von iobroker hat geholfen. Hätteich vor Stunden mal machen sollen :evil:
  • Datei auf Raspberry Pi löschen

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    B
    Habe es jetzt anders gelöst und zwar: > exec('rm /tmp/screenshots/1.png'); aber denoch wäre Interessant, wo mein Fehler da war.
  • Generelle Frage Objekt aufbau

    Moved
    2
    0 Votes
    2 Posts
    925 Views
    AlCalzoneA
    Schau mal hier, das dürfte einige deiner Fragen beantworten: https://developer.mozilla.org/en-US/doc … pt/Objects Ansonsten gibt es in der neuesten JS-Version (noch nicht überall vollständig unterstützt) "richtige" Klassen: https://developer.mozilla.org/de/docs/W ... ce/Klassen
  • [Problem] blockly: Harmony Status auslesen

    Moved
    3
    2
    0 Votes
    3 Posts
    674 Views
    E
    Ja, hatte ich schon versucht: [image: 3415_blockly3.jpg] Leider ohne Erfolg…
  • Javacript Absturz bei HTML

    Moved
    4
    0 Votes
    4 Posts
    746 Views
    Mr. BurnsM
    Hi, > request(html).on ('error', function (e) { console.error (e);}); Funktoniert…bzw. der adapter stürzt nicht mehr ab. Eine Fehlermeldung wird dennoch produziert: > javascript.0 2017-08-29 13:33:01.133 error script.js.Gartentor_oeffnen: Error: Parse Error > Steht in den Skripten wirklich ' anstelle einem Anführungszeichen? Wenn ja dann ist das der Grund! Das verstehe ich nicht. ' steht doch nicht in meinem Script. Den verlinkten Thread hab ich noch nicht ganz verstanden. ` > "HTTP/1.1 200 OK" "Content-Type: text/html" "Connection: close" "" ` …sollte in den Homeduino code? muss ich mir noch einmal ansehen. Gruß
  • [Frage] Blockly: alle Sonoslautsprecher in Schleife ansprechen

    Moved
    8
    0 Votes
    8 Posts
    2k Views
    R
    Hallo BBTown, hallo rantanplan, vielen Dank für Eure Ausdauer mit meinem Problem. Die Lösungen sind sehr gut, aber wieder wenig flexibel. Eventuell ist das ja sowieso "to much", was ich mir da vorgenommen habe und mehrere statische Scripte mit dedizierten Schaltern in VIS sind besser. Ich komme die nächsten Tage nur sporadisch dazu, weiter rumzuprobieren. Eventuell hat ja in der Zwischenzeit noch jemand eine Idee, für etwas flexibles. Denn eine sauber programmierte Schleife könnte man zur Sicherheit auch zweimal durchlaufen, oder auch eine weitere Schleife anschließen, die prüft, ob das Zusammenschalten funktioniert hat. Ich stelle wieder fest (das gab es auch schon gelegentlich in der originalen Sonos App), dass beim Gruppieren eine oder zwei Boxen "vergessen" werden und dann außerhalb der Party-Gruppe bleiben. Und ebenso beim Gruppierung aufheben: manchmal bleiben zwei Boxen gruppiert und man muss sie ein zweites mal ent-gruppieren. So ist es derzeit bei mir auch beim Nutzen der Lösung aus dem Szenen-HowTo (Step 2). Wenn man dann aber beim Entgruppieren die Favorites-set setzt, spielt die Box (bekanntermaßen) sofort los. Da das Gruppieren und Entgruppieren teilweise mehrere Sekunden dauert (ich frage mich manchmal: nur bei mir? und: ich wollte deshalb sowieso mal den Sonos Support kontaktieren), sollte man eh etwas abwarten, damit die jeweilige Aktion beim Sonos wirklich ausgeführt wurde, bevor man eine Zweite startet. Z.B. wenn ich Abends, wenn die Kinder schon im Bett sind, die Gruppierung aller Zimmer (ich habe in insgesamt 7 Zimmern jeweils eine Sonos-Box stehen) aufhebe und die Favorites-set für die morgendlichen Wecker setzte - während die Entgruppierung noch nicht fertig ist - spielen die Boxen bei den schlafenden Kindern ja einfach los. :-( VG Peter
  • NodeRed Serielle Schnittstelle von UTF8 -> ASCII ???

    Moved
    18
    1
    0 Votes
    18 Posts
    3k Views
    M
    Hallo, ich habe jetzt einen WR per RS232 angeklemmt und umgestellt. Mit 'Screen' kommen die Daten im Klartext rüber: 00.00.0000 05:39:30 4 499.6 3.15 1573 23 512 50 1414 50 00.00.0000 05:39:40 4 499.6 3.14 1568 239.8 5.90 1410 50 mit NodeRed erhalte ich wieder diese kryptischen Zeichen. Ich gehe mal davon aus, dass irgendwas mit Node-Red nicht stimmt. Hat da einer eine Idee? Gruß Marco
  • Anfänger Frage zu Schleife mit Timeout/Interval

    Moved
    11
    0 Votes
    11 Posts
    2k Views
    P
    @AlCalzone: @ple: Besteht da auch die Möglichkeit die erzeugten Timer irgendwie abzubrechen? ` Da müsstest du alle Timer in ein Array packen und die dann zum Abbrechen nutzen: var timers = []; // Erstellen: for (var i=0; i<5; i++) { timers.push(setTimeout(saveImage, i*3000)); } // abbrechen: while (timers.length > 0) { clearTimeout(timers.pop()); } ```` ` Eh, ja, guck ich mir nach dem Urlaub an ;-) Danke
  • WR Diehl Platinum RS485 auslesen.

    Moved
    1
    0 Votes
    1 Posts
    808 Views
    No one has replied
  • Bilder/Snapshots von ftp in Vis und Benachrichtigung verarbeiten

    Moved
    2
    0 Votes
    2 Posts
    995 Views
    BuZZyB
    Aber auch so gut wie jede Kamera hat eine URL wo man ein aktuelles Bild erhält.. Somit kannst du es auch einfach direkt mit ioBroker abrufen und auf die Platte speichern - ohne FTP Server. Da muss man auch nur von Kamera zu Kamera die URL anpassen. :) Gruß
  • Script und Anbindung im VIS

    Moved
    7
    0 Votes
    7 Posts
    4k Views
    paul53P
    @pix: Durch Einfügen von Punkten im Namen kannst du eine Ordnerstruktur bauen. Z.B. Objektname = "javascript.0.Ordner.Unterodner.Datenpunkt" ` Genauer: createState('Ordner.Unterordner.Datenpunkt', Init-Wert, { type: 'boolean', read: true, write: false }); unter der JS-Instanz 0 erzeugt eine Datenpunkt mit dem Namen "Ordner.Unterordner.Datenpunkt" und der ID "javascript.0.Ordner.Unterodner.Datenpunkt".
  • 0 Votes
    5 Posts
    1k Views
    D
    Knutsch ich danke dir vielmals. ich hatte es so ähnlich leihen haft versucht. Mit dementsprechenden nicht erfolg ^^ vor allem auch noch mit Fehler Antwort ist das Cool ^^ Danke createState('LedringPi2ALAN', false, { type: 'boolean', read: true, write: true }); on({id: 'LedringPi2ALAN', val: true}, function(dp) { exec('python3 /home/pi/codes/ledring.py ALAN', function(err, stderr, stdout) { if(err) log('Fehler Pythonstart: ' + stderr, 'error'); else log('Ergebnis: ' + stdout); setState(dp.id, false); }); });
  • [gelöst]_Blockly Script - Fehlermeldung im Log

    Moved
    53
    1
    0 Votes
    53 Posts
    8k Views
    BBTownB
    @BBTown: @rantanplan: @BBTown: Das ist Hintergrund meiner "Log-Level" Philosophie und Argumentation. 8-) Wir bleibe trotzdem Freunde! :D 8-) Aber 100%ig :lol: ` ich kann ja deine Sorge bzgl. zusätzlichem support bei unbedachten Einstellungen/Änderungen gut verstehen !!!
  • Status von Aufzählung in JS Regelmäßig abfragen

    Moved
    4
    2
    0 Votes
    4 Posts
    2k Views
    N
    Und hier noch mein halbfertiger Code für die Nachwelt ;) Mein Schädel brummt - reicht für heute :lol: createState('Fensterkontakt.Offen.Anzahl', 0); createState('Fensterkontakt.Offen.Text', ''); createState('Fensterkontakt.Gekippt.Anzahl', 0); createState('Fensterkontakt.Gekippt.Text', ''); var fensterkontakt = $('state(functions="fensterkontakt")'); setInterval(function () { var AnzahlOffen = 0; var TextOffen = 'Folgende Fenster sind offen: '; var AnzahlGekippt = 0; var TextGekippt = 'Folgende Fenster sind gekippt: '; fensterkontakt.each(function(id) { // 0 = Geschlossen // 1 = Offen // 2 = Gekippt var val = getState(id).val; var obj = getObject(id); if(val > 0) { if(val == 1) { AnzahlOffen++; TextOffen = TextOffen + obj.common.name + ', '; } else if(val == 2) { AnzahlGekippt++; TextGekippt = TextGekippt + obj.common.name + ', '; } } }); setState("Fensterkontakt.Offen.Anzahl", AnzahlOffen); setState("Fensterkontakt.Offen.Text", TextOffen.substring(0, TextOffen.length - 2)); setState("Fensterkontakt.Gekippt.Anzahl", AnzahlGekippt); setState("Fensterkontakt.Gekippt.Text", TextGekippt.substring(0, TextGekippt.length - 2)); }, 1000);
  • JSON File Auswerten

    Moved
    12
    0 Votes
    12 Posts
    3k Views
    dietlmanD
    @ALLE Vielen Dank für eure Hilfe. Funktioniert perfekt jetzt, hab wieder etwas dazugelernt :-) LG Duke

602

Online

32.7k

Users

82.3k

Topics

1.3m

Posts