Skip to content

Skripten / Logik

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

16.4k Themen 212.0k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    haus-automatisierungH
    Ansonsten schau mal for .. of Schleifen an: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/for...of const objIdList = Array.prototype.slice.apply($('ping.0.*')); for (const objId of objIdList) { if (!objId.startsWith('ping.0.browse')){ console.info(`Füge ein: ${objId}`)); SupervisedObjects.push(objId); } }
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    paul53P
    @Homoran sagte: ich "muss" auch nur zwischen 2700 und 5700 regeln. Mit dieser Anpassung bleibt 2700 K gleich und 5700 K wird zu 6600 K: [image: 1765316825345-blockly_temp.jpg] Rot und Blau haben den Faktor 0,95 zu Grün.
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Script Lüften läuft immer nur 1-2 Tage

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    557 Aufrufe
    M
    Hallo, nur zur Info läuft nun super. Gruß Markus
  • Fensterkontakt soll Pushnachricht liefern bei Abwesenheit

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    894 Aufrufe
    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

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    464 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
    541 Aufrufe
    H
    Funktioniert, danke! :D
  • Frage zu Blockly - schalten

    Verschoben
    3
    2
    0 Stimmen
    3 Beiträge
    583 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
    367 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
    1k 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
    723 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
    387 Aufrufe
    Niemand hat geantwortet
  • Skript für Gargentor und Fenster Tür Kontakt

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

    Verschoben
    22
    0 Stimmen
    22 Beiträge
    2k 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
    967 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
    494 Aufrufe
    R
    Perfekt. Klappt! VIELEN DANK
  • Wechselschalter

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    532 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
    6k 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
    606 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
    576 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
    13k 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

866

Online

32.5k

Benutzer

81.6k

Themen

1.3m

Beiträge