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. Blockly
  5. Benachrichtigung wenn ein DP false

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    32

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Benachrichtigung wenn ein DP false

Geplant Angeheftet Gesperrt Verschoben Blockly
17 Beiträge 7 Kommentatoren 871 Aufrufe 6 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.
  • S Online
    S Online
    Stefan341
    schrieb am zuletzt editiert von
    #1

    Hallo,
    ich bräuchte mal wieder eure Hilfe um ein Vorhaben möglichst elegant zu lösen.

    Ich habe mehrere Datenpunkte (ca. 20) die im Normalfall auf true stehen. Diese Datenpunkte möchte ich mit einem Script überwachen. Wenn ein Datenpunkt auf false geht, möchte ich eine Nachricht per pushover bekommen.
    Ich denke soweit würde ich das hinbekommen: Alle Datenpunkte in den Trigger und dann wenn einer false wird, pushover auslösen.
    Mein Problem ist aber, ich würde gerne das in der Pushover steht, welcher Datenpunkt bzw wenn es mehrere sind (z.b. bei einem Stromausfall), welche Datenpunkte auf false sind. Wie könnte man sowas realisieren?

    David G.D O crunchipC paul53P mickymM 5 Antworten Letzte Antwort
    0
    • S Stefan341

      Hallo,
      ich bräuchte mal wieder eure Hilfe um ein Vorhaben möglichst elegant zu lösen.

      Ich habe mehrere Datenpunkte (ca. 20) die im Normalfall auf true stehen. Diese Datenpunkte möchte ich mit einem Script überwachen. Wenn ein Datenpunkt auf false geht, möchte ich eine Nachricht per pushover bekommen.
      Ich denke soweit würde ich das hinbekommen: Alle Datenpunkte in den Trigger und dann wenn einer false wird, pushover auslösen.
      Mein Problem ist aber, ich würde gerne das in der Pushover steht, welcher Datenpunkt bzw wenn es mehrere sind (z.b. bei einem Stromausfall), welche Datenpunkte auf false sind. Wie könnte man sowas realisieren?

      David G.D Online
      David G.D Online
      David G.
      schrieb am zuletzt editiert von
      #2

      @stefan341

      Am besten mit folgendem Baustein.
      Da kannst du dir raussuchen was dir am ehsten zusagt.

      Screenshot_20241214_215020_Chrome.jpg

      Falls alle 20DPs den selben Namen oder den selben Ordner (oder andere Gemeinsamkeiten) haben kannst du das mit einem Trigger und einen Selektor lösen.

      Zeigt eure Lovelace-Visualisierung klick
      (Auch ideal um sich Anregungen zu holen)

      Meine Tabellen für eure Visualisierung klick

      1 Antwort Letzte Antwort
      0
      • S Stefan341

        Hallo,
        ich bräuchte mal wieder eure Hilfe um ein Vorhaben möglichst elegant zu lösen.

        Ich habe mehrere Datenpunkte (ca. 20) die im Normalfall auf true stehen. Diese Datenpunkte möchte ich mit einem Script überwachen. Wenn ein Datenpunkt auf false geht, möchte ich eine Nachricht per pushover bekommen.
        Ich denke soweit würde ich das hinbekommen: Alle Datenpunkte in den Trigger und dann wenn einer false wird, pushover auslösen.
        Mein Problem ist aber, ich würde gerne das in der Pushover steht, welcher Datenpunkt bzw wenn es mehrere sind (z.b. bei einem Stromausfall), welche Datenpunkte auf false sind. Wie könnte man sowas realisieren?

        O Offline
        O Offline
        oFbEQnpoLKKl6mbY5e13
        schrieb am zuletzt editiert von
        #3

        @stefan341

        tr.PNG

        Such dir etwas aus, was dir hilft.

        1 Antwort Letzte Antwort
        0
        • S Stefan341

          Hallo,
          ich bräuchte mal wieder eure Hilfe um ein Vorhaben möglichst elegant zu lösen.

          Ich habe mehrere Datenpunkte (ca. 20) die im Normalfall auf true stehen. Diese Datenpunkte möchte ich mit einem Script überwachen. Wenn ein Datenpunkt auf false geht, möchte ich eine Nachricht per pushover bekommen.
          Ich denke soweit würde ich das hinbekommen: Alle Datenpunkte in den Trigger und dann wenn einer false wird, pushover auslösen.
          Mein Problem ist aber, ich würde gerne das in der Pushover steht, welcher Datenpunkt bzw wenn es mehrere sind (z.b. bei einem Stromausfall), welche Datenpunkte auf false sind. Wie könnte man sowas realisieren?

          crunchipC Abwesend
          crunchipC Abwesend
          crunchip
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @stefan341 sagte in Benachrichtigung wenn ein DP false:

          z.b. bei einem Stromausfall

          so nebenbei, läuft iobroker dann auch noch?

          umgestiegen von Proxmox auf Unraid

          1 Antwort Letzte Antwort
          0
          • S Stefan341

            Hallo,
            ich bräuchte mal wieder eure Hilfe um ein Vorhaben möglichst elegant zu lösen.

            Ich habe mehrere Datenpunkte (ca. 20) die im Normalfall auf true stehen. Diese Datenpunkte möchte ich mit einem Script überwachen. Wenn ein Datenpunkt auf false geht, möchte ich eine Nachricht per pushover bekommen.
            Ich denke soweit würde ich das hinbekommen: Alle Datenpunkte in den Trigger und dann wenn einer false wird, pushover auslösen.
            Mein Problem ist aber, ich würde gerne das in der Pushover steht, welcher Datenpunkt bzw wenn es mehrere sind (z.b. bei einem Stromausfall), welche Datenpunkte auf false sind. Wie könnte man sowas realisieren?

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @stefan341 sagte: in der Pushover steht, welcher Datenpunkt

            Blockly_temp.JPG

            Wenn bei Stromausfall alle 20 DP auf false gehen, werden alle DP nacheinander ausgegeben - vorausgesetzt, ioBroker und der Router laufen noch.
            Wenn Namen eindeutig sind, können auch DP-Name oder Kanal-Name oder Geräte-Name ausgegeben werden.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • S Stefan341

              Hallo,
              ich bräuchte mal wieder eure Hilfe um ein Vorhaben möglichst elegant zu lösen.

              Ich habe mehrere Datenpunkte (ca. 20) die im Normalfall auf true stehen. Diese Datenpunkte möchte ich mit einem Script überwachen. Wenn ein Datenpunkt auf false geht, möchte ich eine Nachricht per pushover bekommen.
              Ich denke soweit würde ich das hinbekommen: Alle Datenpunkte in den Trigger und dann wenn einer false wird, pushover auslösen.
              Mein Problem ist aber, ich würde gerne das in der Pushover steht, welcher Datenpunkt bzw wenn es mehrere sind (z.b. bei einem Stromausfall), welche Datenpunkte auf false sind. Wie könnte man sowas realisieren?

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @stefan341 So was kann man elegant machen, in dem man die Datenpunkte in ein Objekt zusammenfasst.

              Nehmen wir mal an, Du willst wissen welche Fenster offen sind, dann kannst Du alle Fenster in einem Objekt zusammenfassen:

              {
                "Schlafzimmer Balkon": false,
                "Wohnzimmer Balkon": false,
                "Büro Balkon": true,
                "Wohnzimmer linkes Fenster": true,
                "Wohnzimmer rechtes Fenster": false
              }
              

              Dann kann man das ganz elegant mit JSONATA ermitteln.

              a56a4fb8-802e-4a11-b7e0-451c0b1676e4-image.png

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="aA.*;_ru^#]_9,@9g/a7">Fenster</variable>
                 <variable id="y$,lsh`(/f/KRKVqyl*I">Liste</variable>
               </variables>
               <block type="variables_set" id="n18R~{At#6-W^|#nk/S~" x="63" y="63">
                 <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                 <value name="VALUE">
                   <block type="convert_json2object" id="4wzyNk%.qc3j@;t2Yt;4">
                     <value name="VALUE">
                       <block type="text" id="y{#BbgL3UVZK8xX}AP)/">
                         <field name="TEXT">{   "Schlafzimmer Balkon": false,   "Wohnzimmer Balkon": false,   "Büro Balkon": true,   "Wohnzimmer linkes Fenster": true,   "Wohnzimmer rechtes Fenster": false }</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="debug" id="y5ACSX]?6UX?y_M~4cOi">
                     <field name="Severity">info</field>
                     <value name="TEXT">
                       <shadow type="text" id="~;!/=-Myu28~)lHY5B@K">
                         <field name="TEXT">test</field>
                       </shadow>
                       <block type="variables_get" id="8,T+{=I9hz^BhA7j[(~+">
                         <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                       </block>
                     </value>
                     <next>
                       <block type="comment" id=")}/{n[8gQW4`,3re7N(w">
                         <field name="COMMENT">offene Fenster</field>
                         <next>
                           <block type="variables_set" id=";b6YJKk6a*BCFXG66QH%">
                             <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                             <value name="VALUE">
                               <block type="convert_jsonata" id="60?hiiE{vhNf[Eb8wLKR">
                                 <value name="EXPRESSION">
                                   <shadow type="text" id="4*RA8mF?};wVHc:}R^8r">
                                     <field name="TEXT">$each($,function($v, $k) {$v  ? $k})</field>
                                   </shadow>
                                 </value>
                                 <value name="TARGET">
                                   <block type="variables_get" id="q_bj0(dpn7EY[BS5q^;n">
                                     <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <next>
                               <block type="debug" id="M[u52`*c)VMnv3A.m0~$">
                                 <field name="Severity">info</field>
                                 <value name="TEXT">
                                   <shadow type="text" id="@Ym7koU2hMwTm4m:n3_.">
                                     <field name="TEXT">test</field>
                                   </shadow>
                                   <block type="lists_getSublist" id="fcVPd)C/DbhLG3V$Qa{^">
                                     <mutation at1="false" at2="false"></mutation>
                                     <field name="WHERE1">FIRST</field>
                                     <field name="WHERE2">LAST</field>
                                     <value name="LIST">
                                       <block type="variables_get" id="!Hj{v-d^@Kv=|RTc.iFZ">
                                         <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
              </xml>
              

              Ein solches Objekt kannst Du aus beliebigen Datenpunkten mit dem neuen Baustein erzeugen:

              7d9adfd3-4b88-4bc4-a397-4d28c46fe0b2-image.png

              Der Vorteil ist halt dass Du nicht nur auf Booleans, sondern beliebige Werte überprüfen kannst.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              Rene55R 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @stefan341 So was kann man elegant machen, in dem man die Datenpunkte in ein Objekt zusammenfasst.

                Nehmen wir mal an, Du willst wissen welche Fenster offen sind, dann kannst Du alle Fenster in einem Objekt zusammenfassen:

                {
                  "Schlafzimmer Balkon": false,
                  "Wohnzimmer Balkon": false,
                  "Büro Balkon": true,
                  "Wohnzimmer linkes Fenster": true,
                  "Wohnzimmer rechtes Fenster": false
                }
                

                Dann kann man das ganz elegant mit JSONATA ermitteln.

                a56a4fb8-802e-4a11-b7e0-451c0b1676e4-image.png

                <xml xmlns="https://developers.google.com/blockly/xml">
                 <variables>
                   <variable id="aA.*;_ru^#]_9,@9g/a7">Fenster</variable>
                   <variable id="y$,lsh`(/f/KRKVqyl*I">Liste</variable>
                 </variables>
                 <block type="variables_set" id="n18R~{At#6-W^|#nk/S~" x="63" y="63">
                   <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                   <value name="VALUE">
                     <block type="convert_json2object" id="4wzyNk%.qc3j@;t2Yt;4">
                       <value name="VALUE">
                         <block type="text" id="y{#BbgL3UVZK8xX}AP)/">
                           <field name="TEXT">{   "Schlafzimmer Balkon": false,   "Wohnzimmer Balkon": false,   "Büro Balkon": true,   "Wohnzimmer linkes Fenster": true,   "Wohnzimmer rechtes Fenster": false }</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="debug" id="y5ACSX]?6UX?y_M~4cOi">
                       <field name="Severity">info</field>
                       <value name="TEXT">
                         <shadow type="text" id="~;!/=-Myu28~)lHY5B@K">
                           <field name="TEXT">test</field>
                         </shadow>
                         <block type="variables_get" id="8,T+{=I9hz^BhA7j[(~+">
                           <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                         </block>
                       </value>
                       <next>
                         <block type="comment" id=")}/{n[8gQW4`,3re7N(w">
                           <field name="COMMENT">offene Fenster</field>
                           <next>
                             <block type="variables_set" id=";b6YJKk6a*BCFXG66QH%">
                               <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                               <value name="VALUE">
                                 <block type="convert_jsonata" id="60?hiiE{vhNf[Eb8wLKR">
                                   <value name="EXPRESSION">
                                     <shadow type="text" id="4*RA8mF?};wVHc:}R^8r">
                                       <field name="TEXT">$each($,function($v, $k) {$v  ? $k})</field>
                                     </shadow>
                                   </value>
                                   <value name="TARGET">
                                     <block type="variables_get" id="q_bj0(dpn7EY[BS5q^;n">
                                       <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <next>
                                 <block type="debug" id="M[u52`*c)VMnv3A.m0~$">
                                   <field name="Severity">info</field>
                                   <value name="TEXT">
                                     <shadow type="text" id="@Ym7koU2hMwTm4m:n3_.">
                                       <field name="TEXT">test</field>
                                     </shadow>
                                     <block type="lists_getSublist" id="fcVPd)C/DbhLG3V$Qa{^">
                                       <mutation at1="false" at2="false"></mutation>
                                       <field name="WHERE1">FIRST</field>
                                       <field name="WHERE2">LAST</field>
                                       <value name="LIST">
                                         <block type="variables_get" id="!Hj{v-d^@Kv=|RTc.iFZ">
                                           <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
                </xml>
                

                Ein solches Objekt kannst Du aus beliebigen Datenpunkten mit dem neuen Baustein erzeugen:

                7d9adfd3-4b88-4bc4-a397-4d28c46fe0b2-image.png

                Der Vorteil ist halt dass Du nicht nur auf Booleans, sondern beliebige Werte überprüfen kannst.

                Rene55R Offline
                Rene55R Offline
                Rene55
                schrieb am zuletzt editiert von
                #7

                @mickym Was macht das Script denn bei dir, wenn alle Fenster false sind?

                Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                Wetterstation: Froggit WH3000SE V1.6.6

                1 Antwort Letzte Antwort
                0
                • mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @rene55 sagte in Benachrichtigung wenn ein DP false:

                  @mickym Was macht das Script denn bei dir, wenn alle Fenster false sind?

                  Ja war noch ein Fehler drin, weil kein Array/Liste rauskommt, wenn es kein match gibt. Einfach den JSONATA Ausdruck in eckige Klammern und gut ist.

                  [$each($,function($v, $k) {$v  ? $k})]
                  

                  1e40cdc7-d5f2-46dd-a93c-77d4ad77ef80-image.png

                  Die Benachrichtigung, den Alarm erzeugt man dann natürlich nur, wenn die Liste (das Array) Elemente enthält.

                  Hier nochmal das gesamte Skript zum Ausprobieren:

                  <xml xmlns="https://developers.google.com/blockly/xml">
                   <variables>
                     <variable id="aA.*;_ru^#]_9,@9g/a7">Fenster</variable>
                     <variable id="y$,lsh`(/f/KRKVqyl*I">Liste</variable>
                   </variables>
                   <block type="variables_set" id=".^NUGW!~gr]Q_,FPh41T" disabled="true" x="63" y="37">
                     <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                     <value name="VALUE">
                       <block type="object_new" id="`eHOl5z1xVLXMVLB}J=K">
                         <mutation xmlns="http://www.w3.org/1999/xhtml">
                           <attribute id="ATTR_0" name="Schlafzimmer Balkon"></attribute>
                           <attribute id="ATTR_1" name="Wohnzimmer Balkon"></attribute>
                           <attribute id="ATTR_2" name="Büro Balkon"></attribute>
                           <attribute id="ATTR_3" name="Wohnzimmer linkes Fenster"></attribute>
                           <attribute id="ATTR_4" name="Wohnzimmer rechtes Fenster"></attribute>
                         </mutation>
                         <value name="ATTR_0">
                           <shadow type="text" id="8y%[n@:ThuT5/qu}Z/jB">
                             <field name="TEXT">Schlafzimmer Balkon</field>
                           </shadow>
                           <block type="get_value" id="2AZ$_@HSE(1QzYaF1N1%">
                             <field name="ATTR">val</field>
                             <field name="OID">ID auswählen</field>
                           </block>
                         </value>
                         <value name="ATTR_1">
                           <shadow type="text" id="hBg8T4X:r[RH$WB58Ch/">
                             <field name="TEXT">Wohnzimmer Balkon</field>
                           </shadow>
                           <block type="get_value" id="[I[FKA_plW@ohlypieMO">
                             <field name="ATTR">val</field>
                             <field name="OID">ID auswählen</field>
                           </block>
                         </value>
                         <value name="ATTR_2">
                           <shadow type="text" id=";NcV+e,}7wo}NDz0NAP1">
                             <field name="TEXT">Büro Balkon</field>
                           </shadow>
                           <block type="get_value" id="|i.[cx0Zx,BY|UBZ#l5/">
                             <field name="ATTR">val</field>
                             <field name="OID">ID auswählen</field>
                           </block>
                         </value>
                         <value name="ATTR_3">
                           <shadow type="text" id="xI/*!=wz/$}6#us8Ye5+">
                             <field name="TEXT">Wohnzimmer linkes Fenster</field>
                           </shadow>
                           <block type="get_value" id="3O+-PkW.5s;r?P[e=g0`">
                             <field name="ATTR">val</field>
                             <field name="OID">ID auswählen</field>
                           </block>
                         </value>
                         <value name="ATTR_4">
                           <shadow type="text" id="b8rs@bnowUi{mmW(*GpV">
                             <field name="TEXT">Wohnzimmer rechtes Fenster</field>
                           </shadow>
                           <block type="get_value" id="j60T@2osw;weAKN)R)39">
                             <field name="ATTR">val</field>
                             <field name="OID">ID auswählen</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="variables_set" id="n18R~{At#6-W^|#nk/S~">
                         <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                         <value name="VALUE">
                           <block type="convert_json2object" id="4wzyNk%.qc3j@;t2Yt;4">
                             <value name="VALUE">
                               <block type="text" id="y{#BbgL3UVZK8xX}AP)/">
                                 <field name="TEXT">{   "Schlafzimmer Balkon": true,   "Wohnzimmer Balkon": false,   "Büro Balkon": false,   "Wohnzimmer linkes Fenster": false,   "Wohnzimmer rechtes Fenster": false }</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <next>
                           <block type="debug" id="y5ACSX]?6UX?y_M~4cOi">
                             <field name="Severity">info</field>
                             <value name="TEXT">
                               <shadow type="text" id="~;!/=-Myu28~)lHY5B@K">
                                 <field name="TEXT">test</field>
                               </shadow>
                               <block type="variables_get" id="8,T+{=I9hz^BhA7j[(~+">
                                 <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                               </block>
                             </value>
                             <next>
                               <block type="comment" id=")}/{n[8gQW4`,3re7N(w">
                                 <field name="COMMENT">offene Fenster</field>
                                 <next>
                                   <block type="variables_set" id=";b6YJKk6a*BCFXG66QH%">
                                     <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                     <value name="VALUE">
                                       <block type="convert_jsonata" id="60?hiiE{vhNf[Eb8wLKR">
                                         <value name="EXPRESSION">
                                           <shadow type="text" id="4*RA8mF?};wVHc:}R^8r">
                                             <field name="TEXT">[$each($,function($v, $k) {$v  ? $k})]</field>
                                           </shadow>
                                         </value>
                                         <value name="TARGET">
                                           <block type="variables_get" id="q_bj0(dpn7EY[BS5q^;n">
                                             <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="debug" id="M[u52`*c)VMnv3A.m0~$">
                                         <field name="Severity">info</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="@Ym7koU2hMwTm4m:n3_.">
                                             <field name="TEXT">test</field>
                                           </shadow>
                                           <block type="lists_getSublist" id="fcVPd)C/DbhLG3V$Qa{^">
                                             <mutation at1="false" at2="false"></mutation>
                                             <field name="WHERE1">FIRST</field>
                                             <field name="WHERE2">LAST</field>
                                             <value name="LIST">
                                               <block type="variables_get" id="!Hj{v-d^@Kv=|RTc.iFZ">
                                                 <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="controls_if" id="N/3%tn;HaP!`lXQ/`}*7">
                                             <value name="IF0">
                                               <block type="logic_negate" id="csEJexWg7zW~t(EU}0=T">
                                                 <value name="BOOL">
                                                   <block type="lists_isEmpty" id="-LIX/%CH-IvV:`Z8_l}k">
                                                     <value name="VALUE">
                                                       <block type="variables_get" id="?MSM]nI?z$eBR8b(dqXk">
                                                         <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <statement name="DO0">
                                               <block type="debug" id="hNA{=8[vjbzPe+gCWk$G">
                                                 <field name="Severity">info</field>
                                                 <value name="TEXT">
                                                   <shadow type="text" id="!;(Nt$qt1[|1`Jd_N=S`">
                                                     <field name="TEXT">test</field>
                                                   </shadow>
                                                   <block type="text" id="?Rh2g5^eUA99~6nYGxvv">
                                                     <field name="TEXT">Erstelle Benachrichtigung</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </statement>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                  </xml>
                  

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  Rene55R 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @rene55 sagte in Benachrichtigung wenn ein DP false:

                    @mickym Was macht das Script denn bei dir, wenn alle Fenster false sind?

                    Ja war noch ein Fehler drin, weil kein Array/Liste rauskommt, wenn es kein match gibt. Einfach den JSONATA Ausdruck in eckige Klammern und gut ist.

                    [$each($,function($v, $k) {$v  ? $k})]
                    

                    1e40cdc7-d5f2-46dd-a93c-77d4ad77ef80-image.png

                    Die Benachrichtigung, den Alarm erzeugt man dann natürlich nur, wenn die Liste (das Array) Elemente enthält.

                    Hier nochmal das gesamte Skript zum Ausprobieren:

                    <xml xmlns="https://developers.google.com/blockly/xml">
                     <variables>
                       <variable id="aA.*;_ru^#]_9,@9g/a7">Fenster</variable>
                       <variable id="y$,lsh`(/f/KRKVqyl*I">Liste</variable>
                     </variables>
                     <block type="variables_set" id=".^NUGW!~gr]Q_,FPh41T" disabled="true" x="63" y="37">
                       <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                       <value name="VALUE">
                         <block type="object_new" id="`eHOl5z1xVLXMVLB}J=K">
                           <mutation xmlns="http://www.w3.org/1999/xhtml">
                             <attribute id="ATTR_0" name="Schlafzimmer Balkon"></attribute>
                             <attribute id="ATTR_1" name="Wohnzimmer Balkon"></attribute>
                             <attribute id="ATTR_2" name="Büro Balkon"></attribute>
                             <attribute id="ATTR_3" name="Wohnzimmer linkes Fenster"></attribute>
                             <attribute id="ATTR_4" name="Wohnzimmer rechtes Fenster"></attribute>
                           </mutation>
                           <value name="ATTR_0">
                             <shadow type="text" id="8y%[n@:ThuT5/qu}Z/jB">
                               <field name="TEXT">Schlafzimmer Balkon</field>
                             </shadow>
                             <block type="get_value" id="2AZ$_@HSE(1QzYaF1N1%">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                           <value name="ATTR_1">
                             <shadow type="text" id="hBg8T4X:r[RH$WB58Ch/">
                               <field name="TEXT">Wohnzimmer Balkon</field>
                             </shadow>
                             <block type="get_value" id="[I[FKA_plW@ohlypieMO">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                           <value name="ATTR_2">
                             <shadow type="text" id=";NcV+e,}7wo}NDz0NAP1">
                               <field name="TEXT">Büro Balkon</field>
                             </shadow>
                             <block type="get_value" id="|i.[cx0Zx,BY|UBZ#l5/">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                           <value name="ATTR_3">
                             <shadow type="text" id="xI/*!=wz/$}6#us8Ye5+">
                               <field name="TEXT">Wohnzimmer linkes Fenster</field>
                             </shadow>
                             <block type="get_value" id="3O+-PkW.5s;r?P[e=g0`">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                           <value name="ATTR_4">
                             <shadow type="text" id="b8rs@bnowUi{mmW(*GpV">
                               <field name="TEXT">Wohnzimmer rechtes Fenster</field>
                             </shadow>
                             <block type="get_value" id="j60T@2osw;weAKN)R)39">
                               <field name="ATTR">val</field>
                               <field name="OID">ID auswählen</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="variables_set" id="n18R~{At#6-W^|#nk/S~">
                           <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                           <value name="VALUE">
                             <block type="convert_json2object" id="4wzyNk%.qc3j@;t2Yt;4">
                               <value name="VALUE">
                                 <block type="text" id="y{#BbgL3UVZK8xX}AP)/">
                                   <field name="TEXT">{   "Schlafzimmer Balkon": true,   "Wohnzimmer Balkon": false,   "Büro Balkon": false,   "Wohnzimmer linkes Fenster": false,   "Wohnzimmer rechtes Fenster": false }</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <next>
                             <block type="debug" id="y5ACSX]?6UX?y_M~4cOi">
                               <field name="Severity">info</field>
                               <value name="TEXT">
                                 <shadow type="text" id="~;!/=-Myu28~)lHY5B@K">
                                   <field name="TEXT">test</field>
                                 </shadow>
                                 <block type="variables_get" id="8,T+{=I9hz^BhA7j[(~+">
                                   <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="comment" id=")}/{n[8gQW4`,3re7N(w">
                                   <field name="COMMENT">offene Fenster</field>
                                   <next>
                                     <block type="variables_set" id=";b6YJKk6a*BCFXG66QH%">
                                       <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                       <value name="VALUE">
                                         <block type="convert_jsonata" id="60?hiiE{vhNf[Eb8wLKR">
                                           <value name="EXPRESSION">
                                             <shadow type="text" id="4*RA8mF?};wVHc:}R^8r">
                                               <field name="TEXT">[$each($,function($v, $k) {$v  ? $k})]</field>
                                             </shadow>
                                           </value>
                                           <value name="TARGET">
                                             <block type="variables_get" id="q_bj0(dpn7EY[BS5q^;n">
                                               <field name="VAR" id="aA.*;_ru^#]_9,@9g/a7">Fenster</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="debug" id="M[u52`*c)VMnv3A.m0~$">
                                           <field name="Severity">info</field>
                                           <value name="TEXT">
                                             <shadow type="text" id="@Ym7koU2hMwTm4m:n3_.">
                                               <field name="TEXT">test</field>
                                             </shadow>
                                             <block type="lists_getSublist" id="fcVPd)C/DbhLG3V$Qa{^">
                                               <mutation at1="false" at2="false"></mutation>
                                               <field name="WHERE1">FIRST</field>
                                               <field name="WHERE2">LAST</field>
                                               <value name="LIST">
                                                 <block type="variables_get" id="!Hj{v-d^@Kv=|RTc.iFZ">
                                                   <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="controls_if" id="N/3%tn;HaP!`lXQ/`}*7">
                                               <value name="IF0">
                                                 <block type="logic_negate" id="csEJexWg7zW~t(EU}0=T">
                                                   <value name="BOOL">
                                                     <block type="lists_isEmpty" id="-LIX/%CH-IvV:`Z8_l}k">
                                                       <value name="VALUE">
                                                         <block type="variables_get" id="?MSM]nI?z$eBR8b(dqXk">
                                                           <field name="VAR" id="y$,lsh`(/f/KRKVqyl*I">Liste</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                               <statement name="DO0">
                                                 <block type="debug" id="hNA{=8[vjbzPe+gCWk$G">
                                                   <field name="Severity">info</field>
                                                   <value name="TEXT">
                                                     <shadow type="text" id="!;(Nt$qt1[|1`Jd_N=S`">
                                                       <field name="TEXT">test</field>
                                                     </shadow>
                                                     <block type="text" id="?Rh2g5^eUA99~6nYGxvv">
                                                       <field name="TEXT">Erstelle Benachrichtigung</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </statement>
                                             </block>
                                           </next>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                    </xml>
                    

                    Rene55R Offline
                    Rene55R Offline
                    Rene55
                    schrieb am zuletzt editiert von Rene55
                    #9

                    @mickym Ja, danke. Ich habs bei mir berichtigt und macht was es soll. [wieder was gelernt :flushed: ] Sind die Parameter $v und $k wahlfrei?

                    Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                    ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                    Wetterstation: Froggit WH3000SE V1.6.6

                    mickymM 2 Antworten Letzte Antwort
                    0
                    • Rene55R Rene55

                      @mickym Ja, danke. Ich habs bei mir berichtigt und macht was es soll. [wieder was gelernt :flushed: ] Sind die Parameter $v und $k wahlfrei?

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #10

                      @rene55 Ja. $v steht für value - also den Wert der Eigenschaft, $k steht für key - also den Namen der Eigenschaft.
                      Du kannst also den JSONATA Ausdruck zur besseren Verständlichkeit auch so schreiben:

                      [$each($,function($Wert, $Attribut) {$Wert ? $Attribut})]
                      

                      Wie die Variablen heißen - bleibt Dir überlassen. In der funktion wird nur im 1. Parameter der Wert, im 2. Paramenter die Eigenschaft angegeben.

                      Wenn Du was anderes als auf true oder false abprüfen willst, dann gegen den Wert natürlich.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      1 Antwort Letzte Antwort
                      1
                      • Rene55R Rene55

                        @mickym Ja, danke. Ich habs bei mir berichtigt und macht was es soll. [wieder was gelernt :flushed: ] Sind die Parameter $v und $k wahlfrei?

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von mickym
                        #11

                        @rene55 sagte in Benachrichtigung wenn ein DP false:

                        @mickym Ja, danke. Ich habs bei mir berichtigt und macht was es soll. [wieder was gelernt :flushed: ] Sind die Parameter $v und $k wahlfrei?

                        Wenn Du also nicht auf true oder false, sondern zum Beispiel auf Zahlenwerte überprüfen willst, habe ich hier mal ein Dummybeispiel - in dem nur ausgegeben wird, wenn der Wert > 10 ist .

                        2bdab1a0-f308-4d64-a07a-5cff44de54d9-image.png

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        Rene55R 1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @rene55 sagte in Benachrichtigung wenn ein DP false:

                          @mickym Ja, danke. Ich habs bei mir berichtigt und macht was es soll. [wieder was gelernt :flushed: ] Sind die Parameter $v und $k wahlfrei?

                          Wenn Du also nicht auf true oder false, sondern zum Beispiel auf Zahlenwerte überprüfen willst, habe ich hier mal ein Dummybeispiel - in dem nur ausgegeben wird, wenn der Wert > 10 ist .

                          2bdab1a0-f308-4d64-a07a-5cff44de54d9-image.png

                          Rene55R Offline
                          Rene55R Offline
                          Rene55
                          schrieb am zuletzt editiert von
                          #12

                          @mickym Danke, hab ich auch mal eben nachgebaut - für irgendwann später mal. Hoffentlich kann ich mich dann noch daran erinnern.

                          Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                          ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                          Wetterstation: Froggit WH3000SE V1.6.6

                          mickymM 1 Antwort Letzte Antwort
                          0
                          • Rene55R Rene55

                            @mickym Danke, hab ich auch mal eben nachgebaut - für irgendwann später mal. Hoffentlich kann ich mich dann noch daran erinnern.

                            mickymM Online
                            mickymM Online
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von mickym
                            #13

                            @rene55 Nachdem man auch in Blockly JSONATA nutzen kann, ist das eine Möglichkeit. Auch wenn ich glaub manchen ein Dorn ist, dass man JSONATA nutzen kann. Es wird lieber herkömmlich geskripted, bevor man diese Bibliothek nutzt. Man muss halt die Datenpunkte die man überwachen will einmal zu einem Objekt zusammenbauen.

                            06d7a4e5-e54f-47b1-8701-678fcca63371-image.png

                            Hier zum Beispiel meine Shellies. ;)

                            So habe ich aber verschiedene Überwachungsdatenpunkte - für Geräte oder welche Geräte online sein dürfen, wenn ich an oder abwesend bin oder wenn ein Adapter streikt usw.

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            Rene55R 1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @rene55 Nachdem man auch in Blockly JSONATA nutzen kann, ist das eine Möglichkeit. Auch wenn ich glaub manchen ein Dorn ist, dass man JSONATA nutzen kann. Es wird lieber herkömmlich geskripted, bevor man diese Bibliothek nutzt. Man muss halt die Datenpunkte die man überwachen will einmal zu einem Objekt zusammenbauen.

                              06d7a4e5-e54f-47b1-8701-678fcca63371-image.png

                              Hier zum Beispiel meine Shellies. ;)

                              So habe ich aber verschiedene Überwachungsdatenpunkte - für Geräte oder welche Geräte online sein dürfen, wenn ich an oder abwesend bin oder wenn ein Adapter streikt usw.

                              Rene55R Offline
                              Rene55R Offline
                              Rene55
                              schrieb am zuletzt editiert von
                              #14

                              @mickym Mit Blockly habe ich es auch nicht so mit. Text (also in dem Fall Javascript) liegt mir da schon eher.
                              JSONata hab ich an verschiedenen Stellen schon mal gesehen, aber nie selbst benutzt, geschweige denn auf die Idee gekommen, so etwas selbst zu entwerfen.

                              Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                              ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                              Wetterstation: Froggit WH3000SE V1.6.6

                              mickymM 1 Antwort Letzte Antwort
                              0
                              • Rene55R Rene55

                                @mickym Mit Blockly habe ich es auch nicht so mit. Text (also in dem Fall Javascript) liegt mir da schon eher.
                                JSONata hab ich an verschiedenen Stellen schon mal gesehen, aber nie selbst benutzt, geschweige denn auf die Idee gekommen, so etwas selbst zu entwerfen.

                                mickymM Online
                                mickymM Online
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von mickym
                                #15

                                @rene55 In Javascript kannst Du JSONATA genauso nutzen.

                                f3738b00-ae9d-4faa-bbe8-7173e792458e-image.png

                                Du musst nur seit ca. 1 Jahr das await vorne dran setzen. Und wie gesagt - bei der hiesigen Implementation gibt es manchmal einen mir unerklärlich Fehler, dass bei Listen immer ein sequence:true angehängt wird. Wann das passiert und wann nicht, habe ich noch nicht rausgefunden.

                                JSONATA ist nicht einfach - aber eine geniale Bibliothek (ich bin totaler Fan inzwischen) und man spart sich zig Zeilen Code und Schleifen - gerade wenn man mit Objekten arbeitet.

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                Rene55R 1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  @rene55 In Javascript kannst Du JSONATA genauso nutzen.

                                  f3738b00-ae9d-4faa-bbe8-7173e792458e-image.png

                                  Du musst nur seit ca. 1 Jahr das await vorne dran setzen. Und wie gesagt - bei der hiesigen Implementation gibt es manchmal einen mir unerklärlich Fehler, dass bei Listen immer ein sequence:true angehängt wird. Wann das passiert und wann nicht, habe ich noch nicht rausgefunden.

                                  JSONATA ist nicht einfach - aber eine geniale Bibliothek (ich bin totaler Fan inzwischen) und man spart sich zig Zeilen Code und Schleifen - gerade wenn man mit Objekten arbeitet.

                                  Rene55R Offline
                                  Rene55R Offline
                                  Rene55
                                  schrieb am zuletzt editiert von
                                  #16

                                  @mickym Ja, ist klar. Die meisten Blocklys, die ich finde und für mich brauchbar halte, stelle ich sowieso auf JS um. Manchmal bin ich zu blöd, die richtigen Bausteine zu finden.
                                  Objekte habe ich lange Zeit für überflüssiges Zeug gehalten, jetzt bin ich auf dem Weg, ein Fan davon zu werden. Und dann werde ich mich (bei Gelegenheit) auch mal tiefer in JSONata einlesen. Danke für die vielen Beispiele und Erklärungen.

                                  Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                                  ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                                  Wetterstation: Froggit WH3000SE V1.6.6

                                  mickymM 1 Antwort Letzte Antwort
                                  1
                                  • Rene55R Rene55

                                    @mickym Ja, ist klar. Die meisten Blocklys, die ich finde und für mich brauchbar halte, stelle ich sowieso auf JS um. Manchmal bin ich zu blöd, die richtigen Bausteine zu finden.
                                    Objekte habe ich lange Zeit für überflüssiges Zeug gehalten, jetzt bin ich auf dem Weg, ein Fan davon zu werden. Und dann werde ich mich (bei Gelegenheit) auch mal tiefer in JSONata einlesen. Danke für die vielen Beispiele und Erklärungen.

                                    mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #17

                                    @rene55 sagte in Benachrichtigung wenn ein DP false:

                                    Ja, ist klar. Die meisten Blocklys, die ich finde und für mich brauchbar halte, stelle ich sowieso auf JS um. Manchmal bin ich zu blöd, die richtigen Bausteine zu finden.

                                    Ja deswegen finde ich, wenn man nicht herkömmlich mit Text, sondern mit grafischen Bausteinen programmieren möchte, NodeRed wesentlich logischer, aber da die Mehrzahl hier an Board Blockly verwendet, werden Neulinge meist Richtung Blockly geleitet. - Deswege schlage ich halt manchmal eine Alternative vor, für Leute, die auch mal was anderes ausprobieren wollen. ;)

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    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

                                    627

                                    Online

                                    32.5k

                                    Benutzer

                                    81.7k

                                    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