Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.6k Themen 213.6k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    A
    @azzkikrboy Habe den Timer Aufruf Solcast in der Version 1.6.9 noch mal abgesichert.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    B
    @redbull2906 Ich würde sagen, dass man sich da nicht selbst kümmern muss, das sollte das BMS des Akkus regeln, so ist zumindest meine Sicht der Dinge.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • [gelöst] SQL getHistory Abfrage

    58
    0 Stimmen
    58 Beiträge
    6k Aufrufe
    apollon77A
    @ostseeskipper bei wenigen setState kann man das await weglassen. Ist ok
  • Broadlink-Befehl trotz falsch erkannten Zustandes

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    N
    @ralla66 hat damals 200 Euro damals 200 euro gekauft. Hole mir lieber nen shelly für 10 EUR xD
  • Script wird mehrfach ausgeführt Bedingung nicht geändert

    10
    5
    0 Stimmen
    10 Beiträge
    868 Aufrufe
    A
    @datzerf Der Vollständigkeit halber: Was ich meinte, war folgender Ansatz: [image: 1649263700688-4378d133-9f17-47fd-939f-b9a541b8ba2f-image.png] Damit löst das Script immer aus, auch wenn der Wert schon vorher "true" war, sobald der DP aktualisiert wird. Aber vermutlich liegt das Problem hier wirklich bei Reed-Kontakt.
  • Skripte beginnen doppelt zu laufen

    javascript blockly
    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    C
    Das Problem ist scheinbar noch nicht behoben. In unregelmäßigen Abständen feuern die Trigger mit fester Zeitvorgabe nach genau 60 s ein zweites mal. Das ist sehr unangenehm, weil ich am Tagesende Daten wie Energie, Lauf- und Ladedaten meines E-Autos usw. aufbereite. Da werden z. B. auch Tagesdaten zurückgesetzt, die dann in der Mail fehlen. Ich kann mir keinen Reim darauf machen, weil das immer wieder vorkommt. Alle paar Wochen oder auch öfter. Mit "if ((new Date().getMinutes()) < 58) {" kann man das zwar unterbinden, wobei die "58" eine Minute über der Startzeit des Skripts zu 23.57 Uhr ist und im Fehlerfall eine Debug Meldung im Protokoll steht. Aber das ist ja nicht Sinn des Triggers. Wer hat dazu eine Idee, woran das liegen könnte?
  • [gelöst] Start eines Skriptes nach Zeitplan mit UTC-Zeit

    3
    0 Stimmen
    3 Beiträge
    349 Aufrufe
    P
    @paul53 Vielen Dank für den Vorschlag ich habe ihn gleich so umgesetzt! Hätte gedacht, dass es bei iobroker eine elegantere Lösung gibt, aber vielleicht ist mir das ja mal einen Feature Request wert. Frage mich nur bei welchem Projekt ich den am besten einreiche - ioBroker.javascript?! Vielen Dank nochmals für die Hilfe!
  • Balkonkraftwerk Berechnung tatsächlich verbrauchter Strom

    2
    0 Stimmen
    2 Beiträge
    173 Aufrufe
    J
    @dominik-0 So wie ich es verstehe, möchtest Du aus dem aktuellen Verbrauch ein Integral über die Zeit bilden, korrekt? Dazu müsstest Du in einem Skript im Abstand von Zeitraum x die Werte ermitteln und aufaddieren.
  • namen von übergeordneten Objekt ausgeben

    6
    1
    0 Stimmen
    6 Beiträge
    356 Aufrufe
    M
    @paul53 vielen Dank hat super funktioniert :+1:
  • Best practice - Benachtigungen - Datenpunkte oder in Global

    1
    0 Stimmen
    1 Beiträge
    158 Aufrufe
    Niemand hat geantwortet
  • Sonos Arc & Satelliten LS per Steckdose ein- und ausschalten

    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    S
    Hallo, ich würde mal wieder ein wenig Hilfe benötigen da sich seit dem letzen Sonos update wieder was geändert hat... Ich weis nicht wieso aber ich tu mir mit der Blockly Logik echt schwer... Logik aktuell: wenn Objekt ID Simplestate = true, dann mache Folgende Logik würde noch benötigt werden: wenn Objekt ID Simplestate = true oder coordinator ist nicht 192_168_1_125, dann mache Würde mich freuen wenn mir hier jemand behilflich sein könnte! LG
  • Flot-Diagramm mit logarithmischen y-Skala

    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    AndreiosA
    Danke für die Antworten! Da werde ich mich am Wochenende wohl hinsetzen müssen und ausprobieren, ob ich das hinbekomme. Mangels Javascript-Erfahrung muss ich da wohl noch einiges lernen. :-) Ich melde mich wenn ich weitere Kenntnisse habe!
  • Parser bringt nur in der Vorschau ein Ergbnis

    4
    2
    0 Stimmen
    4 Beiträge
    283 Aufrufe
    S
    @oliverio Ok, danke für die Rückmeldung. Den Adapter habe ich auch schon gesehen, allerdings liefert der - außer ich habe es überlesen - keine Ergebnisse für Österreich.
  • Hue DimmSwitch (4-Button) + Osram Plug an DeConz

    2
    0 Stimmen
    2 Beiträge
    186 Aufrufe
    kBrausewK
    @kbrausew Ich konnte es jetzt nach einer gefühlten Ewigkeit so lösen (siehe Unten) Es wurde mich natürlich brennend interessieren warum ich nicht zwei States gelichzeitig im DeConz Adapter auf TRUE setzen kann decoOn = setTimeout(async function () { decoOn1 = setTimeout(async function () { setState("deconz.0.Lights.6.on"/*Plug70 on*/, true); setStateDelayed("deconz.0.Lights.4.on"/*Plug60 on*/, true, 1000, false); }, 200); decoOn2 = setTimeout(async function () { setState("deconz.0.Lights.4.on"/*Plug60 on*/, true); setStateDelayed("deconz.0.Lights.6.on"/*Plug70 on*/, true, 1000, false); }, 300); }, 100); [image: 1648666577824-9f690e39-e85c-4ba5-9ccc-97bcdf331b00-image.png]
  • Scripte für PhilipsHUE via Shelly 1 plus

    1
    0 Stimmen
    1 Beiträge
    140 Aufrufe
    Niemand hat geantwortet
  • Daten PV Anlage Envertech Wechselrichter

    Verschoben
    30
    0 Stimmen
    30 Beiträge
    9k Aufrufe
    K
    Ich habe Windows und den Adapter gerade probeweise installiert [image: 1648563985918-178e3c62-423b-4783-a41e-b5c51b129d08-grafik.png] Expertenkopf Githubs Katzenpolyp Tab Benutzerdefiniert Url eintragen Installieren Der erste Installationsversuch endet mit Error 25. Das ist bei mir aber leider so üblich. Dann einfach nochmals installieren. Wird mit code 0 ok beendet $ iobroker url https://github.com/adcrafter27/ioBroker.envertech-pv.git --host DESKTOPT(ioBrMain036) --debug install adcrafter27/ioBroker.envertech-pv#46284699d12834e862402428e0153f1150a2b307 NPM version: 6.14.15 npm install adcrafter27/ioBroker.envertech-pv#46284699d12834e862402428e0153f1150a2b307 (System call) npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN jscs-loader@0.3.0 requires a peer of jscs@^3.0.3 but none is installed. You must install peer dependencies yourself. + iobroker.envertech-pv@0.0.8 added 4 packages from 4 contributors, removed 1 package, moved 2 packages and audited 2798 packages in 84.925s 151 packages are looking for funding run `npm fund` for details found 228 vulnerabilities (25 low, 72 moderate, 122 high, 9 critical) run `npm audit fix` to fix them, or `npm audit` for details upload [4] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/words.js words.js application/javascript upload [3] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/style.css style.css text/css upload [2] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/index_m.html index_m.html text/html upload [1] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/envertech.png envertech.png image/png upload [0] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/admin.d.ts admin.d.ts video/mp2t Process exited with code 0 Dann Datenupload drücken. Braucht man bei Spezialinstallation von git [image: 1648564261872-d3c64d5b-8deb-4e6d-9556-753007d90f03-grafik.png] Auch das wird mit Code 0 erfolgreich beendet $ iobroker upload envertech-pv upload [4] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/words.js words.js application/javascript upload [3] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/style.css style.css text/css upload [2] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/index_m.html index_m.html text/html upload [1] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/envertech.png envertech.png image/png upload [0] envertech-pv.admin C:/Program Files/iobroker/ioBrMain036/node_modules/iobroker.envertech-pv/admin/admin.d.ts admin.d.ts video/mp2t Process exited with code 0 Dann noch eine Instanz anlegen mit dem + [image: 1648564735920-ddd98f04-0571-4e54-88d3-63cbf472e030-grafik.png] Auch das geht $ iobroker add envertech-pv auto --host DESKTOP-IT(ioBrMain036) host.DESKTOP-T(ioBrMain036) create instance envertech-pv host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.logLevel created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.sigKill created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.eventLoopLag created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.outputCount created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.inputCount created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.uptime created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.memRss created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.memHeapTotal created host.DESKTOPT(ioBrMain036) object system.adapter.envertech-pv.0.memHeapUsed created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.cputime created host.DESKTOP-E(ioBrMain036) object system.adapter.envertech-pv.0.cpu created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.compactMode created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0.connected created host.DESKTOP-(ioBrMain036) object system.adapter.envertech-pv.0.alive created host.DESKTOP-T(ioBrMain036) object system.adapter.envertech-pv.0 created Process exited with code 0 Und die Instanz ist da [image: 1648564821801-d1e85c63-c699-4af8-89bc-d017c6d7b843-grafik.png] Weiter komme ich nicht, habe keinen Envertech. Aber gezeigt, daß es auch unter Win installierbar ist. Github Installationen sind umfangreicher, einige manuelle Schritte
  • [gelöst] Gelegentlich Fehler bei Homematic

    21
    0 Stimmen
    21 Beiträge
    2k Aufrufe
    grrfieldG
    @rene55 Ich meinte alle Rollos, die in der Direktverknüpfung sind. Ich persönlich finde es schöner, wenn alle (zumindest in einem Raum) geleichzeitig arbeiten - ist aber Geschmackssache.
  • *Erledigt* JSON Parsen

    7
    0 Stimmen
    7 Beiträge
    380 Aufrufe
    Stephan SchleichS
    @liv-in-sky Perfekt, Vielen Dank :+1: :+1:
  • Sommerzeit/Winterzeit in Script abfragen…

    Verschoben
    22
    0 Stimmen
    22 Beiträge
    6k Aufrufe
    paul53P
    @autom sagte: funktioniert die umschaltung nur im moment des sommer-/winterzeit-wechsels oder auch mitten drinn? Beim gezeigten Schedule nur sonntags um 3:01 Uhr.
  • HTML Datenpunkt dynamisch erzeugen

    3
    0 Stimmen
    3 Beiträge
    252 Aufrufe
    dirk_1930D
    @liv-in-sky Ich hatte in der Zwischenzeit den Code noch etwas abgeändert und rufe die einzelnen Elemente jetzt wie folgt auf. Die Schleife bekomme ich nicht hin :-( const htmlFile = []; var zaehler = 0; htmlFile.push('<!DOCTYPE html><html lang=\"de\">'); htmlFile.push('<head><meta charset=\"UTF-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>TabelleMeteoblueTbl1h</title>'); htmlFile.push('<style type=\"text/css\">'); htmlFile.push('.table{border-bottom:.1px solid darkgrey;border-top:.1px solid darkgrey;border-right:.1px solid darkgrey;border-left:.1px solid darkgrey;border-collapse:collapse;border-spacing:1;font-family:Arial,sans-serif;font-size:1rem;overflow:hidden;padding:1px 1px;word-break:normal;}'); htmlFile.push('.table .uhrzeit{background-color:#000;color:#dfdfdf;text-align:center;vertical-align:middle;font-size:.7rem;font-weight:bold}'); htmlFile.push('.table .temperatur{text-align:center;vertical-align:middle;font-size:1rem;font-weight:bold}'); htmlFile.push('.table .pictocode{text-align:center;vertical-align:middle}'); htmlFile.push('.table .rainspot{text-align:center;vertical-align:middle padding:0}'); htmlFile.push('.table .iconregen{text-align:center;vertical-align:bottom}'); htmlFile.push('.table .iconuv{text-align:center;vertical-align:bottom}'); htmlFile.push('.table .iconhand{text-align:center;vertical-align:bottom}'); htmlFile.push('.table .windspeed{text-align:center;vertical-align:middle;font-size:.6rem}'); htmlFile.push('.table .precipitation{text-align:center;vertical-align:middle;font-size:.6rem}'); htmlFile.push('.table .felttemperatur{text-align:center;vertical-align:middle;font-size:.6rem}'); await Render(zaehler); await Render(zaehler + 1); await Render(zaehler + 2); await Render(zaehler + 3); await Render(zaehler + 4); await Render(zaehler + 5); await Render(zaehler + 6); await Render(zaehler + 7); await Render(zaehler + 8); await Render(zaehler + 9); await Render(zaehler + 10); await Render(zaehler + 11); async function Render(zaehler) { var uhrzeit = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.uhrzeit').val; var pictocode = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.pictocode_picture').val; var temperaturfelt = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.felttemperature_round').val; var temperaturHg = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.temperatureBackColor').val; var temperaturVg = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.temperatureForeColor').val; var winkel = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.winddirection').val; var windspeed = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.windspeed_avg').val; var rainspot = '<img src="/0_userdata.0/meteoblue/basic-day/data_1h/data_' + zaehler + '/rainspotpic' + zaehler + '.png" height="48" width="48">'; var uvindexcolor = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.uvindex_color').val; var uvindex = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.uvindex').val; var precipitation = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.precipitation').val; var temperatur = getState('0_userdata.0.meteoblue.basic-day.data_1h.data_' + zaehler + '.temp_round').val; htmlFile.push('</style>'); htmlFile.push('<body>'); htmlFile.push('<table class=\"table\" style=\"undefined;table-layout:fixed;width: 100%\">'); htmlFile.push('<colgroup><col style=\"width: 15%\"><col style=\"width: 20%\"><col style=\"width: 10%\"><col style=\"width: 10%\"><col style=\"width: 10%\"><col style=\"width: 10%\"><col style=\"width: 20%\"></colgroup>'); htmlFile.push('<tr>'); htmlFile.push('<td class=\"uhrzeit\">' + uhrzeit + '</td>'); htmlFile.push('<td class=\"pictocode\" rowspan=\"4\">' + pictocode + '</td>'); htmlFile.push('<td class=\"iconuv\" rowspan=\"2\"><img src="/vis.0/baisiepen/images/icons8-uv-index-64.png" height="20" width="20"></td>'); htmlFile.push('<td style=\"text-align:center;vertical-align:middle;transform:rotate(' + winkel + 'deg)" rowspan=\"2\"><img src="/vis.0/Element 1.png" height="20" width="20"></td>'); htmlFile.push('<td class=\"iconregen\" rowspan=\"2\"><img src="/vis.0/baisiepen/images/icons8-drop-64.png" height="20" width="20"></td>'); htmlFile.push('<td class=\"iconhand\" rowspan=\"2\"><img src="/vis.0/baisiepen/images/icons8-ganze-hand-50.png" height="20" width="20"></td>'); htmlFile.push('<td class=\"rainspot\" rowspan=\"4\">' + rainspot + '</td>'); htmlFile.push('</tr>'); htmlFile.push('<tr>'); htmlFile.push('<td style=\"background-color:' + temperaturHg + ';color:' + temperaturVg + ';\" class=\"temperatur\" rowspan=\"3\">' + temperatur + '°C</td>'); htmlFile.push('</tr>'); htmlFile.push('<tr>'); htmlFile.push('<td style=\"color:' + uvindexcolor + ';text-align:center;vertical-align:middle;font-size:1rem;\">' + uvindex + '</td>'); htmlFile.push('<td style=\"color:#dfdfdf;font-size:.6rem;text-align:center; class=\"windspeed\" rowspan=\"2\">' + windspeed + ' m/s</td>'); htmlFile.push('<td style=\"color:#dfdfdf;font-size:.6rem;text-align:center;class=\"precipitation\" rowspan=\"2\">' + precipitation + ' mm </td>'); htmlFile.push('<td style=\"color:#dfdfdf;font-size:.6rem;text-align:center;class=\"felttemperatur\" rowspan=\"2\">' + temperaturfelt + '°C</td>'); htmlFile.push('</tr>'); htmlFile.push('<tr>'); htmlFile.push('</tr>'); } htmlFile.push('</table>'); htmlFile.push('</body>'); let html = htmlFile.join(''); console.log(html); setState('0_userdata.0.meteoblue.htmltest', html, true); [image: 1648328561239-unbenannt.jpg]
  • alle veränderten Objekte eines Ordners (Viessmann Adapter)

    2
    0 Stimmen
    2 Beiträge
    160 Aufrufe
    T
    @mibr85 wenn es um viessmannapi geht dann wird dir hier geholfen https://forum.iobroker.net/topic/46778/test-viessmannapi-v2-0-0
  • Bewässerungsventile sequenziell ansteuern

    4
    1
    0 Stimmen
    4 Beiträge
    282 Aufrufe
    K
    @frank2604 kann aber gut sein, dass ich das Skript dann noch bzgl. Gardena / Smartgarden anpassen muss.

610

Online

32.7k

Benutzer

82.3k

Themen

1.3m

Beiträge