Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Falsche werte schon bei Aufzeichnung ausschliessen

NEWS

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

  • 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

Falsche werte schon bei Aufzeichnung ausschliessen

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
21 Beiträge 4 Kommentatoren 1.5k Aufrufe 4 Beobachtet
  • Ä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.
  • L legro

    @cainam

    Wie ich sehe, hast du ja viele Hinweise erhalten. Noch zwei Hinweise von mir.

    In der Tat verwende ich einen eigenen Datenpunkt in 0_userdata, in dem ich die Werte von den Sensoren/Quellen einsammle. Ändert sich der Wert in diesem Datenpunkt, überprüfe/korrigiere/verwerfe ich diesen, bevor ich ihn in die Datenbank schreibe.

    Das von mir auf GitHub verlinkte Beispiel, das ich zur Lösung herangezogen habe, enthält einen Fehler. Dort wird fälschlicherweise versucht ein Array [..] anstelle eines Objektes {..} zu übergeben. Die Codebeispiele von @paul53 und mir sind korrekt.

    C Offline
    C Offline
    cainam
    schrieb am zuletzt editiert von cainam
    #12

    @legro
    passiert das realtime, dh sobald sich der datenwert ändert?

    und wie kann ich das am besten kombinieren für mehrere datenpunkte?

    so? wobei xxx... die verschiedenen werte sind?

    const idSrc = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
    const idSrc = 'xxx1'
    const idSrc = 'xxx2...'
    
    const idDst = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
     const idDst = 'xxx1'
    const idDst = 'xxx2...'
    
    on(idSrc, function(dp) {
        if(dp.state.val > -25) setState(idDst, dp.state.val, true);
    });
    
    L C 2 Antworten Letzte Antwort
    0
    • C cainam

      @legro
      passiert das realtime, dh sobald sich der datenwert ändert?

      und wie kann ich das am besten kombinieren für mehrere datenpunkte?

      so? wobei xxx... die verschiedenen werte sind?

      const idSrc = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
      const idSrc = 'xxx1'
      const idSrc = 'xxx2...'
      
      const idDst = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
       const idDst = 'xxx1'
      const idDst = 'xxx2...'
      
      on(idSrc, function(dp) {
          if(dp.state.val > -25) setState(idDst, dp.state.val, true);
      });
      
      L Offline
      L Offline
      legro
      schrieb am zuletzt editiert von
      #13

      @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

      @legro
      passiert das realtime, dh sobald sich der datenwert ändert?

      Wann das passiert, kannst du doch mit einem Trigger steuern; z.B.: Wenn der Wert im betreffenden Datenpunkt geändert/aktualisiert wird, löst der Trigger aus und du kannst die gewünschten Kontrollen durchführen lassen und die korrigierten Werte in die Datenbank schreiben.

      In meinem Beispiel, aus dem ich das Ganze entnommen habe, geschieht das Ganze mittels eines CRON-Jobs.

      Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

      1 Antwort Letzte Antwort
      0
      • C cainam

        @legro
        passiert das realtime, dh sobald sich der datenwert ändert?

        und wie kann ich das am besten kombinieren für mehrere datenpunkte?

        so? wobei xxx... die verschiedenen werte sind?

        const idSrc = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
        const idSrc = 'xxx1'
        const idSrc = 'xxx2...'
        
        const idDst = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
         const idDst = 'xxx1'
        const idDst = 'xxx2...'
        
        on(idSrc, function(dp) {
            if(dp.state.val > -25) setState(idDst, dp.state.val, true);
        });
        
        C Offline
        C Offline
        cainam
        schrieb am zuletzt editiert von cainam
        #14

        @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

        if(dp.state.val > -25) setS

        und müsste das nicht < -25 sein ? Also alle werte die weniger sind als -25....?

        ich könnte ja einfach beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

        paul53P L 2 Antworten Letzte Antwort
        0
        • C cainam

          @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

          if(dp.state.val > -25) setS

          und müsste das nicht < -25 sein ? Also alle werte die weniger sind als -25....?

          ich könnte ja einfach beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

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

          @cainam sagte: müsste das nicht < -25 sein ?

          Nein, denn es sollen nur Werte > -25 °C weiter gegeben werden.

          @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

          beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

          Dann erzeugt der js-controller lediglich eine Warnung.

          @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

          für mehrere datenpunkte?

          const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
          const idSrc2 = 'xxx1'
          const idSrc3 = 'xxx2...'
           
          const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
          const idDst2 = 'xxx1'
          const idDst3 = 'xxx2...'
           
          on(idSrc1, function(dp) {
              if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
          });
          on(idSrc2, function(dp) {
              if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
          });
          on(idSrc3, function(dp) {
              if(dp.state.val > -25) setState(idDst3, dp.state.val, true);
          });
          

          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

          C 1 Antwort Letzte Antwort
          0
          • C cainam

            @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

            if(dp.state.val > -25) setS

            und müsste das nicht < -25 sein ? Also alle werte die weniger sind als -25....?

            ich könnte ja einfach beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

            L Offline
            L Offline
            legro
            schrieb am zuletzt editiert von
            #16

            @cainam

            Wenn du, wie du schreibst, noch in den Anfängen steckst, warum verwendest du nicht Blockly? Da kannst du dir das Ganze bequem und schnell zusammenstellen. Mein nachfolgend dargestellter Vorschlag kommt gänzlich ohne zusätzliche Datenpunkte aus.

            Zum Eintragen in InfluxDB kommt die auf storeState basierende JavaScript-Funktion zur Anwendung, welche den gewünschten Wert in die Datenbank schreibt. Im Trigger wird die Meldung (Datenpunkt) des Sensors bewertet und nur dann in die Datenbank geschrieben, wenn der Wert zwischen -25 und 100 liegt.

            ca73e3a3-791c-418f-9051-04cf4bd45aca-image.png

            Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

            C 1 Antwort Letzte Antwort
            0
            • L legro

              @cainam

              Wenn du, wie du schreibst, noch in den Anfängen steckst, warum verwendest du nicht Blockly? Da kannst du dir das Ganze bequem und schnell zusammenstellen. Mein nachfolgend dargestellter Vorschlag kommt gänzlich ohne zusätzliche Datenpunkte aus.

              Zum Eintragen in InfluxDB kommt die auf storeState basierende JavaScript-Funktion zur Anwendung, welche den gewünschten Wert in die Datenbank schreibt. Im Trigger wird die Meldung (Datenpunkt) des Sensors bewertet und nur dann in die Datenbank geschrieben, wenn der Wert zwischen -25 und 100 liegt.

              ca73e3a3-791c-418f-9051-04cf4bd45aca-image.png

              C Offline
              C Offline
              cainam
              schrieb am zuletzt editiert von cainam
              #17

              @legro

              Danke tausend mal, eine Frage noch. Das JavaScript der function sieht so aus?

              
              sendTo('influxdb.0', 'storeState', {
                  id: ziel,
                  state: {ts: zeit, val: wert, ack: false, from: ziel}
              }, result => console.log('added'));
              
              
              L 1 Antwort Letzte Antwort
              0
              • C cainam

                @legro

                Danke tausend mal, eine Frage noch. Das JavaScript der function sieht so aus?

                
                sendTo('influxdb.0', 'storeState', {
                    id: ziel,
                    state: {ts: zeit, val: wert, ack: false, from: ziel}
                }, result => console.log('added'));
                
                
                L Offline
                L Offline
                legro
                schrieb am zuletzt editiert von legro
                #18

                @cainam

                sendTo('influxdb.0', 'storeState', {
                    id: 'mbus.0.counter.xxx',
                    state: {ts: 1589458809352, val: 123, ack: false, from: 'system.adapter.whatever.0', ...}
                }, result => console.log('added'));
                

                Ausgangspunkt für meine Funktion ist die auf GitHub vorgestellte Funktion sendTo mit dem Parameter storeState, wie ich sie dir hier aus GitHub herauskopiert habe. Die falsche Klammersetzung und Adapterbezeichnung in diesem Beispiel habe ich hierbei schon korrigiert.

                Diese kannst du dir nach Belieben anpassen. Selbstverständlich kannst du auch meine (verkürzte) Version als Ausgangspunkt verwenden. Ob die array function in der 4.Zeile ggf. optional ist (also weggelassen werden kann), habe ich noch nicht ausprobiert.

                Den Parameter state in der 3.Zeile kannst du nach Belieben füllen. Das zweite Beispiel auf GitHub zeigt, dass du anstelle eines einzelnen Objektes auch ein ganzes Array [..] solcher state-Objekte übergeben kannst, die mittels eines einzigen Aufrufs als measurements in InfluxDB eingetragen werden.

                Viel Erfolg!

                Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @cainam sagte: müsste das nicht < -25 sein ?

                  Nein, denn es sollen nur Werte > -25 °C weiter gegeben werden.

                  @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

                  beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

                  Dann erzeugt der js-controller lediglich eine Warnung.

                  @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

                  für mehrere datenpunkte?

                  const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                  const idSrc2 = 'xxx1'
                  const idSrc3 = 'xxx2...'
                   
                  const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                  const idDst2 = 'xxx1'
                  const idDst3 = 'xxx2...'
                   
                  on(idSrc1, function(dp) {
                      if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                  });
                  on(idSrc2, function(dp) {
                      if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                  });
                  on(idSrc3, function(dp) {
                      if(dp.state.val > -25) setState(idDst3, dp.state.val, true);
                  });
                  
                  C Offline
                  C Offline
                  cainam
                  schrieb am zuletzt editiert von cainam
                  #19

                  @paul53 said in Falsche werte schon bei Aufzeichnung ausschliessen:

                                                                                                                                              const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/                                                                                                                                                                            const idSrc2 = 'xxx1'                                                                                                                                                                            const idSrc3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/                                                                                                                                                                             const idDst2 = 'xxx1'                                                                                                                                                                            const idDst3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         on(idSrc1, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst1, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc2, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst2, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc3, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst3, dp.state.val, true);                                                                                                                                                                            });                                            
                  

                  Habe nun das mal so gemacht:

                  const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                  const idSrc2 = 'deconz.0.Sensors.13.temperature'/*Temperature 13 - Wohnzimmer temperature*/
                  
                  const idDs1t = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                  const idDst2 = '0_userdata.0.InfluxDB_Dateninfos.Innen.Wohnzimmer'/*Wohnzimmer*/
                  
                  on(idSrc1, function(dp) {
                      if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                  });
                  on(idSrc2, function(dp) {
                      if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                  });
                  

                  leider kommt da immer ein fehler (gehen tut es aber)

                  Fehler: 12:20:08.518 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  12:48:34.457 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:16:59.930 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:43:43.411 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:43:54.197 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:50:40.761 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:51:31.516 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:52:32.862 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  13:54:45.267 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  14:02:52.445 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  14:06:25.954 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  14:12:21.660 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  14:19:18.080 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                  14:40:47.328 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • C cainam

                    @paul53 said in Falsche werte schon bei Aufzeichnung ausschliessen:

                                                                                                                                                const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/                                                                                                                                                                            const idSrc2 = 'xxx1'                                                                                                                                                                            const idSrc3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/                                                                                                                                                                             const idDst2 = 'xxx1'                                                                                                                                                                            const idDst3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         on(idSrc1, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst1, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc2, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst2, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc3, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst3, dp.state.val, true);                                                                                                                                                                            });                                            
                    

                    Habe nun das mal so gemacht:

                    const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                    const idSrc2 = 'deconz.0.Sensors.13.temperature'/*Temperature 13 - Wohnzimmer temperature*/
                    
                    const idDs1t = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                    const idDst2 = '0_userdata.0.InfluxDB_Dateninfos.Innen.Wohnzimmer'/*Wohnzimmer*/
                    
                    on(idSrc1, function(dp) {
                        if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                    });
                    on(idSrc2, function(dp) {
                        if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                    });
                    

                    leider kommt da immer ein fehler (gehen tut es aber)

                    Fehler: 12:20:08.518 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    12:48:34.457 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:16:59.930 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:43:43.411 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:43:54.197 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:50:40.761 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:51:31.516 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:52:32.862 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    13:54:45.267 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    14:02:52.445 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    14:06:25.954 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    14:12:21.660 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    14:19:18.080 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                    14:40:47.328 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)

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

                    @cainam
                    Vertipper?

                    const idDs1t
                    

                    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

                    C 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @cainam
                      Vertipper?

                      const idDs1t
                      
                      C Offline
                      C Offline
                      cainam
                      schrieb am zuletzt editiert von
                      #21

                      @paul53 ups... sorry - danke

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate
                      FAQ Cloud / IOT
                      HowTo: Node.js-Update
                      HowTo: Backup/Restore
                      Downloads
                      BLOG

                      593

                      Online

                      32.8k

                      Benutzer

                      82.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