Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.3k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    T
    @Chrunchy sagte: @paul53 sagte: @Chrunchy [sagte]: Funktion createState in der JavaScript-Script-Engine (ab js-controller 6/7) als veraltet (deprecated) betrachtet und durch setObjectNotExists oder extendObject ersetzt. Wie kommst du darauf? Hatt das hier (https://forum.iobroker.net/topic/75919/createstate-deprecated) so verstanden. Das eine ist Adapterentwicklung das andere Javascript-Adapter - ich benutze in beiden "extendObject" - für nicht Adapterentwickler ist createStates() aber besser.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HumidorH
    @paul53 Danke, du triggerst eine Funktion Alarm1, die selbstständig alle 5min ausgeführt wird, außer der Trigger stoppt diese. [image: 1775796578011-bildschirmfoto-2026-04-10-um-06.49.28.png]
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Themen
    13k Beiträge
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • Arlo Cams per NodeRed steuern

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    4k Aufrufe
    L
    Hi, ich greife das Thema noch einmal auf. Es klappt ja Kameras in fhem zu integrieren. In IObroker könnte ich einen Snapshot machen, aber wie bekomme ich die Bilder in Vis, da sich immer wieder die URL zu dem snapshot ändert? Viele Grüße Detlef
  • Wenn/dann API Link öffnen

    blockly javascript
    17
    0 Stimmen
    17 Beiträge
    611 Aufrufe
    F
    quasi wie bei einer Siemens logo: eingang erkennt 3,3 volt unnd ich kann nen signalzustand auslesen :D war dann wohl nichts
  • Externe Skriptverwaltung -> API-Call für Skript-Upload?

    javascript
    4
    0 Stimmen
    4 Beiträge
    455 Aufrufe
    A
    Ich hatte noch 3.6.4 des JS-Adapters installiert - nach einem Update auf die neueste Version funktioniert das uploaden von Zipfiles nicht mehr. Auch nicht mit den direkt vorher mit der neuen Version generierten. Ist das so gewollt? Was erwartet der Upload-Dialog?
  • [Gelöst][Hilfe!] PIN Eingabe über Blockly

    blockly
    16
    0 Stimmen
    16 Beiträge
    1k 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
    568 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
    4k 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
    53k 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
    1k 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
    421 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
    1k 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
    420 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
    674 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
    10k 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
    952 Aufrufe
    eumatsE
    @Matten Schau Dir mal setStateDelay an...
  • Error "Night" und "Night End" im Log

    javascript
    7
    0 Stimmen
    7 Beiträge
    810 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
    222 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
    301 Aufrufe
    Niemand hat geantwortet

648

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge