Weiter zum Inhalt

Blockly

6.6k Themen 79.8k Beiträge

Hilfe für Skripterstellung mit Blockly

NEWS

  • Alexa Radiosender eingeschalten bei Bewegung im Raum

    blockly
    48
    1
    0 Stimmen
    48 Beiträge
    9k Aufrufe
    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 Stimmen
    6 Beiträge
    446 Aufrufe
    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 Stimmen
    6 Beiträge
    444 Aufrufe
    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....
  • Trigger: Wenn Wert länger gehalten wird

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    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 Stimmen
    3 Beiträge
    363 Aufrufe
    T
    @MCU perfekt! funktioniert wunderbar. vielen dank für die schnelle hilfe.
  • Blockly schreibt "0", finde Fehler nicht

    10
    4
    0 Stimmen
    10 Beiträge
    689 Aufrufe
    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 Stimmen
    6 Beiträge
    462 Aufrufe
    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 Stimmen
    10 Beiträge
    986 Aufrufe
    mickymM
    @David-G probiers einfach mit "sudo poweroff"
  • Blockly Konvertierung Zahl in String

    15
    0 Stimmen
    15 Beiträge
    3k Aufrufe
    paul53P
    @maeuseking sagte: Also besser dann wie oben mit der Variablen? Ja.
  • Wert nach Sonderzeichen trennen und in Variable speichern.

    7
    1
    0 Stimmen
    7 Beiträge
    368 Aufrufe
    J
    @paul53 Danke es funktioniert!!! :)
  • Via Telegram Bild und Text senden

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

    16
    0 Stimmen
    16 Beiträge
    798 Aufrufe
    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 Stimmen
    5 Beiträge
    296 Aufrufe
    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 Stimmen
    4 Beiträge
    589 Aufrufe
    ?
    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 Stimmen
    4 Beiträge
    669 Aufrufe
    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 Stimmen
    8 Beiträge
    902 Aufrufe
    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 Stimmen
    15 Beiträge
    735 Aufrufe
    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 Stimmen
    11 Beiträge
    578 Aufrufe
    A
    @Homoran Ohhhh super danke, habe es soeben angepasst
  • Steuerung Rollläden nach Lichtintensität

    1
    1
    0 Stimmen
    1 Beiträge
    251 Aufrufe
    Niemand hat geantwortet
  • Zu einem Datum einen Tag dazuzählen

    blockly
    10
    0 Stimmen
    10 Beiträge
    957 Aufrufe
    F
    @muuulle sagte in Zu einem Datum einen Tag dazuzählen: @fastfoot Super, so klappt es. Nur bräuchte ich die englische Schreibweise 🥴 kann man das auch so ausgeben lassen? Danke Nein, dazu müsstest du warten bis der Fehler gefixt ist(issue ist erstellt). Natürlich könnte man es auch über eine JS-Funktion lösen, Ist dann aber kein reines Blockly mehr [image: 1601117484430-tagname2.png] Wochentag mit JS-Funktion <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="C?4ra}V3v@2Vl2,C}v3)">offset</variable> <variable id="(;Et]hscj!}uSN4AfKm(">lang</variable> </variables> <block type="procedures_defcustomreturn" id="C@51mh(#!sZ[8%T2f?]N" x="37" y="13"> <mutation statements="false"> <arg name="offset" varid="C?4ra}V3v@2Vl2,C}v3)"></arg> <arg name="lang" varid="(;Et]hscj!}uSN4AfKm("></arg> </mutation> <field name="NAME">Tagname</field> <field name="SCRIPT">cmV0dXJuIGZvcm1hdERhdGUoZ2V0RGF0ZU9iamVjdCgoKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSArIDg2NDAwMDAwICogb2Zmc2V0KSksICJXVyIsbGFuZyk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="debug" id="xk1c[=-o!^|WVM:dS_/Z" collapsed="true" disabled="true" x="37" y="37"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="ZR/M[}zO3i-|6$F59yx|"> <field name="TEXT">test</field> </shadow> <block type="convert_from_date" id="=3g57gt[asI1cE,cJlos"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">WW</field> <value name="VALUE"> <block type="math_arithmetic" id="0IwDof^^h1/VkN6-yTyi" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="fSW!Z`#_4DLj4^F9rUuu"> <field name="NUM">1</field> </shadow> <block type="time_get" id="tz=(7:CmMoc}pfc@bJ]j"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> <value name="B"> <shadow type="math_number" id="lLINmcJ=m0e_?Gds`%[w"> <field name="NUM">0</field> </shadow> <block type="math_arithmetic" id="0g-8$Ig1aFv/Y#1WCn$`"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="{I^Pk*!_yWHiy2ThxA|P"> <field name="NUM">86400000</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="bWoM/+Fjy%ZrA[@LiDNq"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="NgQQ}4=E6IjIw?V]%UC1"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="a6+|hC[T_=o90=[ctle*"> <field name="TEXT">test</field> </shadow> <block type="procedures_callcustomreturn" id="rD@kYgIM$dZv1UMWD;vB" inline="true"> <mutation name="Tagname"> <arg name="offset"></arg> <arg name="lang"></arg> </mutation> <value name="ARG0"> <block type="math_number" id="pq*qn0(;^O)p)1Vxc#PZ"> <field name="NUM">1</field> </block> </value> <value name="ARG1"> <block type="text" id="FA0(o[AN;!bfL_S-ycng"> <field name="TEXT">en</field> </block> </value> </block> </value> <next> <block type="debug" id="e%dq(2yDQ#|8sIW0h:W7"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="procedures_callcustomreturn" id="LMQ{n(y0Hi}_sgXpB:Y}" inline="true"> <mutation name="Tagname"> <arg name="offset"></arg> <arg name="lang"></arg> </mutation> <value name="ARG0"> <block type="math_number" id="?MarjXm!g7[eS@K)P|$L"> <field name="NUM">6</field> </block> </value> <value name="ARG1"> <block type="text" id="-u!?$rJ*ci?Q@xozcgIZ"> <field name="TEXT">de</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </xml>

268

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge