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
    @tiobb [sagte]: wie kann man das lösen? Wenn man Werte auswertet, macht es keinen Sinn, diese im Minutentakt abzufragen. Man sollte auf die Datenpunkte triggern (mit "ist kleiner als letztes"). Dann muss man auch nicht die Meldung basteln, denn auch wenn auf eine Liste von IDs getriggert wird, kann immer nur ein DP zur gleichen Zeit triggern. EDIT: Prinzip mit 3 Sensoren: [image: 1784910380833-blockly_temp.jpg] Wenn die Batteriespannung weiter sinkt, werden erneut Meldungen erzeugt. Will man das nicht, muss man auch den vorherigen Wert prüfen: [image: 1784913791255-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": [] } ]
  • Hilfe: Senec Speicher - Tibber / einfache Steuerung

    1
    1
    0 Stimmen
    1 Beiträge
    679 Aufrufe
    Niemand hat geantwortet
  • Betriebststunden Verdichter Heizung Tagesstunden berechnen

    2
    0 Stimmen
    2 Beiträge
    282 Aufrufe
    paul53P
    @hoizi1994 sagte: brauche hier einen selbst erstellten Datenpunkt im User oder? Sogar 2 Datenpunkte: "Laufzeit gestern" und "Tagesstand Betriebsstunden". Alternative: Sourceanalytix-Adapter.
  • ein Gute Nacht Script

    15
    0 Stimmen
    15 Beiträge
    927 Aufrufe
    M
    Danke das hat geklappt
  • Gesamtleistung berechnen per Blockly Skript

    7
    1
    0 Stimmen
    7 Beiträge
    837 Aufrufe
    m0nn3M
    @paul53 Okay, Dann euch noch einen schönen Abend und vielen Dank !!!
  • Blockly mit Zigbee/Homatic und CCU Duty Cycle Problem

    10
    1
    0 Stimmen
    10 Beiträge
    968 Aufrufe
    O
    @paul53 Danke .. und nochwas dazugelernt ... genau sowas hatte ich gesucht
  • Suche Hilfe für Visualisierung von mehreren ical Kalendern

    3
    0 Stimmen
    3 Beiträge
    317 Aufrufe
    T
    @bahnuhr Danke Dir. Kannst Du mir sagen, warum ich das Skript nicht zweimal auf eine Instanz laufen lassen kann? Ich hatte die Schriftgröße verändert. Einmal in Klein => schreibt in Datenpunkt A (für die Übersicht auf der Startseite) und einmal in groß => schreibt in Datenpunkt B (für nur den Stundenplan in groß) Ist es eventuell möglich, das Skript so anzupassen, dass es die Daten nur aus bestimmten Kalender(n) der Instanz zieht? Dann könnte ich mit 12 Instanzen sparen :-) Oder sollte ich diese Frage eher hier https://forum.iobroker.net/topic/26782/ical-kalender-farben-anpassen/82?_=1700046036161 reinstellen?
  • Datenpunkte abfragen und andere damit steuern

    4
    1
    0 Stimmen
    4 Beiträge
    427 Aufrufe
    paul53P
    @kvn298 sagte: Status_Brunnenpumpe ist ein String. Laut API-Doku ist liefert das Attribut "ison" einen booleschen Wert.
  • Hue Dimmer Switch mit SSL

    4
    1
    0 Stimmen
    4 Beiträge
    531 Aufrufe
    SchmakusS
    @oli_g sagte in Hue Dimmer Switch mit SSL: Hallo, ich hatte bisher meinen Hue Adapter ohne SSL laufen und Polling aktiviert. Habe einen Hue Dimmer Switch und ein einfaches Test (Blockly) Skript: [image: 1699892485692-6dfd61a4-5c66-4dcc-bd01-ba6cb1cd7213-image.png] Ich möchte einfach bei Druck auf eine Taste eine bestimmte Steckdose (um-)schalten. Das hat mit den o.g. Einstellungen auch funktioniert. Das Test Skript gibt pro Druck auf eine der Tasten genau einen Log Eintrag aus, also bspw. bei Druck auf die obere Taste 1: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:24:27, Status: 1002 Bei nochmaligem Druck auf die Taste 1: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:26:03, Status: 1002 Drücke ich dann eine andere Taste, kommt auch genau eine Statusänderung an: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:27:12, Status: 4002 Schalte ich nun beim Adapter SSL ein und schalte Polling aus, dann passieren bei Druck auf eine Taste offensichtlich zwei Statusupdates: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:32:45.731Z, Status: 4000 script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:32:45.551Z, Status: 1002 Das erste Update bezieht sich irgendwie auf die zuvor gedrückte Taste, das zweite Update auf die aktuell gedrückte Taste. Aktuell funktioniert das Skript nur ohne SSL mit Pooling ... Kann mir jemand dieses Verhalten erklären? Danke und Grüße Hi, vielleicht kann @foxriver76 etwas dazu sagen. Andernfalls ein Issue auf Github erstellen. Aber was ist der Status 4000, bzw. 0 am Ende? Vielleicht doch alter Status?
  • Hilfe bei Strukturierung von Klassen in TypeScript

    29
    0 Stimmen
    29 Beiträge
    2k Aufrufe
    T
    ... ... ...
  • [Gelöst]Blockly Variable anlegen und Datenpunkt anlegen

    13
    2
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    P
    @homoran Werde ich in Zukunft beachten. Habe halt heute gelernt wo man die eigenen Datenpunkte setzen muss.
  • Hilfe bei der Erstellung eines Log Files für die VIS

    blockly javascript template
    7
    2
    0 Stimmen
    7 Beiträge
    722 Aufrufe
    L
    @paul53 sagte in Hilfe bei der Erstellung eines Log Files für die VIS: @ltsalvatore Du hast nicht geschrieben wie die Darstellung in Vis aussehen soll. In einem Log werden die Ereignisse in der Reihenfolge ihres Auftretens protokolliert. Ansatz ohne die zusätzlichen Datenpunkte aus dem ersten Beitrag: const ids = Array.prototype.slice.apply($('*(functions=fenster)')); const idJSON = "0_userdata.0.Fenster.JSON"; var arr = []; if(getState(idJSON).val) arr = JSON.parse(getState(idJSON).val); on(ids, function(dp) { arr.unshift({Name: dp.common.name, Zustand: dp.state.val ? 'offen' : 'geschlossen', seit: formatDate(dp.state.lc, 'DD.MM. hh:mm')}); if(arr.length > 10) arr.pop(); setState(idJSON, JSON.stringify(arr), true); }); Erzeugt wird eine JSON-Table mit dem jüngsten Ereignis zuerst (oben). Danke für dein Feedback. Im VIS soll das Ganze chronologisch von oben nach unten oder von mir aus von unten nach oben dargestellt werden. Wie es bspw. auch beim ical der Fall ist (s.u.). Und in dieser Auflistung der letzten 10 Zustände soll der Wert von zwei Objekten angezeigt werden. In meinem Fall die beiden Objekte window_closed_since_BDZ und window_open_since_BDZ. aber auch nur wenn der Wert nicht gleich 0 ist, weil der Wert gleich 0 mir in der Auflistung nichts bringt. [image: 1699652076347-13cfc232-6a67-4a23-97d2-5e9630948dbf-image.png] Sowas Ähnliches gibt es ja auch bei der mihome app für die Sensoren, aber leider liest der Adapter diese Tabelle nicht aus: [image: 1699652626687-5fe3fac2-aee3-4a37-b027-9b0aea3e4885-image.png]
  • ESP32CAM Bilder mit Intervall auf FTP speichern

    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    MartinPM
    @bärle man kann eine Textdatei verwenden, um ftp zu automatisieren. Siehe https://stackoverflow.com/questions/16158138/how-to-ftp-with-a-batch-file (Zielserver scheint Windows zu sein) Textdatei (abgewandelt) example.txt open 10.155.8.215 user password lcd /D "G:\Subfolder\" cd folder/ binary mput watermeter.jpg disconnect quit Aufruf mit ftp -s:example.txt Dadurch wird example.txt zeilenweise durch FTP abgearbeitet... die Datei "watermeter.jpg" würde natürlich alle 5 Minuten überschrieben, wenn ein neues Foto hereinkommt. Muss man schauen, wenn man das archivieren will ... Jedes Mal eine neue Text Datei mit einem anderen Ziel-Dateinamen erzeugen ist auch nicht gerade toll.
  • Steuerungsbefehle für Heishamon / iQontrol

    1
    1
    0 Stimmen
    1 Beiträge
    195 Aufrufe
    Niemand hat geantwortet
  • Awattar - die billigsten Strom-Stunden nutzen

    82
    1
    0 Stimmen
    82 Beiträge
    18k Aufrufe
    O
    @paul53 Ich bedanke mich bei allen Helfern => das Blockly liefert mir die Daten.
  • Datenpunkte sollen bei Ereignis geändert werden

    6
    3
    0 Stimmen
    6 Beiträge
    649 Aufrufe
    CodierknechtC
    @jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden: Verstehe aktuell nicht wie ich einen Datenpunkt auf einen anderen schauen lassen kann. Du meinst per Java-Script oder wie? Nein. Kein Script. Du hast ja benutzerdefinierte DP in 0_userdata.0 angelegt, in die Du per Script Werte aus anderen DP schreiben willst. Das brauchst Du nicht. Statt der eigenen DP in 0_userdata.0 legst Du welche in alias.0 an und trägst bei denen die Konvertierungsfunktion ein. Die sind also quasi der Ersatz für Deine per Script aktualisierten DP. In der Vis nimmst Du dann die Alias-DP.
  • Hilfe gesucht. Wer kann per Skript E-Mails Parsen oder so?

    7
    0 Stimmen
    7 Beiträge
    848 Aufrufe
    HomoranH
    es g7bt einen ähnlichen Thread mit emails von ISTA
  • Velux KLF200 über KNX ansteuern klappt nicht

    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    C
    @mibr85 Hi, das Thema ist bereits schon älter, jedoch wollte ich die fragen, ob du auch Probleme mit der Positionsanzeige hast. Ich habe eine Gira X1 und es funktioniert fast alles tadellos... Wenn die Dachfenster jedoch über den eigenen Regensensor schließen, aktualisiert sich meine Statusanzeige im X1 nicht. Hast du bzw. jemand dazu eine Idee bzw. die Lösung. [image: 1699207166725-a6bac8ee-373a-45bd-a134-a2f70a549148-grafik.png]
  • Erledigt! Common/Global-Scripte mit unterschiedl. Instanzen

    9
    0 Stimmen
    9 Beiträge
    718 Aufrufe
    U
    @bahnuhr Ja war eher ein Fehler dann. Dachte initial, dass es erst einmal 2 Themen waren. Mittlerweilen ist es überlappend. Ich schließe diesen Thread hier. Sorry
  • (Erledigt!) TypeScript Kompilierfehler

    7
    0 Stimmen
    7 Beiträge
    854 Aufrufe
    U
    @ticaki PERFEKT. DANKE!!! Wirklich vielen Dank.
  • Awattar Adapter - aktueller Preis dieser Stunde

    2
    0 Stimmen
    2 Beiträge
    470 Aufrufe
    HomoranH
    @peterredl Das Forum ist voll mit solchen Skripten! z.b. https://forum.iobroker.net/post/1068257

356

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge