Skip to content

Blockly

Hilfe für Skripterstellung mit Blockly

6.6k Topics 79.6k Posts

NEWS

  • Steckdose mit Philips Hue Bewegungsmelder triggern

    9
    0 Votes
    9 Posts
    1k Views
    S
    @paul53 Ach so, klar. Der Datenpunkt "SteckdoseASchalten" ist ein virtueller Datenpunkt, den ich im iot-Adapter als Alexa-Gerät bekannt gemacht habe, damit ich die Steckdose auch per Sprache schalten kann. Dahinter liegt dann ein Skript, mit dem ich die Buttons im Broadlink2.0-Adapter schalte: <block xmlns="https://developers.google.com/blockly/xml" type="on" id="0^]kU,id=C9A_,~`qN_6" x="-787" y="-1037"> <field name="OID">0_userdata.0.SteckdoseASchalten</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="u%:D-QR0MHp3)p/xfNu2"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="YBdz:tfutxk4W:lvX|1T"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="v}6$,t/mT2sHr2;8[?+["> <field name="ATTR">val</field> <field name="OID">0_userdata.0.SteckdoseASchalten</field> </block> </value> <value name="B"> <block type="logic_boolean" id="pR6}]Vn~B$F9CWm)Kq}G"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="zH8q5;ItaAWug5TCN98*"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">broadlink2.0.RM:Broadlink-RMPROPLUS-88-f9-fb.L.Elro-Steckdose A an</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="wnQyd)Qms^Pl0pepn)~b"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="[f.h-5olaopUif$zQ$uZ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">broadlink2.0.RM:Broadlink-RMPROPLUS-88-f9-fb.L.Elro-Steckdose A aus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="hY_k+[9eTGShl3ikCJ|Q"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> Vielleicht macht das auch noch einen Unterschied hinsichtlich meiner Anforderungen?
  • einfaches Skriptproblem - ich komm nicht drauf!

    13
    1
    0 Votes
    13 Posts
    445 Views
    B
    @paul53 Ah, I am happy. Jetzt gehts :) Gestern den ganzen Abend drangehockt, nichts geklappt.
  • Alexa Radiosender eingeschalten bei Bewegung im Raum

    blockly
    48
    1
    0 Votes
    48 Posts
    9k Views
    oberfraggerO
    @michael-1975 Moin, ich verwende zum stoppen von Alexa immer den Datenpunkt "controlPause". Funktioniert problemlos. [image: 1601762793082-8cac1ed7-9bc4-47ec-9525-1ae96dba22b9-image.png]
  • Trigger od. Schleife wenn Tür geschlossen

    blockly
    6
    0 Votes
    6 Posts
    436 Views
    paul53P
    @aldoa1 sagte: Könnte mir jemand helfen? Export <xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="P|eo@Kc,p^v4wpWrKz]:" x="163" y="863"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">lt</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="4,@?z:.bQlC6]u*3Zxhj"> <field name="oid">default</field> </shadow> <block type="text" id="6V+~Zbm[hheHJK[f=h{u"> <field name="TEXT">hm-rpc.1.0000DBE996E554.1.STATE</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="d@OiGZ(75H]oEsALsW7X"> <value name="IF0"> <block type="logic_operation" id="l^Bt%S(d!V@ml](qG(D@" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="time_compare_ex" id="xt2Cln_[bVW{m.{=%8=A"> <mutation xmlns="http://www.w3.org/1999/xhtml" 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="^?z3xwMb;H]Q}5dL(!M$"> <field name="TEXT">12:00</field> </shadow> <block type="time_astro" id="%Mt6d0]A=]Oq@lW]+9n^"> <field name="TYPE">sunrise</field> <field name="OFFSET">-35</field> </block> </value> <value name="END_TIME"> <shadow type="text" id="/)WO@y[.~[]PC9$/u.u8"> <field name="TEXT">18:00</field> </shadow> <block type="time_astro" id="(/:DuyT1U3HI`z]:LW;t"> <field name="TYPE">sunset</field> <field name="OFFSET">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="_[TD)QTvl+/C`+MENJq0"> <field name="OP">GT</field> <value name="A"> <block type="get_value_var" id="7(*wJF~ah@o|O;21KiC`"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="Xu,oq8qr~z^`T^$dCI;l"> <field name="TEXT">javascript.0.Rollo-Tür</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="U+6t9|SS,)~f3G1#?BUh"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="SewRZCXf_FH/MMA462a="> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Rollo-Tür</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="1JmHrnub7Ie@e:tb/5ew"> <field name="NUM">0</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="astro" id="4!Y)8D%$][i?NiD,KQt:"> <field name="TYPE">sunset</field> <field name="OFFSET">0</field> <statement name="STATEMENT"> <block type="controls_if" id="xxYegC-*6y-DD@5G?@Q."> <value name="IF0"> <block type="logic_operation" id="qw[~`oTlSVWS9GMXOadE" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="S2udt?l+/[2Th=Pd-Z2z"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="s%09vhG$/`LZE|(+.r4#"> <field name="ATTR">val</field> <field name="OID">hm-rpc.1.0000DBE996E554.1.STATE</field> </block> </value> <value name="B"> <block type="logic_boolean" id="p;t.!2kWn+i2F}H=Ox]g"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="8xGt2B7ffMy~k8!59L=j"> <field name="OP">GT</field> <value name="A"> <block type="get_value_var" id="}%vm]fExu~N{=Yc}QD3L"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="*r(#p,CYOnuW,EpJ$SX."> <field name="TEXT">javascript.0.Rollo-Tür</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="-].WJ!-OC_J%6=_8w*9("> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Y-ZUIq|D!D01Sqj6^8X="> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Rollo-Tür</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="e^nUjr=22QSQ#l-?fWIq"> <field name="NUM">0</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </xml>
  • Variable (laden/geladen) für eine Wetterstation.

    6
    1
    0 Votes
    6 Posts
    444 Views
    K
    @paul53 besten Dank für Deine Mühe.... Das Script läuft natürlich. Verständlich ist es auch! Jetzt spring der Zustand von Akku - "Geladen" auf "Leer" und ändert die Farbe vom grün auf orange. [image: 1601661003813-7.png] Vielen Dank nochmals.... :+1:
  • Trigger: Wenn Wert länger gehalten wird

    6
    0 Votes
    6 Posts
    1k Views
    D.VED
    Ich hab mal eine kleine Methode implementiert, die das realisiert. Einfach als Globale JS Funktion einfügen: var historyValuesOBJ ; function compareHistoryValue(currentValueFLT, operatorSTR, compareValueFLT, durationINT, identifierSTR) { console.log(currentValueFLT + " " + operatorSTR + " " + compareValueFLT + " For " + durationINT + "s"); //Current timestamp var currentTimeTST = Math.round(new Date().getTime() / 1000); //check if the global object exists and create it if not if (typeof historyValuesOBJ == "undefined") { historyValuesOBJ = {}; historyValuesOBJ[identifierSTR] = {}; historyValuesOBJ[identifierSTR].lastCallINT = currentTimeTST; historyValuesOBJ[identifierSTR].countINT = 0; } //Calculate the delata since last Call var deltaTimeINT = currentTimeTST - historyValuesOBJ[identifierSTR].lastCallINT; //Add the dealte to the count value historyValuesOBJ[identifierSTR].countINT = historyValuesOBJ[identifierSTR].countINT + deltaTimeINT; //set the last call to current timestamp historyValuesOBJ[identifierSTR].lastCallINT = currentTimeTST; console.log("Time since Last Call: " + historyValuesOBJ[identifierSTR].countINT ); if (operatorSTR == '<' ){ //if comparison fails, reset counter if (currentValueFLT >= compareValueFLT) { historyValuesOBJ[identifierSTR].countINT = 0; return false; } //if comparison is true else if (currentValueFLT < compareValueFLT) { //return true if value is larger if (historyValuesOBJ[identifierSTR].countINT >= durationINT){ return true; } return false; } } else if (operatorSTR == '>' ){ //if comparison fails, reset counter if (currentValueFLT <= compareValueFLT) { historyValuesOBJ[identifierSTR].countINT = 0; return false; } //if comparison is true else if (currentValueFLT > compareValueFLT) { //return true if value is larger if (historyValuesOBJ[identifierSTR].countINT >= durationINT){ return true; } return false; } } } Im Blockly baut man sich dann noch einen Wrapper (JS-Funktion mit Ergebnis): [image: 1601638953916-222b82a7-e309-49c1-9590-fb509f99bcc8-grafik.png] Und kann das dann so benutzen: [image: 1601639065236-18108933-ea4e-445f-9ee4-16a251937167-grafik.png] Das obige Script gibt true zurück, wenn der Wert für mindestens 45 Sekunden unter 500 geblieben ist. ToDo: Ich habe nur größer und kleine implementiert, es fehlen noch Gleich sowie Größer-Gleich und Kleine-Gleich an Operatoren Auch vergleiche mit true/false fehlen noch Leider muss man noch einen Identifier angeben, damit das Script die Werte intern korrekt speichern kann. Wenn jemand eine Idee hat, wie man das Generisch gestalten kann, immer her damit.
  • [gelöst]mit blockly dateigröße ermitteln

    3
    0 Votes
    3 Posts
    348 Views
    T
    @MCU perfekt! funktioniert wunderbar. vielen dank für die schnelle hilfe.:blush:
  • Blockly schreibt "0", finde Fehler nicht

    10
    4
    0 Votes
    10 Posts
    670 Views
    DutchmanD
    @onkel-ede sagte in Blockly schreibt "0", finde Fehler nicht: Die "0"-Werte werden von sourceanalytix geschrieben. Das blockly-script funktioniert also sauber. Nachdem ich sourceanalytix im ursprünglichen Datenpunkt deaktiviert habe, kommen dort auch keine "0"-Werte mehr: wie im SA adapter genannt ist die ein bug im JS-controller und man muss den default wert entfernen damit dies nicht passiert.
  • Alexa Datenpunkt

    blockly
    6
    0 Votes
    6 Posts
    450 Views
    P
    @jwedenig hast du die Iobroker Skills in der Alexa App installiert ?? bezüglich dem Datenpunkt bei Alexa der sich nicht ändert, dieses Problem habe ich leider auch ... weiß aber auch nicht warum ...
  • Raspberry mit blockly runterfahren

    10
    1
    0 Votes
    10 Posts
    985 Views
    mickymM
    @David-G probiers einfach mit "sudo poweroff"
  • Blockly Konvertierung Zahl in String

    15
    0 Votes
    15 Posts
    3k Views
    paul53P
    @maeuseking sagte: Also besser dann wie oben mit der Variablen? Ja.
  • Wert nach Sonderzeichen trennen und in Variable speichern.

    7
    1
    0 Votes
    7 Posts
    368 Views
    J
    @paul53 Danke es funktioniert!!! :)
  • Via Telegram Bild und Text senden

    Unsolved
    7
    0 Votes
    7 Posts
    1k Views
    oberfraggerO
    @dslraser Spät aber gerade "wiedergefunden" - ja, das meinte ich! Danke.
  • [gelöst] Shelly Rolladen mit Tadifri on/ off switch steuern

    16
    0 Votes
    16 Posts
    797 Views
    D
    das fertige Blockly, vielleicht hilft es jemanden. <xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="yMQ01rUlW1PsHUwFVDIJ" x="112" y="38"> <field name="COMMENT">Ikea Sender STATE</field> <next> <block type="on_ext" id="@)eO^OcBv6{g2ABaNIzB"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="WYi?I7+BW]0{::b~SKz2"> <field name="oid">zigbee.0.680ae2fffe803af6.state</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="m=A=cRiLbKUhT/ky_rGP"> <field name="COMMENT">Shelly STATE</field> <next> <block type="controls_if" id="wh_c=[+U}.9ExA%n?X6H"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="$IP[XBT3*.G=1Ty/TQYP"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="/6E_f3I`(Bt25~FTDPPD"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHSW-25#98F4ABF2DCE1#1.Shutter.state</field> </block> </value> <value name="B"> <block type="text" id="4bw7@9A$+gj?x1M)B=yP"> <field name="TEXT">stop</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="GCaNE51Cd|`pmD8J{BzY"> <mutation else="1"></mutation> <value name="IF0"> <block type="on_source" id="+sb)m]HsmWy3P$7`7=U,"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="comment" id="1`|S0=LVXRH|IPv[g+JA"> <field name="COMMENT">Shelly schliessen</field> <next> <block type="control" id="VyikcOeieHo}@Cd{MHj1"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-25#98F4ABF2DCE1#1.Shutter.Close</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="y0G/)ZXpJ/=DV:ir_4tr"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="1]Raj$(VQU;f:4UXW%/2"> <field name="COMMENT">Shelly öffnen</field> <next> <block type="control" id="i?uY(9nBbCkMhrb3ulMT"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-25#98F4ABF2DCE1#1.Shutter.Open</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="r,e{b#6FhNz/5@T^LMZF"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="comment" id="%#O5NOPGzaelvq5:2oY{"> <field name="COMMENT">Shelly Stop</field> <next> <block type="control" id="y$8B*`^]}uv?omr$R|(@"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-25#98F4ABF2DCE1#1.Shutter.Pause</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="~a5uv-fE#C#P5)^Z}svl"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </xml> @paul53 nochmals Danke für deine Geduld & Mühe
  • IP-Adressen vergleichen?

    5
    1
    0 Votes
    5 Posts
    295 Views
    J
    @fastfoot Danke, es scheint jetzt zu funktionieren :) Den Text Command konnte ich nicht finden weil mein Browser nicht groß genug war sorry :/
  • Impuls / Logikwert nur kurz Triggern durch Blockly

    4
    0 Votes
    4 Posts
    582 Views
    ?
    Hallo Zusammen, prüfe gerade den Zustand der eingebauten "Änderungen" und hierbei stelle ich fest, dass der ALIAS eines Push-Buttons noch auf true steht. Der "orginal" Button DP steht auf 0. Derzeit sehe ich nur eine Möglichkeit warum dies so ist: Meine gebaute Überfüllsichering, die den Button auslöst um den Ausgang einer Pumpe dann in den Garten zu leiten (Toggle Switch). Der Impuls wird jedoch auf den Alias nicht als Impuls ausgeführt sondern steuert fix auf true. Warum? Beim Stop Button um die Pumpe auszuschalten funktioniert es. Am 27.09. 10:52xh wurde die Überfüllsicherung ausgelöst/getestet aber der ALIAS DP nicht zurück auf false gesetzt. [image: 1601374110374-true.jpg] [image: 1601373974161-0b3afaec-c686-40ca-bb00-f292c1059cf2-grafik.png] Sollte ich die Logik zum DP AusgangGarten prüfen? Wird nicht korrekt umgeschaltet und durch die Prüfung (AusgangGarten = false) läuft die Logik der Überfüllsicherung nochmal? [image: 1601374470655-03548e72-34ed-4ab3-ad30-8ddf1ec9741b-grafik.png]
  • Blockly Pumpen Steuerung einfache Logik

    blockly climate ventilation
    4
    2
    0 Votes
    4 Posts
    656 Views
    paul53P
    @photographix sagte: Die ersten beiden Blöcke regeln nach meinem Verständnis die kalte bzw die warme Jahreszeit Ja, das sind zwei 2-Punkt-Regler mit Hysterese.
  • Shelly mit Jalousieactor von HMIP steuern

    blockly
    8
    0 Votes
    8 Posts
    897 Views
    paul53P
    @Crazy32 sagte: Eine Idee was ich da falsch gemacht haben könnte? "shutterLevel_HmIP" ist sicher kein Taster. Außerdem kann der Datenpunkt nicht mal eine Zahl und ein anderes mal den String "stop" enthalten. Der einzige Datenpunkt, den ich als HmIP-Taster erkennen kann ist "...channels.1.stop" (Name "on"). Zum Vergleich mit "stop" kann nur der DP "...Shutter.state" (Name "Roller state") dienen. Wenn 10 Rollos gesteuert werden sollen, dann ändere die Namen "Pause", "Open" und "Close" in eindeutige Namen. Als Referenz-Rollo für "shutterLevel" und "Roller State" solltest Du das Rollo mit der längsten Laufzeit verwenden.
  • [gelöst] Backup über Blockly wird nicht korrekt ausgeführt

    15
    1
    0 Votes
    15 Posts
    735 Views
    K
    Jetzt läuft das Skript sauber. Das einzige was ich gemacht habe, war es einmal komplett zu löschen und neu zu erstellen
  • Vergleichswerte

    blockly
    11
    0 Votes
    11 Posts
    566 Views
    A
    @Homoran Ohhhh super danke, habe es soeben angepasst :+1:

637

Online

32.7k

Users

82.5k

Topics

1.3m

Posts