Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k 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
    S
    Ich habe die neuste (müsste 2.0.1 sein) und keine Probleme
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @emil70 sagte: Das ist mein Netzwerk zu Hause. Dann musst du die IPs anpassen. Diese IPs sind reserviert und dürfen nicht in privaten Netzen verwendet werden. Beim Aufruf einer 192.168.x.y weiss der Router dass das eine private IP ist und sucht bei dir zu Hause. Nimmst du aber 125.123.x.y sucht der Router im Internet bei Chinanet.
  • Hilfe für Skripterstellung mit Node-RED

    962 13k
    962 Themen
    13k Beiträge
    Thomas BraunT
    @Taddy81 Haste denn jetzt mal in die Settings geschaut und da deine Zeitzone eingetragen?
  • [GELÖST] - Temperatur soll Heizung (Smart Plug) regeln...

    17
    1
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    M
    @silbaer Okay, ich habe das gerade auch mal im Handbuch überflogen. Hört sich recht hilfreich an :) @Cinimod Okay, danke. Aber ja, das scheint wohl erst einmal unbrauchbar zu sein. War nur ein Gedanke, den ich hatte .
  • Momentanverbrauch auf 0 setzen nach 1 min

    10
    1
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    S
    @jschmied Ich mache etwas ähnliches mit dem Stromverbrauch. Da wird auch der aktuelle Zählerstand genommen. Immer wenn sich der ändert, nehme ich den aktuellen Wert und ziehe den Vorigen Zählerstand ab. Dann hole ich mir den Zeitstamp der letzten Änderung des vorigen Wertes und ziehe den von dem Timestamp des aktuellen Wertes ab. Dann speichere ich den aktuellen Wert als vorigen Wert. Mit den beiden Differenzwerten habe ich den "Momentan"-Verbrauch. Bei dieser Art der Berechnung hast du immer das Problem, dass du nur in die Vergangenheit schauen kannst, d.h. den Zustand "kein Verbrauch" kannst du nicht zuverlässig feststellen. Ich glaube ich würde an deiner Stelle das Script für den m³ counter so ändern, das nach einer gewissen Zeit der Wert auf jeden Fall aktualisiert wird. Dann kannst du oberes Shema verwenden um den Momentanverbrauch zu errechnen. Schlägt der Timer zu und der Wert hat sich nicht geändert ist die Differenz 0 und der Momentanverbrauch dann auch. Doof ist dann nur, das beim nächsten mal hochzählen wahrscheinlich ein zu hoher Momentanverbrauch angezeigt wird. Da musst du wahrscheinlich ein bisschen mit den Zeiten spielen.
  • [Gelöst] Wert in dyn. schedule nicht vorhanden

    javascript
    2
    0 Stimmen
    2 Beiträge
    313 Aufrufe
    PeoplesP
    Für die, die es interessiert ;-) Habe es gelöst bekommen aber durch eine Änderung im Script (2 Funktionen), vielleicht braucht es mal jemand: In der ersten Funktion werden die schedules erstellt und übergeben an eine zweite Funktion dann die aktuelle Zeit beim Auslösen des Schedule-Befehls async function scheduleDeviceStates(){ try { for(var i = 0; i < devices.length; i++) { await clearExistingSchedules(devices[i].deviceName); if(getState(instanz + pfad0 + devices[i].deviceName + '.onTime1').val != 'OFF'){ deviceSchedules[devices[i].deviceName + '.onTime1'] = schedule({hour: getState(instanz + pfad0 + devices[i].deviceName + '.onTime1').val.split(':')[0], minute: getState(instanz + pfad0 + devices[i].deviceName + '.onTime1').val.split(':')[1]}, function (deviceID) { switchDevicesByTime(new Date().getHours() +':'+ new Date().getMinutes(),'onTime1'); }); deviceSchedules[devices[i].deviceName + '.offTime1'] = schedule({hour: getState(instanz + pfad0 + devices[i].deviceName + '.offTime1').val.split(':')[0], minute: getState(instanz + pfad0 + devices[i].deviceName + '.offTime1').val.split(':')[1]}, function () { switchDevicesByTime(new Date().getHours() +':'+ new Date().getMinutes(),'offTime1'); }); } if(getState(instanz + pfad0 + devices[i].deviceName + '.onTime2').val != 'OFF'){ deviceSchedules[devices[i].deviceName + '.onTime2'] = schedule({hour: getState(instanz + pfad0 + devices[i].deviceName + '.onTime2').val.split(':')[0], minute: getState(instanz + pfad0 + devices[i].deviceName + '.onTime2').val.split(':')[1]}, function () { switchDevicesByTime(new Date().getHours() +':'+ new Date().getMinutes(),'onTime2'); }); deviceSchedules[devices[i].deviceName + '.offTime2'] = schedule({hour: getState(instanz + pfad0 + devices[i].deviceName + '.offTime2').val.split(':')[0], minute: getState(instanz + pfad0 + devices[i].deviceName + '.offTime2').val.split(':')[1]}, function () { switchDevicesByTime(new Date().getHours() +':'+ new Date().getMinutes(),'offTime2'); }); } } } catch (error) { log(`Unexpected error - ${error}`, 'error'); } } Die zweite Funktion, schaltet dann in einem Intervall alle Elemente der Reihe nach durch, bei denen die Übermittelte Uhrzeit als Auslösezeit eingetragen ist. function switchDevicesByTime(swTime,dp){ var hours = swTime.split(':')[0] < 10 ? '0' + swTime.split(':')[0] : swTime.split(':')[0]; var minutes = swTime.split(':')[1] < 10 ? '0' + swTime.split(':')[1] : swTime.split(':')[1]; var swValue; var i =0; var DevicesInterval = setInterval(function() { if(i < devices.length){ log(hours+':'+minutes+'----------------'+dp) if(dp.substr(0,dp.length -1) == 'onTime'){ if(devices[i].deviceType == 'state') swValue = true; if(devices[i].deviceType == 'level') swValue = 100; } if(dp.substr(0,dp.length -1) == 'offTime'){ if(devices[i].deviceType == 'state') swValue = false; if(devices[i].deviceType == 'level') swValue = 0; } if(getState(instanz + pfad0 + devices[i].deviceName + '.'+dp).val.indexOf(hours+':'+minutes)!=-1){ if(getState(devices[i].deviceID).val != swValue)setState(devices[i].deviceID, swValue); } i++; }else { clearInterval(DevicesInterval); } }, 1000); // alle 1 Sekunden ausführen }
  • Air Quality Monitor alle 7 Minuten auslesen

    10
    3
    0 Stimmen
    10 Beiträge
    848 Aufrufe
    S
    Hallo, seit nun mehr 4 Stunden läuft die Abfrage zuverlässig ab. Danke euch allen [image: 1670079733296-air-quality4.jpg]
  • Befehl an Tasmota Berry Konsole senden

    blockly javascript
    1
    0 Stimmen
    1 Beiträge
    412 Aufrufe
    Niemand hat geantwortet
  • verpassten timer nach reboot ausführen

    1
    0 Stimmen
    1 Beiträge
    192 Aufrufe
    Niemand hat geantwortet
  • yr Wettervorhersage morgens/mittags/abends/nachts

    1
    2
    0 Stimmen
    1 Beiträge
    225 Aufrufe
    Niemand hat geantwortet
  • [Gelöst] - GetState in Schleife liefert zuerst false

    javascript
    13
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    CodierknechtC
    @fastfoot Danke!
  • Lichtwecker mit alexa2

    23
    0 Stimmen
    23 Beiträge
    3k Aufrufe
    mickymM
    @renegade-0 sagte in Lichtwecker mit alexa2: @mickym OK, hast du mal eine vernünftige wiki für JSONata? nur das; https://docs.jsonata.org/overview Das hast Du sicher schon gefunden. Das try Ding nutze ich aber oft. Aber in Deinem Fall ist nicht viel zu tun. Einfach Eigenschaft der Nachricht *+-/ andere Eigenschaft der Nachricht usw. Also wenn Du Dein 1. Beispiel nimmst und die Eigenschaften: msg.pre_time = 10, msg.start = 20, msg.ende = 80 ist, dann berechnest Du das Delta pro Minute einfach [image: 1669749315445-ed402842-616b-4f2c-9e52-79e19aa9ee5e-image-resized.png] Spoiler [ { "id": "7ee6cbae1ec58d73", "type": "change", "z": "289f539dcc33814e", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "(ende-start)/pre_time", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 320, "wires": [ [ "817491f5d7cea76b" ] ] }, { "id": "182d6f4da623b547", "type": "inject", "z": "289f539dcc33814e", "name": "", "props": [ { "p": "pre_time", "v": "10", "vt": "num" }, { "p": "start", "v": "20", "vt": "num" }, { "p": "ende", "v": "80", "vt": "num" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 370, "y": 320, "wires": [ [ "7ee6cbae1ec58d73", "e553c3b2eee51e91" ] ] }, { "id": "817491f5d7cea76b", "type": "debug", "z": "289f539dcc33814e", "name": "Delta/Min", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 760, "y": 320, "wires": [] }, { "id": "e553c3b2eee51e91", "type": "debug", "z": "289f539dcc33814e", "name": "Eingabe", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 560, "y": 260, "wires": [] } ]
  • Octoprint Kamerabild auf Telegram

    18
    1
    0 Stimmen
    18 Beiträge
    2k Aufrufe
    F
    @bahnuhr Okay jetzt komm ich klar. Danke dir
  • Skript löschen geht nicht - permissionError

    blockly javascript
    194
    1
    0 Stimmen
    194 Beiträge
    53k Aufrufe
    ?
    @thomas-braun danke Euch
  • Max/Min/Mittelwert per URL für Zeitraum

    1
    0 Stimmen
    1 Beiträge
    179 Aufrufe
    Niemand hat geantwortet
  • Hilfe mit Wiederherstellung von Ursprungswert (Blockly)

    17
    1
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    F
    @paul53 damit funktioniert es nun, danke!
  • Inhalte Filtern

    7
    0 Stimmen
    7 Beiträge
    692 Aufrufe
    C
    @mickym Vielen Dank dir! bist der beste! hat geklappt. Werde es mal auf Nacht probieren auf denn Bus zu schicken
  • mehrere Custom Adapter aktivieren bei Objekten

    2
    0 Stimmen
    2 Beiträge
    278 Aufrufe
    paul53P
    @danny-0 const stat = { "enabled": true, "count": false, "fiveMin": false, "sumCount": false, "impUnitPerImpulse": 1, "impUnit": "", "timeCount": false, "avg": true, "minmax": true, "sumDelta": false, "sumIgnoreMinus": false, "groupFactor": 1, "logName": "wettersta_helligkeit__lux" }; var objects = []; // ?? console.log('statistics.0 activated for :'); $('knx.0.Secrurity__Alarm__Wetter.Wetterdaten.wettersta_helligkeit__lux').each(function (id, i) { let obj = getObject(id); if(!obj.common.custom) obj.common.custom = {}; obj.common.custom['statistics.0'] = stat; setObject(id, obj); console.log(id); }); Ebenso mit "sql.0".
  • [gelöst] Datei auf Aktualisierung prüfen

    4
    0 Stimmen
    4 Beiträge
    193 Aufrufe
    bahnuhrB
    @djmarc75 Und ich dachte schon du hast Urlaub. Hast dich ja lange nicht gemeldet ;-)
  • immer wechselndes PDF darstellen

    6
    0 Stimmen
    6 Beiträge
    437 Aufrufe
    OliverIOO
    @mika-0 Du schreibst die url oder nur den Dateinamen in einen datenpunkt Im html schreibst du dann an die Stelle wo du die url angeben musst einen Platzhalter mit dem datenpunktnamen so wie es hier beschrieben ist https://github.com/ioBroker/ioBroker.vis#bindings-of-objects Immer wenn sich der Datei Name dann ändert wird das Widget aktualisiert und lädt das neue Dokument
  • Briefkasten esp32 mit Blink LED

    1
    0 Stimmen
    1 Beiträge
    251 Aufrufe
    Niemand hat geantwortet
  • [ Gelöst] MP3 klingel - Echo Ausgabe funktioniert nur selten

    14
    2
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    paul53P
    @spitfire4all sagte: was denn nun schiefgelaufen ist. Vermutlich wird zu oft getriggert (Prellen), was dazu führt, dass die Sprachausgaben unterbrochen werden. Der Timeout führt in Verbindung mit der Zählvariablen nun dazu, dass das Programm innerhalb von 5 s nur einmal durchlaufen wird.
  • Korrekte Variablen deklaration bei mehreren Prozessen?

    5
    1
    0 Stimmen
    5 Beiträge
    456 Aufrufe
    G
    @paul53 Mmmh warum kompliziert wenn es auch einfach geht? Wenn ich mir das anschaue was du gemacht hast, sollte es funktionieren. Bin aktuell nicht in der Nähe des iobroker werde das später mal ausprobieren.

437

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge