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
    paul53P
    @13patrick37 sagt: muss ich das "none" unten mit einbauen? Nicht, wenn es nur 3 mögliche Werte gibt.
  • 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
  • Becker Rolladensteuerung - Umbau Fernbedienung

    Verschoben
    18
    0 Stimmen
    18 Beiträge
    8k Aufrufe
    F
    @Nabla: Soweit ich das sehe, bräuchte man doch hier mindestens das Pro-Paket für 499,- Euro mit dem NEO Plugin AIO GATEWAYS ` Du brauchst zur Ansteurung von Becker mindestens eine AIO Gateway V5, kosten 140 Euro, und dann entweder das NEO Plugin AIO Gateway für 99 Euro oder alternativ die Ansteurung des AIO Gateways V5 und Becker über IP-Symcon kostet auch 99 Euro. In beiden Fällen liegst Du also bei 239 Euro gesamt. Oder Du machst Dir die Mühe direkt aus ioBroker das AIO Gateway zu schalten dann sparst Du noch mal 99 Euro, must aber Wireshark bemühen, die API ist nicht öffentlich.
  • SetState() mit Acknowledge?

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    17k Aufrufe
    modmaxM
    Die if-Abfrage im on-Trigger kann man auch noch vermeiden, wenn man denn nur die eine if-Abfrage auf ack=false drin hat: on({id: 'Hier.der.Datenpunkt', change: 'any', ack:false}, function (obj) { // Hier der Code, der aber nur ausgeführt wird, falls aktiv im VIS etc. ausgeführt. ACK ist da standardmäßig immer false. }); MfG Markus
  • Frage zu Blockly: Rollosteuerung

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    803 Aufrufe
    B
    Moin, ist zwar schon bischen her aber könntest du deine funktionierenden Rolladen Blocklys hier mal posten? Danke
  • Blockly Abluftsteuerung

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    629 Aufrufe
    O
    danke Paul…teste ich gleich
  • Skripte in IDE entwickeln und debuggen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    599 Aufrufe
    M
    Sieht vielversprechend aus, das probier ich mal. Besten Dank!
  • Frage zum $ - Selector

    Verschoben
    4
    2
    0 Stimmen
    4 Beiträge
    419 Aufrufe
    paul53P
    @Lenny.CB: Gibts da auch ne Erklärung für? ` Nur eine Vermutung: Durch die Angabe von channel wird die Selektion auf Datenpunkte eingeschränkt, die einem Kanal zugeordnet sind. Das sind Datenpunkte unter javascript. nicht.
  • Socket.io - Alle Objekte unterhalb von Datenpunkt

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    446 Aufrufe
    T
    Hey Fitti, ein Script welches den Batteriestatus prüft erstellt einen Datenpunkt mit dem Namen des Geräts (hm-meq…) und löscht diesen wieder sobald die Batterie gewechselt wird. Per socket.io habe ich mir ein eigenes Webinterface gebastelt, hier soll nun im Benachrichtigungsfenster die Meldung erscheinen, das eben die Batterie leer ist. Er prüft also bei Veränderung und erstellt dann die Meldung, daher unbekannte Datenpunkte und daher eben alle Unterpunkte von X.
  • Zugriff auf Mediola per http…

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    3k Aufrufe
    Z
    @0018: OK, danke dir. Mit PC konfigurieren meinst du sicherlich mit dem Browser auf die Weboberfläche des Gateways zugreifen und dort konfigurieren oder gibt es ein PC-Tool zum installieren? Reicht es Wireshark auf meinem PC laufen zu lassen und zu sniffen oder brauch ich einen Switch mit Port-Mirroring um alles zu sehen? ` Zum konfigurieren nimmt man mediola Neo was kostenlos ist, um die becker dinger an das gateway anzulernen, braucht man normalerweise as plugin aio gateways. Aber man kann in den testmodus wechseln und dann die becker dinger anlernen, dann eine fernbedienung erstellen mit den buttons hoch,runter, stop. Diese fernbedienung kann man dann am pc testen….wireshark starten und aufnehmen, die buttons anklicken und im wireshark die http befehle suchen. Also braucht man für alles den pc, neo, wireshark und das gateway.
  • [gelöst] Wert mit Einheit

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    807 Aufrufe
    modmaxM
    Könnest Du dann den Beitrag noch als "gelöst" im Titel markieren? … :-) MfG Markus
  • Gelöst: Fehler im Script

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    527 Aufrufe
    M
    @paul53: Es fehlt der Abschluss von Schedule. } }); // on }); // schedule ```` ` Dankeschön ;-)
  • [gelöst] JS sicherstellen, dass Telegram Nachricht gesendet hat

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    590 Aufrufe
    Jeeper.atJ
    Dann bitte dem Threadtitel ein [gelöst] voranstellen. Vielen Dank.
  • Blockly Skript wirft seltsame Fehler

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    448 Aufrufe
    A
    Wo liegt deine Variable? Meine lag in einem Unterordner von javascript.0/scriptsEnabled/… Ich habe auf Verdacht die Variable dort gelöscht, direkt unter javascript.0 wieder angelegt und in meinem Script geändert. Seitdem geht‘s wieder. Mir nicht klar, ob der Ablageort tatsächlich das Problem war, oder einfach die Tatsache, dass ich die Variable gelöscht und wieder neu angelegt habe, geholfen hat. VG Alex
  • Alexa2 - Object von getriggerte channel ansprechen

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    G
    Super qoka. Vielen Dank. Zwar viele WARN im log aber er macht was er soll. Ich weiß auch nicht besser :D Nochmal Vielen Dank.
  • Anwesenheitsscript mit 3 Aktoren?

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    453 Aufrufe
    BigWumpusB
    OK, du ersetzt in meinem Blockly das "Bernd-S8" durch Dein "Maggis_S8.btHere". "Anwesenheit Bernd" durch "Patrick". Dein Blockly-Script hat aber nicht zuviel mit Deinem Text darüber zu tun… Ich würde die drei Arten der Prüfung so anlegen und jeweils Patrick_da1, Patrick_da2 und ...3 ansteuern, jeweils mit einem Aktor. Und dann: Bei jeder Änderung eines der Zustände läuft ein Script, das alle Zustände zusammenführt und EINEN Zustand schaltet bei mir "Anwesenheit jemand". Und daraus ergeben sich dann weitere Schaltungen... Kann man "schöner" mit verschachtelten If-And-Or-Ketten machen, aber manchmal liebe ich Bitbanging, weil es so einfach ist. Das mit dem Zeitplan bitte nicht ansehen, das versteht hier sowieso niemand ohne bebilderte Anleitung und Youtube-Video. 8-) Ist aber auch schwer hier... <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="kfhthl4A_O7c}!^iGR`I" x="-412" y="-337"><field name="OID">tr-064.0.devices.Bernd-S8.active</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION">true</field> <statement name="STATEMENT"><block type="controls_if" id="h,hR16M;yVA1T7@}{FDq"><mutation else="1"></mutation> <value name="IF0"><block type="variables_get" id="ROHg,c51][lDw5Elq9WQ"><field name="VAR">value</field></block></value> <statement name="DO0"><block type="update" id="?@YMzuJn`ZO[DfO2!HiI"><mutation delay_input="true"></mutation> <field name="OID">admin.0.Anwesenheit.Bernd</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">0</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id=",),eUcCn.}Q(RejIR6XX"><field name="BOOL">TRUE</field></block></value></block></statement> <statement name="ELSE"><block type="update" id="k)b?lWig(po!O1=%K3`0"><mutation delay_input="true"></mutation> <field name="OID">admin.0.Anwesenheit.Bernd</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="=f7~uNZjuwBm}Yi6AU-~"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement> <next><block type="on" id="|V:kU=)Z8](#y4o.Sn[k"><field name="OID">tr-064.0.devices.iPhone.active</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION">true</field> <statement name="STATEMENT"><block type="controls_if" id="`=u0q7JK*r8ox}wp6{S."><value name="IF0"><block type="variables_get" id="S`zjp]fX{i6~*7mG4ywc"><field name="VAR">value</field></block></value> <statement name="DO0"><block type="update" id="DAU9B17C(EQZ!h2,w7X7"><mutation delay_input="true"></mutation> <field name="OID">admin.0.Anwesenheit.Valentina</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">0</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="BLKO%x).AdcMLrb/f|h:"><field name="BOOL">TRUE</field></block></value></block></statement></block></statement> <next><block type="schedule" id="=:%3E--`sgvxL#0Jwn/D"><field name="SCHEDULE">*/5 9-22 * * *</field> <statement name="STATEMENT"><block type="controls_if" id="dc~4EAADd2J]xk`J[*@u"><value name="IF0"><block type="get_value" id="n1]K,(@]P7pB`q(CS{xG"><field name="ATTR">val</field> <field name="OID">admin.0.Anwesenheit.Valentina</field></block></value> <statement name="DO0"><block type="controls_if" id="qtKy+#reegSQ]LiiZ,:e"><value name="IF0"><block type="logic_negate" id="pOH^Y1O{P0tL-8yDbfdW"><value name="BOOL"><block type="get_value" id="?!D4tDC=bYy_jRh#}[nn"><field name="ATTR">val</field> <field name="OID">tr-064.0.devices.iPhone.active</field></block></value></block></value> <statement name="DO0"><block type="update" id="AgIOd}a8|;A.LTvtGW*~"><mutation delay_input="true"></mutation> <field name="OID">admin.0.Anwesenheit.Valentina</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="fA;^.W@~/QC;-}*l9jTs"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></statement> <next><block type="on_ext" id=":*j}F2t1pyx6Yj@P@==8"><mutation items="2"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id=";s5b0_,!u0C{AK/hhLTM"><field name="oid">admin.0.Anwesenheit.Bernd</field></shadow></value> <value name="OID1"><shadow type="field_oid" id=":#zLyra}hnJthGnZ:zM-"><field name="oid">admin.0.Anwesenheit.Valentina</field></shadow></value> <statement name="STATEMENT"><block type="variables_set" id=":Mh%Khr4O(p-?yN``i-:"><field name="VAR">anybody</field> <value name="VALUE"><block type="logic_boolean" id="Q})Nre/);hYa!BeWrSFx"><field name="BOOL">FALSE</field></block></value> <next><block type="controls_if" id="pJasH9X8#DcWpIcaiQ,u"><value name="IF0"><block type="get_value" id="l3JT}#:((!O3OsWa(B8L"><field name="ATTR">val</field> <field name="OID">admin.0.Anwesenheit.Bernd</field></block></value> <statement name="DO0"><block type="variables_set" id="KwT2k`Bw6P5@D8WpHnjW"><field name="VAR">anybody</field> <value name="VALUE"><block type="logic_boolean" id="(y4`!Oa7ybg@z(S.m[Q/"><field name="BOOL">TRUE</field></block></value></block></statement> <next><block type="controls_if" id="j7#YFjnUn-F3rx{U2x8q"><value name="IF0"><block type="get_value" id="e56o0lRxha7s}B2,c+?h"><field name="ATTR">val</field> <field name="OID">admin.0.Anwesenheit.Valentina</field></block></value> <statement name="DO0"><block type="variables_set" id="3n=h,Y:^lk#*Rs]/}9`H"><field name="VAR">anybody</field> <value name="VALUE"><block type="logic_boolean" id=")d!l@W}2umpB+HbbmT!N"><field name="BOOL">TRUE</field></block></value></block></statement> <next><block type="update" id="^sMeY1%o2!5|[ZV:mgOo"><mutation delay_input="false"></mutation> <field name="OID">admin.0.Anwesenheit.Person</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="variables_get" id="#X+flmfrFU?9oA4xQbHU"><field name="VAR">anybody</field></block></value></block></next></block></next></block></next></block></statement> <next><block type="on" id="OO)%KkH[6r(swsji*%m9"><field name="OID">admin.0.Anwesenheit.Person</field> <field name="CONDITION">ne</field> <statement name="STATEMENT"><block type="controls_if" id="!f?6wt/Q~Qi9QLWE_WET"><mutation else="1"></mutation> <value name="IF0"><block type="variables_get" id="RlnHGO.(X_]q##c,:Sl5"><field name="VAR">value</field></block></value> <statement name="DO0"><block type="timeouts_cleartimeout" id="b%jHZsPuzuBc8,wmn:c+"><field name="NAME">timeout</field></block></statement> <statement name="ELSE"><block type="timeouts_settimeout" id="f%p3lbDC~c+hfPd4@)m_"><field name="NAME">timeout</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="update" id="bg}o;`[xKgaZ?IpO{=y3"><mutation delay_input="false"></mutation> <field name="OID">admin.0.Alles_</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="_J3Q};?BaDJvRVVgh8.)"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></statement></block></next></block></next></block></next></block></next></block></xml>
  • [gelöst]Syntaxbeschreiung JavaScript

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    260 Aufrufe
    F
    Perfekt, danke!
  • Rolladensteuerung mit Alexa Lokal

    Verschoben
    11
    1
    0 Stimmen
    11 Beiträge
    5k Aufrufe
    M
    Ja Alexa Lokal ist hier der Thread.
  • Variable Blockly

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    428 Aufrufe
    W
    Ja! Ich danke Dir
  • Nodes per For-Schleife kopieren und Nummerieren

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    2k Aufrufe
    R
    Zu deinem konkretem Problem kann ich leider nichts beitragen. Aber loops kannst du in NR einfach mit dem function-node realisieren. [image: 3999_node-red_loops_mit_function-nodes.pdf] Es gibt auch diverse contrib Nodes für loops. Die findet du über die Manage Palette wenn du bei Install mal "loop" als Suchbegriff eingibst.
  • Script mit Astro und Variablen Lampe einschalten

    Verschoben
    22
    0 Stimmen
    22 Beiträge
    4k Aufrufe
    Homer.J.H
    Hallo Leute vielleicht kann mir jemand helfen hab das Script jetzt angepasst so wie ich es haben möchte, hab aber das Problem das immer egal ob ich den Fernseher ein oder ausschalte es immer auf aus getriggert wird. Grüße Homer var night = false; // ab Sonnenuntergang bis Sonnenaufgang var fernseh = false; // Fernseher Aus/Ein function lampe() { if (night && (fernseh)) { log("Amphilight nachts über Smart TV ein"); setState("hm-rpc.2.00105709A24040.3.STATE"/*Licht TV.STATE*/, true); } else { log("Amphilight nachts über Smart TV aus"); setState("hm-rpc.2.00105709A24040.3.STATE"/*Licht TV.STATE*/, false); } } schedule({astro: "sunset"}, function () { night = true; lampe(); }); schedule({astro: "sunrise"}, function () { night = false; lampe(); }); on("harmony.0.Harmony Hub.activities.Smart TV wiedergeben"/*activity:Smart TV wiedergeben*/, function(obj) { var fernseh = obj.newState.val; log("fernseh: " + fernseh); if(fernseh === 2) { fernseh = true; lampe(); } else if (fernseh === 0) { fernseh = false; lampe(); } }); 21:24:56.648 [info] javascript.0 script.js.Test.test_1: fernseh: 3 21:25:02.389 [info] javascript.0 script.js.Test.test_1: fernseh: 0 21:25:02.390 [info] javascript.0 script.js.Test.test_1: Amphilight nachts über Smart TV aus 21:25:21.539 [info] javascript.0 script.js.Test.test_1: fernseh: 1 21:25:43.320 [info] javascript.0 script.js.Test.test_1: fernseh: 2 21:25:43.320 [info] javascript.0 script.js.Test.test_1: Amphilight nachts über Smart TV aus
  • Aktion wenn Taster für x Sekunden gedrückt wird

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    BigWumpusB
    Oh!!! Bitte nicht soviele sachdienliche Informationen - hinterher! Das "Falls - value" muß bei mir rein und sollte so übernommen werden. Aber dein Taster arbeitet anscheinend ganz anders und liefert schon fertig die richtigen Unterscheidungen.

565

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge