Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Rollladen steuern mit HM-Wired 12/7-Modulen und Blockly

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Rollladen steuern mit HM-Wired 12/7-Modulen und Blockly

Rollladen steuern mit HM-Wired 12/7-Modulen und Blockly

Scheduled Pinned Locked Moved Skripten / Logik
7 Posts 3 Posters 994 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    my_home_is_my_castle
    wrote on last edited by
    #1

    Hallo Forum,

    ich ziehe mir hier sehr viele Infos zum Umsetzen in meinem System heraus und möchte hier mal meine Steuerung der Rollladen mit Wired 12/14-Modulen weitergeben.

    ! ````
    <xml xmlns="http://www.w3.org/1999/xhtml"><block id="e9}yC,gRGz%yh3+D(@Qh" type="astro" x="38" y="-187"><field name="TYPE">dawn</field>
    <field name="OFFSET">4</field>
    <statement name="STATEMENT"><block id="3PHvM;}5ExNNaYyAlmkO" type="variables_set"><field name="VAR">morgens_Hoch</field>
    <value name="VALUE"><block id="d_#OZr@~/i{Vx~R.=Fo(" type="math_number"><field name="NUM">1</field></block></value>
    <next><block id="Vg?TEFnQf+F7|k?zcVO" type="procedures_callnoreturn"><mutation name="Trigger"></mutation> <next><block id="OCH3.k43Gr(b].{:#drS" type="timeouts_settimeout"><field name="NAME">Reset_Hoch</field> <field name="DELAY">2000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"><block id="(S(39BS/``R9S?)3^.b" type="variables_set"><field name="VAR">morgens_Hoch</field>
    <value name="VALUE"><block id="W[7C9y.4cp1p|ZFl1IfA" type="math_number"><field name="NUM">0</field></block></value></block></statement></block></next></block></next></block></statement></block>
    <block id="+4W.LgO9lhLI[#DznPbK" type="astro" x="413" y="-187"><field name="TYPE">dusk</field>
    <field name="OFFSET">4</field>
    <statement name="STATEMENT"><block id="bMJb@WnCxsn7rSfe0%8h" type="variables_set"><field name="VAR">abends_Runter</field>
    <value name="VALUE"><block id="F?,pxCmHuA*.#,cOF{[n" type="math_number"><field name="NUM">1</field></block></value>
    <next><block id="QlpCFv35}AeXumFT_@Q|" type="procedures_callnoreturn"><mutation name="Trigger"></mutation>
    <next><block id="DL|JSTp.Hd3v-qC!JR}" type="timeouts_settimeout"><field name="NAME">Reset_Runter</field>
    <field name="DELAY">2000</field>
    <field name="UNIT">ms</field>
    <statement name="STATEMENT"><block id="EzFm@J@OYUfWG!
    ;N}~^" type="variables_set"><field name="VAR">abends_Runter</field>
    <value name="VALUE"><block id="3RS_w~V)GM@j-vkZi}+`" type="math_number"><field name="NUM">0</field></block></value></block></statement></block></next></block></next></block></statement></block>
    <block id="o.Sy;o2hZBi#d~v]vcdR" type="on" x="38" y="13"><field name="OID">hm-rpc.1.MEQ1534364.4.PRESS_LONG</field>
    <field name="CONDITION">any</field>

    <statement name="STATEMENT"><block id="xLk?;3`HtGtVR5A9|ZY3" type="procedures_callnoreturn"><mutation name="Trigger"></mutation></block></statement></block> 
    

    <block id=":-0}C6cWZz1.9MWJD*c:" type="on" x="388" y="13"><field name="OID">hm-rpc.1.MEQ1534370.5.PRESS_LONG</field>
    <field name="CONDITION">any</field>

    <statement name="STATEMENT"><block id="iON+2g.c!IfNgUwHX,Oi" type="procedures_callnoreturn"><mutation name="Trigger"></mutation></block></statement></block> 
    

    <block id="BUov~oeL%f}mD@!+dyy" type="procedures_defnoreturn" x="38" y="188"><field name="NAME">Trigger</field> <comment w="160" pinned="false" h="80">Beschreibe diese Funktion …</comment> <statement name="STACK"><block id="sHX9yIxLK6/c2Ut,Vcar" type="controls_if"><mutation else="1" elseif="1"></mutation> <value name="IF0"><block id="U9=b|Z6{=Q^Kq]]*;t~!" type="logic_operation"><field name="OP">OR</field> <value name="A"><block id="t*nwU)6PW4fX5;n^keU_" type="logic_operation"><field name="OP">AND</field> <value name="A"><block id="m#S+Sn3xvjvuS4A9;z4" type="logic_compare"><field name="OP">EQ</field>
    <value name="A"><block id="-I(=s}e!ooF)@hvLX,!" type="get_value"><field name="ATTR">val</field> <field name="OID">javascript.0.Ankleide_Rollladen_Status</field></block></value> <value name="B"><block id="uRLA;}NrNT5aEfZc^pOK" type="math_number"><field name="NUM">0</field></block></value></block></value> <value name="B"><block id="2co]B=E/dGRWk^6D}OAj" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id=":6t;g0g(ZhHRBTf@2RKG" type="get_value"><field name="ATTR">val</field> <field name="OID">javascript.0.Ankleide_Rollladen_Richtung</field></block></value> <value name="B"><block id="T8IJfjM6|L*ZH1X-s@mg" type="math_number"><field name="NUM">0</field></block></value></block></value></block></value> <value name="B"><block id="e{1ql*TfSVR]0Y+jn/R:" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="hX?+C4DO+/IK(a^5uKq" type="variables_get"><field name="VAR">abends_Runter</field></block></value>
    <value name="B"><block id="+kX!{?{?/e|IKO}{g8P" type="math_number"><field name="NUM">1</field></block></value></block></value></block></value> <statement name="DO0"><block id="GKJJi}/IqLyNP#]0ogd" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">javascript.0.Ankleide_Rollladen_Status</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="=[yFxvcBQ9~mko6z0X8N" type="math_number"><field name="NUM">2</field></block></value>
    <next><block id="-~vD0Xl^DlV^{Lrg:Y=" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">javascript.0.Ankleide_Rollladen_Richtung</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="4raLJ~md3*58)[D(m%jb" type="math_number"><field name="NUM">1</field></block></value>
    <next><block id=".lo9u!jVfI]{xjb?0+v" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">hm-rpc.1.MEQ0229887.13.STATE</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="gD,4HEYW-XR=ziDOsNBX" type="logic_boolean"><field name="BOOL">FALSE</field></block></value>
    <next><block id="~H|+nS.HI-idm=MW!]g?" type="control"><mutation delay_input="true"></mutation>
    <field name="OID">hm-rpc.1.MEQ0229887.14.STATE</field>
    <field name="WITH_DELAY">TRUE</field>
    <field name="DELAY_MS">250</field>
    <field name="UNIT">ms</field>
    <field name="CLEAR_RUNNING">FALSE</field>
    <value name="VALUE"><block id="DKJ2r)jgd}5jXkn4Bny!" type="logic_boolean"><field name="BOOL">TRUE</field></block></value>
    <next><block id="(:0LsdzaVQA0/A?YpD" type="timeouts_setinterval"><field name="NAME">Runter</field> <field name="INTERVAL">900</field> <field name="UNIT">ms</field> <statement name="STATEMENT"><block id="8G1~73^h{5G%T:DUmLx7" type="control"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Ankleide_Rollladen_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block id="m:ShdOroe)re~4mv~)P8" type="math_arithmetic"><field name="OP">MINUS</field> <value name="A"><shadow id="Hlkn.1CqRba,AuT]jvQQ" type="math_number"><field name="NUM">1</field></shadow> <block id="{S|U@BtiL-nGO|I-/;p" type="get_value"><field name="ATTR">val</field>
    <field name="OID">javascript.0.Ankleide_Rollladen_Position</field></block></value>
    <value name="B"><shadow id="l-d=q
    e9;fitL9O|i~BC" type="math_number"><field name="NUM">1</field></shadow>
    <block id="_kyf{~;LI-vXc58P):ZT" type="math_number"><field name="NUM">5</field></block></value></block></value>
    <next><block id="4(CV{,zydV%Ogf0]M)aq" type="controls_if"><value name="IF0"><block id="@qh|)EcIVVZoRnEZJ_P." type="logic_compare"><field name="OP">EQ</field>
    <value name="A"><block id="k!a3h[(f6y=U+eYt7b:C" type="get_value"><field name="ATTR">val</field>
    <field name="OID">javascript.0.Ankleide_Rollladen_Position</field></block></value>
    <value name="B"><block id="F4~Usn0E2_n|btT8Y6-?" type="math_number"><field name="NUM">0</field></block></value></block></value>
    <statement name="DO0"><block id="R;y(DhcUE!_vOt8_BY
    ~" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">javascript.0.Ankleide_Rollladen_Status</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="aIm%Lysox~P_CMl/:NF(" type="math_number"><field name="NUM">0</field></block></value>
    <next><block id="PP@W/{V9W@khG9@nlLux" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">hm-rpc.1.MEQ0229887.14.STATE</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="zY8Ua+.HWaD]ws{?=473" type="logic_boolean"><field name="BOOL">FALSE</field></block></value>
    <next><block id="e7H1@peb5eFWzX!Q7nT
    " type="timeouts_clearinterval"><field name="NAME">Runter</field></block></next></block></next></block></statement></block></next></block></statement></block></next></block></next></block></next></block></next></block></statement>
    <value name="IF1"><block id="hF5V4t10b)j[w.YRMI=1" type="logic_operation"><field name="OP">OR</field>
    <value name="A"><block id="NWL{dzob3/Lmhib7~R.{" type="logic_operation"><field name="OP">AND</field>
    <value name="A"><block id="]xEdaWBpYk+E-72pIiy*" type="logic_compare"><field name="OP">EQ</field>
    <value name="A"><block id="aoLD5I6g9=[K.N%juk1a" type="get_value"><field name="ATTR">val</field>
    <field name="OID">javascript.0.Ankleide_Rollladen_Status</field></block></value>
    <value name="B"><block id="))cz{kRX(q|3mIJ#b?-a" type="math_number"><field name="NUM">0</field></block></value></block></value>
    <value name="B"><block id=")}Y%{WyriWaBAYH_V6v+" type="logic_compare"><field name="OP">EQ</field>
    <value name="A"><block id="%-neE!%)##=xVo#rh1VB" type="get_value"><field name="ATTR">val</field>
    <field name="OID">javascript.0.Ankleide_Rollladen_Richtung</field></block></value>
    <value name="B"><block id="l:NJ~OR^d^art27cb6S(" type="math_number"><field name="NUM">1</field></block></value></block></value></block></value>
    <value name="B"><block id="8w]_2:lF:9622Xl5sp-" type="logic_compare"><field name="OP">EQ</field>
    <value name="A"><block id="AvNfE@2d0)3Dd{7OvIxx" type="variables_get"><field name="VAR">morgens_Hoch</field></block></value>
    <value name="B"><block id="3PI8N^Jb2],83(x12DaI" type="math_number"><field name="NUM">1</field></block></value></block></value></block></value>
    <statement name="DO1"><block id="_1vK9,?s5.:GyLMi3e
    l" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">javascript.0.Ankleide_Rollladen_Status</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="HpVnu@a#eDf|/xw_yB." type="math_number"><field name="NUM">1</field></block></value> <next><block id="p}__~L%i8{wJg5(Z2e,0" type="control"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Ankleide_Rollladen_Richtung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block id="!nSucKjI+E;j9dsH8c5Q" type="math_number"><field name="NUM">0</field></block></value> <next><block id="svM!=FE5)+R87AM0X{[V" type="control"><mutation delay_input="false"></mutation> <field name="OID">hm-rpc.1.MEQ0229887.14.STATE</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block id="2RHLSve3Q0z_MJk}b9gT" type="logic_boolean"><field name="BOOL">FALSE</field></block></value> <next><block id="?m!(-C0=!eyu|||7+]~h" type="control"><mutation delay_input="true"></mutation> <field name="OID">hm-rpc.1.MEQ0229887.13.STATE</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">250</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block id="aCi:.;YdI~.R85xTQ3QB" type="logic_boolean"><field name="BOOL">TRUE</field></block></value> <next><block id="P#QMN;Drd@8cDY7s|dHk" type="timeouts_setinterval"><field name="NAME">Hoch</field> <field name="INTERVAL">950</field> <field name="UNIT">ms</field> <statement name="STATEMENT"><block id="g(AB@tgd#mv1oAMfIDkC" type="control"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Ankleide_Rollladen_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block id="cojL4a;yllsiMY~lJCl1" type="math_arithmetic"><field name="OP">ADD</field> <value name="A"><shadow id="Hlkn.1CqRba,AuT]jvQQ" type="math_number"><field name="NUM">1</field></shadow> <block id="cVf?27sl+}=Y)Ytt;U:2" type="get_value"><field name="ATTR">val</field> <field name="OID">javascript.0.Ankleide_Rollladen_Position</field></block></value> <value name="B"><shadow id="l-d=q*e9;fitL9O|i~BC" type="math_number"><field name="NUM">1</field></shadow> <block id="G=):.J*xxpg;KPCb5NJi" type="math_number"><field name="NUM">5</field></block></value></block></value> <next><block id="8bAB}2,x3%KsJx]C(GK[" type="controls_if"><value name="IF0"><block id="T,7,MWS_QXTlr060m,Qy" type="logic_compare"><field name="OP">EQ</field> <value name="A"><block id="~gR2cg/J#RLxu6~___-]" type="get_value"><field name="ATTR">val</field> <field name="OID">javascript.0.Ankleide_Rollladen_Position</field></block></value> <value name="B"><block id=")?7pRI=(]aL(4[uFzU}n" type="math_number"><field name="NUM">100</field></block></value></block></value> <statement name="DO0"><block id="/x/*zg7QY,3:u*/7Wrn" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">javascript.0.Ankleide_Rollladen_Status</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="?!jU=SjrRdYD-[+cKfy4" type="math_number"><field name="NUM">0</field></block></value>
    <next><block id="q9fr[F[^_NYc~_8xlwW" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">hm-rpc.1.MEQ0229887.13.STATE</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="REC88dnSG8xyitm?3.v." type="logic_boolean"><field name="BOOL">FALSE</field></block></value>
    <next><block id="P`3TfHTSorj{qb(b5D4
    " type="timeouts_clearinterval"><field name="NAME">Hoch</field></block></next></block></next></block></statement></block></next></block></statement></block></next></block></next></block></next></block></next></block></statement>
    <statement name="ELSE"><block id="VxBrbT9[{[jx8Ud7prQ^" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">javascript.0.Ankleide_Rollladen_Status</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="MUlff.-(de,3iS:bVs@?" type="math_number"><field name="NUM">0</field></block></value>
    <next><block id="IFxvl4ge1UoH)ui^_5jq" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">hm-rpc.1.MEQ0229887.13.STATE</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="OF)Ps:fiR*]-eyS{WvZ" type="logic_boolean"><field name="BOOL">TRUE</field></block></value>
    <next><block id=".#^GrOvv%H}t
    @kY[:GA" type="control"><mutation delay_input="false"></mutation>
    <field name="OID">hm-rpc.1.MEQ0229887.14.STATE</field>
    <field name="WITH_DELAY">FALSE</field>
    <value name="VALUE"><block id="yYVPPy!,ltB8!=ZbGFci" type="logic_boolean"><field name="BOOL">FALSE</field></block></value>
    <next><block id="tR#0!P[j?CJDN%{+:Ny[" type="timeouts_clearinterval"><field name="NAME">Runter</field>
    <next><block id="lfnLt8H|umGtPYUKv+q~" type="timeouts_clearinterval"><field name="NAME">Hoch</field></block></next></block></next></block></next></block></next></block></statement></block></statement></block></xml>

    
    Hier wird die aktuelle Position über die Zeit berechnet, es sind für Hoch und Runter zwei verschiedene Zeiten "einstellbar".
    
    Habe dazu noch folgende Variablen angelegt.
    
     ![1455_einstellung_der_variablen1.png](/assets/uploads/files/1455_einstellung_der_variablen1.png) 
     ![1455_einstellung_der_variablen2.png](/assets/uploads/files/1455_einstellung_der_variablen2.png) 
     ![1455_einstellung_der_variablen3.png](/assets/uploads/files/1455_einstellung_der_variablen3.png) 
    
    Hatte das Blockly Skript anfangs mit 1%-Schritten verwendet hier wurde es meinem NUC dann aber immer zuviel wenn er die Rollladen gemeinsam verfahren musste. Dies mache ich jetzt zusätzlich noch im Abstand von 1 MInute von Rollladen zu Rollladen.
    
    Eventuell kann dieses Skript jemand im Forum gebrauchen
    
    Gruß
    
    mhimc
    1 Reply Last reply
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      wrote on last edited by
      #2

      danke fuers teilen :), koenntest du auch einen screenshot des block reinstellen das hielt (vor allem auf tapatalk) zum verstaendnis.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        my_home_is_my_castle
        wrote on last edited by
        #3

        Hallo Dutchman,

        hier die Blocklys.

        1455_blockly1.png
        1455_blockly2.png

        Gruß

        mhimc

        1 Reply Last reply
        0
        • rantanplanR Offline
          rantanplanR Offline
          rantanplan
          wrote on last edited by
          #4

          Hallo my_home_is_my_castle

          Wenn das wireless wäre gäbe es eine Katastrophe.

          So kostet das nur Rechenleistung.

          Aber funktioniert das auch?

          Fährst Du nur rauf und runter?

          Oder fährst Du auch mal 100% -> 20% -> 50% -> 20% -> 100%?

          Hier war schon mal eine Diskussion. http://forum.iobroker.net/viewtopic.php … llo#p92152

          Grüße

          Rantanplan

          CCU3 / MS Server 2019(VM) / Scripten mit Blockly

          1 Reply Last reply
          0
          • M Offline
            M Offline
            my_home_is_my_castle
            wrote on last edited by
            #5

            Hallo Rantanplan,

            kannst du mir sagen warum es bei wireless eine Katastrophe wäre?

            Hast du mir einen Tipp oder sogar ein Bsp., wie ich diese Funktion mit weniger Rechenleistung umsetze?

            Funktioniert eigentlich ganz gut, ja. Zu Beginn hatte ich wie in deinem Link auch diskutiert, die gleiche Zeit für Runter und Hoch genommen, dies ist aber nach ein paar Tagen nicht mehr schön anzusehen 😄 . Anfangs hatte ich mit 1%-Schritten gearbeitet, jedoch kam nach einer Weile im Log die Meldung "….you are sending to fast". Dann habe ich es auf 5%-Schritte geändert und gleichzeizitg Bei der Astrosteuerung einen Verstz von je 1 Minute von Rollladen gemacht. Die manuelle Steuerung funktioniert "Runter-Stop-Hoch-Stop" usw..

            Aktuell fahre ich automatisiert nur Hoch und Runter, dies möchte ich in nächster Zeit aber noch mit Szenen für z.B. Fernsehen erweitern. Hier kann ich dann ja den aktuellen Wert abfragen und dementsprechend Runter oder Hoch fahren.

            Gruß

            mhimc

            1 Reply Last reply
            0
            • rantanplanR Offline
              rantanplanR Offline
              rantanplan
              wrote on last edited by
              #6

              @my_home_is_my_castle:

              kannst du mir sagen warum es bei wireless eine Katastrophe wäre? `
              Der entstehende Funkverkehr wäre enorm. Und bei Funksystemen gibt es den DutyCycle.

              Bei wired gibt es wohl auch eine Begrenzung "…you are sending to fast..."

              @my_home_is_my_castle:

              Hast du mir einen Tipp oder sogar ein Bsp., wie ich diese Funktion mit weniger Rechenleistung umsetze? `
              Leider nein.

              Wie ich das in dem anderen Thread schon gesagt habe, halte ich das für nicht machbar.

              Grüße

              Rantanplan

              CCU3 / MS Server 2019(VM) / Scripten mit Blockly

              1 Reply Last reply
              0
              • M Offline
                M Offline
                my_home_is_my_castle
                wrote on last edited by
                #7

                Hallo Rantanplan,

                aber die Ausgänge werden doch nur einmal zum Starten und Stoppen angsteuert (dazu noch jeweils der entgegengesetzte Ausgang um sicherzustellen das nicht beide Ausgänge für Hoch und Runter gleichzeitig gesetzt sind). Da dürfte doch nicht zuviel "Verkehr" zustande kommen, oder?

                Gruß

                mhimc

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                337

                Online

                32.4k

                Users

                81.3k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe