Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. [Gelöst] Sensoren überwachen + Benachrichtigung

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    818

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.6k

[Gelöst] Sensoren überwachen + Benachrichtigung

Scheduled Pinned Locked Moved Blockly
28 Posts 3 Posters 2.1k Views 4 Watching
  • 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.
  • paul53P paul53

    @d3ltoroxp sagte: In der Funktion den Code von dir oben.

    Dann muss der Übergabeparameter den Bezeichner id erhalten.

    Bild_2022-05-03_175827246.png

    Man kann nicht gleichzeitig den Namen von Zigbee und HmIP in der Funktion auflösen. Die gleiche Funktion muss in der zweiten Schleife (für HmIP) aufgerufen werden.

    D3ltoroxpD Offline
    D3ltoroxpD Offline
    D3ltoroxp
    wrote on last edited by D3ltoroxp
    #12

    @paul53 Ok Danke dir so nun bekomme ich schon mal Namen. Leider alle extra. Gibts hier noch nen Trick, wie ich da eine Liste von bekomme ?

    1d6ee03d-c37d-44b0-b32a-5395874a611d-grafik.png

    Jetzt raff ich noch nicht wie ich die Funktion auch noch mal auf HMIP anwende ? Ich nehme die gleiche Funktion von oben ?

    paul53P 2 Replies Last reply
    0
    • D3ltoroxpD D3ltoroxp

      @paul53 Ok Danke dir so nun bekomme ich schon mal Namen. Leider alle extra. Gibts hier noch nen Trick, wie ich da eine Liste von bekomme ?

      1d6ee03d-c37d-44b0-b32a-5395874a611d-grafik.png

      Jetzt raff ich noch nicht wie ich die Funktion auch noch mal auf HMIP anwende ? Ich nehme die gleiche Funktion von oben ?

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #13

      @d3ltoroxp sagte: Gibts hier noch nen Trick, wie ich da eine Liste von bekomme ?

      Ja, verwende ein Array:

      Bild_2022-05-03_192531985.png

      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 Reply Last reply
      0
      • D3ltoroxpD D3ltoroxp

        @paul53 Ok Danke dir so nun bekomme ich schon mal Namen. Leider alle extra. Gibts hier noch nen Trick, wie ich da eine Liste von bekomme ?

        1d6ee03d-c37d-44b0-b32a-5395874a611d-grafik.png

        Jetzt raff ich noch nicht wie ich die Funktion auch noch mal auf HMIP anwende ? Ich nehme die gleiche Funktion von oben ?

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #14

        @d3ltoroxp sagte: wie ich die Funktion auch noch mal auf HMIP anwende ?

        Wenn in beiden Fällen der Gerätename angezeigt werden soll, dann verwende eine erweiterte Funktion deviceName(id):

        id = id.substring(0, id.lastIndexOf('.'));
        if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
        id = id.substring(0, id.lastIndexOf('.'));
        if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
        

        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

        D3ltoroxpD 1 Reply Last reply
        0
        • paul53P paul53

          @d3ltoroxp sagte: wie ich die Funktion auch noch mal auf HMIP anwende ?

          Wenn in beiden Fällen der Gerätename angezeigt werden soll, dann verwende eine erweiterte Funktion deviceName(id):

          id = id.substring(0, id.lastIndexOf('.'));
          if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
          id = id.substring(0, id.lastIndexOf('.'));
          if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
          
          D3ltoroxpD Offline
          D3ltoroxpD Offline
          D3ltoroxp
          wrote on last edited by D3ltoroxp
          #15

          @paul53 Auf den ersten Blick beide Zeilen identisch. Wenn ich nun noch mehrere andere Hersteller habe, kann ich dann einfach um die Anzahl erweitern ? Bei z.b. 4 unterschiedlichen Herstellern ?

          id = id.substring(0, id.lastIndexOf('.'));
          
          if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
          
          id = id.substring(0, id.lastIndexOf('.'));
          
          if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
          
          id = id.substring(0, id.lastIndexOf('.'));
          
          if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
          
          id = id.substring(0, id.lastIndexOf('.'));
          
          if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
          

          Edit:

          Ich hab wohl irgendwo noch einen Fehler ??

          javascript.0 (607) script.js.VIS.Sensoren_Ueberwachung: TypeError: Offline_Sensoren.split is not a function
          19:27:40.685	error	javascript.0 (607) at script.js.VIS.Sensoren_Ueberwachung:40:69
          

          Oder muss ich

          deviceName(id)
          

          noch in die JS Funktion so eintragen, anstatt "name" ? Oder gar in die Variable so eintragen ?

          paul53P 2 Replies Last reply
          0
          • D3ltoroxpD D3ltoroxp

            @paul53 Auf den ersten Blick beide Zeilen identisch. Wenn ich nun noch mehrere andere Hersteller habe, kann ich dann einfach um die Anzahl erweitern ? Bei z.b. 4 unterschiedlichen Herstellern ?

            id = id.substring(0, id.lastIndexOf('.'));
            
            if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
            
            id = id.substring(0, id.lastIndexOf('.'));
            
            if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
            
            id = id.substring(0, id.lastIndexOf('.'));
            
            if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
            
            id = id.substring(0, id.lastIndexOf('.'));
            
            if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
            

            Edit:

            Ich hab wohl irgendwo noch einen Fehler ??

            javascript.0 (607) script.js.VIS.Sensoren_Ueberwachung: TypeError: Offline_Sensoren.split is not a function
            19:27:40.685	error	javascript.0 (607) at script.js.VIS.Sensoren_Ueberwachung:40:69
            

            Oder muss ich

            deviceName(id)
            

            noch in die JS Funktion so eintragen, anstatt "name" ? Oder gar in die Variable so eintragen ?

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #16

            @d3ltoroxp sagte: Wenn ich nun noch mehrere andere Hersteller habe, kann ich dann einfach um die Anzahl erweitern ? Bei z.b. 4 unterschiedlichen Herstellern ?

            Das hat nichts mit den Herstellern zu tun, sondern mit der unterschiedlichen Objekt-Struktur der Adapter:

            • Zigbee: device.state
            • HM-RPC: device.channel.state

            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 Reply Last reply
            0
            • D3ltoroxpD D3ltoroxp

              @paul53 Auf den ersten Blick beide Zeilen identisch. Wenn ich nun noch mehrere andere Hersteller habe, kann ich dann einfach um die Anzahl erweitern ? Bei z.b. 4 unterschiedlichen Herstellern ?

              id = id.substring(0, id.lastIndexOf('.'));
              
              if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
              
              id = id.substring(0, id.lastIndexOf('.'));
              
              if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
              
              id = id.substring(0, id.lastIndexOf('.'));
              
              if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
              
              id = id.substring(0, id.lastIndexOf('.'));
              
              if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
              

              Edit:

              Ich hab wohl irgendwo noch einen Fehler ??

              javascript.0 (607) script.js.VIS.Sensoren_Ueberwachung: TypeError: Offline_Sensoren.split is not a function
              19:27:40.685	error	javascript.0 (607) at script.js.VIS.Sensoren_Ueberwachung:40:69
              

              Oder muss ich

              deviceName(id)
              

              noch in die JS Funktion so eintragen, anstatt "name" ? Oder gar in die Variable so eintragen ?

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #17

              @d3ltoroxp sagte: noch in die JS Funktion so eintragen, anstatt "name" ?

              Nein, es geht auch Name(id). Ist nur nicht so eindeutig, was zurück geliefert wird.

              @d3ltoroxp sagte in [Gelöst] Sensoren überwachen + Benachrichtigung:

              Offline_Sensoren.split is not a function

              Nicht Text in eine Liste wandeln, sondern eine Liste in Text.

              Bild_2022-05-03_193246211.png

              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

              D3ltoroxpD 1 Reply Last reply
              1
              • paul53P paul53

                @d3ltoroxp sagte: noch in die JS Funktion so eintragen, anstatt "name" ?

                Nein, es geht auch Name(id). Ist nur nicht so eindeutig, was zurück geliefert wird.

                @d3ltoroxp sagte in [Gelöst] Sensoren überwachen + Benachrichtigung:

                Offline_Sensoren.split is not a function

                Nicht Text in eine Liste wandeln, sondern eine Liste in Text.

                Bild_2022-05-03_193246211.png

                D3ltoroxpD Offline
                D3ltoroxpD Offline
                D3ltoroxp
                wrote on last edited by D3ltoroxp
                #18

                @paul53 Vielen vielen Dank. Sieht super aus und scheint auch seine Arbeit zu verrichten.

                Also wenn noch ein weiterer Adapter dazu kommt muss ich dann noch mal was an der Funktion ändern ?

                Z.b.Sonoff dazu nehmen möchte, für mich als Noob, sehen die States bei allen drei gleich aus. Woher weiß ich ober Sonoff = device.satet oder device.channel.state oder gar noch eine andere Variante hat ?

                EDIT::

                349965e4-21a9-43e7-b0fe-76b7d7926bf9-grafik.png

                Ich hab das mal auf den Batterie Status umgestellt, auf "Available" sind die Zeitstempel Uhr alt. Aber wenn ich den DP raus kopiere für das Wort, tut sich da gar nichts mehr mit den Zigbee Sensoren, obwohl welche in der Liste sein müssten.

                7cf59f50-d66d-4bc8-ba1c-8399fd47a9bd-grafik.png

                Bestimmt falsch geschrieben...

                {
                  "type": "state",
                  "common": {
                    "name": "Terrasse_FK Battery percent",
                    "type": "number",
                    "unit": "%",
                    "read": true,
                    "write": false,
                    "role": "battery.percent",
                    "min": 0,
                    "max": 100,
                    "icon": "img/battery_p.png"
                  },
                  "from": "system.adapter.zigbee.0",
                  "user": "system.user.admin",
                  "ts": 1582998804679,
                  "_id": "zigbee.0.00158d0002e8bbbc.battery",
                  "acl": {
                    "object": 1636,
                    "state": 1636,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                  }
                }
                
                paul53P 1 Reply Last reply
                0
                • D3ltoroxpD D3ltoroxp

                  @paul53 Vielen vielen Dank. Sieht super aus und scheint auch seine Arbeit zu verrichten.

                  Also wenn noch ein weiterer Adapter dazu kommt muss ich dann noch mal was an der Funktion ändern ?

                  Z.b.Sonoff dazu nehmen möchte, für mich als Noob, sehen die States bei allen drei gleich aus. Woher weiß ich ober Sonoff = device.satet oder device.channel.state oder gar noch eine andere Variante hat ?

                  EDIT::

                  349965e4-21a9-43e7-b0fe-76b7d7926bf9-grafik.png

                  Ich hab das mal auf den Batterie Status umgestellt, auf "Available" sind die Zeitstempel Uhr alt. Aber wenn ich den DP raus kopiere für das Wort, tut sich da gar nichts mehr mit den Zigbee Sensoren, obwohl welche in der Liste sein müssten.

                  7cf59f50-d66d-4bc8-ba1c-8399fd47a9bd-grafik.png

                  Bestimmt falsch geschrieben...

                  {
                    "type": "state",
                    "common": {
                      "name": "Terrasse_FK Battery percent",
                      "type": "number",
                      "unit": "%",
                      "read": true,
                      "write": false,
                      "role": "battery.percent",
                      "min": 0,
                      "max": 100,
                      "icon": "img/battery_p.png"
                    },
                    "from": "system.adapter.zigbee.0",
                    "user": "system.user.admin",
                    "ts": 1582998804679,
                    "_id": "zigbee.0.00158d0002e8bbbc.battery",
                    "acl": {
                      "object": 1636,
                      "state": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator"
                    }
                  }
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #19

                  @d3ltoroxp sagte: Batterie Status umgestellt

                  Links ist die ID zu sehen:

                  Bild_2022-05-03_203046540.png

                  @d3ltoroxp sagte in [Gelöst] Sensoren überwachen + Benachrichtigung:

                  Sonoff dazu nehmen möchte, für mich als Noob, sehen die States bei allen drei gleich aus.

                  Ich kenne die Objekt-Struktur des Sonoff-Adapters nicht. Bitte zeigen!

                  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

                  D3ltoroxpD 1 Reply Last reply
                  0
                  • paul53P paul53

                    @d3ltoroxp sagte: Batterie Status umgestellt

                    Links ist die ID zu sehen:

                    Bild_2022-05-03_203046540.png

                    @d3ltoroxp sagte in [Gelöst] Sensoren überwachen + Benachrichtigung:

                    Sonoff dazu nehmen möchte, für mich als Noob, sehen die States bei allen drei gleich aus.

                    Ich kenne die Objekt-Struktur des Sonoff-Adapters nicht. Bitte zeigen!

                    D3ltoroxpD Offline
                    D3ltoroxpD Offline
                    D3ltoroxp
                    wrote on last edited by
                    #20

                    @paul53 Noch mals tausend Dank für deine tolle Unterstützung... Heute stell ich mich aber auch an. Danke für deine Geduld.

                    62c7581e-cdf4-4d23-a122-9db8616d951e-grafik.png

                    Ich hoffe das ist das richtige ?

                    paul53P 1 Reply Last reply
                    0
                    • D3ltoroxpD D3ltoroxp

                      @paul53 Noch mals tausend Dank für deine tolle Unterstützung... Heute stell ich mich aber auch an. Danke für deine Geduld.

                      62c7581e-cdf4-4d23-a122-9db8616d951e-grafik.png

                      Ich hoffe das ist das richtige ?

                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #21

                      @d3ltoroxp sagte: Ich hoffe das ist das richtige ?

                      Ja. Du möchtest den Namen "FritzBox_Ladekabel" haben? Das ist ein Kanal, kein Gerät. Hierfür benötigt man eine Funktion channelName(id) mit folgendem Inhalt:

                      id = id.substring(0, id.lastIndexOf('.'));
                      if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
                      id = id.substring(0, id.lastIndexOf('.'));
                      if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
                      

                      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

                      D3ltoroxpD 1 Reply Last reply
                      0
                      • paul53P paul53

                        @d3ltoroxp sagte: Ich hoffe das ist das richtige ?

                        Ja. Du möchtest den Namen "FritzBox_Ladekabel" haben? Das ist ein Kanal, kein Gerät. Hierfür benötigt man eine Funktion channelName(id) mit folgendem Inhalt:

                        id = id.substring(0, id.lastIndexOf('.'));
                        if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
                        id = id.substring(0, id.lastIndexOf('.'));
                        if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
                        
                        D3ltoroxpD Offline
                        D3ltoroxpD Offline
                        D3ltoroxp
                        wrote on last edited by
                        #22

                        @paul53 Ach so sorry, der blaue Marker hat nichts zu sagen. War nur zufällig. Ich hätte wäre hier auf Uptime oder auf einen Wifi DP gegangen.

                        paul53P 1 Reply Last reply
                        0
                        • D3ltoroxpD D3ltoroxp

                          @paul53 Ach so sorry, der blaue Marker hat nichts zu sagen. War nur zufällig. Ich hätte wäre hier auf Uptime oder auf einen Wifi DP gegangen.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by paul53
                          #23

                          @d3ltoroxp sagte: auf Uptime oder auf einen Wifi DP gegangen.

                          Den Namen doch sicherlich vom übergeordneten Objekt, das ein "channel"-Objekt ist?

                          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

                          D3ltoroxpD 1 Reply Last reply
                          0
                          • paul53P paul53

                            @d3ltoroxp sagte: auf Uptime oder auf einen Wifi DP gegangen.

                            Den Namen doch sicherlich vom übergeordneten Objekt, das ein "channel"-Objekt ist?

                            D3ltoroxpD Offline
                            D3ltoroxpD Offline
                            D3ltoroxp
                            wrote on last edited by
                            #24

                            @paul53 Ja den Namen von oben...

                            Kann ich das in dem JS Code mit hinzufügen ? Soll ja alles in einem Script laufen.?

                            paul53P 1 Reply Last reply
                            0
                            • D3ltoroxpD D3ltoroxp

                              @paul53 Ja den Namen von oben...

                              Kann ich das in dem JS Code mit hinzufügen ? Soll ja alles in einem Script laufen.?

                              paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by
                              #25

                              @d3ltoroxp sagte: Kann ich das in dem JS Code mit hinzufügen ?

                              Ja, erstelle eine zweite JS-Funktion channelName(id) mit dem JS Code oben.

                              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

                              D3ltoroxpD 2 Replies Last reply
                              0
                              • paul53P paul53

                                @d3ltoroxp sagte: Kann ich das in dem JS Code mit hinzufügen ?

                                Ja, erstelle eine zweite JS-Funktion channelName(id) mit dem JS Code oben.

                                D3ltoroxpD Offline
                                D3ltoroxpD Offline
                                D3ltoroxp
                                wrote on last edited by
                                #26

                                @paul53 Ah ja jetzt,

                                adcb2596-bbeb-4f64-80db-5408889739c2-grafik.png

                                ein zweites und dann einfach für Sonoff dann die andere JS Funktion nutzen... Ich probierst, vielen Dank noch mal. Das andere läuft schon super !!

                                1 Reply Last reply
                                0
                                • D3ltoroxpD Offline
                                  D3ltoroxpD Offline
                                  D3ltoroxp
                                  wrote on last edited by
                                  #27

                                  Kann ich eigentlich in der VIS auch den Zeitstempel überprüfen ? Ich würde gerne die Temps z.b. rot färben lassen, wenn der Zeitstämpel x Zeit überschreitet, damit ich weiß, er ist nicht mehr online und der Wert nicht aktuell.

                                  Oder muss ich hier mit einem Script extra DP's mit true / false schalten und damit dann in der VIS arbeiten ?

                                  1 Reply Last reply
                                  0
                                  • paul53P paul53

                                    @d3ltoroxp sagte: Kann ich das in dem JS Code mit hinzufügen ?

                                    Ja, erstelle eine zweite JS-Funktion channelName(id) mit dem JS Code oben.

                                    D3ltoroxpD Offline
                                    D3ltoroxpD Offline
                                    D3ltoroxp
                                    wrote on last edited by D3ltoroxp
                                    #28

                                    @paul53 Ich hänge hier noch etwas fest.

                                    Ich habe das für HMIP Geräte genau so gemacht, aber da spuckt er gar nichts aus. Obwohl ein Kontakt nicht erreichbar ist.

                                    5e30920a-c576-4e33-aec0-0a405416dde0-grafik.png

                                    Hat sich erledigt, ka. Ich hatte mal mit einer kleineren Zeit getestet da gings, die Zeit wieder hoch gesetzt dann ging's auch.

                                    1 Reply Last reply
                                    0

                                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                    With your input, this post could be even better 💗

                                    Register Login
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    572

                                    Online

                                    32.8k

                                    Users

                                    82.7k

                                    Topics

                                    1.3m

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

                                    • Don't have an account? Register

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