Skip to content

Skripten / Logik

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

16.6k Topics 213.9k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Ergebnis war positiv heute Nacht. Er hat wie sonst auch ca. 2% verloren. Die Änderung am Script war doch nicht so einfach, weil er am unteren soc nicht abgeschaltet hat. Habe es bisschen geändert und hoffe das es so läuft.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    paul53P
    @andre1de sagte: Problemen mit dem Zeitintervall über Mitternacht Probleme mit der Zeitspanne über Mitternacht gibt es nur bei Verwendung von Astro-Zeiten.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    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
  • Verbrauchszähler

    Moved
    3
    0 Votes
    3 Posts
    394 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
    293 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
    986 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
    552 Views
    R
    Perfekt. Klappt! VIELEN DANK
  • Wechselschalter

    Moved
    4
    0 Votes
    4 Posts
    550 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
    691 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
    616 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.
  • [Script] Einkaufsliste –> Telegram

    Moved
    50
    5
    0 Votes
    50 Posts
    14k Views
    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

    Moved
    4
    1
    0 Votes
    4 Posts
    531 Views
    M
    ist der Ansatz so korrekt? Vielen Dank 18044_lichtsteuerung.jpg
  • Blocky intervall timer in Funktion

    Moved
    2
    0 Votes
    2 Posts
    421 Views
    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).
  • 0 Votes
    4 Posts
    603 Views
    padrinoP
    Hi, vielen Dank an Euch beide! Denke, jede der Lösungen hat was für sich. Werde mal schauen, wie ich das bei mir umsetze - evtl. ja aus beidem etwas. =) CU, padrino
  • Blocky Programm wird zweimal ausgeführt

    Moved
    4
    1
    0 Votes
    4 Posts
    407 Views
    G
    Ja richtig "false" = "fertig" und "true" = "läuft"; Gute Idee mit History, ich hatte im Web-Gui die Variable "Waschmaschine" kontrolliert dort gab es keine Änderung. Was aber nur ein visueller check war; mit History sollte es ein aussagekräftiges Ergebnis geben. Habe den entprell Wert in Histroy sehr klein gemacht. Ich werde mal nächste Woche berichten ;)
  • Ist ioBroker vergesslich?

    Moved
    5
    0 Votes
    5 Posts
    519 Views
    R
    Hmm, - allerdings lief alles monatelang problemlos. :? Dass mit Scripten unter global ist mir bewusst. Es war von mir auch Absicht - so muss ich den Scriptteil, den alle Wecker benutzen, nicht in jedes der drei Weckerscripte reinkopieren. Werde es aber trotzdem mal probieren.

498

Online

32.7k

Users

82.5k

Topics

1.3m

Posts