Skip to content

Skripten / Logik

16.6k Topics 214.4k 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
    crunchipC
    @RoddiEF habs angepasst, neue Version im ersten Beitrag
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    vowillV
    Offenbar schaltet Amazon nach und nach die Zugänge für Fremdanbieter sukzessive ab. Letzte Woche lief auch mein Plex-Skill nicht mehr im Multiroom, sondern nur noch auf 1 Lautsprecher. Und jetzt gibt es den Plex-Skill gar nicht mehr zur Installation. Also: Entweder Amazon unlimited, oder weg damit.
  • 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
  • Node red nodes updaten

    Moved
    7
    0 Votes
    7 Posts
    2k Views
    R
    @mafe68: Bei mir macht kein Adapter damit Probleme und auch die Last ist zurück gegangen. ` Das ist super für dich. Ich wollte das hier nur nicht als allgemeine Empfehlung stehen haben. Andere haben vlt. Adapter im Einsatz, die (noch)nicht kompatibel sind. Was interessant wäre, wäre eine Aussage von dir, wie es sich damit beim Update von nodes innerhalb des node-red Adapters verhält. Das war ja die ursprüngliche Frage. Da hast du dich nicht zu geäußert.
  • Script Lüften läuft immer nur 1-2 Tage

    Moved
    6
    1
    0 Votes
    6 Posts
    636 Views
    M
    Hallo, nur zur Info läuft nun super. Gruß Markus
  • Fensterkontakt soll Pushnachricht liefern bei Abwesenheit

    Moved
    6
    1
    0 Votes
    6 Posts
    952 Views
    M
    Hallo, bin auch kein Profi aber du musst doch auch nachdem du geprüft hast ob du nicht da bis das script auch da fortsetzen, siehe roter Pfeil [image: 14084_sharedscreenshot.jpg] . und Trigger nach Trigger ist auch kein guter Plan sagte man mir. Der zweite kann ja kein Signal bekommen wenn der andere nichts gesendet hat. Gruß Markus
  • Wert, Json über MQTT

    Moved
    6
    0 Votes
    6 Posts
    526 Views
    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

    Moved
    4
    1
    0 Votes
    4 Posts
    563 Views
    H
    Funktioniert, danke! :D
  • Frage zu Blockly - schalten

    Moved
    3
    2
    0 Votes
    3 Posts
    625 Views
    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

    Moved
    3
    0 Votes
    3 Posts
    407 Views
    D
    ja ich glaub das tut es. Danke für die Schnelle Hilfe =)
  • Telegram - Inline Keyboard - gelöst

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    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

    Moved
    2
    0 Votes
    2 Posts
    731 Views
    R
    Dazu nimmst du den ioBroker-Out node und triggerst den scriptEnabled-state deines scripts. [image: 3999_scripttrigger.png]
  • Response text2command

    Moved
    1
    0 Votes
    1 Posts
    390 Views
    No one has replied
  • Skript für Gargentor und Fenster Tür Kontakt

    Moved
    1
    0 Votes
    1 Posts
    295 Views
    No one has replied
  • Pythonscript eines entfernten Raspberrys aufrufen …

    Moved
    22
    0 Votes
    22 Posts
    3k Views
    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

    Moved
    3
    0 Votes
    3 Posts
    988 Views
    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

    Moved
    5
    2
    0 Votes
    5 Posts
    557 Views
    R
    Perfekt. Klappt! VIELEN DANK
  • Wechselschalter

    Moved
    4
    0 Votes
    4 Posts
    557 Views
    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 Votes
    73 Posts
    6k Views
    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

    Moved
    6
    1
    0 Votes
    6 Posts
    3k Views
    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()

    Moved
    3
    -1 Votes
    3 Posts
    1k Views
    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?

    Moved
    7
    0 Votes
    7 Posts
    700 Views
    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

    Moved
    3
    0 Votes
    3 Posts
    622 Views
    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.

253

Online

32.8k

Users

82.7k

Topics

1.3m

Posts