Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.8k 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
    D
    @Murphy-0 sagte: Der Kopplungsmodus benutzt Bluetooth. Danke für die Info. Ich habe leider kein Bt am PC. Muss ich dann über externen Stick machen
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    W
    @paul53 Bombe! Vielen Dank! Gleich die erste Version passt perfekt. Möchte nur um 11 Uhr entscheiden ob es sinnvoll ist die Klima einzuschalten. Brauch das nur im Sommer, drum interessiert Winterzeit nicht. Vielen Dank Dir
  • Hilfe für Skripterstellung mit Node-RED

    962 13k
    962 Themen
    13k Beiträge
    Marc BergM
    @Thomas-Braun sagte: In der Konfigurationsdatei von Node Red, also in der settings.js, kann durch hinzufügen der Zeitzone das Problem behoben werden. Wenn man den Adapter nutzt, werden Änderungen in der settings.js immer wieder überschrieben. Das bringt nichts. @taddy81 Was konkret ist denn das Problem? Lösen die inject Nodes falsch aus? Oder geht es nur um diese Meldung, bei der niemand weiß, woher sie kommt? @Taddy81 sagte: Auszug: 7/26/2026, 11:15:23 AMnode: debug 3msg.payload : string[24]
  • Wert, Json über MQTT

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    685 Aufrufe
    M
    Hallo paul53, hab zwar ne weile gebraucht um mich da rein zu fuchsen, aber habs hinbekommen. DANKE :D [image: 8590_iobroker.jpg]
  • Blockly: letzte x Zeichen eines Objekts

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    668 Aufrufe
    H
    Funktioniert, danke! :D
  • Frage zu Blockly - schalten

    Verschoben
    3
    2
    0 Stimmen
    3 Beiträge
    718 Aufrufe
    M
    Doch, gibt es. Habe ich selbst angelegt. @Marco78: Da das debuggen mit manuellem setzen des Wertes Frost nicht funktioniert, habe ich zum Testen den Dummy im Trigger eingesetzt. Ich habe keine Ahnung, ob das stoppen des Skriptes Frost nachher keinen Trigger mehr ausführen kann, aber die Debug-Meldung kam nicht im Log und somit gab es keinen Trigger. ` Haben den Datenpunkt momentan wieder auf Frost gestellt und den Code geändert. Den Trigger Frost und Kalt habe ich mit Feuerzeug und Eis getestet. Funktioniert wie es auch soll. [image: 11771_3.jpg] Momentan ist Frost = true und die Einschalttemperatur erreicht. Aber die Schleife läuft nicht durch. Außerdem hatten vorhin 2 von 8 CPU-Kerne 100%. Meiner Ansicht nach würde die Schleife, wenn sie läuft, immer sehr schnell durchlaufen. Und damit Last ohne Ende erzeugen. Ich habe schon überlegt ein Timeout von 2 Minuten am Anfang der Schleife zu setzen. Aber momentan läuft die Schleife nicht :( Und die Außentemperatur wird jede Minute neu geschrieben. Auf diese zu triggern, dache ich zumindest, würde zu viel Systemlast erzeugen, da fast jede Minute auch ein neuer Wert geschrieben wird. Ich hatte den Block auch schon mit sonst falls und sonst aufgebaut. Aber der Trigger kommt ja nur 1 X und damit läuft das nicht ständig durch. EDIT: Weiter überlegt, ich trigger auf der Temperatur, dann gibt es ein Ereignis, aber sollte die Temperatur, warum auch immer, konstant bleiben, dann heizt die Heizung munter bis auf 28°C (da schaltet sich sich von alleine aus) und das wäre zu teuer (Stromkosten)! Oder wäre es die Lösung, das Skript abhängig vom Zustand Frost ein und aus zu schalten und in einer Schleife, welche alle 2 Minuten durchläuft die Temperaturen abzufragen? Im Sommer wird das Skript nicht benötigt. Und meine Frau wird ungnädig, wenn es Nachts überraschender Weise gefroren hat und das Wasser gefroren ist und sie welches aus dem Haus holen muss. Dafür braucht man am Ende keine Automatisierung :(
  • Verbrauchszähler

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    457 Aufrufe
    D
    ja ich glaub das tut es. Danke für die Schnelle Hilfe =)
  • Telegram - Inline Keyboard - gelöst

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    Netfreak25N
    @ruhigundrelaxed: Lösung gefunden. Trotzdem danke. on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){ var stateval = getState('telegram.0.communicate.request').val; var benutzer = stateval.substring(1,stateval.indexOf("]")); var command = stateval.substring(stateval.indexOf("]")+1,stateval.length); sendTo('telegram.0', { user: benutzer, answerCallbackQuery: { text: command, showAlert: false // Optional parameter } }); }); Gefunden hier: viewtopic.php?t=6515 ` Top! Vielen Dank soweit! Das hat bei mir immer einen Fehler geschmissen wenn der Bot normale Nachrichten bekommen hat :/ Meine Lösung hierfür ist dem callback_data ein "muster" voran zu hängen, welches sozusagen den Button definiert. Falls jenes "Muster" nun gefunden wird, wird das answerCallbackQuery gesendet. In meinem Fall habe ich als pattern/muster "key_" genutzt Der folgende Code bestätigt nun stupide jede Button dessen callback_data mit "key_" beginnt. Falls eine Nachricht nun mit dem Text "key_" beginnt, wird auch eine Antwort gesendet, und dann kommt der Fehler halt doch noch :geek: on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){ var stateval = getState('telegram.0.communicate.request').val; var benutzer = stateval.substring(1,stateval.indexOf("]")); var command = stateval.substring(stateval.indexOf("]")+1,stateval.length); var checkval = command.indexOf('key_') + 1; if (checkval == 1) { sendTo('telegram.0', { user: benutzer, answerCallbackQuery: { showAlert: false // Optional parameter } }); }; }); Geht vielleicht auch cleverer das ganze aber ich bin nun d'accord
  • [gelöst] Script mit node-red starten

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    757 Aufrufe
    R
    Dazu nimmst du den ioBroker-Out node und triggerst den scriptEnabled-state deines scripts. [image: 3999_scripttrigger.png]
  • Response text2command

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    408 Aufrufe
    Niemand hat geantwortet
  • Skript für Gargentor und Fenster Tür Kontakt

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    407 Aufrufe
    Niemand hat geantwortet
  • Pythonscript eines entfernten Raspberrys aufrufen …

    Verschoben
    22
    0 Stimmen
    22 Beiträge
    3k Aufrufe
    F
    Hallo Andreas, Das komische ist/war ja das ich über die Konsole die Befehle ausführen konnte. Über ioBroker-Javascript bekam ich jedoch immer ein "failed Verification" … Ich weis nicht wieviel Möglichkeiten ich ausprobiert habe, alles ohne Erfolg. Nach weiteren 3 Stunden der Erfolgslosigkeit bin ich nun auf das NPM-Modul ssh2 umgestiegen. Dazu das Script von paul53 aus diesem Post viewtopic.php?t=13739#p145734 –- Übrigens vielen Dank ;) und die Sache funktionierte sofort. Über blockly wird nun beim Aufruf der Schildkrötenübersicht der Stream der RaspiKamera gestartet (sh-Script) und die LED kann Ein und Ausgeschaltet werden (python-script). Beim Verlassen der Seite wird der Stream beendet, alles funzt nun wie gewünscht ... Bzgl. der Sicherheit hab ich eigentlich keine Bedenken da alles über pi ausgeführt werden kann. Zudem gibt es keine Portöffnung ins Internet, von Ausserhalb komme ich nur über eine VPN-Verbindung auf mein Netzwerk. Das sollte passen ... Vielen Dank an alle die geholfen haben !!!
  • Alexa - Rundruf im Haus

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    S
    Gar nicht. Zur Optimierung des Scripts müssen dann die Profis ran. Im Moment läuft das so bei mir.
  • Xiaomi Fenster&Türkontakt

    Verschoben
    5
    2
    0 Stimmen
    5 Beiträge
    635 Aufrufe
    R
    Perfekt. Klappt! VIELEN DANK
  • Wechselschalter

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    605 Aufrufe
    B
    Ich habe ein Umschaltrelais in den Sonoff T1 reingefummelt. Der Wechselschalter, an dem permanent "L" anliegt wird ersetzt. Die der Vorteil, man braucht nur einen Sonoff Wandschalter. Der Nachteil, wahnsinnige Fummelarbeit. Für die Steuerung mit Alexa braucht man einen Datenpunkt und ein Blockly. [image: 16314_img_20190120_171419.jpg]
  • 0 Stimmen
    73 Beiträge
    8k Aufrufe
    T
    Ich wollte mich mal bei euch bedanken für die Tipps/Hinweise, konnte so meine Yeelight LED Strip Steuerung hinter dem TV optimieren/erweitern. Ich habe ein Objekt "Astrocheck" erstellt unter "javascript.0" das ich über das Script "Astrocheck" mit true oder false steuere.. [image: 17691_datenpunkt.png] [image: 17691_astrocheck.png] ! Blockly Code hierzu… l xmlns="http://www.w3.org/1999/xhtml"> <block type="astro" id="{C7?|IEcvW3KqGXe+pmm" x="13" y="13"><field name="TYPE">goldenHour</field> <field name="OFFSET">0</field> <statement name="STATEMENT"><block type="comment" id="/mWkI8#vOxhyNl2ZtNRH"><field name="COMMENT">Nacht beginnt</field> <next><block type="control" id="}40OV;6@qyy38I~q_1#G"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Nachtcheck</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="_PXiN|97w.IGgI_NrEiP"><field name="BOOL">TRUE</field></block></value></block></next></block></statement> <next><block type="astro" id="6HS^L{J?9K0=%pa`rqfx"><field name="TYPE">sunriseEnd</field> <field name="OFFSET">0</field> <statement name="STATEMENT"><block type="comment" id="Z2=kjcw.l]pAxZu|(z0r"><field name="COMMENT">Nacht beendet</field> <next><block type="control" id="3BBce0;71KXbhq!WRl-g"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Nachtcheck</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="SbQaGZo1)v|LNW_U09BU"><field name="BOOL">FALSE</field></block></value></block></next></block></statement> <next><block type="controls_if" id="*-8_*Ve#qc@lmJf=?9^7"><mutation else="1"></mutation> <value name="IF0"><block type="logic_operation" id="2_Y8Md:e`zC`N2!}Z7jx" inline="false"><field name="OP">OR</field> <value name="A"><block type="time_compare_ex" id="m,nakXP=.[jQr08W3I{z"><mutation end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION"><</field> <value name="START_TIME"><shadow type="text" id="o?zB{!dl`ZWe41^;o=B)"><field name="TEXT">12:00</field></shadow> <block type="time_astro" id="FHJTfX]K6p[qvhY8pD=%"><field name="TYPE">sunriseEnd</field> <field name="OFFSET">0</field></block></value></block></value> <value name="B"><block type="time_compare_ex" id="J0oB^5g)5VlF7G*c2%O{"><mutation end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">></field> <value name="START_TIME"><shadow type="text" id="o?zB{!dl`ZWe41^;o=B)"><field name="TEXT">12:00</field></shadow> <block type="time_astro" id="*,VxQdKsUdy9puwr:k7~"><field name="TYPE">goldenHour</field> <field name="OFFSET">0</field></block></value></block></value></block></value> <statement name="DO0"><block type="comment" id="vs1/mNZX2p?iVe3Qj9;:"><field name="COMMENT">Nacht</field> <next><block type="update" id="ke8W;G9=7siBdgi8q=at"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Nachtcheck</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="QyK%hO/3wWg^N9OBxUq5"><field name="BOOL">TRUE</field></block></value></block></next></block></statement> <statement name="ELSE"><block type="comment" id="en([|+q[X=l{0}1N0[=p"><field name="COMMENT">Tag</field> <next><block type="update" id="KKsw{Y|~rdU(%qLLv598"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Nachtcheck</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="xe(T=h=hti/s.:l9{pw="><field name="BOOL">FALSE</field></block></value></block></next></block></statement></block></next></block></next></block> >! ```` Dann habe ich ein Script erstellt das auf den Receiver Standby Wert und dem Astrocheck Wert triggert. ![17691_yeelightsteuern2.png](/assets/uploads/files/17691_yeelightsteuern2.png) >! Blockly Code hierzu… l xmlns="http://www.w3.org/1999/xhtml"> <block type="on_ext" id="*ctj5(w8M#@^j=zB-ic=" x="13" y="13"><mutation items="2"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="CE=xcG061g|xnoYnT8`;"><field name="oid">enigma2.0.enigma2.STANDBY</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="YbLd3fuPb{Ct|N|gQmP,"><field name="oid">javascript.0.Nachtcheck</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="0Uq*WE2I^QkX5J[9Tk^e"><field name="COMMENT">Yeelight ausschalten</field> <next><block type="controls_if" id="_@z*T/e|S/KN!,KJn=LU"><value name="IF0"><block type="logic_operation" id="J()`x(SC,p.1Sif=:8r2" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="Wl]-cig_2`lY5?T,vK|k"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="*!wI%miKD6Y!,LjcLo|R"><field name="ATTR">val</field> <field name="OID">enigma2.0.enigma2.STANDBY</field></block></value> <value name="B"><block type="logic_boolean" id="OtcaN2oI!v;=._D.+1mK"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="P}`JBjN3xcW:G+q`SpPl"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="lcJiDjY*!,[81k0A9S*%"><field name="ATTR">val</field> <field name="OID">javascript.0.Nachtcheck</field></block></value> <value name="B"><block type="logic_boolean" id="7,F}%3uG#Bi:uD%p]%}o"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="7Y;9Y2Z_rMOf1sdc}10y"><mutation delay_input="false"></mutation> <field name="OID">yeelight-2.0.Yeelight_Strip.control.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="ZEePuUdX9,I0rWdANKfB"><field name="BOOL">FALSE</field></block></value></block></statement> <next><block type="comment" id="Og0Rb,EQwNceqy4aW0AW"><field name="COMMENT">Yeelight einschalten</field> <next><block type="controls_if" id="%U{[fwxDo~MPOY2evjWi"><value name="IF0"><block type="logic_operation" id="Kxn,vc`D0%7jZ29rkZwT" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="fS.^i)Q%+vfq5*}.3l=k"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Bb.E||xq{Hw=I#,SMKs{"><field name="ATTR">val</field> <field name="OID">enigma2.0.enigma2.STANDBY</field></block></value> <value name="B"><block type="logic_boolean" id="ecE+I#_=R`MR7`rQ={x3"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="IiRd`UdKQmR!0WjiBF:4"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="?=8cgZPIF6Mp|btvHoKz"><field name="ATTR">val</field> <field name="OID">javascript.0.Nachtcheck</field></block></value> <value name="B"><block type="logic_boolean" id="LnM1Ey)v6`ib{7v~QqIw"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="84Gc(]CVJMbIJ?wZ![a/"><mutation delay_input="false"></mutation> <field name="OID">yeelight-2.0.Yeelight_Strip.control.power</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="LmB+bfCyl5B)M0BX)v?#"><field name="BOOL">TRUE</field></block></value></block></statement></block></next></block></next></block></next></block></statement></block> ! ```` Funktioniert mit euren Tipps perfekt und ich bin wieder mehr als zufrieden. Und dazu habe ich gelernt wie man eigene Objekte erstellt und diese über 2 Scripte übergeben kann… das ist seeehr hilfreich um nicht in jedem Script das gleiche abzufragen.
  • Template Script Vorlage

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    3k Aufrufe
    M
    @ruhr gut Idee. Was mir nicht so gefällt ist, dass es eine global Funktion ist. Das hat den Nachteil, dass bei den Fehlerausgaben, die Zeilennummer nicht stimmen, bzw. man immer rechnen muss. Außerdem gibt es überall den Code Overhead (weniger schlimm). Was mich auch noch immer genervt hat war, dass bei der Entwicklung der globalen Funktion, immer alle Scripts neu gestartet werden. Ich realisiere deshalb globale Funktionen über States, die ein Object beinhalten. Die global Funktion wird dann über Subscription getriggert. Ein Beispiel: Ich habe einen State "sendtoifttt" erzeugt, der ein Object als Wert hat. Beispiel:```` setState("sendtoifttt", {val:{ applet:"telegram", value1: "von Mch: " + HTMLEncode(obj.state.val) } }); Die Routine, die auf Wechsel von sendtoifttt trigger, kann dann so auf die Object Inhalte zugreifen. on({id: "sendtoifttt"}, function(obj) { var applet = obj.state.val.applet; var value1 = obj.state.val.value1; ....
  • [gelöst] Problem mit fs.readFile()

    Verschoben
    3
    -1 Stimmen
    3 Beiträge
    1k Aufrufe
    N
    OK, das hätte ich wahrscheinlich nie rausbekommen… Vielen lieben Dank!!! Mit fs.readFileSync() klappt es nun ganz hervorragend.
  • Fehler in einfachem if else Script?

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    829 Aufrufe
    S
    @pix: Vom Handy getippt: Da fehlt in der If-Abfrage das getState().val und in die Klammer kommt „zwave…..“ Pix ` man, habe ich auch nicht bemerkt, lauter Coden. Probiere es am Abend gleich. @Pix: Danke! Gesendet von unterwegs mit Tapatalk
  • [gelöst] JSON Wert extrahieren

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    682 Aufrufe
    S
    Hallo, ich hatte mich irgendwann gewundert warum es in eckigen Klammern zurückgegeben wurde, also: [{"avg(val)":-2.0713963963963966}] Demnach ist das dann wohl ein Array… Es funktioniert: avgval.result[0]["avg(val)"] bzw am Ende: setState('Datenbank.TagesTempMittel', (avgval.result[0]["avg(val)"]).toFixed(2)); Ob man JSON.stringify davor schreibt oder es lässt macht soweit ich gesehen hab keinen Unterschied. Danke für die Hilfe. Ich markier das hier als gelöst.
  • [Script] Einkaufsliste –> Telegram

    Verschoben
    50
    5
    0 Stimmen
    50 Beiträge
    16k Aufrufe
    S
    Hallo an alle, durch Suche und Recherche bin ich auf dieses Forum und den Beitrag gestossen. Interessiere mich für die Lösung, jedoch habe ich kaum Ahnung :-) infos zu Setup: Raspi 3B+ mit iO-Broker, alles aktuell und telegram adapter. kann per telegram einiges schalten etc. nachdem ich einige Anleitungen befolgt und 1:1 umgesetzt habe. Habe die bisherige Beiträge durchgelesen, jedoch nicht schlau geworden, ob es nun funktioniert oder nicht? Wenn ja, was ich dafür machen muss. Gewünscht ist wie im ersten Beitrag angegeben eine stick normale Einkaufliste per telegram schicken zu lassen z.b. an frau oder umgekehrt durch ihr an mich. Grüße und besten Dank Vorab
  • Blockly Skript startet nicht allein

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    682 Aufrufe
    M
    ist der Ansatz so korrekt? Vielen Dank 18044_lichtsteuerung.jpg
  • Blocky intervall timer in Funktion

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    538 Aufrufe
    paul53P
    @lennong: Wenn ich einen Intervall Timer x in einer Funktion implementiere, muss ich dann den Timer mit übergeben oder ist er bestand jeder Instanz der Funktion? ` Variablen sind in Blockly global im Skript, können also aus jeder Funktion zugegriffen werden (Ausnahmen: value, oldValue). Jeder Timer benötigt seine eigene Variable (z.B. Intervall1, Intervall2).

511

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge