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": [] } ]
  • Alias Umwandlung bei JSON mit "null" bereitet Probleme

    javascript blockly
    19
    1
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    C
    @paul53 @mickym Ich hab die Varianten jetzt laufen lassen und die Variante von @mickym funktioniert. Bei der anderen Variante kommt dann wieder "null" und die Fehlermeldung, Danke für die Hilfe.
  • [gelöst] Javascript: nicht erwünschte Einträge im Log

    10
    0 Stimmen
    10 Beiträge
    838 Aufrufe
    Rene55R
    @paul53 sagte in Javascript: nicht erwünschte Einträge im Log: Verbose- Ja Danke, das wars. Ich hab überall woanders gesucht - nur da oben nicht. Jetzt ist das Log friedlich. Danke euch beiden.
  • Selector mit variabler Raumbezeichnung

    22
    1
    0 Stimmen
    22 Beiträge
    3k Aufrufe
    paul53P
    @tobib sagte: Raum A und Raum B hin oder Raum "Haus" außer Raum "Schlafzimmer" Das geht mit dem Selektor nicht. Wenn aber die Alias-ID den Raum enthält, kann man leicht in der Schleife filtern.
  • Neustart vom IoBroker sowie einen kompletten Reboot über die VIS mit Blockly

    Verschoben
    39
    0 Stimmen
    39 Beiträge
    33k Aufrufe
    L
    @michihorn , auch das Video von relaxedhome.de kenne ich ... das habe ich gelesen, bevor ich in diesem Thread gelandet bin.. Aber beide Vorgehensweisen - auch bei denen in anderen Beiträgen in diesem Forum und jenseits dessen sind sehr rigoros.. Bis auf in diesem Beitrag (https://forum.iobroker.net/post/106607), in dem man erst der IOBroker gstoppt wird bevor man die PI runterfährt oder rebootet. Das Skript gemäß dem Entrag vom 20. August 2020 habe ich dementsprechend ergänzt. Mein PI stopt den IOBroker und fährts erst dann herunter. Das funktioniert aber wie beschrieben nicht beim Upgrade des IOBrokers selber weil man in Summe mehre Befehle hat - siehe oben (und auch hier https://hobbyblogging.de/iobroker-update). Und da sehe ich ihalt m Moment nur die Variante via eines Abarbeitung durch ein BASH
  • Funktion läuft mehrfach. Wie stopen?

    4
    2
    0 Stimmen
    4 Beiträge
    455 Aufrufe
    CodierknechtC
    @juergschwarz sagte in Funktion läuft mehrfach. Wie stopen?: rufe ich eine Funktion auf, die nichts anderes macht als die Variable "active" auf wahr zu setzen? Das soll lediglich ein mögliches Prinzip darstellen. Der (oder die) Trigger müssen auf jeden Fall aus den Funktionen raus. https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps
  • Script für Mondphase

    3
    0 Stimmen
    3 Beiträge
    398 Aufrufe
    Berges01B
    @paul53 Besten Dank ! Das funktioniert Gut, jetzt kann ich weiter machen und habe eine Vorlage.
  • Gelöst: Variabler Wert per httpGet versenden

    javascript
    3
    0 Stimmen
    3 Beiträge
    214 Aufrufe
    M
    @paul53 const idAuslöser ="mqtt.0.shellies.Regensensor_GTHRN.input.1" var url = "http://192.168.178.43:8082/set/0_userdata.0.testwert" on({ id: idAuslöser, change: "any" }, function (dp) { var zahl = getState(idAuslöser).val log (zahl) httpGet('http://192.168.178.43:8082/set/0_userdata.0.testwert?value=' + getState(idAuslöser).val, { responseType: 'arraybuffer' }, async (err, response) => { }); }); So klappt das. Danke
  • PV Überschuss Poolpumpe einschalten

    41
    0 Stimmen
    41 Beiträge
    6k Aufrufe
    D
    @paul53 oh man.... jetzt hab ich geschnallt wo der timeout wert herkommt... 5min = 300000ms?! dann steht ja schon alles da. Danke dir für die Erleuchtung!
  • Hausspeicher laden, dynamisch, tibberlink, Scripte

    blockly
    187
    4 Stimmen
    187 Beiträge
    62k Aufrufe
    B
    Hier gibts eine komplett überarbeitete Version meines Scriptes. https://forum.iobroker.net/topic/79071/neues-script-hausspeicher-energiemanager-sonnen
  • Lösung zur Wertspeicherung

    232
    0 Stimmen
    232 Beiträge
    39k Aufrufe
    mickymM
    @accuface Vielleicht musst Du die Abfragen auch etwas staffeln, damit der iobroker nicht mit den Anfragen überhäuft ist.
  • Datenpunkt in CSS

    17
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    T
    @oliverio Super funktioniert. Vielen Dank
  • [gelöst]Fenster Zählen mit Blockly

    blockly
    30
    5
    0 Stimmen
    30 Beiträge
    7k Aufrufe
    CodierknechtC
    @lengi Wenn's nur um das Zählen geht: Ich mach's noch einfacher mit wenigen Zeilen JS const ids = Array.prototype.slice.apply($("(functions=window)")); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("0_userdata.0.Vis.fenster", count, true); }); Die zu überwachenden Fenster kommen in eine Aufzählung (Kategorie): [image: 1735949763881-0fd7c587-ba56-4dd6-b76d-4eb38be25686-grafik.png]
  • Sensordaten von Tasmota in Datenpunkte schreiben

    11
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    M
    @raspido sagte in Sensordaten von Tasmota in Datenpunkte schreiben: @codierknecht Super DANKE für die Hilfe, habe es gerade erst geschafft endlich zu testen und es klappt. Super DANKE nochmal. Aber nochmal die Frage, an das Senden, läuft das "genauso"? Also wenn ich in Alias.0 ein Datenpunkt anlege und anstelle "Konverter beim Lesen" "Konverter beim Schreiben" nutze? Die Shellys meine ich zu erinnern haben ja mittlerweile auch JSON als MQTT Topic. Michael Sorry wenn ich das Thema nochmal hoch hole, aber ich stehe gerade vor derselben Frage. Kann man den Alias Datenpunkt als JSON auch beschreiben? Und wenn ja, wie?
  • Growatt WR Daten per MQTT in den ioBroker

    36
    0 Stimmen
    36 Beiträge
    8k Aufrufe
    K
    @ray-1 Hallo, vielleicht kann ich mich hier auch noch mal einklinken. Ich habe einen Raspberry pi und den IOBroker drauf und seit 3 Tagen wird der Growatt Adapter nicht mehr grün Hat bis jetzt alles funktioniert, aber wir haben einen neuen Router bekommen und es lief dort auch 14 Tage. Im IOBroker habe ich nix geändert. Das einzigste, was ich vor 14 Tagen gemacht habe, ich habe meine Shinephone Wifi Sticks ausgetauscht und dafür die Lan X Sticks angeschlossen. Da die per Kabel direkt am Router stecken, war das sehr einfach und hat auch bis jetzt funktioniert. Hat jemand eine Idee Ich habe einen WR Growatt SPH 10000 mit Growatt Battery, einen Growatt MOD 10000 und einen Growatt 3000, alle liefern keine Daten mehr. Weil der Adapter nicht grün ist, nehme ich an, das das der Grund ist. Über die Growatt APP auf dem Handy und auf dem Rechner über Server.growatt funktioniert es, aber ich möchte es natürlich im IOBroker haben. Gruss Karl Heinz
  • Austausch von Werten mit eigener Software

    3
    0 Stimmen
    3 Beiträge
    298 Aufrufe
    Jey CeeJ
    @benejan sagte in Austausch von Werten mit eigener Software: Ich kaufe ein anderes CAN-Modul, für das es einen fertigen Adapter gibt. Habt ihr eine Empfehlung? Es gibt keinen Adapter der eine bestimmte Hardware Unterstützt. CAN Hardware which is supported by the kernel and creates an interface like can0 Quelle: https://github.com/crycode-de/ioBroker.canbus @asgothian sagte in Austausch von Werten mit eigener Software: Nutzen des simple-API adapters. Ich würde da eher den rest-api Adapter empfehlen.
  • Starlink Statistik abfragen ?

    3
    0 Stimmen
    3 Beiträge
    465 Aufrufe
    D3ltoroxpD
    @mcu Hm also zu http://192.168.100.1:9200/metrics geht bei mir keine Seite auf. Nur wenn ich ohne Port die Adresse eingebe, bekomme ich was angezeigt.
  • Nulleinspeisung Anker Solix

    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    CodierknechtC
    @homoran Danke Dir. Ich hab's dann offenbar nicht geblickt :-( Nehme alles zurück und behaupte das Gegenteil ... zumindest den Teil mit dem bösen Versorger.
  • [Script] JUDO Wasserenthärtung - Connectivity-Modul API

    javascript
    7
    2
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    S
    @bongo sagte in [Script] JUDO Wasserenthärtung - Connectivity-Modul API: @arteck Hm, der Adapter ist dem Namen nach für JUDO i-soft. Mein gerät ist ein JUDO SOFTwel. Da gibt es zwar Überschneidungen in der API aber vom Namen her würde es nicht passen, was für mich keine Rolle spielen würde. Hallo @Bongo, ich habe die judo i-soft SAFE+ im Einsatz und nutze seit längerer Zeit den JUDO i-soft Adapter von @arteck. Der bietet mir eigentlich alles, was ich für SmartHome und Vis benötige. Allerdings kommen damit folgende Themen auf: Der Adapter läuft nur mit dem alten Connectivity-Modul von judo (das ohne WLAN und ohne API). JUDO hat mir freundlicherweise nach Veröffenlichung auch die neue Modul-Variante zukommen lassen (mit WLAN und API), damit spielt aber leider der Adapter von Arteck nicht mehr. Der Adapter von Arteck läuft nur über Cloud/Portal von judo (kein lokaler Zugriff, keine Funktion mit der neuen API). Leider hat aber das judo-Portal auffällig viele Ausfälle/Down-Zeiten. Ich hatte Arteck mal angeschrieben, ob er nicht den Adapter auf das neue Modul und einen lokaöen Zugriff anpassen könnte (zumal judo sicher in letzter Zeit und künftig nur noch die neuen Connectivity-Module ausliefern wird). Ich verstehe, dass er aber nicht mehr Zeit investieren kann/möchte (zumal er auch mir geschrieben hat, dass er keine Test-Umgebung hat und dass die API so "grottenschlecht" ist). Als ich Dein Skript weiter oben gesehen habe, war ich begeistert: Lokaler Zugriff auf die API des neuen connectivity-Moduls ohne das judo-Portal! Ich hab's mal getestet: Tatsächlich funktionieren einige Datenpunkte für die i-soft SAFE+ schon direkt mit Deinem Script. Idealerweise wollte ich dann Dein Script so anpassen, dass ich auch die anderen Werte, die die i-soft SAFE+ direkt bietet, auslesen kann (zB. Salz-Füllstand in kg und in %), "Reichweite Salz" etc., die API ist ja von JUDO veröffentlicht. Musste aber schnell erkennen, dass meine Javascript-Kenntnisse dafür leider nicht ausreichen... Insofern würde ich Dich gerne im Vorschlag von @arteck bekräftigen, entweder den Adapter anzupassen oder gerne auch eine angepasste Script-Version für die i-soft SAFE+ zu veröffentlichen. Auslesen von Statistik-Daten etc. wären meines Erachtens nicht nötig, dass mache ich zB auch bisher schon mit SourceAnalytix etc. Wenn ich das richtig verstehe, hast Du keine i-soft im Einsatz - Gerne kann ich als "Tester" der Script-Anpassungen unterstützen. Schöne Grüße und schon heute "einen guten Rutsch".
  • Gelöst: Anzahl der Zigbee Geräte ermitteln

    javascript
    22
    0 Stimmen
    22 Beiträge
    2k Aufrufe
    M
    @paul53 Ja Paul das funktioniert. Dankeschön
  • Heizungssteuerung mit Blockly

    11
    1
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    T
    @homoran ja sorry kann ich noch nicht testen da der Estrich noch nicht auf den Rohren ist. Wollte mich nur erstmal vorab mit der Reglung Beschäftigen.

303

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge