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": [] } ]
  • Verschwinden von MQTT Geräten erkennen und melden

    16
    0 Stimmen
    16 Beiträge
    583 Aufrufe
    mickymM
    @martinp Nein das sagte ich doch, Du kannst Doch das ganze in eine Schleife einbinden und über ein Array durchiterieren.Oder Du triggerst direkt über den Thermostat oder abfragst. Wie gesagt welche Logik zum Abfragen du nimmst oder triggern ist Deine Sache. Aber so kannst Du einfach eine Liste von Thermostaten erstellen und alle topics erstellem_ [image: 1692114028255-af2fba55-1906-4ff1-bcb6-33c41440783a-image.png] Spoiler <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="nu$N7|=f+vnO8RVm:cym">Liste_Thermostate</variable> <variable id="JW8gktT*}~bRUd6MfH#u">Thermostat</variable> </variables> <block type="variables_set" id="hK7EI~VB@!#$5jf,=)lr" x="-587" y="-112"> <field name="VAR" id="nu$N7|=f+vnO8RVm:cym">Liste_Thermostate</field> <value name="VALUE"> <block type="lists_create_with" id="apI:3%H0NG=t+k`}/0LA"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="p%1gC:]`|DHfy{KP7JQf"> <field name="TEXT">thermostat_1</field> </block> </value> <value name="ADD1"> <block type="text" id="pNnv)I]Eq3==EBw;hK}d"> <field name="TEXT">thermostat_2</field> </block> </value> <value name="ADD2"> <block type="text" id="H{[NPCBKq05V;rK-40,2"> <field name="TEXT">thermostat_3</field> </block> </value> </block> </value> <next> <block type="controls_forEach" id="g5T}i9pUy1C0p3vha+5z"> <field name="VAR" id="JW8gktT*}~bRUd6MfH#u">Thermostat</field> <value name="LIST"> <block type="variables_get" id="xbe)qBW[jl?dmaR.[:Ny"> <field name="VAR" id="nu$N7|=f+vnO8RVm:cym">Liste_Thermostate</field> </block> </value> <statement name="DO"> <block type="sendto_custom" id="ls8@a?b_FZd{/PwZ%,li"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="topic,message" with_statement="false"></mutation> <field name="INSTANCE">mqtt.1</field> <field name="COMMAND">sendMessage2Client</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text" id="$,O^*f*}($?[H8_(d*+U"> <field name="TEXT">thermostat1/isAlive</field> </shadow> <block type="text_join" id="O6E{W{#l(2VcnvqOe|Rl"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="AzpRo(og/GD94mdngxQF"> <field name="VAR" id="JW8gktT*}~bRUd6MfH#u">Thermostat</field> </block> </value> <value name="ADD1"> <block type="text" id="VB)a`Lf$skQC8CWbgCS_"> <field name="TEXT">/isAlive</field> </block> </value> </block> </value> <value name="ARG1"> <shadow type="text" id="kYzE4%b}Px*fTaC#_m53"> <field name="TEXT">Meine Nachricht</field> </shadow> <block type="logic_boolean" id="#^)Qo*Dc+?;*v.HB%8Q$"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </xml> das sind aber Basics beim Puzzeln (Geht aber auch mit steuere oder aktualisiere von Datenpunkten). Wie gesagt das sind Basics, dass man identische Codeteile über Schleifen durchläuft. Und wer mich kennt, weiss, dass ich ein anderes Tool bevorzuge - das sogar direkt mit mqtt kommunizieren kann. ;)
  • Skript für Schalter um Skript zu pausieren/deaktivieren

    13
    1
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    M
    @cluni super Hinweis! Ist mir noch gar nicht aufgefallen! Danke
  • Mehrere Shelly Plus 1 PM | Urlaubsschaltung

    1
    0 Stimmen
    1 Beiträge
    444 Aufrufe
    Niemand hat geantwortet
  • Synology Adapter Snapshot erneuern

    3
    1
    0 Stimmen
    3 Beiträge
    218 Aufrufe
    Samson71S
    @quaxman Mehrfachposts machen den Sachverhalt nicht besser. Bitte vermeiden. https://forum.iobroker.net/topic/67078/synology-adapter-snapshot-per-telegram-versenden-gelöst/4?_=1692004867774
  • Neue Objekte regelmäßig in Datenbank schreiben

    5
    1
    0 Stimmen
    5 Beiträge
    465 Aufrufe
    I
    Erstmal danke. Ja, das würde ich gerne automatisieren. Gut, dann fange ich an zu coden.
  • Keine Änderungen in Scipts möglich

    13
    1
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    crunchipC
    @berndroid sagte in Keine Änderungen in Scipts möglich: Beim Umzug der VM scheint ne Menge kaputt gegangen zu sein. was soll denn kaputt gehen, wenn du eine neue VM anlegst, iobroker installierst und dein backup zurück spielst, muss dieser natürlich aufgrund nodejs v18, neu gebaut werden. Es kann durchaus möglich sein, in speziellen Fällen, das der rebuild nicht funktioniert, diesbezüglich bekommt man im log Meldung und muss selbst Hand anlegen. Zu deinem Javascript Problem, wie eingangs erwähnt, du der Meinung bist, das dies erst aufgrund eines Umzugs entstanden ist, läuft möglicherweise ein script nicht korrekt(Ip Adresse irgendwo in Verwendung?)
  • Import vom Backup meiner Skripte im JS Adapter schlägt fehl

    10
    0 Stimmen
    10 Beiträge
    710 Aufrufe
    S
    @crunchip Damit könntest du recht haben
  • Astro-Trigger mit Versatz funktioniert nicht

    blockly
    10
    3
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    A
    @basic80 said in Astro-Trigger mit Versatz funktioniert nicht: Mithilfe eines Testskripts habe ich inzwischen herausgefunden, dass bis 02:00 Uhr alles funktioniert. Wenn Golden hour-Ende minus x < 02:00 Uhr, wird der Trigger wohl ignoriert. [image: 1597213641959-goldenhour-test-log3.jpg] Um sicherzustellen, dass der Astrotrigger (mit Offset) wirklich nur bis 02:00 Uhr funktioniert und es keine andere Ursache gibt, wäre es schön, wenn jemand das mal testen könnte. Der Thread hier ist zwar schon uralt, aber ich bin gerade bei meinen eigenen Recherchen zum Astro-Trigger darüber gestolpert. Ich habe für das Verhalten eigentlich nur eine Erklärung: Bei der Berechnung der Datumsgrenze, also der Frage, ob der Triggerzeitpunkt auf dem heutigen oder dem gestrigen Tag liegt, wird intern die lokale Uhrzeit auf UTC umgerechnet. Da dein Beitrag aus dem Sommer stammt, dürften sich deine Zeitangaben also nach UTC+2 richten. Das bedeutet, dass "vor 2:00 Uhr" bei dir "vor 0:00 Uhr" nach UTC heißt. Ich teste jetzt mal selbst ein bisschen mit dem Astro-Trigger, um das zu verifizieren.
  • Wechselrichter Steuerung null Einspeisung Blockly Skript

    blockly javascript
    6
    2
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    R
    @paul53 Zähler kommt alle 5 bis 10 sekunden, und das skript schaut ja alle 15 sekunden. ich vermute das das skript das negative vorzeichen irgendwie wegnimmt
  • Sun 1000 g2 WR im iobroker

    blockly javascript
    4
    0 Stimmen
    4 Beiträge
    595 Aufrufe
    G
    @mymeyer Das kann ich Dir nicht sagen, am Besten mal in den einschlägigen Foren gucken, oder den Entwickler selbst anschreiben. Ich nutze den Lunentree mit Trucki´s Platine, Läuft. Oder Du guckst mal bei Christian auf YT und stellst ihm einfach die Frage, wenn es einer weiss, dann er ;-) Hab grade mal geguckt, da muss dann noch eine Platine mit eingebaut werden, dann ist er kompatibel--> siehe github trucki-eu
  • VSCode Deklarationsfehler

    4
    0 Stimmen
    4 Beiträge
    485 Aufrufe
    T
    @oliverio sagte in VSCode Deklarationsfehler: @oberst_von_gatow https://codingbeautydev.com/blog/typescript-cannot-redeclare-block-scoped-variable/?utm_content=cmp-true Danke, das gefällt mir deutlich besser. gibts auch einen Weg um diesen "Fehler" zu entfernen: onStop(function (callback:any) { stop1 = true; callback(); }, 2000 /*ms*/); callback() wird als möglicherwiese nicht definiertes Objekt angezeigt. Ja gibts... einfach definieren, kaum hab ich die Frage gestellt, schon fällt mir die Antwort ein.
  • FEHLER: Cannot extract Blockly code

    12
    1
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    crunchipC
    @shigi76 sagte in FEHLER: Cannot extract Blockly code: das kann ich gar nicht genau sagen.. du musst doch wissen ob diese Adapter installiert sind, falls etwas im blockly verwendet wird was aber nicht vorhanden ist, verursacht dies Probleme
  • json nach iobroker übertragen

    8
    0 Stimmen
    8 Beiträge
    674 Aufrufe
    haus-automatisierungH
    @arteck Das kann sein, der Adapter wird ja auch nicht mehr so richtig gepflegt soweit ich weiß. Ich nutze zumindest nur noch rest-api.
  • Unhandled promise rejection

    14
    2
    0 Stimmen
    14 Beiträge
    524 Aufrufe
    T
    Vielen Dank für die schnellen Rückmeldungen. Mit der 7.0.3 läuft wieder alles. Warum ich da nicht selbst drauf gekommen bin, weiß ich jetzt auch nicht. Wahrscheinlich verläuft man sich halt irgendwann. Hoffentlich muß ich jetzt nicht mein Zertifikat beim Matthias wieder abgeben :-) Danke!
  • [gelöst] Meteohub Daten, XML parsen, JSON durchsuchen

    javascript
    43
    0 Stimmen
    43 Beiträge
    6k Aufrufe
    T
    @steinche sagte in [gelöst] Meteohub Daten, XML parsen, JSON durchsuchen: ersetzt. "Problem" selbst gelöst und autodidaktisch den Zahlenbereich bis 20 erschlossen :) https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#best-practice als referenze
  • Steckdose mit 2 Datenpunkten für on off

    31
    3
    0 Stimmen
    31 Beiträge
    4k Aufrufe
    MartinPM
    @vazi Ich bin selber blockly rookie, sorry - bevor ich Dir etwas falsches Mitgebe Man muss sehen, ob man den Zustand, den die Steckdose hat irgendwo braucht. Wenn das nicht nötig ist, dann kann man ja auch einfach die AN bzw AUS Pulse auch einfach so auslösen Hier habe ich einen Puls ausgelöst ( 35 Sekunden Tauch-Pumpe im Regenfass an, um die Tomaten zu wässern) Hängt aber an einem Zeitplan. Man könnte da vielleich einen Datenpunkt in Userdata anlegen, den man setzen und löschen kann. Der könnte dann statt des Zeitplans Auslöser der beiden Aktionen die der Zeitplan klammert sein.. Man braucht natürlich einen Puls zum Setzen und einen Puls zum Löschen ... [image: 1691164374282-90b05bc7-885d-43af-9074-63fa0cb8ff98-grafik.png]
  • Abfrage Verfügbarkeit Zigbee Schalter

    7
    0 Stimmen
    7 Beiträge
    835 Aufrufe
    T
    @ticaki ixh nutze den Zigbee Adapter, nicht Zigbee2Mqqt. Ujd bei meinem Adapter habe ich nichts gefunden, um den Wert anzupassen
  • [gelöst] Namen der Datenpunkte ändern

    5
    0 Stimmen
    5 Beiträge
    691 Aufrufe
    S
    @paul53 das wusste ich nicht. Nun geht es. Wunderbar, vielen Dank!
  • Dynamische Stromtarife (tibber) sinnvoll nutzen

    8
    0 Stimmen
    8 Beiträge
    3k Aufrufe
    F
    @reblausgt Danke schaue ich mir auf jeden Fall einmal an.
  • Blockly für Meldung wenn Trockner fertig

    6
    0 Stimmen
    6 Beiträge
    566 Aufrufe
    G
    @timowald [image: 1690965046665-bildschirmfoto-2023-08-02-um-10.30.21.png] Ist zwar eine Waschmaschine aber das Ergebnis ist ja das gleiche. Den Punkt Waschmaschine(Trockner) fertig musst du dir selbst anlegen, rest sind Standard Komponenten vom Shelly, Alexa und Telegram Adapter...

319

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge