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
    maxclaudiM
    Erweitertes Energie-Logging für Zendure-Geräte Ich arbeite aktuell an einem Script, das zusätzliche Datenpunkte für Energieauswertungen (kWh) erzeugt: [image: 1784641392579-iobroker_dp_kwh.png] Zusätzlich können zwei CSV-Dateien erzeugt werden. 1. Tagesenergie-Datei Beispiel: zendure_energy_2026.csv Diese Datei enthält Tageswerte über ein Kalenderjahr: Datum;pvInput_kWh;gridChargeInput_kWh;gridhomeOutput_kWh;gridOffSocketPower_kWh Vor Scriptstart kann einmalig festgelegt werden, ob pvInput_kWh integriert werden soll. Diese Option ist für Zendure-Geräte ohne DC-PV-Module-Eingänge gedacht, da dieser Wert dort immer 0 wäre. Bedeutung der Werte: pvInput_kWh Vom Zendure-System gemeldete PV-Energie der angeschlossenen DC-PV-Modul-Eingänge. gridChargeInput_kWh Energie, die das Zendure-Gerät per 230V AC aus dem Hausnetz aufgenommen hat (AC-Laden). gridhomeOutput_kWh Energie, die das Zendure-Gerät in das 230V AC Hausnetz abgegeben hat. gridOffSocketPower_kWh Energiefluss über die gridOff-Steckdose: positive Werte: Energiefluss von der Steckdose in das Zendure-Gerät (z.B. Microinverter) negative Werte: Energiefluss vom Zendure-Gerät zur Steckdose (z.B. Verbraucher) Die Datei enthält integrierte Tagesenergien in kWh und eignet sich für Statistiken, Diagramme und Langzeitauswertungen. Die Jahresdatei wird automatisch anhand des aktuellen Kalenderjahres erzeugt. Beim Jahreswechsel wird automatisch eine neue Jahresdatei begonnen. 2. Live-Leistungsdatei Beispiel: zendure_liveEnergy.csv Die Aufzeichnung erfolgt in einem einstellbaren Intervall (z.B. jede Minute). Enthalten sind aktuelle Leistungswerte: Zeit;pvInput_W;gridChargeInput_W;gridhomeOutput_W;gridOffSocketPower_W Die Werte werden nicht integriert oder aufsummiert. Jede Zeile stellt eine Momentaufnahme der aktuellen Leistung in Watt dar. Bedeutung: pvInput_W Aktuelle PV-Eingangsleistung der PV-Module an den DC-PV-Eingängen. gridChargeInput_W Aktuelle 230V AC-Lade-Leistung aus dem Hausnetz zum Zendure-Gerät. gridhomeOutput_W Aktuelle AC-Leistung vom Zendure-Gerät ins 230V AC Hausnetz. gridOffSocketPower_W Aktuelle Leistungsrichtung der gridOff-Steckdose: positive Werte: Leistung von der Steckdose in das Zendure-Gerät negative Werte: Leistung vom Zendure-Gerät zur Steckdose Die Datei eignet sich für Leistungsdiagramme (W) und Dashboards. Archivierung Live-Datei: Beim Tageswechsel bzw. beim nächsten Schreibvorgang nach einem Tageswechsel wird: zendure_liveEnergy.csv automatisch archiviert als z.B.: zendure_liveEnergy_2026-07-20.csv Danach wird wieder die aktuelle Datei: zendure_liveEnergy.csv weitergeführt. Es werden maximal 30 Tagesarchive behalten. Ältere Dateien werden automatisch gelöscht. Zusätzlich kann im Script eingestellt werden, ob CSV-Dateien erzeugt werden sollen oder nur die ioBroker-Datenpunkte. Die Berechnung basiert ausschließlich auf den von Zendure gelieferten Leistungswerten. Es werden keine geschätzten Wirkungsgrade oder pauschalen Umrechnungen (z.B. Faktor 0,96 wie teilweise bei anderen Scripts verwendet) eingesetzt. Die gridOffSocketPower-Werte beschreiben ausschließlich den Energiefluss über die gridOff-Steckdose und stellen keine separate Netzeinspeisungsmessung dar. Die Energiezähler werden über die von Zendure gelieferten Zeitstempel und Leistungswerte fortgeführt. Bei Neustarts oder Unterbrechungen werden keine fehlenden Werte geschätzt oder nachberechnet. Das Script arbeitet unabhängig von der Gerätesteuerung und greift ausschließlich lesend auf vorhandene Zendure-Datenpunkte zu. Es verändert keine Geräteeinstellungen und kann daher parallel zu bestehenden Steuerungsscripten betrieben werden. Mehr fällt mir dazu im Moment nicht ein; genug getippt :-) Besteht Interesse an dieser Erweiterung bzw. an dem Script? Über eine Rückmeldung, wer welches meiner Blockly-Scripte verwendet und ob diese problemlos laufen, würde ich mich ebenfalls freuen ;-)
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    A
    danke das wird besser sein, werde ich mal versuchen ob ich es hinbringe. Bis jetzt bin ich mit dem PV Speicher immer über den eingestellten Wert. Mit Dank und Gruß
  • 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": [] } ]
  • Hotelpreise überwachen mit Meldung ! Kann man sowas machen ?

    3
    0 Stimmen
    3 Beiträge
    369 Aufrufe
    D3ltoroxpD
    @codierknecht Danke, muss ich mir mal anschauen, ob ich damit zurecht komme und passende Ergebnisse heraus bekomme.
  • Funktionen aus dem HomeAssistent Adapter nicht möglich?

    17
    3
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    S
    @haus-automatisierung Ja danke ☺️ werde ich mir für die Zukunft zu Herzen nehmen. 4 Augen sehen im großen Ganzen halt doch mehr.
  • Dezimalzahl per Alexa an einen DP im ioBroker übergeben

    1
    2
    0 Stimmen
    1 Beiträge
    155 Aufrufe
    Niemand hat geantwortet
  • [ gelöst ]Script läuft von heute auf morgen nicht mehr.

    4
    3
    0 Stimmen
    4 Beiträge
    452 Aufrufe
    S
    @spitfire4all Schön das wir darüber gesprochen haben :-) Auf Monat kleiner oder gleich eingestellt und nun geht es wieder. Immer diese details :-) Danke.
  • Regex liefert falschen Wert

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    haus-automatisierungH
    @ck_coke sagte in Regex liefert falschen Wert: Zumindest habe ich das nach Internetrechersche in anderen Foren so gesehen. Ich hab das Thema JSON vs. Objekt in zig kostenlosen Inhalten super ausführlich erklärt. Du musst schon den kompletten Pfad angeben. Im Falle von switch:0 muss das dann aber in eckige Klammern und kann nicht mit der einfachen Punkt-Notation erreicht werden. obj.data.device_status['switch:0'].voltage
  • Iobroker E3DC Control Fehler

    1
    0 Stimmen
    1 Beiträge
    121 Aufrufe
    Niemand hat geantwortet
  • Pool Pumpe soll laufen, wenn sie noch nicht gelaufen ist

    6
    1
    0 Stimmen
    6 Beiträge
    718 Aufrufe
    paul53P
    @ronnyempire sagte: Lege ich den DP selbst an und wenn ja wie, das habe ich noch nie als Wert gemacht. Ja, unter "0_userdata.0" einen DP vom Typ "Zahl" mit Unit "h".
  • Wenn/Dann Skript mit Szene und eigenem Datenpunkt

    54
    3
    0 Stimmen
    54 Beiträge
    7k Aufrufe
    HomoranH
    @samsungfreak sagte in Wenn/Dann Skript mit Szene und eigenem Datenpunkt: Daran lag es, Natürlich! "true" = true ist falsch und bis morgen bitte lesen und auswendig lernen https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1 nach meinem Blockly bist du jetzt schon 2766 Tage, 4 Stunden dabei. Da sollte dir die Grundregel "zeigen, zeigen und alles zeigen" eigentlich geläufig sein
  • Telegram ask beantwortet sich nach 10 -15 Sekunden selbst

    5
    0 Stimmen
    5 Beiträge
    596 Aufrufe
    PeoplesP
    @haus-automatisierung Hast du als Mitentwickler auf git evtl. Eine Lösungsidee? Bzw. funktioniert das bei dir fehlerfrei?
  • [gelöst] Skriptfenster öffnet sich bei bestimmten User nicht

    3
    0 Stimmen
    3 Beiträge
    195 Aufrufe
    Ben1983B
    @ro75 anderer Browser => geht. Im Chrome kann man ja verschiedenen Accounts anlegen. (Google Accounts) Edit: Jetzt ging es allerdings durch lösche der cookies
  • Debian 12 Python Webdriver Problem

    4
    0 Stimmen
    4 Beiträge
    504 Aufrufe
    Thomas BraunT
    @mathias-winkelmann https://pypi.org/project/webdriver-manager/ Das wird es wohl sein. This environment is externally managed Bedeutet, das da nicht so einfach (wie früher) python-Code reingeklatscht werden kann/darf/soll. Leg ein venv an: https://medium.com/@kiena/troubleshooting-externally-managed-environment-error-in-debian-12-pip3-installation-439d62e5a970
  • Adresse per Telegram versenden

    18
    0 Stimmen
    18 Beiträge
    2k Aufrufe
    haus-automatisierungH
    @david-g Ja geht. Auch das hab ich rauf und runter erklärt 😉
  • $ findet Aliase mit mit fehlender Source nicht

    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    SwisslizardS
    @paul53 Issue erfasst.
  • TV Spielfilm Filme an Telegram senden

    36
    0 Stimmen
    36 Beiträge
    5k Aufrufe
    D4vED
    @david-g danke für deine antwort es ist alles da nur die Symbole werden nicht via Telegram übertragen kann ich dir privat schreiben? damit wir hier nicht das forum spammen? hier kurz ein bild [image: 1725394148583-0unbenannt-1-resized.png] /adapter/daswetter/icons/tiempo-weather/galeria5/SVG/Color/1.svg laut dein blockly bei mir: /adapter/daswetter/icons/tiempo-weather/galeria2/12.png
  • Trigger wenn Datenpunkt erstellt oder gelöscht wird

    4
    0 Stimmen
    4 Beiträge
    461 Aufrufe
    M
    @swisslizard Hiermit kann man die States speichern in der Variable / oder auch als DP (muss man dann erweitern) und prüfen ob ein DP gelöscht wurde. let previousState = {}; let preDPId = '0_userdata.0' function updateState() { let ids = $(preDPId+'*') console.log(ids.length) let currentState = {}; for(let i=0; i<ids.length;i++){ currentState[ids[i]] = true } for (let id in previousState) { if (currentState[id] == undefined) { console.log("Deleted ID: "+ id); } } previousState = currentState } updateState(); setInterval(updateState, 60000);
  • Dieses Thema wurde gelöscht!

    0
    0 Stimmen
    0 Beiträge
    30 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Werte einzeln aus JSON extrahieren für Anfänger

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    3k Aufrufe
    B
    @paul53 Vielen Dank jetzt sind die Werte da. Das mit "0_userdata.0" mache ich noch. Ich wollte nicht so viel verändern.
  • Virtuelle Sensor Smartthings

    3
    0 Stimmen
    3 Beiträge
    315 Aufrufe
    Vadim KumpanV
    @mickym Danke!!!
  • OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben

    12
    2
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    H
    @paul53 said in OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben: Den Block "steuere" benötigt man nur einmal ganz am Ende. Auch zwei Blöcke "Setze Attribut" kann man sich dort sparen, wo das entsprechende Attribut nicht geändert wird. Wurde vereinfacht und etwas gelernt... Danke
  • [Vorlage] Script und VIS: Druckerpatronen Zustand

    Verschoben
    176
    2
    0 Stimmen
    176 Beiträge
    113k Aufrufe
    NegaleinN
    @negalein sagte in [Vorlage] Script und VIS: Druckerpatronen Zustand: schaun wir mal, ob ein Error bzgl. Timeout kommt. läuft jetzt bei meinem Deskjet pro 9010 Serie seit Tagen stabil. Keine Ausfälle trotz WLAN.

407

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge