Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Skripte für PV und Verbrauch

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    146

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    12
    1
    565

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

Skripte für PV und Verbrauch

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 4 Kommentatoren 1.3k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • CodierknechtC Codierknecht

    @srkonus
    Du könntest nach Ablauf des Timeout den aktuellen Zählerstand in einen Hilfsdatenpunkt schreiben.
    Sobald morgens die PV wieder produziert, ermittelst Du über den dann vorliegenden Zählerstand und den gemerkten Wert den Nachtverbrauch und schreibst den in einen weiteren DP.
    Diesen kannst Du über einen der History-Adapter loggen.

    S Offline
    S Offline
    srkonus
    schrieb am zuletzt editiert von srkonus
    #8

    @codierknecht Vom Sinn her klar, aber das bekomme ich nicht in Blockly realisiert - bekomme es im Kopf nicht hin das ich meinen ersten Zwischenwert nicht überschreibe.

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • S srkonus

      @codierknecht Vom Sinn her klar, aber das bekomme ich nicht in Blockly realisiert - bekomme es im Kopf nicht hin das ich meinen ersten Zwischenwert nicht überschreibe.

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #9

      @srkonus

      Hier ein Vorschlag. Ungetestet, weil ja auch mein BKW gerade nix produziert.
      Benötigt 3 Datenpunkte:

      0_userdata.0.test.zaehlerstand
      0_userdata.0.test.tagverbrauch
      0_userdata.0.test.nachtverbrauch
      

      495f8866-d017-4b8b-8872-23f6804640f7-grafik.png

      Edit:
      Das Ding fliegt aber mit ziemlicher Sicherheit recht bald aus der Kurve.
      Nämlich dann, wenn mal so richtiges Mistwetter ist und das BKW auch tagsüber auf 0 geht.
      Um wirklich Tag und Nacht zu berücksichtigen und nicht zufällige Wetterereignisse, könnte man auf javascript.0.variables.isDayTime triggern.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      S 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @srkonus

        Hier ein Vorschlag. Ungetestet, weil ja auch mein BKW gerade nix produziert.
        Benötigt 3 Datenpunkte:

        0_userdata.0.test.zaehlerstand
        0_userdata.0.test.tagverbrauch
        0_userdata.0.test.nachtverbrauch
        

        495f8866-d017-4b8b-8872-23f6804640f7-grafik.png

        Edit:
        Das Ding fliegt aber mit ziemlicher Sicherheit recht bald aus der Kurve.
        Nämlich dann, wenn mal so richtiges Mistwetter ist und das BKW auch tagsüber auf 0 geht.
        Um wirklich Tag und Nacht zu berücksichtigen und nicht zufällige Wetterereignisse, könnte man auf javascript.0.variables.isDayTime triggern.

        S Offline
        S Offline
        srkonus
        schrieb am zuletzt editiert von
        #10

        @codierknecht Ach, das wäre mir sogar egal, es soll nur addiert werden, was "verbraucht" wird wenn keine PV Produktion vorhanden ist.
        Danke für deinen Vorschlag, aber diesen bekomme ich gerade im Kopf überhaupt nicht nachvollzogen

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • S srkonus

          @codierknecht Ach, das wäre mir sogar egal, es soll nur addiert werden, was "verbraucht" wird wenn keine PV Produktion vorhanden ist.
          Danke für deinen Vorschlag, aber diesen bekomme ich gerade im Kopf überhaupt nicht nachvollzogen

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von Codierknecht
          #11

          @srkonus sagte in Skripte für PV und Verbrauch:

          aber diesen bekomme ich gerade im Kopf überhaupt nicht nachvollzogen

          Wo haperts denn?

          Ich habe das mal auf den tatsächlichen Tag-/Nachverbrauch umgebaut, um von Wetterereignissen unabhängig zu sein.

          Der Trigger ist isDayTime. Der ändert sich genau 2x am Tag, nämlich morgens auf true und abends auf false.
          3db06367-2a18-49d5-a466-5b4ebb553a89-grafik.png
          Ich merke mir den aktuelle Zählerstand des Stromzählers und berechne mit diesem und dem zuletzt gemerkten Stand den zwischenzeitlichen Verbrauch.
          198a11b5-4831-4b33-8359-e9bfeb87c1e0-grafik.png
          Wenn man tatsächlich nur Tag/Nacht unterscheiden will, ist das Ganze noch etwas einfacher.
          Wenn der Wert auf true wechselt, wurde es gerade Tag. Dann ist der ermittelte Verbrauch der Nachtverbrauch.
          Wechselt der Wert hingegen auf false, wird es Nacht und wir haben den Tagverbrauch.
          beac2ed4-497b-451d-b919-92ca8b332dfb-grafik.png
          Am Ende schreiben wir noch den jetzigen Zählerstand weg, damit wir den für den nächsten Wechsel zwischen Tag und Nacht zur Verfügung haben.
          2b142883-be50-4ad5-9217-f5e30880cbc7-grafik.png

          Den Timeout kann man sich dann auch schenken, da der Trigger ja nur genau 2x am Tag feuert.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          S 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

            @srkonus sagte in Skripte für PV und Verbrauch:

            aber diesen bekomme ich gerade im Kopf überhaupt nicht nachvollzogen

            Wo haperts denn?

            Ich habe das mal auf den tatsächlichen Tag-/Nachverbrauch umgebaut, um von Wetterereignissen unabhängig zu sein.

            Der Trigger ist isDayTime. Der ändert sich genau 2x am Tag, nämlich morgens auf true und abends auf false.
            3db06367-2a18-49d5-a466-5b4ebb553a89-grafik.png
            Ich merke mir den aktuelle Zählerstand des Stromzählers und berechne mit diesem und dem zuletzt gemerkten Stand den zwischenzeitlichen Verbrauch.
            198a11b5-4831-4b33-8359-e9bfeb87c1e0-grafik.png
            Wenn man tatsächlich nur Tag/Nacht unterscheiden will, ist das Ganze noch etwas einfacher.
            Wenn der Wert auf true wechselt, wurde es gerade Tag. Dann ist der ermittelte Verbrauch der Nachtverbrauch.
            Wechselt der Wert hingegen auf false, wird es Nacht und wir haben den Tagverbrauch.
            beac2ed4-497b-451d-b919-92ca8b332dfb-grafik.png
            Am Ende schreiben wir noch den jetzigen Zählerstand weg, damit wir den für den nächsten Wechsel zwischen Tag und Nacht zur Verfügung haben.
            2b142883-be50-4ad5-9217-f5e30880cbc7-grafik.png

            Den Timeout kann man sich dann auch schenken, da der Trigger ja nur genau 2x am Tag feuert.

            S Offline
            S Offline
            srkonus
            schrieb am zuletzt editiert von
            #12

            @codierknecht Vielen Dank für die Erläuterung. Habe jetzt folgendes Blockly:

            279e84e6-33aa-413e-874c-ca3e48745f5d-image.png

            Mal abwarten, ob es wie gewünscht arbeitet. Ich nutze den Timeout da ich erfahren möchte, wie viel Strom verbraucht (ja ja, er wird ja nicht verbraucht) wird wenn keine PV Anlage arbeitet.

            VG
            srkonus

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • S srkonus

              @codierknecht Vielen Dank für die Erläuterung. Habe jetzt folgendes Blockly:

              279e84e6-33aa-413e-874c-ca3e48745f5d-image.png

              Mal abwarten, ob es wie gewünscht arbeitet. Ich nutze den Timeout da ich erfahren möchte, wie viel Strom verbraucht (ja ja, er wird ja nicht verbraucht) wird wenn keine PV Anlage arbeitet.

              VG
              srkonus

              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #13

              @srkonus
              Ich sehe dort mehrfach "Wert vom Objekt ID 'Zaehlerstand'".
              Sind das unterschiedliche DP's?
              Wenn nicht, erhältst Du als Ergebnis immer 0 (Zaehlerstand - Zaehlerstand).

              Arbeite mit Variablen.
              Hier mal ein Vorschlag mit 2 Optionen.
              Entweder erhältst Du nur den Verbrauch im letzten Zeitraum ohne PV, oder Du addierst im DP "Nachtverbrauch" alles was ohne PV so verbraucht wird.
              Du darfst dabei selbstverständlich nur eine der beiden Optionen verwenden.

              Dazu benötigst Du auch noch einen der bekannten History-Adapter (SQL, Influx, History). Sonst musst Du das ja ständig im Blick haben

              3226f9f6-5e63-4c56-b1bf-a47c8eef5e48-grafik.png

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              S 1 Antwort Letzte Antwort
              0
              • CodierknechtC Codierknecht

                @srkonus
                Ich sehe dort mehrfach "Wert vom Objekt ID 'Zaehlerstand'".
                Sind das unterschiedliche DP's?
                Wenn nicht, erhältst Du als Ergebnis immer 0 (Zaehlerstand - Zaehlerstand).

                Arbeite mit Variablen.
                Hier mal ein Vorschlag mit 2 Optionen.
                Entweder erhältst Du nur den Verbrauch im letzten Zeitraum ohne PV, oder Du addierst im DP "Nachtverbrauch" alles was ohne PV so verbraucht wird.
                Du darfst dabei selbstverständlich nur eine der beiden Optionen verwenden.

                Dazu benötigst Du auch noch einen der bekannten History-Adapter (SQL, Influx, History). Sonst musst Du das ja ständig im Blick haben

                3226f9f6-5e63-4c56-b1bf-a47c8eef5e48-grafik.png

                S Offline
                S Offline
                srkonus
                schrieb am zuletzt editiert von srkonus
                #14

                @codierknecht Wo kommt die Variable "Wert" her und welchen Wert hat es? Sehe nicht, das die Variable vorher gesetzt wird.

                CodierknechtC 1 Antwort Letzte Antwort
                0
                • S srkonus

                  @codierknecht Wo kommt die Variable "Wert" her und welchen Wert hat es? Sehe nicht, das die Variable vorher gesetzt wird.

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #15

                  @srkonus
                  Das ist keine Variable, sondern ein Baustein aus dem Bereich "Trigger".
                  Nach dem Hinzufügen kannst Du von "Objekt ID" auf "Wert" ändern.
                  Das kannst Du in jedem Objekt-Trigger so verwenden, da es unsinnig wäre hier nochmal mit "Wert von" zu arbeiten. Das kann nämlich nicht nur zu unerwünschten Ergebnissen führen (Asynchron), sondern ist auch nicht sonderlich performant. Der Trigger kennt ja bereits sein zugehöriges Objekt.

                  cfdbcab2-4bd4-4f06-bf8c-032c175c4409-grafik.png

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  S 1 Antwort Letzte Antwort
                  0
                  • CodierknechtC Codierknecht

                    @srkonus
                    Das ist keine Variable, sondern ein Baustein aus dem Bereich "Trigger".
                    Nach dem Hinzufügen kannst Du von "Objekt ID" auf "Wert" ändern.
                    Das kannst Du in jedem Objekt-Trigger so verwenden, da es unsinnig wäre hier nochmal mit "Wert von" zu arbeiten. Das kann nämlich nicht nur zu unerwünschten Ergebnissen führen (Asynchron), sondern ist auch nicht sonderlich performant. Der Trigger kennt ja bereits sein zugehöriges Objekt.

                    cfdbcab2-4bd4-4f06-bf8c-032c175c4409-grafik.png

                    S Offline
                    S Offline
                    srkonus
                    schrieb am zuletzt editiert von
                    #16

                    @codierknecht Bin ehrlich, hab ich nicht verstanden. Habe dein Script Beispiel jetzt mal nachgebaut, werde es morgen beobachten - jetzt ist es draußen zu dunkel :-D

                    CodierknechtC 1 Antwort Letzte Antwort
                    0
                    • S srkonus

                      @codierknecht Bin ehrlich, hab ich nicht verstanden. Habe dein Script Beispiel jetzt mal nachgebaut, werde es morgen beobachten - jetzt ist es draußen zu dunkel :-D

                      CodierknechtC Offline
                      CodierknechtC Offline
                      Codierknecht
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #17

                      @srkonus
                      Ich häng Dir hier mal das Script an.

                      <xml xmlns="https://developers.google.com/blockly/xml">
                       <variables>
                         <variable type="timeout" id="timeout">timeout</variable>
                         <variable id="W$IcW%-i75K]exS?F/*7">zaehlerstand</variable>
                         <variable id="VH#/(hm_L!hkq-%j-*{k">verbrauch</variable>
                       </variables>
                       <block type="on" id="eO!*FZ#KP/@uNd#5y`[F" x="-362" y="213">
                         <field name="OID">opendtu.0.114190525113.ac.phase_1.power</field>
                         <field name="CONDITION">ne</field>
                         <field name="ACK_CONDITION"></field>
                         <statement name="STATEMENT">
                           <block type="timeouts_cleartimeout" id="zKk64!}O2zHxfR-mRJ2]">
                             <field name="NAME">timeout</field>
                             <next>
                               <block type="timeouts_settimeout" id="]zNJC.zJ~yA7cr}tVOBA">
                                 <field name="NAME">timeout</field>
                                 <field name="DELAY">240</field>
                                 <field name="UNIT">sec</field>
                                 <statement name="STATEMENT">
                                   <block type="variables_set" id="@Z[E$P0an4Px+LO=cjTx">
                                     <field name="VAR" id="W$IcW%-i75K]exS?F/*7">zaehlerstand</field>
                                     <value name="VALUE">
                                       <block type="get_value" id="e_vlSHCM~8n;3DqCxvwk">
                                         <field name="ATTR">val</field>
                                         <field name="OID">sonoff.0.ESP8266_SML.eHZM_Tarif1_in</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="variables_set" id="OGZe,6C8:Dx~U9m7sEyN">
                                         <field name="VAR" id="VH#/(hm_L!hkq-%j-*{k">verbrauch</field>
                                         <value name="VALUE">
                                           <block type="math_arithmetic" id="nfelQi3rXPo`D_m0HZ1^">
                                             <field name="OP">MINUS</field>
                                             <value name="A">
                                               <shadow type="math_number" id="pq(QH_-Xm+buxEkjV?yf">
                                                 <field name="NUM">1</field>
                                               </shadow>
                                               <block type="variables_get" id="Qtg^gtF*^}A,UYEuy$}f">
                                                 <field name="VAR" id="W$IcW%-i75K]exS?F/*7">zaehlerstand</field>
                                               </block>
                                             </value>
                                             <value name="B">
                                               <shadow type="math_number" id="Z[+VQbUq:VD.duby-`Wa">
                                                 <field name="NUM">1</field>
                                               </shadow>
                                               <block type="get_value" id="j#/04pc,5~**qeZ,{4K0">
                                                 <field name="ATTR">val</field>
                                                 <field name="OID">0_userdata.0.Test.zaehlerstand</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="comment" id="@oVZQU_19WNlezKTwl]F">
                                             <field name="COMMENT">wenn Produktion auf 0 geht</field>
                                             <next>
                                               <block type="controls_if" id="wW06~RY:yH@cMjEd|{D*">
                                                 <value name="IF0">
                                                   <block type="logic_negate" id="1CrFTuW_HQ15zYpF4}-e">
                                                     <value name="BOOL">
                                                       <block type="on_source" id="}Cs8U+q%8yLx(o/MY~?i">
                                                         <field name="ATTR">state.val</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <statement name="DO0">
                                                   <block type="update" id="A308QpgANqqK%T$BUekH">
                                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                     <field name="OID">0_userdata.0.Test.zaehlerstand</field>
                                                     <field name="WITH_DELAY">FALSE</field>
                                                     <value name="VALUE">
                                                       <block type="variables_get" id="JX9?=wP^t+^qF)n*_`9a">
                                                         <field name="VAR" id="W$IcW%-i75K]exS?F/*7">zaehlerstand</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="comment" id="9/yd!j/d]!n}_A:FBrGn">
                                                         <field name="COMMENT">entweder so</field>
                                                         <next>
                                                           <block type="update" id="XfK1+v`i}eM.6LO6b6XM">
                                                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                             <field name="OID">0_userdata.0.Test.nachtverbrauch</field>
                                                             <field name="WITH_DELAY">FALSE</field>
                                                             <value name="VALUE">
                                                               <block type="variables_get" id="c!%ADMbQwx}i%$b3sz:x">
                                                                 <field name="VAR" id="VH#/(hm_L!hkq-%j-*{k">verbrauch</field>
                                                               </block>
                                                             </value>
                                                             <next>
                                                               <block type="comment" id="dZ.OHe[PeJEako141`)0">
                                                                 <field name="COMMENT">oder so (saldierend)</field>
                                                                 <next>
                                                                   <block type="update" id="R[Mxgj2yeKO24%z]s2bp">
                                                                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                                     <field name="OID">0_userdata.0.Test.nachtverbrauch</field>
                                                                     <field name="WITH_DELAY">FALSE</field>
                                                                     <value name="VALUE">
                                                                       <block type="math_arithmetic" id="=UPMOUY/v@-7+`^TmjRZ">
                                                                         <field name="OP">ADD</field>
                                                                         <value name="A">
                                                                           <shadow type="math_number" id="d?k/dK*P:SNt:nh2vK{L">
                                                                             <field name="NUM">1</field>
                                                                           </shadow>
                                                                           <block type="get_value" id="?H|jTT2npG87/7m@%},C">
                                                                             <field name="ATTR">val</field>
                                                                             <field name="OID">0_userdata.0.Test.nachtverbrauch</field>
                                                                           </block>
                                                                         </value>
                                                                         <value name="B">
                                                                           <shadow type="math_number" id="us=:06)umI4bF#ix;PyU">
                                                                             <field name="NUM">1</field>
                                                                           </shadow>
                                                                           <block type="variables_get" id="b=F}(;ZU3Bcm(+92yt..">
                                                                             <field name="VAR" id="VH#/(hm_L!hkq-%j-*{k">verbrauch</field>
                                                                           </block>
                                                                         </value>
                                                                       </block>
                                                                     </value>
                                                                   </block>
                                                                 </next>
                                                               </block>
                                                             </next>
                                                           </block>
                                                         </next>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </statement>
                                               </block>
                                             </next>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </statement>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                      </xml>
                      

                      Der gezeigte Block hängt nicht ohne Grund im Bereich "Trigger", da er direkt mit dem darüber liegenden Trigger-Block zu verwenden ist.
                      Wenn ein Trigger feuert, sind so ziemlich alle Eigenschaften des zugehörigen Objektes bekannt.
                      Es macht also nicht wirklich Sinn, z.B. die Objekt-ID, den Namen oder eben den Wert des feuernden Objektes nochmal über "Wert von" zu lesen.

                      2fa05d4e-9257-4404-9dbc-6027358611f8-image.png

                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi
                      Zabbix Certified Specialist
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      607

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe