Skip to content

Skripten / Logik

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

16.6k Themen 213.8k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    OliverIOO
    @BertDerKleine Am besten zeigst du mal dein Script, dann kann man bessere Empfehlungen abgeben. Bitte auch mal schreiben warum du aufteilen möchtest obwohl es so funktioniert.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    KPTK
    Ich glaube fast wir haben unterschiedliche Adapter. Bei mir gibt es nur diese Eingabefelder für Lokal und Autorisation: [image: 1772552790074-6f115ee8-37cc-4937-ae8a-ed42bbc3d8ea-adaptereinstellungen-f%C3%BCr-zendure-solarflow.png] [image: 1772552887293-b9df87ae-5243-4267-82ad-10319ba6f868-image.png]
  • 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] Sonoff MQTT Temperaturwert auslesen

    climate javascript
    22
    2
    0 Stimmen
    22 Beiträge
    2k Aufrufe
    liv-in-skyL
    @Stefan-Otten das ist ja klasse - hatte schon selbstzweifel :-) meld dich, wenn du noch was dazu brauchst
  • MQTT Datenpunkte automatisch erstellen

    template javascript
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    HomoranH
    @peterfido sagte in MQTT Datenpunkte automatisch erstellen: Unicode e4 ist demnach ein ä. Das weiß ich. Ich benutze auch keine Umlaute. @peterfido sagte in MQTT Datenpunkte automatisch erstellen: Bei mir werden die Datenpunkte der MQTT Clienten (ESP...) automatisch angelegt. Bei mir auch! auch beim TE! Aber der hat seine clients so programmiert , dass sie viele Werte In einem JSON liefern. Dieses muss er jetzt zerpflücken .
  • Bash auf Influx

    communication
    7
    0 Stimmen
    7 Beiträge
    435 Aufrufe
    paul53P
    @Megaheat sagte: Gibt es eventuell einen direkten JSON import ? Ich kenne die Webseiten nicht, die Du ausliest. Wenn sie direkt ein JSON liefern, sollte man das auch per Javascript einlesen können. const url = '...'; request(url, function(err, response, json) { if(!err && json) { let obj = JSON.parse(json); // Temp, rH ermitteln } });
  • Javascript Expression Logic Hilfe

    javascript
    11
    0 Stimmen
    11 Beiträge
    775 Aufrufe
    M
    @paul53 Das stimmt, dankeschön. Man lernt eben nur richtig wenn man ausprobiert und selber dahinter kommt. Vielen dank für die schnelle Hilfe!
  • Soll-/Ist-Zustand erweitert

    javascript
    3
    0 Stimmen
    3 Beiträge
    236 Aufrufe
    A
    @Asgothian Daran habe ich auch schon gedacht, quasi eine kleine State Machine... Die Idee finde ich gut, das würde ja bedeuten, dass ich mit dem Steuer-Datenpunkt z.B. sage: Einschalten. Zuerst schaltet das Skript dann den Strom ein und setzt den Zustand "startet". Dann fährt der PC hoch, irgendwann erhalte ich z.B. einen Ping als Lebenszeichen und setze den Zustand "läuft". Was passiert, wenn ich während des Hochfahrens bereits den Steuer-Datenpunkt auf "ausschalten" setze? Während des Hochfahrens kann ich ja keinen Shutdown-Befehl setzen und Strom einfach abschalten ist auch eine schlechte Idee. Was meint Ihr, wäre dann das Beste? Die Änderung des Steuer-Datenpunkts nur während "aus" und "läuft" zulassen? Den Befehl fürs Herunterfahren sofort ausführen, sobald der Zustand "läuft" erreicht ist? Den Steuer-Datenpunkt wieder auf "einschalten" zurücksetzen, weil der Zustand noch nicht erreicht ist? Was passiert, wenn der PC nicht startet (z.B. manuelle Eingabe für fsck nötig)? Man könnte einen Timer starten, sobald der Einschalt-Befehl kommt - und wenn der PC sich nicht in einer bestimmten Zeit meldet, wird ein eigener Status "Fehler" gesetzt? Oder wie könnte man so einen Fall abdecken? Was meint Ihr dazu?
  • Skript zum Auslesen der S.USV

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    inlineI
    Liebes Forum, nicht dass mein Skript viele Fragen aufgeworfen hätte, aber der guten Ordnung halber möchte ich euch trotzdem mitteilen dass ich ab sofort keine großartige Hilfe mehr geben kann. Die Batterie meines SUSV ist schon wieder defekt und diesmal hat es auch die Platine erwischt. Da ich sowieso schon ewig keinen Stromausfall mehr hatte und das Ding doch recht teuer ist, werde ich es nicht ersetzen. Ich kann also nichts mehr testen. Liebe Grüße, nachträglich frohe Weihnachten und einen guten Rutsch! Ralf
  • KNX Szene triggern

    blockly scenes javascript
    2
    0 Stimmen
    2 Beiträge
    270 Aufrufe
    paul53P
    @Steve-MASSARD: bleibt und eben nur beim Betätigen ein 1-Wahr-Telegramm sendet. Trigger auf "wurde aktualisiert". on({id: 'knx.0.xyz'}, function() { //Reaktion });
  • [Frage] Namen der States von Wertetabelle

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    D
    Danke für eure Hilfe. Ich bin irrtümlich davon ausgegangen, dass diese Meldung des Skript-Editors die Ursache dafür sein könnte, dass mein Skript nicht mehr funktioniert. [image: 1608999957882-2020-12-26-17-25-12.png] Es war aber gar nicht der Grund. Ursache war vielmehr, dass ich hier //+++++ Zurücksetzen aller Timer-Werte mit Reset-Button on({id: path+'setVitoTimerReset', change: 'any', val: 'true'}, function(){ for(i = 1; i <= 4; i++){ setState(path+'setVitoTimer'+i+'hAn', 24); setState(path+'setVitoTimer'+i+'mAn', 6); setState(path+'setVitoTimer'+i+'hAus', 24); setState(path+'setVitoTimer'+i+'mAus', 6); } setState(path+'setVitoTimerSetzen', false); setState(path+'setVitoTimerLaden', false); }); das "true" im on-Trigger als String und nicht als boolean deklariert hatte. Mit //+++++ Zurücksetzen aller Timer-Werte mit Reset-Button on({id: path+'setVitoTimerReset', change: 'any', val: true}, function(){ for(i = 1; i <= 4; i++){ setState(path+'setVitoTimer'+i+'hAn', 24); setState(path+'setVitoTimer'+i+'mAn', 6); setState(path+'setVitoTimer'+i+'hAus', 24); setState(path+'setVitoTimer'+i+'mAus', 6); } setState(path+'setVitoTimerSetzen', false); setState(path+'setVitoTimerLaden', false); }); funktioniert es nun wieder, wie gewünscht. Wünsche euch noch schöne Restweihnachten, Thorsten
  • Blockly => x Sekunden zu einer Uhrzeit dazu addieren

    Verschoben
    14
    1
    0 Stimmen
    14 Beiträge
    6k Aufrufe
    paul53P
    @FrankDCE sagte: Welches Datenformat muss der Datenpunkt "Auto-Ende Laden Auto" haben? Text? @paul53 sagte in Blockly => x Sekunden zu einer Uhrzeit dazu addieren: ein eigener Datenpunkt vom Typ "Zeichenkette" (string)
  • [gelöst]Licht anlassen, wenn Bewegung erkannt wird

    blockly
    4
    1
    0 Stimmen
    4 Beiträge
    644 Aufrufe
    B
    @paul53 Funktioniert super. Vielen Dank
  • Wie kann man feststellen, von wo der Fehler kommt?

    javascript
    16
    0 Stimmen
    16 Beiträge
    564 Aufrufe
    liv-in-skyL
    @bergjet kein thema - dachte mir schon, dass du neu installiert hast
  • [gelöst] Lichtwecker mit Cron -> fehler im Blockly

    blockly javascript
    13
    2
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    F
    Danke allen! Funktioniert soweit alles wie gewollt. Ob der Script so "sauber" ist kann ich aber nicht beurteilen... :-) Anbei noch die funktionierende Lösung: <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="cron" id="wecker1">wecker1</variable> <variable type="interval" id="Intervall">Intervall</variable> </variables> <block type="procedures_defnoreturn" id="Pgc8VNiU%XB3z~a2X^p7" x="-458" y="-1040"> <field name="NAME">wecker_stellen</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="schedule_create" id="^iAKAEL!OxvNk0=QpqG$"> <field name="NAME">wecker1</field> <value name="SCHEDULE"> <shadow type="field_cron" id="w2^$(SL4_;c5sRlw/h??"> <field name="CRON">* * * * *</field> </shadow> <block type="cron_builder" id="gDhUBD5ldAtbDmD.0Zfp"> <mutation xmlns="http://www.w3.org/1999/xhtml" seconds="false" as_line="false"></mutation> <field name="LINE">FALSE</field> <field name="WITH_SECONDS">FALSE</field> <value name="DOW"> <shadow type="text" id="h6C=GuqgX-~UD,Z}X5(F"> <field name="TEXT">*</field> </shadow> <block type="get_value" id="V-`#Kw,duWYJ{LZlS3.g"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wecker.Wecker_1.Wecktage_Cron</field> </block> </value> <value name="MONTHS"> <shadow type="text" id=".{W]66rbs0=@Sq@Qv9QG"> <field name="TEXT">*</field> </shadow> </value> <value name="DAYS"> <shadow type="text" id="D`01~Uh)t%vn-kJK8z`^"> <field name="TEXT">*</field> </shadow> </value> <value name="HOURS"> <shadow type="text" id="0WU.?a?.U_v`!]I*=bG("> <field name="TEXT">15</field> </shadow> <block type="get_value" id="lpsX;;UoT4@$yCpZdRm2"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wecker.Wecker_1.Weckzeit_h</field> </block> </value> <value name="MINUTES"> <shadow type="text" id="JQ6+=ex4?rhrs+0tH,E_"> <field name="TEXT">31</field> </shadow> <block type="get_value" id="$QCPxPRzPz2h:pV!(M*g"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wecker.Wecker_1.Weckzeit_min</field> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="comment" id="Q^N01Djl}n;wE11)K29F"> <field name="COMMENT">Wecker Schlafzimmer</field> <next> <block type="controls_if" id="a;HC95+9[)vOBU!%K[%A"> <value name="IF0"> <block type="logic_compare" id="v$~UJxDyyN]dOr615,s+"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Ud1:8vQ`p6NI|0s]3m~z"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Wecker.Wecker_1.Wecker_1_MaPa</field> </block> </value> <value name="B"> <block type="logic_boolean" id="CD~yAiHTL7ekiP9.Ou~{"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="XIiw%a#I%Po0S*}WR4)g"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Lights.13.level</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="~K6+(10R^8f^/U#.Yr4$"> <field name="NUM">0</field> </block> </value> <next> <block type="controls_if" id="kAsCx*Xi*`U6/yaSItWI"> <value name="IF0"> <block type="logic_compare" id="1oZ)+,56=72R=9~8l9Bx"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="ssa9cS}.`cKRTVZvk$P8"> <field name="ATTR">val</field> <field name="OID">deconz.0.Lights.13.on</field> </block> </value> <value name="B"> <block type="logic_boolean" id="mUd}67#E{t!E6wZ61|Va"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_setinterval" id="7j#xTY@WFY!W#._KBBN="> <field name="NAME">Intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="mKJHkCt|kSDAgU(d;{]B"> <value name="IF0"> <block type="logic_compare" id=";y[XM99UkG~vC*07FI~I"> <field name="OP">GTE</field> <value name="A"> <block type="get_value" id=";0.(oVgLd~7b=r@HWH(O"> <field name="ATTR">val</field> <field name="OID">deconz.0.Lights.13.level</field> </block> </value> <value name="B"> <block type="get_value" id="nyku|N[WzsUZGO:zlivd"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Licht.Standart_Schlafen_Decke</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="Y+oC)TA*y[,JS:?=5@5:"> <field name="NAME">Intervall</field> </block> </statement> <next> <block type="control" id="M!mZ7~CJiWlyGhZGj=wt"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">deconz.0.Lights.13.level</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="+!X,.0Q[?j:o@o@IOVmO"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="qGG|lrOhAo$?@{m3+wl5"> <field name="NUM">1</field> </shadow> <block type="get_value" id="L%$,93y1eurif-Z.xB1~"> <field name="ATTR">val</field> <field name="OID">deconz.0.Lights.13.level</field> </block> </value> <value name="B"> <shadow type="math_number" id=".sOjyfd/*xTl8rdQB@SI"> <field name="NUM">1</field> </shadow> <block type="math_number" id="eyKM=I]e{@Qw3G-Rz~A-"> <field name="NUM">10</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> <block type="procedures_callnoreturn" id="C%`+c}i:!vBV/0VO}9R-" x="263" y="-1063"> <mutation name="wecker_stellen"></mutation> <next> <block type="on_ext" id="/lAG.lcf1y2q^QEZ|g_q"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="2lv[IPb2*kcN(BWc|B!d"> <field name="oid">0_userdata.0.Wecker.Wecker_1.Weckzeit_h</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="oJqNA37,QD@Z(S-SS`-7"> <field name="oid">0_userdata.0.Wecker.Wecker_1.Weckzeit_min</field> </shadow> </value> <value name="OID2"> <shadow type="field_oid" id=",T]qK|ai~5!bQ#e61kVa"> <field name="oid">0_userdata.0.Wecker.Wecker_1.Wecktage_Cron</field> </shadow> </value> <statement name="STATEMENT"> <block type="schedule_clear" id="$8;=Omg|6,#rx(FXwyYV"> <field name="NAME">wecker1</field> <next> <block type="procedures_callnoreturn" id=",MfiO70pOA[nXP/MdMti"> <mutation name="wecker_stellen"></mutation> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="*k8[E)%1p5,8h%;BYEJA" x="-332" y="-602"> <field name="COMMENT">Wecker Schlafzimmer MaPa</field> </block> </xml> [image: 1608915373424-sharedscreenshot.jpg]
  • Blockly variable Timeout Steuerung

    Verschoben
    9
    1
    0 Stimmen
    9 Beiträge
    4k Aufrufe
    peterk34P
    @TGerwald der Fehler ist ziemlich trivial ... das mit der Variable funktioniert nur in MilliSekunden (keine Ahnung warum)
  • [gelöst] Probleme mit telegram Kommunikation?

    javascript blockly node-red communication
    15
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    Meister MopperM
    @Nas007 Prima, dann setz mal vor den Titel im ersten Beitrag ein [gelöst].
  • Skripte richtig verwalten/anlegen

    blockly
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    dslraserD
    Ich mache es so... [image: 1608724567581-screenshot_20201223-125533_chrome.jpg]
  • [gelöst]Blockly Cron-Job / Zeitplan

    blockly
    3
    2
    0 Stimmen
    3 Beiträge
    287 Aufrufe
    GregorSG
    @Meister-Mopper Hat funktioniert. Danke
  • View wechseln

    Verschoben
    51
    0 Stimmen
    51 Beiträge
    11k Aufrufe
    D
    Hat sich erledigt, Danke
  • Fehlermeldung im log entschlüsseln

    javascript
    13
    0 Stimmen
    13 Beiträge
    738 Aufrufe
    M
    @paul53 @Homoran Ich habe den Fehler gefunden. Ich arbeite ausschließlich mit den Aliasen. Bei mir heist der Alias Light_005. In deconz ist es lights/13. Das muss man erst einmal herausfinden... Besten dank aber für eure Hilfe! Ich habe aber noch ein anderes Problem, was unregelmäßig immer dann auftritt, wenn ich in Blockly einen Datenpunkt auswählen will, also z.B. hier den Datenpunkt Lights_Info_Blink: [image: 1608661098522-8e7b750d-adb1-4bba-9246-1ab68dd5be1e-image.png] Ich hatte schonmal im Forum gefragt, aber leider konnte mir hier keiner helfen, vielleicht habt ihr ja noch eine Idee. Der Fehler äußert sich darin, dass ca. 30 Sekunden nichts passiert und der drehende Halbkreis kommt bis dann wieder alles normal funktioniert. Hier die Fehlermeldung: admin.0 2020-12-22 19:16:40.998 warn (24290) Terminated (UNCAUGHT_EXCEPTION): Without reason admin.0 2020-12-22 19:16:40.028 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:40.028 error (24290) uncaught exception: Cannot set property 'source' of undefined admin.0 2020-12-22 19:16:40.026 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:40.026 error (24290) uncaught exception: Cannot set property 'source' of undefined admin.0 2020-12-22 19:16:40.024 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:40.023 error (24290) uncaught exception: Cannot set property 'source' of undefined admin.0 2020-12-22 19:16:40.021 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:40.020 error (24290) uncaught exception: Cannot set property 'source' of undefined admin.0 2020-12-22 19:16:40.019 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:40.018 error (24290) uncaught exception: Cannot set property 'source' of undefined admin.0 2020-12-22 19:16:40.015 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:40.015 error (24290) uncaught exception: Cannot set property 'source' of undefined admin.0 2020-12-22 19:16:39.995 info (24290) terminating http server on port 8081 admin.0 2020-12-22 19:16:39.992 error (24290) TypeError: Cannot set property 'source' of undefined at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:6957:68 at /opt/iobroker/node_modules/iobroker.objects-redis/in admin.0 2020-12-22 19:16:39.986 error (24290) uncaught exception: Cannot set property 'source' of undefined JS-controller: 3.1.6 Node.js: 12.20 Habt ihr auch hier eine Idee?
  • Motioneye und IoBroker Curl

    blockly
    16
    0 Stimmen
    16 Beiträge
    782 Aufrufe
    W
    @haselchen Dankeschön, wünsche ich dir auch :)
  • Suche NFC APP

    communication
    5
    0 Stimmen
    5 Beiträge
    465 Aufrufe
    Jey CeeJ
    @Creator du könntest dir auch mit Tasker App Factory eine App Bauen. Die kann dann das was du willst bzw. Tasker eben ermöglicht. Einmal erstellen und auf anderen Geräten installieren Fertig.

605

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge