Skip to content

Skripten / Logik

16.6k Topics 214.3k Posts

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

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Topics
    49k Posts
    G
    Ich habe einen Akku für mein Bosch EBike mit 650 Wh. Es gibt die Empfehlung Akkus immer zwischen 20% und 80% Ladezustand zu halten um die Lebensdauer maximal zu halten. Den unteren Wert zu beachten ist relativ einfach, das wird am Kiox ständig angezeigt. Aber dann steckt man den Akku ans Ladegerät und müsste ständig vorbeischauen um nicht zuviel zu laden. Ich habe mir das jetzt automatisiert über eine MEROSS smarte Steckdose. Die zeigt die abgegebene Energie ja pro Tag an. Ich habe nun dazu ein Script und Eingriffsmöglichkeit über VIS. Das Script springt an, wenn ich das Ladegerät in den MEROSS Stecker stecke. Es setzt als Anfangswerte die Kapazität auf 650Watt, den IST-Ladezustand auf 20% und den Soll Ladezustand auf 70%. Das heißt umgerechnet, um den Soll-Ladezustand zu erreichen, müssen 325Wh geladen werden. Das wird über das Script erreicht, in dem es jede Minute die abgegebene Energie an der Steckdose prüft. Ich kann als einfach einstecken und laden, und muss nichts weiter machen, um nicht zu voll zu laden. Ob ich da von 10% auf 60% oder 30% auf 80% lade ist mir meist egal. Über VIS kann ich den IST-Ladezustand und den SOLL-Ladzustand des Akkus ändern. Das wird vom ersten Script berücksichtigt. So kann ich also auch gezielt gewünschte Werte erreichen. Das Ganze hatte ich selber schon mal zeitgesteuert gemacht. Das Ladegerät läuft (meist) mit einer Leistung von 175Watt. Daraus hatte ich mir dann errechnet wie lange ich brauche, den gewünschten Ladezustand zu erreichen. Das ist aber denkbar ungenau, weil die Ladekurve in Wirklichkeit nicht linear ist. Erst jetzt mit der MEROSS-Messung kann ich richtig zielen. Das neue Script habe ich mir komplett mit der KI "Claude" erstellen lassen. Da ist nicht eine Zeile von mir. Ich bin begeistert (und erschüttert). akku_ladesteuerung.ts
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    V
    Hi @babl , vielen Danke für deine super Arbeit. Ich hatte bis vor kurzem schon deine erste Version in Betrieb. Nun wollte ich mir die neue anschauen, aber leider lassen sich die Skripte nicht importieren. Ich habe leider dazu nichts gefunden. Wäre es Möglich, die Skripte als .txt Dateien zu teilen? Deine Anpassungen (Grundlastberechnung.txt und PV-Ertrag_Durchschnitt.txt) konnte ich Problemlos importieren. Hier die Fehlermeldung, evtl. kann mir dabei jemand weiterhelfen oder ich steh völlig auf dem Schlauch... [image: 1775637577292-f7cecb8d-5d5e-45dc-b45f-aebef1dfb0b0-image.jpeg]
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Topics
    13k Posts
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • Brauche Hilfe! Beim Alarmanlage erstellen

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    W
    Mein Problem konnte ich lösen. 2 Std später hat sich mein Raspi gehimmelt und den FI mit genommen. Super. Jetzt bau ich das alles auf nem NUC nach. Sobald es läuft poste ich hier nen update
  • [Frage] Datenpunkt Name dynamisch ermitteln

    Moved
    1
    1
    0 Votes
    1 Posts
    251 Views
    No one has replied
  • Alle schedule's auflisten lassen

    Moved
    1
    0 Votes
    1 Posts
    188 Views
    No one has replied
  • Wie viele Skripte maximal in einer javascript Instance?

    Moved
    3
    0 Votes
    3 Posts
    447 Views
    S
    Ok danke da werd ich mal schauen
  • Funktionen für Xiaomi Cube

    Locked Moved
    3
    0 Votes
    3 Posts
    437 Views
    K
    @Bockwurst19: Guten Morgen und frohe Weihnacht. Wollte fragen ob es möglich ist mit dem Cube mit einen Befehl z.B. 180 flip das Licht Ein und wieder Aus zu schalten. Über einem Script oder so. Und ist es möglich wenn Ich den Cube Flip 90 nach links mache, das bei Alexa das vorige lied und bei Flip 90 rechts das nächste Lied kommt. Gruss ` Schimmermedia ;) https://youtu.be/hSDTP_OpYI4 Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
  • Skript tab wird nicht angezeigt (Gelöst)

    Moved
    5
    0 Votes
    5 Posts
    476 Views
    D
    @apollon77: Das obige versucht? Gesendet vom Handy … ` Hat funktioniert, es hatte eine längere ladezeit MfG Dario Casciato
  • Elektronische Rolladen programieren!

    Moved
    1
    0 Votes
    1 Posts
    245 Views
    No one has replied
  • Funktionen und Räume stärker nutzen

    Moved
    9
    4
    0 Votes
    9 Posts
    942 Views
    DutchmanD
    Auch Dan könnte man doch die Funktion des selectors beim Script Start ausführen und das Resultat als Variable im Trigger verarbeiteten oder hab ich jetzt nen Denkfehler zur blockly Logic im Vergleich mit Javascript? Ich würde den selector als Funktion bauen in blockly und daraus mit Rückgabe die gewünschte Routine auslösen. Hmm alles Theorie muss Mal testen sollte aber so gehen Sent from my iPhone using Tapatalk
  • [gelöst] Blockly Licht über Bewegungsmelder, Dauerlicht über Taster

    Moved
    48
    0 Votes
    48 Posts
    14k Views
    S
    Moin Zs & frohe Weihnachten :) tolles Skript & super Idee! Da ichs grad nachgebaut habe, hier der komplette Code zum kopieren: <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="6pd/xciykWrf#,/RkX%W" x="-1688" y="-963"><mutation items="1"></mutation> <field name="CONDITION">true</field> <value name="OID0"><shadow type="field_oid" id="jpxnz})h~8%*H1Tfe!G|"><field name="oid">zigbee.0.00158d00023f34e1.occupancy</field></shadow> <block type="logic_operation" id=",MsXJd2F67!F=dtje9aq"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="m72*Le8d:a7pB}+#oaJ3"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="}%d-3jEZm:=UcMSKgCo."><field name="ATTR">val</field> <field name="OID">zigbee.0.00158d00023f34e1.occupancy</field></block></value> <value name="B"><block type="logic_boolean" id="oTD8^~ndr6:Mb(v6,5I6"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="time_compare_ex" id="+{@VLL|:gi~#k/j0pWk?"><mutation end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"><shadow type="text" id="1[(WPy+={:AiX{b?hvgd"><field name="TEXT">12:00</field></shadow> <block type="time_astro" id="J!|CySOfjSiq5M,hi^%d"><field name="TYPE">sunrise</field> <field name="OFFSET">0</field></block></value> <value name="END_TIME"><shadow type="text" id="`QEn)Bq-kHk`*tVUG,Z5"><field name="TEXT">18:00</field></shadow> <block type="time_astro" id="hZc00OWZ6qAf~16x;92@"><field name="TYPE">sunset</field> <field name="OFFSET">0</field></block></value></block></value></block></value> <statement name="STATEMENT"><block type="controls_if" id="}[l(7.}CP@g:G9x6aFEg"><value name="IF0"><block type="logic_compare" id="VPjAhD]`.0]1lK5lJvU+"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="DrWHe%XUh9Nnk,`aaY{)"><field name="VAR">Kueche_Licht_manuell</field></block></value> <value name="B"><block type="logic_boolean" id="x9cCshY.w:Ws/^-3T}FR"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="procedures_callnoreturn" id="Tb|#Q@!7T;z#n{0gefM="><mutation name="LeuchteSchalten"><arg name="x"></arg></mutation> <value name="ARG0"><block type="logic_boolean" id="(F;{6ygml~3cw22**5rd"><field name="BOOL">TRUE</field></block></value> <next><block type="timeouts_settimeout" id="II3lv;mVPw+j|5f9,Ts6"><field name="NAME">timeout</field> <field name="DELAY">120000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"><block type="controls_if" id="^Yh#3=Q:c|bL2yV6Y3,|"><value name="IF0"><block type="logic_compare" id="=|;WdiP;`t}~_NPS~ppj"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="jK25Gn0s*5#}O,88ki`T"><field name="VAR">Kueche_Licht_manuell</field></block></value> <value name="B"><block type="logic_boolean" id="{WLO|B20tt!=Kv{^v4d}"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="procedures_callnoreturn" id="C|gBFV;|H0G0kiX.sos%"><mutation name="LeuchteSchalten"><arg name="x"></arg></mutation> <value name="ARG0"><block type="logic_boolean" id="Op97M]g;p!(?2qX{5Zmu"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></next></block></statement></block></statement></block> <block type="variables_set" id="4`Ix7sE|REGj#F`.Iv|h" x="-1088" y="-888"><field name="VAR">Kueche_Licht_manuell</field> <value name="VALUE"><block type="logic_boolean" id="o+p;z5wf,^W~ybsF)Jyt"><field name="BOOL">FALSE</field></block></value></block> <block type="on_ext" id="y;21U{a(QUd~zbz7P4=n" x="-1062" y="-838"><mutation items="1"></mutation> <field name="CONDITION">true</field> <value name="OID0"><shadow type="field_oid" id="Ig[)B3B`(*w;p5_9,(K["><field name="oid">sonoff.0.Küchenlicht.POWER</field></shadow></value> <statement name="STATEMENT"><block type="variables_set" id="[0vqh:][W%?un-`kB%3d"><field name="VAR">Kueche_Licht_manuell</field> <value name="VALUE"><block type="logic_negate" id="z6r+!7{eC?2{e8Ak@Bax"><value name="BOOL"><block type="variables_get" id="ikrlXZk_+?(UvBLj}o}f"><field name="VAR">Kueche_Licht_manuell</field></block></value></block></value> <next><block type="controls_if" id="oQ/8VZ_VR8W3=a*Cz1/a"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="l-Kq.C,:NZ})Mo7?88gx"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="P_b9AhEv|DUNbUCnD~V9"><field name="VAR">Kueche_Licht_manuell</field></block></value> <value name="B"><block type="logic_boolean" id="+q53(0dE^F4YZ(6,UFdG"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="procedures_callnoreturn" id="S_+q~E~?i8y*R1Ybo9bY"><mutation name="LeuchteSchalten"><arg name="x"></arg></mutation> <value name="ARG0"><block type="logic_boolean" id="^6|UBhjwwQs0JEwBJx8]"><field name="BOOL">TRUE</field></block></value></block></statement> <statement name="ELSE"><block type="procedures_callnoreturn" id="AV}Jzk[*c?bs@.y)_9Z^"><mutation name="LeuchteSchalten"><arg name="x"></arg></mutation> <value name="ARG0"><block type="logic_boolean" id="_T5.%nC.;76l:NEc(m%x"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></statement></block> <block type="procedures_defnoreturn" id="-Ts^et}f~sjE_@F_b@Zr" x="-1738" y="-562"><mutation><arg name="x"></arg></mutation> <field name="NAME">LeuchteSchalten</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"><block type="comment" id="*6FI2{TA*|L*sW+,L(}?"><field name="COMMENT">Funktion Leuchte ein- oder ausschalten</field> <next><block type="controls_if" id="9?aGD0/BVm_Gr=?2ms+r"><value name="IF0"><block type="logic_compare" id="Yv]yu9}8NM]KwDy7Dkc5"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="7DWzNGXN52r-5ejij|N%"><field name="ATTR">val</field> <field name="OID">sonoff.0.Küchenlicht.POWER</field></block></value> <value name="B"><block type="variables_get" id="WOJ,=X],[ZWF1cE5o.B#"><field name="VAR">x</field></block></value></block></value> <statement name="DO0"><block type="control" id="*B4#g]93@QAUExJcA+k4"><mutation delay_input="false"></mutation> <field name="OID">sonoff.0.Küchenlicht.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="variables_get" id="L}Bsm|]1G@6~G)e^!?(i"><field name="VAR">x</field></block></value></block></statement></block></next></block></statement></block></xml> Ich habe lediglich noch eine Funktion für Dunkelheit eingefügt da mein Bewegungsmelder (Occupancy) nur triggern soll wenn es Dämmert und bis es hell wird und die Zeit auf 2 Min. geändert.
  • Script für Tastaturabfrage

    Moved
    2
    0 Votes
    2 Posts
    438 Views
    MicM
    "Anti-Programmierer" wird eine Herausforderung :) Bekommst Du die Tastendrücke in Datenpunkte im ioBroker? Falls ja, dann könntest Du dieses Script als Hilfestellung nehmen, es wertet Tastendrücke vom VIS aus: viewtopic.php?f=30&t=19871 In diesem Teil könntest Du dann Deine eigene Aktion durchführen: /******************************** * Wird bei erfolgreicher Pin-Eingabe ausgeführt * @param {string} viewName Name der View ********************************/ function onSuccess(viewName){ // Change View setState("vis.0.control.instance", getPresetElement(viewName, 'instance')); setState("vis.0.control.data", getPresetElement(viewName, 'project') + '/' + viewName); setState("vis.0.control.command", 'changeView'); } Müsstest aber das Script ziemlich anpassen…
  • [Gelöst] Telegram Nachricht auslesen

    Moved
    3
    1
    0 Votes
    3 Posts
    767 Views
    X
    Oder auf den Datenpunkt in dem die Nachricht ankommt einen Trigger legen und nach dem auslösen prüfen was drinnen steht. Das mache ich so (zentral) und rufe dann unterschiedliche Funktionen mit Parametern auf, aber ich habe handgeschriebenes JS. Wie genau das in Blockly aussieht kann ich dir nicht zeigen.
  • Kontrolle und erstellen von objekten

    Moved
    2
    0 Votes
    2 Posts
    351 Views
    apollon77A
    Brauchst du nicht. Einfach das. CreateState block einfügen und fertig. Gesendet vom Handy …
  • Node-Red Lost connection to server, reconnecting…

    Moved
    1
    0 Votes
    1 Posts
    455 Views
    No one has replied
  • TinkerBoard Daten nach CCU

    Moved
    8
    1
    0 Votes
    8 Posts
    626 Views
    HomoranH
    Dann bleibt noch die soc temp. Ist das vielleicht text? Gruß Rainer
  • Cron-Script läuft nicht

    Moved
    3
    2
    0 Votes
    3 Posts
    468 Views
    J
    Oh, Anfängerfehler. Danke für den Hinweis. Funktioniert nun.
  • Steuerung Funksteckdose mit Raspberry Pi

    Moved
    7
    0 Votes
    7 Posts
    812 Views
    M
    Hallo zusammen Ich bin auch neu hier und habe schon jede Menge im Forum gelernt. Aber an dieser Stelle komme ich nicht so richtig weiter. Wenn ich im Verzeichnis: pi@ioBroker-RasPi:/opt/raspberry-remote den Befehl: Sudo ./send 11111 1 1 eingebe, schaltet die Steckdose. Was muss ich eingeben wenn ich es, aus dem Skript ( was ich von robert822 nachgebaut habe) aufrufen möchte? Viele Grüße
  • Aktualisierung der Stati im Dashboard

    Moved
    5
    1
    0 Votes
    5 Posts
    1k Views
    K
    Ok, super! Vielen Dank dafür.
  • Scripte im Objektbaum importieren

    Moved
    7
    1
    0 Votes
    7 Posts
    1k Views
    D
    Hi Ihr, Ich hole mal diesen alten Post wieder hoch. Also habe nen neuesn Raspi und wollte alles über SSD neu frisch aufsetzen. Alles schön und gut wenn man routiene hat, aber nach einem Jahr ruhe ist es wie 10 Jahre nicht hin geschaut. Mein Problem, Installation neu Raspi3+ auf dem alten alles Ok, Nun habe ich die Scripte aus Java ( als Blockly mit Version 3.6.4 ) raus gezogen ( also den Baum ) und OK Nun Dachte Ich mir, drücke den Button Importieren und … nix. Es passiert nix. Ich "OK", laut update wurde alles ein bisschen verändert, probierst mal auf nächsten raspi mit der 3.6.4 aus und tadaa Feld taucht auf und ich kann einpflegen / importieren. Na gut, alle Explorer an 3 Geräten durchgetestet aber Problem bleibt. Also dachte ich mir, mach auf dem einen ein update auf die 4 Version und tadaaa nun auch da das selbe Problem. Daher wohl ein kleiner Bug. Jetzt wollte ich die kleine 3.6 Version installieren um wenigstens den Haufen von Scripte nicht alle neu kopieren zu müssen, aber auch das geht nicht. Egal welche Version, Ich bekomme immer wieder diesen Fehler: Adapter "javascript" is not in the repository and cannot be updated. upgrade javascript@3.6.4 könnt ihr mir da helfen ? Lg Desa
  • Tradfri, Shelly, normaler Schalter

    Moved
    4
    2
    0 Votes
    4 Posts
    1k Views
    A
    so habs jetzt gelöst, zwar nicht sicher ob 2 Trigger ein Problem sind, aber bis jetzt gibt es keine Fehler und tut was es soll, alles andere hat nicht funktioniert…. 13163_bildschirmfoto_2018-12-20_um_16.52.52.png
  • Unterschiedlicher Variable Inhalt unter Blocky und Objecte

    Moved
    8
    2
    0 Votes
    8 Posts
    648 Views
    C
    Der Fehler war wohl der Trigger. Nehme ich das ringing vom Adapter TR-064, dann spinnt das Skript. Nehme ich aber das ringing vom FritzboxAdapter geht's zunächst erstmal ohne diese Fehler. Seltsamerweise wiederholt der bei dem alten DOT die Ansage nicht beim neuen schon. Egal wie ich die Schleife mache. Denke mal damit könnte ich leben. [image: 1867_unbenannt.jpg]

552

Online

32.8k

Users

82.7k

Topics

1.3m

Posts