Skip to content

Blockly

Hilfe für Skripterstellung mit Blockly

6.6k Topics 79.5k Posts

NEWS

  • Sprachausgabe über Alexa

    blockly
    3
    1
    0 Votes
    3 Posts
    237 Views
    ?
    @Jan1 Danke schonmal. Dann habe ich einen Anhaltspunkt und schau es mir an :)
  • [Gelöst]Aktionen in Zeiträumen ausführen

    35
    0 Votes
    35 Posts
    2k Views
    T
    @MyzerAT habe das Skript jetzt nach meinem Verständnis geändert. Das erneute einschalten, wenn das Licht schon an ist, stört ja nicht, da hier eine andere Frequenz gesendet wird. Die Else Bedingung habe ich durch eine IfElse Bedingung getauscht und dort die gleichen Parameter festgelegt, wie für die If Bedingung. Beim Test hat es schonmal funktioniert. Bin gespannt auf heute Abend. [image: 1576419277694-3c5bf987-1d60-46c3-968c-3d444156d5ef-image.png]
  • Ziggbee Geräteüberwachung verbessern

    blockly
    6
    3
    0 Votes
    6 Posts
    733 Views
    v522533V
    @paul53 sagte in Ziggbee Geräteüberwachung verbessern: @v522533 sagte: if(Math.round((new Date() - new Date(getState(id).ts)) / 1000 / 60) > 60) offline(id); Weshalb wird gerundet, wenn ein Vergleich "größer als" erfolgt ? Mit new Date() wird ein Date-Objekt erzeugt und die Subtraktion funktioniert nur aufgrund der impliziten Typwandlung von Javascript. Besser: if(Date.now() - getState(id).ts > 3600000) offline(id); Das kann ich dir nicht sagen, weil ich mich mit javascript nicht auskenne, habe das skript kopiert und es funktioniert. das ist alles was ich sagen kann ;) habe die zeile durch deine ersetzt. danke dir ;)
  • Countdown

    blockly
    5
    1
    0 Votes
    5 Posts
    333 Views
    T
    Ich habe das Blolckly noch mit Zeitplänen erweitert ja nach Tageszeit und Wochentag. Es springt zwar in debug "Zeitplan" berücksichtigt aber die Zeitpläne nicht. Zusätzlich will ich noch den oberen Teil zur Deaktivierung bzw. Aktivierung in das Script einbauen. Wo setze ich da an? ![alt text]([image: 1576391130398-f93fa13c-8931-462e-84f4-a2eeb469f706-image.png] image url)
  • Compare time als „trigger“

    3
    1
    0 Votes
    3 Posts
    361 Views
    A
    Jupp, das stimmt. War nicht korrekt von mir ausgedrückt. Aber warum funktioniert das trotzdem? Eigentlich müsste ich doch erst den trigger auf den Bewegungssensor haben und innerhalb dieses triggers dann die IF Abfrage bezüglich der Zeit. Zur Zeit habe ich es aber anders herum und es funktioniert trotzdem ^^.
  • Sonnoff / Blockly state wird nicht gesetzt

    5
    3
    0 Votes
    5 Posts
    280 Views
    C
    @Alex-Buehler hatte ich auch schon, da war die zeit vom system nicht korrekt und musste neugesynct werden
  • Mit Shelly Alexa Musik abspielen

    Moved
    7
    0 Votes
    7 Posts
    904 Views
    Blacky 90B
    @crunchip @Jan1 -danke für deine Rückmeldung funktioniert perfekt [image: 1576337817280-a0abf6d6-df03-4e8e-9ee7-3c0b753fd865-image.png]
  • Blockly steuert alexa speak nicht ab

    1
    1
    0 Votes
    1 Posts
    275 Views
    No one has replied
  • Bewegungsmelder Licht Radio (Sonnenauf/untergang)

    6
    0 Votes
    6 Posts
    901 Views
    D
    Also das dunkel ist eine variable die im ersten skript geschrieben wird. musst du anlegen und anschließend wird zwischen sonnenuntergang und -aufgang true gesetzt weil es dann dunkel ist. im zweiten skript das erste orangene ist der rf code meines bewegungsmelders der rausgestrichen ist. das zweite orangene ist die anwesenheitskontrolle da hast du recht. du müsstest ja im endeffekt nur die dunkelheitssteuereung integrieren. gib mir doch mal dein skript , dann schaue ich mal ob ich dir sagen kann was du tun musst. wie man eine variable erstellt gibts schöne videos auf youtube zu.
  • [Gelöst] Probleme mit Alexa Sprachausgabe

    7
    2
    0 Votes
    7 Posts
    698 Views
    L
    Ich setz jetzt mal auf gelöst, hab ein Script gefunden dass ich als Vorlage nehme. Fang also nochmal von vorne an, mal schauen.... Gibt noch viel zu lernen:blush:
  • [gelöst] Was ist das für eine Warnung?

    12
    1
    0 Votes
    12 Posts
    783 Views
    W
    @paul53 :+1: :+1: :+1: :grinning: :grinning: :grinning: Manchmal kann alles sooo einfach sein! Die Alexa spricht, keine Warns mehr, Andreas glücklich! Danke für die schnelle Hilfe. Grüße Andreas
  • Temp Anfrage an Alexa mit entspr. Ausgabe

    3
    1
    0 Votes
    3 Posts
    348 Views
    dslraserD
    @Stoni Hier habe ich was für die Luftfeuchtigkeit https://forum.iobroker.net/post/328119 und hier noch etwas mehr, mit Beschreibung. https://forum.iobroker.net/post/273896
  • Wiederholen von Befehlen. Wie geht das

    27
    1
    0 Votes
    27 Posts
    3k Views
    paul53P
    @Martin-0 sagte in Wiederholen von Befehlen. Wie geht das: Da muss ich ja garnicht jedesmal den Befehl überall reinschreiben, sondern kann das benennen und dann einfügen Da der Ansagetext überall gleich ist, habe ich eine Variante mit Variable erstellt. Spoiler <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="B:u)*5n*7e-b$$/6xA5S">ansage</variable> <variable type="undefined" id="timeout">timeout</variable> </variables> <block type="schedule" id="I4$lt{y={6ktxUOFUAUp" x="-1412" y="-262"> <field name="SCHEDULE">{"time":{"exactTime":true,"start":"23:00"},"period":{"days":1}}</field> <statement name="STATEMENT"> <block type="controls_if" id="+5B75]y|H0xaV^k}nzN#"> <value name="IF0"> <block type="logic_compare" id=":g^t/wOP@Eyn8Ps}y*;:"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="K[j1v-@LyMurc%MVd:Qj"> <field name="ATTR">val</field> <field name="OID">hm-rpc.0.JEQ0068443.1.STATE</field> </block> </value> <value name="B"> <block type="logic_boolean" id="CGp0Xup1{gaa=LN-p)V"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callnoreturn" id="w4~^`UYw#c/AZ16*;^2/"> <mutation name="ansagen"></mutation> <next> <block type="timeouts_settimeout" id="^MQc)RrII$IK?vh7[oBh"> <field name="NAME">timeout</field> <field name="DELAY">15</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="j8Oy$h)lMTDBgfh%5,uK"> <mutation name="ansagen"></mutation> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> <block type="procedures_defnoreturn" id="y~$bl!}zW6vkdw}!z!~Q" x="-1013" y="-137"> <field name="NAME">ansagen</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="variables_set" id="W|IJXCI4558gbk(A5N9B"> <field name="VAR" id="B:u)*5n*7e-b$$/6xA5S" variabletype="">ansage</field> <value name="VALUE"> <block type="text" id="{AiP(D{1D[#^P@^BYu3"> <field name="TEXT">Sicherheitswarnung. Das Garagentor ist noch geöffnet</field> </block> </value> <next> <block type="comment" id="CazBpF8s^39B=V2!u|(P"> <field name="COMMENT">Echo Wohnzimmer</field> <next> <block type="controls_if" id="hZ~V,z25PwxAgScWkEG5"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="}V^09Y3*p=0?g^!t8WIn"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="a+yjeHL8Bq.Gw,Ooru"> <field name="ATTR">val</field> <field name="OID">alexa2.0.Echo-Devices.G090U509847625MD.Bluetooth.3db393472f177440184a264d10ab21eaa3a40b727da721dacafdc36d7c924828.connected</field> </block> </value> <value name="B"> <block type="logic_boolean" id="iL;.^qKRI/EvT__-ijX0"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="o1v=umqvl[o$Cv|;f]S-"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="vY5vPPdyzFj-q_dcX/ZN"> <field name="NUM">100</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="M%o@@T68jp?jm4shN%!b"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="ZGA8#%bU^)/:!Ez8L7T("> <field name="NUM">80</field> </block> </value> </block> </statement> <next> <block type="control" id="bof(^Kc6*HkP+s:j[6#_"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="*DQWI2k9B|SkYa/74okS"> <field name="VAR" id="B:u)*5n*7e-b$$/6xA5S" variabletype="">ansage</field> </block> </value> <next> <block type="comment" id="})*dm=K.%!t}u%{{lOOo"> <field name="COMMENT">Echo Badezimmer</field> <next> <block type="control" id="=Bdy1/j[B-XGezQyz^hF"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984653CEF.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="E?5h:!sz7m8*ji%it%A)"> <field name="VAR" id="B:u)*5n*7e-b$$/6xA5S" variabletype="">ansage</field> </block> </value> <next> <block type="comment" id="I7D#-CK31A(.9PL{OIrS"> <field name="COMMENT">Echo Wintergarten rechts</field> <next> <block type="control" id="N-z_H{7CHOH?f6BF_fBH"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50991860QSL.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="Kd3~Ov)}hdWwo7Gvfc+["> <field name="NUM">50</field> </block> </value> <next> <block type="control" id="T8r(PQcs.=m8,Z37N;-y"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50991860QSL.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="=kAFSjZsN4M?M0I0-31x"> <field name="VAR" id="B:u)*5n*7e-b$$/6xA5S" variabletype="">ansage</field> </block> </value> <next> <block type="comment" id="h7VHm$s|m_^_/_nyScx."> <field name="COMMENT">Echo Werkstatt</field> <next> <block type="control" id="YEdU^w}S1+:gN%81VAQ@"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090XG07930531PU.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="yx%~c34X+TwOxqzY`Dyx"> <field name="VAR" id="B:u)*5n*7e-b$$/6xA5S" variabletype="">ansage</field> </block> </value> <next> <block type="comment" id="F1(av/Fq.7jObTX.yG["> <field name="COMMENT">Echo Schlafzimmer</field> <next> <block type="control" id="Nj@c?9:P,d?puaw0vMfz"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50784360US6.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="3_!yO=%_o^`B!)]y2EI)"> <field name="NUM">40</field> </block> </value> <next> <block type="control" id="J?BofaiaB2V!fQ$cGc3^"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50784360US6.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="/!$YP$T$bnrp5d[a}x,|"> <field name="VAR" id="B:u)*5n*7e-b$$/6xA5S" variabletype="">ansage</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml> Ist "Commands.speak-volume" tatsächlich ein String-Datenpunkt oder ein Zahl-Datenpunkt ?
  • Datenpunkt erweitern

    blockly
    8
    2
    0 Votes
    8 Posts
    409 Views
    HomoranH
    @PatrickFro sagte in Datenpunkt erweitern: WYSING steht für "What you see is what you get", aber das ist dir sicher bekannt Nö, dann heisst es nämlich WYSIWYG
  • Fehler (Bool) wahr / falsch mit Zahl ersetzen

    11
    0 Votes
    11 Posts
    1k Views
    Tom10webT
    Nullen schalten eben mit"0" :wink:
  • Tabelle erzeugen für IQontrol-Anzeige - Blockly

    blockly
    14
    4
    1 Votes
    14 Posts
    3k Views
    liv-in-skyL
    [image: 1576151433495-image-2.png] zeile auf - spalte auf - text - spalte zu - neue spalte auf mit style-farbe - text - spalte zu - zeile zu
  • [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt

    Moved blockly
    23
    0 Votes
    23 Posts
    3k Views
    P
    @paul53 said in [Gelöst] Frage zu Blockly ? Lichtsteuerung über Türkontakt: @care72 Vorschlag: [image: 1550659237805-blockly_lichtaus_bei_2x_tuerzu.jpg] Hallo, leider muss ich jetzt den alten Theard wiederbeleben... Ich habe einen Türsensor der eine Sprachausgabe per Alexa ausgeben soll ich habe hierfür den Aufbau verwendet da ich mir dachte ist ja vom Prinzip her das gleiche... Das Problem ist jetzt nur, leider funktioniert es nicht … Ich habe bei mache, anstatt steuere -> speak -> Hallo eingetragen bei sonst anstatt steuere -> speak tschüss eingetragen Wenn ich die Tür öffne wird die Sprachausgabe "Hallo" aktiviert, dasselbe beim 2 oder 3 öffnen der Tür aber öffne und schließe ich die Tür innerhalb von 1-2 sec. werden beide Sprachausgaben hintereinander ausgeführt... Ich hoffe ich konnte mein Problem verständlich erklären.. Hat jemand eine Idee ? Danke und LG
  • Hex zu Dezimal wandeln

    blockly
    5
    1
    0 Votes
    5 Posts
    2k Views
    paul53P
    @Roelli sagte: input;0800;output;0000;counter;126;111;0;0;0;0;0;0;0;0;0;0 Das hinter dem Semikolon "0800" ist wohl der hexadezimale Wert. Versuche es mal so- [image: 1576084139270-blockly_temp.jpg] Spoiler <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="+Wx]Q{.2Vkv!?A*?.tX6">hex</variable> <variable type="" id="fV]_W~CP:]59f8qG-O4m">Liste</variable> <variable type="" id="eELu()QjMt4,hC(NI7T(">inputs</variable> <variable type="" id="mM]N!hc@{IM}8ekQy6:f">i</variable> <variable type="" id="%JU_.mp8ag]0UW_idbv[">input</variable> </variables> <block type="on_ext" id="|g+DV6`6UQeauN+v5=|b" x="113" y="289"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="3FjWqfGEYxtb8*I,E/4E"> <field name="oid">default</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="OkT.UVUtc!i%^~`TO2?N"> <field name="VAR" id="fV]_W~CP:]59f8qG-O4m" variabletype="">Liste</field> <value name="VALUE"> <block type="lists_split" id="i08=)H0_KB1Cf@cP;_4n"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="on_source" id="E{t~gUjNjcUl(K%OppgA"> <field name="ATTR">state.val</field> </block> </value> <value name="DELIM"> <shadow type="text" id="q_5%bEi2,UfYL=0tK^n6"> <field name="TEXT">;</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="]@iBF.d.u{_s:T3=;[8P"> <field name="VAR" id="eELu()QjMt4,hC(NI7T(" variabletype="">inputs</field> <value name="VALUE"> <block type="procedures_callcustomreturn" id="kCs7#/d-5%XO2*:5zxf2"> <mutation name="hex2dec"> <arg name="hex"></arg> </mutation> <value name="ARG0"> <block type="lists_getIndex" id="biR1P_*+V^NEU=VIW2G3"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="hO-UwvXU(@9ID!o?{=N!"> <field name="VAR" id="fV]_W~CP:]59f8qG-O4m" variabletype="">Liste</field> </block> </value> <value name="AT"> <block type="math_number" id="y,Oz*A@(gel|Sk`Y,adn"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> <next> <block type="controls_for" id="_.@hA-6H_F][RKc/LIjJ"> <field name="VAR" id="mM]N!hc@{IM}8ekQy6:f" variabletype="">i</field> <value name="FROM"> <shadow type="math_number" id="dbD|@1[PxJMBLcuyaJxC"> <field name="NUM">1</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="_P$t!8T*sVFcjqpV=2H."> <field name="NUM">12</field> </shadow> </value> <value name="BY"> <shadow type="math_number" id="`s0jmRRd,HbBJ=7{C(n."> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="controls_if" id="XFoJ7*e~bRrj)B^cPDru"> <mutation else="1"></mutation> <value name="IF0"> <block type="math_number_property" id="Zl#t@/WE5H1UR41l?~gC"> <mutation divisor_input="false"></mutation> <field name="PROPERTY">ODD</field> <value name="NUMBER_TO_CHECK"> <shadow type="math_number" id="S3.Q4ag!#PYlB`U4=(Zu"> <field name="NUM">0</field> </shadow> <block type="variables_get" id="oF-uzcGt`/wKKW8xujdW"> <field name="VAR" id="eELu()QjMt4,hC(NI7T(" variabletype="">inputs</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="fM@h*e!:[cV~,=xNNnkT"> <field name="VAR" id="%JU_.mp8ag]0UW_idbv[" variabletype="">input</field> <value name="VALUE"> <block type="logic_boolean" id="S]y5e@]b8^R4r9X?x5-U"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="QS_r{(*KSI?]!5W,W[Xq"> <field name="VAR" id="%JU_.mp8ag]0UW_idbv[" variabletype="">input</field> <value name="VALUE"> <block type="logic_boolean" id="2x3]UTM~Sj/_o/XR=oWL"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="control_ex" id="VlY,7}^qDvlRF%.hv(m]"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="WT]BKW#bT4,U{^7Gpn_Y"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="z[m8ZWQR#B!G)mj(T6:;"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="=Y=8=,)oyTw(gkYJ5$Qt"> <field name="TEXT">0_userdata.0.iomodul.input</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="%#q7sr!LtiB(8L7U2(]("> <field name="VAR" id="mM]N!hc@{IM}8ekQy6:f" variabletype="">i</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="V5pb!@LAF{jKKKc]KBin"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="@uShH_2Znnwjgasr2h8,"> <field name="VAR" id="%JU_.mp8ag]0UW_idbv[" variabletype="">input</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="l[~=5ireGI|.*R_I)K%k"> <field name="NUM">0</field> </shadow> </value> <next> <block type="variables_set" id="uwX9ZAPeLCjl65AL_uxX"> <field name="VAR" id="eELu()QjMt4,hC(NI7T(" variabletype="">inputs</field> <value name="VALUE"> <block type="math_round" id="JqM+{NH2JJNL8pHI9b}n"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="zy)6PU~Pu1K5lR9,hllR"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="=biT14(x2b[Ds$5s:TF#"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="+y4[u,GCBy/HjOmkZG$Z"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="_(szGPd$*cli2aCRn[dd"> <field name="VAR" id="eELu()QjMt4,hC(NI7T(" variabletype="">inputs</field> </block> </value> <value name="B"> <shadow type="math_number" id=":VHGmM0GxKp@D|!o?Y,b"> <field name="NUM">2</field> </shadow> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defcustomreturn" id="o~vB.~:vTH*8{L}s{=xx" x="312" y="337"> <mutation statements="false"> <arg name="hex" varid="+Wx]Q{.2Vkv!?A*?.tX6"></arg> </mutation> <field name="NAME">hex2dec</field> <field name="SCRIPT">cmV0dXJuIHBhcnNlSW50KGhleCwgMTYpOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml> Die 12 Datenpunkte "0_userdata.0.iomodul.input1 .. 12" vom Typ "Logikwert" müssen vorher erzeugt werden.
  • (gelöst)Blockly funktioniert nicht

    blockly
    9
    1
    0 Votes
    9 Posts
    369 Views
    J
    @Homoran Das war auch der Grund warum ichs dann auch geschnallt hatte:+1:
  • [Gelöst] Umrechnen von Sekunden in Stunden

    19
    3
    0 Votes
    19 Posts
    1k Views
    G
    Anbei mein Blockly [image: 1576069925743-uptime_7.png]

545

Online

32.7k

Users

82.4k

Topics

1.3m

Posts