Skip to content

Skripten / Logik

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

16.6k Topics 213.8k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    OliverIOO
    @BertDerKleine Am besten zeigst du mal dein Script, dann kann man bessere Empfehlungen abgeben. Bitte auch mal schreiben warum du aufteilen möchtest obwohl es so funktioniert.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    KPTK
    Hat leider in ioBroker nicht funktioniert. Musste leider auf HomeAssistant umsteigen. Lokale Integration sehr einfach und voll funktionsfähig.
  • 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
  • Aktuellen Wert zyklisch in ein Verzeichnis schreiben

    javascript
    39
    0 Votes
    39 Posts
    4k Views
    L
    Wenn ich den Wert einfach nur runde, dann erscheint bei Standby des Speichers einfach nur 0. Die OpenWB stellt sich dann auf 0 Watt und Entladung ein. Die OpenWB ist so eingestellt, dass ein entladen des Speichers verhindert werden soll und lädt dann das Auto nicht. Habe die Rechnerei sogar noch um - 0,001 erweitert. Somit erscheint dann 1Watt Ladung und das Auto lädt. Die 1 Watt Verfälschung ist unproblematisch, da erst ab 1400 Watt Überschuss geladen wird. P.S.: Ich könnte wahrscheinlich auch einfach vom Datenpunkt Batterieladung 0,001 abziehen und erhalte das gleiche Ergebnis :grin: . Aber Hauptsache es funzt :+1:
  • [Vorlage] Stromverbrauch protokollieren (Tag, Woche, Monat, Quartal, Jahr)

    Moved
    148
    0 Votes
    148 Posts
    52k Views
    ?
    HI, eine Frage, wie gebe ich das Ablesedatum ein damit die Zähler ab dem Zeitpunkt von 0 anfangen? Danke Tobias
  • 0 Votes
    13 Posts
    1k Views
    Ralla66R
    Als String [image: 1559751579469-string.jpg] Da die Frage eh kommt, größe ,fett , kursiv oder Farbe usw. änderst du hier : :-) [image: 1559753240413-string_v2.jpg]
  • [gelöst] Kamera Script Problem

    blockly security
    5
    1
    0 Votes
    5 Posts
    420 Views
    A
    Hoffe ich darf hier den link zum Video posten das hab ich nachgebaut und dann nach meinen Bedürfnissen angepasst. https://www.youtube.com/watch?v=Tda3BIM1SUk&t=3s wenn du noch fragen hast kannst dich gerne melden.
  • Blockly- Mit Uhrzeiten Rechnen

    blockly monitoring javascript
    3
    1
    0 Votes
    3 Posts
    3k Views
    AtomicIXA
    Vielen Dank, aber ich glaube, das ist mir für das Ergebnis/Nutzen zu kompliziert.
  • [ gelöst ]Osram Plug in Script „Lichter zählen“ einfügen

    Moved
    12
    1
    0 Votes
    12 Posts
    1k Views
    M
    Hallo zusammen, ich versuche gerade die Anpassung für die Osram Steckdosen zu übernehmen. Irgendwie mag es bei mir aber nicht funktionieren. Kann jemand mal über die Anpassung schauen? var logging = true; var idAnzahlEin = 'javascript.0.Buero.Steckdose.Anzahl_ein', idAnzahl = 'javascript.0.Buero.Steckdose.Anzahl', idText = 'javascript.0.Buero.Steckdose.Text', idRaum = 'javascript.0.Buero.Steckdose.Raum', // <---- NEU idAnsage = 'javascript.0.Buero.Steckdose.Ansage'; createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter type: 'number', name: 'Anzahl aller Lichter', min: 0, def: 0, role: 'value' }); createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen type: 'number', name: 'Anzahl der eingeschalteten Lichter', min: 0, def: 0, role: 'value' }); createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen type: 'string', name: 'Eingeschaltete Lichter', desc: 'Namen der eingeschalteten Lichter', def: ' ', role: 'value' }); createState(idAnsage, { type: 'string', name: 'Eingeschaltete Lichter (Ansage)', desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)', def: ' ', role: 'value' }); createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU type: 'string', name: 'Räume mit eingeschalteten Lichter', desc: 'Namen der Räume, in denen Lichter eingeschaltet sind', def: ' ', role: 'value' }); /* ------------------------- Selektor Start ------------------------------------------------------*/ var cacheSelectorSwitch = $('state[id=*.Switch](functions="onbuerosocket")'); // Shelly var cacheSelectorOsram = $('state[id=*.available](functions="onbuerosocket")'); // Osram /* ------------------------- Selektor Ende ------------------------------------------------------*/ function checkDevices(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0 var anzahlLichterAn = 0; var anzahlLichter = 0; var textLichterAn = []; var textRaum = []; if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } /* -----------------------Schleife Start -----------------------------------------------------*/ if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } //osram// cacheSelectorOsram.each(function(id, i) { // Osram Plug var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; var devicename = name; var raumname = getObject(id, "rooms"); if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } if (status) { ++anzahlLichterAn; textLichterAn.push(devicename); textRaum.push(raumname.enumNames); } ++anzahlLichter; }); //shelly// cacheSelectorSwitch.each(function (id, i) { // Schleife für jedes gefundenen Element *.On im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(" Switch ON/OFF")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen) // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { /* if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } */ if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status // } // ENDE VK-Abfrage }); /* -----------------------Schleife Ende -----------------------------------------------------*/ // Array mit Lichternamen sortieren textLichterAn.sort(); textRaum.sort(); // <---- NEU // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben if (logging) log("Text: " + textLichterAn); if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn); // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS) setState(idText, textLichterAn.join(', ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht // setState(idRaum, textRaum.join(',<br>')); // Räume, in denen Licht brennt // <---- NEU setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU } /* ----------------- Trigger Start ------------------------------------------------------------*/ cacheSelectorSwitch.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat checkDevices(); }); /* ----------------- Trigger Ende ------------------------------------------------------------*/ function main() { setTimeout(function(){ if (logging) log('Auslöser Skriptstart'); checkDevices(); }, 2000); } main(); // Skriptstart-Auslöser // Aufbereitung für Ansage function strip_tags(data) { var rueckgabe = data.replace(/(&nbsp;|<([^>]+)>)/ig, " "); return(rueckgabe); } on(idText, function (obj) { var text = obj.state.val; text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter ausgeschaltet'; setState(idAnsage, text); }); [image: 1559586338927-enums-iobroker-2019-06-03-20-24-27-resized.png] [image: 1559586353617-objects-iobroker-2019-06-03-20-24-54-resized.png] Ich versuche das Script so anzupassen das nur die "Steckdosen" gezählt werden. Da ich mir für jeden Raum einzelnt eine Übersicht basteln möchte welche Steckdosen eingeschaltet sind. Darum gibt es mehrere Gewerke bei mir. Die Shellys werden erkannt und gezählt, die Osram leider nicht :(
  • Javascriptadapter neustart bei Fehler trotz Catch-Block

    heating javascript
    3
    0 Votes
    3 Posts
    406 Views
    Christof.KacC
    Hi, ich bin mir sicher, das Beispiel von dieser Homepage genommen zu haben - da ist ja auch das Paket her. Egal, Danke für den Tip. Jetzt lass ich das mal laufen und bin schon gespannt, ob es robust läuft. Bis dann Christof
  • Szenen "dimmen" für automatische Beleuchtungssteuerung

    javascript scenes
    6
    0 Votes
    6 Posts
    672 Views
    A
    Danke für Eure Beispiele! Rein Hue-basiert läuft das sicher perfekt so. Was aber, wenn noch eine Lampe (z.B. von einem Tasmota-Knoten) per MQTT gesteuert werden soll? Für die kann ich natürlich noch ein extra Blockly-Kommando einfügen, aber irgendwie fände ich es toll, wenn alle Lampen einfach in einer Gruppe wären und nur die Gruppe parametriert wird - egal ob Hue oder Homematic-Lampen oder ein sonstiges System. Denn ich plane eigene Lampen via ESP8266 einzubinden, die wären mit einer reinen HUE-Lösung aussen vor :-(
  • Script um SQL auszulesen

    Moved
    32
    0 Votes
    32 Posts
    10k Views
    H
    Hallo, habe leider mit js nocht nicht viel am hut, aber wie müsste es aussehen wenn ich einen datenbank abruf von einem gewissen datum haben will. Würde gerne einen wert aus der datenbank von einem bestimmten zeitstempel in eine variable hinterlegen. Hintergrund: würde gerne einen zähler, der den wert ja immer nur erhöht. gerne über eine eingabe auf der vis, einen bestimmten verbrauch ausgeben. Also sagen wir mal von datum dd.mm.jjjj bis datum dd.mm.jjjj so ausgeben das ich auch nur den verbrauchten wert von dem zeitraum ausgebe. Oder gibt es dafür eine elegantere lösung? Lg Hans.
  • Globale Variable

    Moved
    7
    0 Votes
    7 Posts
    8k Views
    A
    Hi, ich habe ein entgegengesetztes Problem: Um die Funktionsweise der globalen Variablen zu testen habe ich ein Skript angelegt, welches eine Variable true setzt, und diese als error im Log ausgibt. Obwohl dieses globale Skript nicht mehr läuft, und sogar wenn ich es lösche, wird bei jedem Ausführen eines anderen Skriptes die Logausgabe gemacht. :confused: Was hab ich da gebaut? :dizzy_face: EDIT: Hat sich erledigt, habe gerade den Host geupdatet. Jetzt läuft alles wieder normal.
  • 10 Sek Wartezeit bei Skript

    Moved
    10
    0 Votes
    10 Posts
    880 Views
    eumatsE
    @Matten Schau Dir mal setStateDelay an...
  • Error "Night" und "Night End" im Log

    javascript
    7
    0 Votes
    7 Posts
    797 Views
    T
    @paul53 Super werd ich testen. Dank dir
  • [gelöst] Änderung von Objekt inenrhalb eines Scripts (Blockly)

    blockly
    3
    0 Votes
    3 Posts
    213 Views
    jmeister79J
    @paul53 danke, das hab ich befürchtet. Ich habe mir jetzt so geholfen, dass ich ohne die boolsche arbeite und direkt beim allgemeinen zurücksetzen auf die untere grenze der hysterese schaue. Ich werde Zeitnah das script mit lokalen variablen in js schreiben bis dahin hilft das. LG Nils
  • 0 Votes
    1 Posts
    296 Views
    No one has replied
  • Hilfe: Letzte zahl in Blockly vergleichen [6,-48,-41]

    javascript blockly
    24
    0 Votes
    24 Posts
    2k Views
    C
    Vielen Dank ich musste das Zeichen nur umdrehen da ich ein - vor der Zahl habe. Nun bekomme ich auch wenn ich test auf true setze die Nachricht Dachfenster sind zu. Aber komischerweise bekomme ich das direkt 2 mal .. Alle anderen werte iben sind false. [image: 1559037971956-hmm.png]
  • JS Adapter Probleme - läuft zusätzlich als "Schattenprozess"?

    javascript
    5
    0 Votes
    5 Posts
    328 Views
    H
    Danke für die Info. Ich habe jetzt mal nachgesehen. Ich lasse das Backup tatsächlich im sog. "snapshot mode" laufen. Habe jetzt mal umgestellt auf "stop mode". In der Hilfe steht dazu: "It works by executing an orderly shutdown of the VM, and then runs a background Qemu process to backup the VM data. After the backup is started, the VM goes to full operation mode if it was previously running." Mal sehen, was es bringt.
  • IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted

    javascript
    6
    0 Votes
    6 Posts
    1k Views
    S
    @Schmeckm sagte in IOBroker - HTTP Post/GET ESP8266 und HTML_WEbFronted: Heisst es dann ich muss in der Url folgenden Code angeben Christian: http://192.168.178.20/con? Da fehlt noch der Parameter: rfc.toString(), true den musst Du noch rausfinden und anhängen. Gruß Christian
  • Waschmaschine plus Verbrauchskosten

    blockly monitoring
    3
    1
    0 Votes
    3 Posts
    568 Views
    RöstkartoffelR
    Am besten ist es auch, die Strom- und Leistungsaufnahme mittels History mitzuloggen, das erleichtert das Auswerten
  • (Gelöst) Ausgabewert für VIS umschreiben

    blockly javascript monitoring
    4
    0 Votes
    4 Posts
    434 Views
    M
    Hallo noch einmal, habe das 'Problemchen' jetzt selbst lösen können. War vielleicht zu trivial. Ich habe eine Variable definiert und per Skript gesteuert, die den Wert einfach umschreibt. Jetzt lese ich den variablen Wert und nicht den Systemwert aus. War doch kein Hexenwerk, bei einfacheren Logiken. Aber die nächste Frage wird bald kommen. LG, Martin
  • Variable aus Blockly in command fur Hue nutzen?

    Moved
    23
    1
    0 Votes
    23 Posts
    5k Views
    dslraserD
    @aleks-83 sagte in Variable aus Blockly in command fur Hue nutzen?: {"on":true,"b":0,"bri":0,"ct":2200,"g":0,"hue":0,"level":80,"r":0,"sat":194,"xy":[0.5072,0.4076],"colormode":"xy","transitiontime":50} Das wird bei mir ein "langsames" kräftiges blau {"b":0,"bri":0,"ct":2200,"g":0,"hue":0,"level":80,"r":0,"sat":194,"xy":[0.5072,0.4076],"colormode":"xy","transitiontime":50} und so wird es langsam ausgeschaltet {"b":0,"bri":0,"ct":2200,"g":0,"hue":0,"level":0,"r":0,"sat":194,"xy":[0.5072,0.4076],"colormode":"xy","transitiontime":50} Das "on":true oder false beim ausschalten habe ich aber mal entfernt, weil das ja eigentlich level regelt

288

Online

32.7k

Users

82.4k

Topics

1.3m

Posts