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
    J
    Hallo, anbei das nun fertige Skript im ersten Post.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    paul53P
    @emil70 [sagte]: schaut da mal drüber. Ich würde es vereinfachen: [image: 1784832594678-blockly_temp.jpg]
  • Hilfe für Skripterstellung mit Node-RED

    961 13k
    961 Themen
    13k Beiträge
    Marc BergM
    Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht. Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen: [ { "id": "0101b52dd8b0e69c", "type": "inject", "z": "tab_restart", "name": "Flow neu starten", "props": [ { "p": "baseUrl", "v": "http://nuc.fritz.box:1880", "vt": "str" }, { "p": "flowId", "v": "56a35d28dbb8d4c1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 160, "y": 140, "wires": [ [ "ffb73632947a1b74" ] ] }, { "id": "ffb73632947a1b74", "type": "http request", "z": "tab_restart", "name": "GET /flow/:id", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 370, "y": 140, "wires": [ [ "78e47724692d9c26" ] ] }, { "id": "78e47724692d9c26", "type": "change", "z": "tab_restart", "name": "deaktivieren", "rules": [ { "t": "set", "p": "flow", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 140, "wires": [ [ "b570b346c80301a6" ] ] }, { "id": "b570b346c80301a6", "type": "http request", "z": "tab_restart", "name": "PUT (aus)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 770, "y": 140, "wires": [ [ "a062c2baa0932d3e" ] ] }, { "id": "a062c2baa0932d3e", "type": "delay", "z": "tab_restart", "name": "1s warten", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "outputs": 1, "x": 960, "y": 140, "wires": [ [ "664a32887d83b305" ] ] }, { "id": "664a32887d83b305", "type": "change", "z": "tab_restart", "name": "aktivieren", "rules": [ { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 220, "wires": [ [ "83d399c90d46240f" ] ] }, { "id": "83d399c90d46240f", "type": "http request", "z": "tab_restart", "name": "PUT (ein)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 320, "y": 220, "wires": [ [ "529c0e1896d1f278" ] ] }, { "id": "529c0e1896d1f278", "type": "debug", "z": "tab_restart", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 480, "y": 220, "wires": [] } ]
  • jawascript - Blockly nur Englisch? auf Deutsch umstellen.

    6
    1
    0 Stimmen
    6 Beiträge
    588 Aufrufe
    K
    @haus-automatisierung Danke Dir, also ein Bug ....
  • Probleme bei Skript

    3
    3
    0 Stimmen
    3 Beiträge
    413 Aufrufe
    S
    @homoran said in Probleme bei Skript: @schneidy1985 sagte in Probleme bei Skript: der Wert wird auch in den Datenpunkt geschrieben aber nicht als Zahl 123 sonden als String "123". konvertiere nach Zahl und die Meldung sollte verschwinden kannst du mir kurz einen tip geben wie ? ich stehe total auf dem schlauch gerade .... sorry für diese dämliche Frage EDIT: Hab es hin bekommen , danke dir vielmals für den Tip .... manchmal sieht man einfach nicht mehr den Wald vor lauter Bäumen
  • PV Überschuss Steckdose

    7
    0 Stimmen
    7 Beiträge
    1k Aufrufe
    kmxakK
    nochmal eine neue Version mit einem gleitenden Durchschnitt // Konfiguration var threshold = -1100; // Schwellenwert für den Stromüberschuss var averageTimeMinutes = 30; // Zeitraum für den Durchschnitt in Minuten var powerOnTimeoutMinutes = 30; // Timeout für das Einschalten in Minuten, X Minuten bleibt das Gerät definitiv an. var powerOffTimeoutMinutes = 5; // Timeout für das Ausschalten in Minuten, X Minuten bleibt das Gerät definitiv aus. var devicePowerConsumption = 400; // Leistungsaufnahme des Gerätes in Watt var debugMode = false; // Debug-Modus ein-/ausschalten var entpreller = 0; var istAn = false; var averagePower = []; on({ id: [].concat(['sonoff.0.Hichi_Stromzähler. _16_7_0']), change: 'ne' }, async (obj) => { var value = obj.state.val; var timestamp = obj.state.ts; var deltaTime = 0; if (averagePower.length > 0) { var lastTimestamp = averagePower[averagePower.length - 1].timestamp; deltaTime = (timestamp - lastTimestamp) / (1000 * 60); } var powerChange = 0; if (averagePower.length > 0) { var lastValue = averagePower[averagePower.length - 1].value; powerChange = value - lastValue; } var powerChangeRate = deltaTime > 0 ? powerChange / deltaTime : 0; averagePower.push({ value: value, timestamp: timestamp }); if (averagePower.length > averageTimeMinutes) { averagePower.shift(); } var sumPowerChange = averagePower.reduce((acc, curr, index, array) => { if (index < array.length - 1) { return acc + (curr.value - array[index + 1].value); } else { return acc; } }, 0); var average = Math.round(sumPowerChange / averagePower.length); // Debug-Protokollierung für den aktuellen Wert des Stromzählers if (debugMode) { console.log("Aktueller Wert des Stromzählers: " + value); } // Debug-Protokollierung für den Durchschnitt if (debugMode) { console.log("Durchschnitt über " + averageTimeMinutes + " Minuten: " + average); } if (entpreller == 0 && istAn == false && average < (threshold + devicePowerConsumption) && compareTime('10:00', '19:00', 'between', null)) { entpreller = 1; setState('sonoff.0.Gosund_16A_3.POWER', true); istAn = true; console.log('PV Steckdose ein! Stromüberschuss vorhanden.'); sendTo("telegram.0", "send", { text: 'PV Steckdose ein! Stromüberschuss vorhanden.' }); setTimeout(() => { entpreller = 0; }, powerOnTimeoutMinutes * 60000); // Umwandlung von Minuten in Millisekunden } if (entpreller == 0 && istAn == true && average > (threshold - devicePowerConsumption)) { entpreller = 1; setState('sonoff.0.Gosund_16A_3.POWER', false); istAn = false; console.log('PV Steckdose aus! Kein Stromüberschuss vorhanden.'); sendTo("telegram.0", "send", { text: 'PV Steckdose aus! Kein Stromüberschuss vorhanden.' }); setTimeout(() => { entpreller = 0; }, powerOffTimeoutMinutes * 60000); // Umwandlung von Minuten in Millisekunden } });
  • Shelly Plus 1PM - BLE-Daten per MQTT an ioBroker

    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    haus-automatisierungH
    @66er sagte in Shelly Plus 1PM - BLE-Daten per MQTT an ioBroker: Solange neue Shelly-Geräte oder -Features noch nicht im Shelly-Adapter integriert sind, geht es eben damit nicht. Zeig mal bitte dein Script auf dem Shelly für den Beacon-Mode. Die normalen Funktionen der Shelly-BLU Geräte kann man ja über den Adapter (mit einem Script auf dem Shelly) integrieren: https://forum.iobroker.net/topic/69212/shelly-6-6-0-mit-blu-geräten-bluetooth-low-energy https://github.com/iobroker-community-adapters/ioBroker.shelly/blob/master/docs/en/ble-devices.md
  • Licht in unterschiedlichen Farben blinken

    3
    0 Stimmen
    3 Beiträge
    592 Aufrufe
    A
    Danke ich nutze den Zigbee Adapter. Da kann ich die Funktion nicht finden.
  • Steuer Wert bei Über ,zurück zum alten Wert, bei unter UNter

    3
    0 Stimmen
    3 Beiträge
    290 Aufrufe
    C
    @codierknecht Merci dir.
  • [gelöst] Schaltbare Steck. mit Leistungsmesser Ausschalten

    6
    1
    0 Stimmen
    6 Beiträge
    712 Aufrufe
    E
    @codierknecht @paul53 Vielen Dank für die einfache Lösung und die Erklärung dazu! Funktioniert. :)
  • Anfängerfrage; Script regelmäßig wiederholen

    17
    0 Stimmen
    17 Beiträge
    775 Aufrufe
    CodierknechtC
    @rasc Unterhalb von 0_userdata.0 legt man seine eigenen Datenpunkte an. Ich habe mir dort einen mit Namen "Icon" angelegt, um den Dateinamen zu speichern. SoC ist der Datenpunkt, der den Ladezustand (State of charge) der Batterie liefert. Wo das bei herkommt, solltest Du am besten wissen ;-)
  • ioBroker Datenpunkt über Synology Aufgabenplaner abfragen

    Ungelöst
    3
    0 Stimmen
    3 Beiträge
    391 Aufrufe
    R
    @peterfido Danke hat funktioniert. Sorry, für die späte Antwort aber ich habe den Post erst jetzt gelesen.
  • Velux Homekit_Python Script einbinden

    4
    0 Stimmen
    4 Beiträge
    635 Aufrufe
    F
    @psimon Hast du es hinbekommen mit der Einbindung? Kannst du mir verraten wie du die Fernbedienungen am Gateway angelernt hast? Hab es nach Anleitung von Velux gemacht, die Fernbedienungen scheinen aber bei der Abfrage per Pythonscript nicht auf. Kann also nicht sagen ob es funktioniert hat. Home App selber habe ich wegen fehlender Hardware nicht.
  • Wechselrichter auslesen, Problem mit Intervall

    5
    3
    0 Stimmen
    5 Beiträge
    604 Aufrufe
    BananaJoeB
    @endurance geht es dir darum das die Zahlen genau aufgehen? Ich habe zwar die Daten von der Solaranlage, nutze für "Berechnungen" aber die Daten von separaten Messeinrichtungen hinter den Anlagen (aka Shelly, Sonoff & Co). Selbst da kommt es nie ganz hin weil auch da ich nur die Werte alle 10 bis 15 Sekunden kommen. Die Daten hast du in Echtzeit weil du dir diese aktiv holst? Ich schätze selbst dann kämen die nicht ganz hin (und mein Stromzähler sendet bei jeder Änderung einen neuen Wert an MQTT, also im schlimmsten Fall mehr als 1 mal die Sekunde). Wenn ich etwas gelernt habe dann das so ein Stromverbrauch unglaublich schwankt ... (wenn man nicht gerade nur normale Glühfadenlampen und Elektromotoren mit einem Faktor von 1 im Einsatz hat). Ich habe ja eine Tabelle mit allen Verbrauchern (über 50 Stück), wenn ich die addieren würde, würde das auch nie ganz passen. Selbst meinen Datenschrank - da habe ich eine Messsteckdose vor dem Schrank und USV, eine hinter der USV + 6 Stück für die einzelnen Geräte und die Summen passen doch nicht.
  • FritzBox Callmonitor: Nur auf EINE Nummer reagieren

    5
    1
    0 Stimmen
    5 Beiträge
    504 Aufrufe
    I
    @mcu Ah, jetzt habe ich verstanden, wie Du es meinst! Danke, mal probieren, ob es so funktioniert.
  • Node Red und KNX Ultimate Adapter

    8
    3
    0 Stimmen
    8 Beiträge
    840 Aufrufe
    L
    @iobrokerin Was steht denn im debug wenn du nur auf die 7/2/2 triggerst?
  • [gelöst] Badheizung nach PV Strom steuern

    8
    1
    0 Stimmen
    8 Beiträge
    938 Aufrufe
    E
    Ich möchte etwas ähnliches umsetzten. Es soll, wenn die Leistung für 20 min > 100 W liegt, der gleiche Aktor (Steckdose mit Leistungsmesser) ausgeschaltet werden. Die Einschaltung erfolgt manuell. [image: 1712088945401-87c4c06a-2fc9-497a-a8b1-8892d91e3aca-image.png] Es funktioniert nur sporadisch. Wo liegt mein Denkfehler bei dem Skript?
  • [Vorlage ] Blockly dynamischer Sonnenauf- und Sonnenuntergang

    Verschoben blockly template
    49
    1
    0 Stimmen
    49 Beiträge
    18k Aufrufe
    P
    @haus-automatisierung Du hast recht.
  • JS Editor öffnet nicht

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    865 Aufrufe
    Thomas BraunT
    @pistus Das werden ja mehr Updates im Rückstand als weniger. UPDATEN! sudo apt update sudo apt upgrade
  • Wie Ende Verbrauch beschreiben?

    6
    0 Stimmen
    6 Beiträge
    641 Aufrufe
    CodierknechtC
    @bertderkleine sagte in Wie Ende Verbrauch beschreiben?: Ich blicke aber nicht, was "Wert" und "vorheriger Wert" sind und wo die wie definiert sind. https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps/5
  • [gelöst] Neu erstellte Programme reagieren nicht auf Trigger

    30
    1
    0 Stimmen
    30 Beiträge
    2k Aufrufe
    BananaJoeB
    @triplex sagte in [gelöst] Neu erstellte Programme reagieren nicht auf Trigger: Das hatte vor ein paar Tagen ja auch schon gemacht gehabt, aber ohne Erfolg. Keine Ahnung was jetzt anders ist. Naja, eventuell wurde das Problem beim probieren durch einen Fehler in einem neuen Skript erzeugt. Ich hatte das auch schon mal hinbekommen mir die JavaScript-Instanz sogar ganz abzuschießen. Und das Skript lief damals noch bzw. hatte noch dieses Problem und heute nicht mehr.
  • Blockly Script Start/ Stop Button

    7
    0 Stimmen
    7 Beiträge
    985 Aufrufe
    S
    @paul53 Ach du Sch.... der Datenpunkt stand auf "0" :man-shrugging:
  • isAstroDay=true trotz "sunset"

    3
    0 Stimmen
    3 Beiträge
    373 Aufrufe
    S
    @paul53 Danke für den Hinweis. Das ist eine weitaus schönere Lösung! Habe ich soeben übernommen und warte nun auf sunset :)

330

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge