Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.8k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    maxclaudiM
    @Daniel-8 Datenverkehr geloggt: App <> Gerät Cloud <> Gerät Wichtige Zeitpunkte gefiltert, entschlüsselt und analysiert. Windows-Konsolen-Programm ist fertig: zendureURLtool.exe Das Tool ist stabiler und schneller als die App :-) Credits für die genutzte Bluetooth-Bibliothek gehen an Henrik Blidh: https://github.com/hbldh/bleak Man füllt in der config.ini nur 3 Felder aus, speichert ab und los geht's mit Doppelklick auf "zendureURLtool.exe"... [image: 1785779136981-00.png] entweder zu lokalem Broker wechseln: [image: 1785779157871-01.png] oder zurück zur Cloud: [image: 1785779165583-02.png] geht alles sehr schnell. Selbst bei einem Hyper "ohne" stromlos machen. Nicht mal Trennung von BT am Rechner war nötig. Nur APP muss vollständig beendet sein. Am besten in der Zeit zusätzlich BT am Smartphone ausgeschaltet lassen. [image: 1785779990840-04.png] [image: 1785779205314-05.png] [image: 1785779218429-06.png] [image: 1785779228056-07.png] Bei einem Hyper habe ich für 3x IP wechseln nur ca. 2 min benötigt. Er war jedesmal sofort verbunden. Am längsten dauerte das Aufstehen, den Button zu drücken und zu warten, dass er im Kopplungsmodus ist. Es haben sich beim Analysieren noch mehr Wege geöffnet. Allerdings sind die für mich aktuell unnötig und stehen – wenn überhaupt – ganz hinten an.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    tiobbT
    @Homoran sagte: Genau das was @paul53 schreibt 😉 Dann für GANZ doofe 🫣😊 @Homoran sagte: Vor dem trigger muss "Setze luefter auf Wert von 'SET'" Gesetzt werden @paul53 sagte: @tiobb [image: 1785691373377-blockly_temp.jpg] Ich danke Euch! 👍👍👍
  • Hilfe für Skripterstellung mit Node-RED

    962 13k
    962 Themen
    13k Beiträge
    Marc BergM
    @Thomas-Braun sagte: In der Konfigurationsdatei von Node Red, also in der settings.js, kann durch hinzufügen der Zeitzone das Problem behoben werden. Wenn man den Adapter nutzt, werden Änderungen in der settings.js immer wieder überschrieben. Das bringt nichts. @taddy81 Was konkret ist denn das Problem? Lösen die inject Nodes falsch aus? Oder geht es nur um diese Meldung, bei der niemand weiß, woher sie kommt? @Taddy81 sagte: Auszug: 7/26/2026, 11:15:23 AMnode: debug 3msg.payload : string[24]
  • [Gelöst][Hilfe!] PIN Eingabe über Blockly

    blockly
    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    thewhoboxT
    @darkiop hey, das Skript ist nicht von mir ich habe es nur verbessert. Die Tasten Raute und stern werden momentan nicht benutzt.
  • Objekt Motion / Nomotion zu 1 oder 0

    javascript blockly
    21
    0 Stimmen
    21 Beiträge
    2k Aufrufe
    C
    @LausiD hehe macht ja nichts bin für jede änderung Dankbar. Super Adapter :) Was würde ich ohne den nur machen g
  • Jalousien - mehrere Bedingungen

    javascript
    7
    0 Stimmen
    7 Beiträge
    740 Aufrufe
    J
    @Fluffý So ist es und für den anderen Fall fügst dann noch ne falls sonst ein. Oder passt die Logik eben bisschen an. War auch nur ein Beispiel wie man das gegeneinander prüfen könnte.
  • Aktuellen Wert zyklisch in ein Verzeichnis schreiben

    javascript
    39
    0 Stimmen
    39 Beiträge
    5k Aufrufe
    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 . Aber Hauptsache es funzt
  • [Vorlage] Stromverbrauch protokollieren (Tag, Woche, Monat, Quartal, Jahr)

    Verschoben
    148
    0 Stimmen
    148 Beiträge
    58k Aufrufe
    ?
    HI, eine Frage, wie gebe ich das Ablesedatum ein damit die Zähler ab dem Zeitpunkt von 0 anfangen? Danke Tobias
  • Blockly Script welches Objekte zusammenfasst

    blockly ventilation climate monitoring
    13
    1
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    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 Stimmen
    5 Beiträge
    539 Aufrufe
    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 Stimmen
    3 Beiträge
    3k Aufrufe
    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

    Verschoben
    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    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 Stimmen
    3 Beiträge
    457 Aufrufe
    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 Stimmen
    6 Beiträge
    779 Aufrufe
    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

    Verschoben
    32
    0 Stimmen
    32 Beiträge
    11k Aufrufe
    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

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    8k Aufrufe
    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. Was hab ich da gebaut? EDIT: Hat sich erledigt, habe gerade den Host geupdatet. Jetzt läuft alles wieder normal.
  • 10 Sek Wartezeit bei Skript

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    eumatsE
    @Matten Schau Dir mal setStateDelay an...
  • Error "Night" und "Night End" im Log

    javascript
    7
    0 Stimmen
    7 Beiträge
    942 Aufrufe
    T
    @paul53 Super werd ich testen. Dank dir
  • [gelöst] Änderung von Objekt inenrhalb eines Scripts (Blockly)

    blockly
    3
    0 Stimmen
    3 Beiträge
    268 Aufrufe
    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 Stimmen
    1 Beiträge
    341 Aufrufe
    Niemand hat geantwortet
  • Hilfe: Letzte zahl in Blockly vergleichen [6,-48,-41]

    javascript blockly
    24
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    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 Stimmen
    5 Beiträge
    381 Aufrufe
    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 Stimmen
    6 Beiträge
    1k Aufrufe
    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

386

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge