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
    @paul53 sagte: @andreas7712 [sagte]: als Taster funktioniert Also nur kurz einschaltet? Super so funktioniert es!!!! Vielen Dank!!!!!!
  • 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": [] } ]
  • ZigBee Smart Knob Schalter / Dimmer - Blockly

    32
    4
    0 Stimmen
    32 Beiträge
    2k Aufrufe
    paul53P
    @roger-nawrath sagte: das wäre ja "akzeptabel ... Wird der DP "tuya.0.bf0deaa1185a1b5c41umoh.12" nicht auch durch das Polling weiter aktualisiert, wenn der Knopf nicht mehr bewegt wird? EDIT: Wie lang ist das Polling-Intervall?
  • Monat ermitteln als Modul

    6
    0 Stimmen
    6 Beiträge
    552 Aufrufe
    HomoranH
    @paul53 sagte in Monat ermitteln als Modul: @homoran sagte: um 23:58 trigger Um 23:58 Uhr müssen mind. 120 s addiert werden. DANKE! Recht du hast! hab es bei mir rauskopiert, und ich triggere um 23:59:45. Da reichen die 20 Sekunden
  • Daikin Adapter, Objekte mit der Cloud synchronisieren

    14
    1
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    P
    @joergh Jetzt hab ich's verstanden vielen Dank für Deine Geduld
  • Alexa Benachrichtigung senden

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    L
    @dr-bakterius Cool, vielen Dank!
  • ist Objekid in mysql vorhanden

    5
    0 Stimmen
    5 Beiträge
    299 Aufrufe
    M
    @mrbelvedere58 [Gelöst]
  • [gelöst]Schaltwert anhand von Integral?

    4
    2
    0 Stimmen
    4 Beiträge
    536 Aufrufe
    icebearI
    @badsnoopy667 Sorry das ich mich jetzt erst melde. Danke für deinen Hinweis, manchmal sieht man den Wald vor lauter Bäumen nicht. Ich habs jetzt so umgesetzt und das funktioniert so wie ich es brauche, mal testen ob's was bringt. [image: 1732261558436-blockly_integral.png]
  • Abwesenheit Licht zufällig steuern

    3
    0 Stimmen
    3 Beiträge
    411 Aufrufe
    black.falcon87B
    Im Mai hat Bluefox glaube ich dazu auch eine Idee veröffentlich. Anwesenheitssimulation startet bei etwa 7 Minuten https://youtu.be/nzPgbJV3kaQ?si=x1UOtOwMU0tC8_4F
  • SVG in Abhängigkeit von Datenpunkten animieren

    javascript heating
    13
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    A
    Für meine neue Frage habe ich durch ausprobieren eine Lösung gefunden. <animateTransform id="animation" attributeName="transform" attributeType="XML" type="rotate" from="0 60 60" to="360 60 60" begin="0.1s" dur="8s" repeatCount="indefinite" /> Ausschlaggebend ist hier das Attribut "begin" es darf nur nicht bei "0s" stehen.
  • Skripte verschwinden wenn ich sie anklicke ( gelöst )

    4
    1
    0 Stimmen
    4 Beiträge
    488 Aufrufe
    B
    Problem wurde gelöst siehe: https://forum.iobroker.net/topic/78122/kann-skripte-nicht-anklicken-gelöst/34?_=1732120504206
  • Visual Studio Code Extension - Global Scripts Intellisense

    1
    1
    0 Stimmen
    1 Beiträge
    249 Aufrufe
    Niemand hat geantwortet
  • Wärmemenge selbst berechnen

    20
    0 Stimmen
    20 Beiträge
    2k Aufrufe
    paul53P
    @hans_m sagte: Ich könnte die Abtauenergie extra erfassen Vorschlag: [image: 1732040874130-blockly_temp.jpg]
  • Javascript für die Community

    javascript
    3
    0 Stimmen
    3 Beiträge
    390 Aufrufe
    B
    @black-falcon87 Danke für den Hinweis. Also doch besser nur im Forum.
  • Empfehlung Literatur?

    5
    0 Stimmen
    5 Beiträge
    591 Aufrufe
    MartinPM
    @hg6806 Ich finde Fachliteratur am Strand schwer verdaulich... Habe den Drang, wenn nach ein wenig Lesen ein "Aha" Effekt eingesetzt hat, sofort das neue Wissen auszuprobieren. Wenn ich ohne vertiefende Übungen auskommen müsste, würde ich vieles sehr schnell wieder vergessen ...
  • Fehlermeldung wenn kein Messwert geliefert wird

    4
    0 Stimmen
    4 Beiträge
    393 Aufrufe
    B
    @shadowhunter23 Top! Der Adapter macht genau das wonach ich gesucht habe. Mitteilung mittels Telegramm Dienst sobald ein Gerät offline ist! Vielen Dank nochmal für die rasche Hilfe!!!
  • Gelöst / Schwierigkeiten mit JS-Funktionen mit Ergebnis

    blockly
    6
    1
    0 Stimmen
    6 Beiträge
    529 Aufrufe
    S
    Hey, vielen Dank für die Infos. werde dann mal schauen, wie ich es mache.
  • Bild versand

    32
    4
    0 Stimmen
    32 Beiträge
    5k Aufrufe
    David G.D
    @bananajoe Er hat es in seinem eigentlichen Thread gelöst bekommen.
  • Sonoff RF Bridge Tasmota und Portisch 433mhz

    javascript scenes monitoring
    44
    6
    7 Stimmen
    44 Beiträge
    12k Aufrufe
    O
    Entschuldigt bitte, wenn ich hier dazwischenquatsche: Wisst ihr, ob ich mit der Sonoff/Tasmota/Portisch-Lösung prinzipiell Glück haben könnte, Rollos und Markisen mit dem Dooya-Protokoll steuern kann? Meine bisherigen Versuche mit SIGNALduino (CC1101+ESP32) über FHEM zu iobroker waren eher mittelprächtig und funktionierten nur sporadisch. Bei der Sonoff-Bridge steht aber überall, dass keine Rolling-Codes unterstützt werden. Aber das nutzen Rolläden doch, oder?
  • Zigbee Lichter steuern

    blockly
    42
    2
    0 Stimmen
    42 Beiträge
    8k Aufrufe
    I
    @chrisprefect sagte in Zigbee Lichter steuern: Alias-Einträge von Hand machen Ich habe dafür schon angefangen ein skript zu mache. Aber Irgendwo musst du die Verbinden Knopf zu Action machen und ob man das jetzt in einer Gui macht oder einfach ein Alias anlegt finde ich jetzt nicht so anders. @chrisprefect sagte in Zigbee Lichter steuern: Lampen und Szenen manuell über eine Oberfläche steuern können Ja die Oberfläche müsste man selbst bauen aber das geht auf jedenfall in IoBroker. @chrisprefect sagte in Zigbee Lichter steuern: Ich komme ohne Phoscon leider nicht aus. Das glaube ich auch. Du hast da schließlich einen weg gefunden, der für dich funktioniert. Ich wollte nur zeigen, dass es einen anderen weg gibt und das ohne 1000 Skripte. Für die ganze Steuerung habe ich 7 Script Dateien. Und kann damit (wenn die Hardware es mit macht) belibig viele von Räumen verwalten.
  • InfluxDB mehrere Task zu einem erfassen

    7
    0 Stimmen
    7 Beiträge
    516 Aufrufe
    Marc BergM
    @mico sagte in InfluxDB mehrere Task zu einem erfassen: richtig gedacht? "Hauptgruppe" und "Untergruppe" sind ja von dir eingeführte Begriffe, da kann man wohl nicht von richtig oder falsch reden. Ich halte mich da eher an die technischen Gegebenheiten. So ein Measurement besteht aus einer recht einfachen Tabelle, die Spalten mit Unterstrich sind die Muss-Spalten, die von InfluxDB mindestens benötigt werden. "_field" enthält den Namen des Messwertes, "_value" den Messwert selbst (ohne Einheit). Dazu kommen beliebig viele Tags, die sind zur Kategorisierung von Messungen und zur Unterstützung bei der Suche und Filterung gedacht. "zimmer" ist hier ein Tag, was du einfach immer mitgibst, um später zu wissen, aus welchem Raum der Messwert stammt. Vorteil der Tags: sie sind indexiert, d.h. Filter darüber sind sehr schnell. Deshalb aber auf keinen Fall Messwerte in Tags speichern, sonst sprengt es dir die Datenbank. Die Zusammenführung der einzelnen Messwerte zu einer gemeinsamen Messung erfolgt über die exakt gleiche Zeit. (zum Beispiel die erste und zweite Zeile) _measurement _field _value _time zimmer raumwerte humidity 55 2024-11-01T12:12:12.012Z Arbeitszimmer raumwerte temperature 23 2024-11-01T12:12:12.012Z Arbeitszimmer raumwerte humidity 60 2024-11-01T13:12:12.012Z Kueche raumwerte temperature 19.5 2024-11-01T13:12:12.012Z Kueche raumwerte humidity 54 2024-11-02T12:12:12.012Z Arbeitszimmer raumwerte temperature 23 2024-11-02T12:12:12.012Z Arbeitszimmer raumwerte humidity 61 2024-11-02T13:12:12.012Z Kueche raumwerte temperature 19.4 2024-11-02T13:12:12.012Z Kueche Jetzt, wo ich darüber erzähle: @haus-automatisierung hat über die Grundlagen auch ein Video gemacht, das ist vielleicht hilfreicher.
  • Allgemeine Telegram Funktion für Gruppenversand aus Blockly

    javascript blockly
    7
    3
    0 Stimmen
    7 Beiträge
    403 Aufrufe
    reiterth73R
    @haus-automatisierung sagte in Allgemeine Telegram Funktion für Gruppenversand aus Blockly: @reiterth73 sagte in Allgemeine Telegram Funktion für Gruppenversand aus Blockly: OT: Bis jetzt hatte ich mit deinem Bsp. gearbeitet. Das ist ein anderer Matthias und nicht mein Blog :) @haus-automatisierung :man-facepalming: kommt davon wenn man nach Matthias K** zum lesen aufhört Trotzdem danke

244

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge