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. Visualisierung
  4. Türklingel Video sichtbar bei DP Änderung true [Erledigt]

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    367

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    324

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

Türklingel Video sichtbar bei DP Änderung true [Erledigt]

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vis
14 Beiträge 3 Kommentatoren 363 Aufrufe 3 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.
  • D3ltoroxpD D3ltoroxp

    Also doch eher eine extra View Seite, die ich dann einblenden lasse. Das andere Widget lass ich halt auf der Hauptseite und kann bei Bedarf dort rein schauen. Ich versuche dann mal diesen Weg.

    Ich hab das hier mal von Hand probiert, da tut sich aber nichts am Tablet.

    6851d62a-d167-4337-87f2-8830a7dee814-image.png

    ChaotC Offline
    ChaotC Offline
    Chaot
    schrieb am zuletzt editiert von
    #4

    @D3ltoroxp Du musst die drei Befehle der Reihe nach absetzen wie unten im auskommentierten Teil geschrieben:

    //setState("vis.0.control.instance", 'FFFFFFFF');
               //setState("vis.0.control.data",     'DemoView');
               //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
    

    dann sollte das auch von Hand klappen. Reihenfolge beachten.
    Ich habe das aber ehrlich gesagt nie manuell probiert. Also ist obige Aussage wirklich nur theoretisch.

    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

    1 Antwort Letzte Antwort
    0
    • D3ltoroxpD Offline
      D3ltoroxpD Offline
      D3ltoroxp
      schrieb am zuletzt editiert von
      #5
      setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "modern/view_alp600"}'); 
                 // oder
                 //setState("vis.0.control.instance", 'FFFFFFFF');
                 //setState("vis.0.control.data",     'DemoView');
                 //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
                 
                 // Setze View auf Kamerabild
                  timeout6 = setTimeout(function () {
                            setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "modern/view_index"}');
                 }, 60000); // Nach 60 Sekunden, zeige wieder Start View
      

      So hab ich das mal abgeändert, wie Triggere ich jetzt das Script ? Meine Klingelt schaltet ja einen DP auf true.

      ChaotC 1 Antwort Letzte Antwort
      0
      • D3ltoroxpD D3ltoroxp
        setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "modern/view_alp600"}'); 
                   // oder
                   //setState("vis.0.control.instance", 'FFFFFFFF');
                   //setState("vis.0.control.data",     'DemoView');
                   //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
                   
                   // Setze View auf Kamerabild
                    timeout6 = setTimeout(function () {
                              setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "modern/view_index"}');
                   }, 60000); // Nach 60 Sekunden, zeige wieder Start View
        

        So hab ich das mal abgeändert, wie Triggere ich jetzt das Script ? Meine Klingelt schaltet ja einen DP auf true.

        ChaotC Offline
        ChaotC Offline
        Chaot
        schrieb am zuletzt editiert von
        #6

        @D3ltoroxp
        Hier mal mein ganzes Klingelscript

        var sperre = false;  //verhindert das doppeltes Drücken das Script stoppt
        var timeout1, timeout2, timeout3, timeout4, timeout5, timeout6;
        var fs = require('fs');
        
        
        on({id: 'sonoff.0.Eingang.POWER2', val: true}, function (obj) {
          if(!sperre) {
            sperre = true;
            setState("alexa2.0.Echo-Devices.G2A0P.Routines.11242dac-bf4b-4ab1-9521-37fdf5dae51d", true); //Klingelt auf Echo Theke
            setState("alexa2.0.Echo-Devices.G090LF.Routines.519a9af4-c186-4715-9e5d-cb4ac65c0c67", true); //Klingelt auf Dot Anrichte
            
            
            exec('wget --output-document /tuer/alarm1.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
            
            
            
            timeout1 = setTimeout(function () {
              exec('wget --output-document /tuer/alarm2.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
              
              timeout2 = setTimeout(function () {
                
                sendTo("email", "send", {
             text: '',
             to: '*****@gmail.com',
             subject: 'Klingel',
             attachments:[{path: '/tuer/alarm1.jpg', cid: "file1"},{path: '/tuer/alarm2.jpg', cid: "file2"},] });
                sendTo("email", "send", {
             text: '',
             to: '*****@gmail.com',
             subject: 'Klingel',
             attachments:[{path: '/tuer/alarm1.jpg', cid: "file1"},{path: '/tuer/alarm2.jpg', cid: "file2"},] });
              
              }, 2500);
            }, 5000);
            
            timeout3 = setTimeout(function () {
              exec('wget --output-document /tuer/alarm3.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
            }, 10000);
           
           
            timeout4 = setTimeout(function () {
              exec('wget --output-document /tuer/alarm4.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
            }, 20000);
           
            }
        
             setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}'); 
                   // oder
                   //setState("vis.0.control.instance", 'FFFFFFFF');
                   //setState("vis.0.control.data",     'DemoView');
                   //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
                   
                   // Setze View auf Kamerabild
                    timeout6 = setTimeout(function () {
                              setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
                   }, 60000); // Nach 60 Sekunden, zeige wieder Start View
            
            timeout5 = setTimeout(function() {
               sperre = false;
            }, 5000); //Zeit für Klingelsperre 1.Zeile
            timeout6 = setTimeout(function () {
                 const bild1 = fs.readFileSync('/tuer/alarm1.jpg');
                 writeFile('0_userdata.0','alarm1.jpg', bild1);
                 const bild2 = fs.readFileSync('/tuer/alarm2.jpg');
                 writeFile('0_userdata.0','alarm2.jpg', bild2);
                 const bild3 = fs.readFileSync('/tuer/alarm3.jpg');
                 writeFile('0_userdata.0','alarm3.jpg', bild3);
                 const bild4 = fs.readFileSync('/tuer/alarm4.jpg');
                 writeFile('0_userdata.0','alarm4.jpg', bild4);
            }, 40000); 
        });
        
        

        Hier passiert folgendes:
        Wenn der Sonoff Datenpunkt auf true geht (trigger)
        wird ein Bild erstellt und zwei Echos angesprochen. (In deren Routine ist Klingelton hinterlegt.)
        5 Sekunden später das zweite Bild
        Beide Bilder werden per mail an zwei Empfänger versendet
        10 Sekunden später kommt das dritte Bild dran
        nochmal später dann Bild 4
        Die View wird für 60 Sekunden auf das Livebild geschaltet
        Alle 4 Bilder werden aus dem Ordner nach 0_userdata.0 kopiert damit ich sie in VIS nutzen kann.
        Und zusätzlich wird der Klingelknopf für 5 Sekunden gesperrt, weil durch Mehrfachdrücken das Script gestoppt wurde.

        Jetzt müsstest du dir die Schnipsel eigentlich rausnehmen können was du brauchst oder nicht benötigst.

        Ich muss bei meiner Kamera leider den wget Befehl verwenden weil scheinbar der "get" in Verbindung mit "writefile" nicht richtig funktioniert.
        Hier habe ich von LoxDUS ein wirklich schönes Script noch liegen das eleganter wäre.

        ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

        D3ltoroxpD 1 Antwort Letzte Antwort
        1
        • ChaotC Chaot

          @D3ltoroxp
          Hier mal mein ganzes Klingelscript

          var sperre = false;  //verhindert das doppeltes Drücken das Script stoppt
          var timeout1, timeout2, timeout3, timeout4, timeout5, timeout6;
          var fs = require('fs');
          
          
          on({id: 'sonoff.0.Eingang.POWER2', val: true}, function (obj) {
            if(!sperre) {
              sperre = true;
              setState("alexa2.0.Echo-Devices.G2A0P.Routines.11242dac-bf4b-4ab1-9521-37fdf5dae51d", true); //Klingelt auf Echo Theke
              setState("alexa2.0.Echo-Devices.G090LF.Routines.519a9af4-c186-4715-9e5d-cb4ac65c0c67", true); //Klingelt auf Dot Anrichte
              
              
              exec('wget --output-document /tuer/alarm1.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
              
              
              
              timeout1 = setTimeout(function () {
                exec('wget --output-document /tuer/alarm2.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
                
                timeout2 = setTimeout(function () {
                  
                  sendTo("email", "send", {
               text: '',
               to: '*****@gmail.com',
               subject: 'Klingel',
               attachments:[{path: '/tuer/alarm1.jpg', cid: "file1"},{path: '/tuer/alarm2.jpg', cid: "file2"},] });
                  sendTo("email", "send", {
               text: '',
               to: '*****@gmail.com',
               subject: 'Klingel',
               attachments:[{path: '/tuer/alarm1.jpg', cid: "file1"},{path: '/tuer/alarm2.jpg', cid: "file2"},] });
                
                }, 2500);
              }, 5000);
              
              timeout3 = setTimeout(function () {
                exec('wget --output-document /tuer/alarm3.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
              }, 10000);
             
             
              timeout4 = setTimeout(function () {
                exec('wget --output-document /tuer/alarm4.jpg \'http://192.168.8.95:8765/picture/1/current/?_username=*****&_signature=ba8317b8fc071dadb725d4d0d9dbf7e606acbf1e\'');
              }, 20000);
             
              }
          
               setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Tuer"}'); 
                     // oder
                     //setState("vis.0.control.instance", 'FFFFFFFF');
                     //setState("vis.0.control.data",     'DemoView');
                     //setState("vis.0.control.command",  'changeView'); // muss immer letzte sein
                     
                     // Setze View auf Kamerabild
                      timeout6 = setTimeout(function () {
                                setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Neu/Info"}');
                     }, 60000); // Nach 60 Sekunden, zeige wieder Start View
              
              timeout5 = setTimeout(function() {
                 sperre = false;
              }, 5000); //Zeit für Klingelsperre 1.Zeile
              timeout6 = setTimeout(function () {
                   const bild1 = fs.readFileSync('/tuer/alarm1.jpg');
                   writeFile('0_userdata.0','alarm1.jpg', bild1);
                   const bild2 = fs.readFileSync('/tuer/alarm2.jpg');
                   writeFile('0_userdata.0','alarm2.jpg', bild2);
                   const bild3 = fs.readFileSync('/tuer/alarm3.jpg');
                   writeFile('0_userdata.0','alarm3.jpg', bild3);
                   const bild4 = fs.readFileSync('/tuer/alarm4.jpg');
                   writeFile('0_userdata.0','alarm4.jpg', bild4);
              }, 40000); 
          });
          
          

          Hier passiert folgendes:
          Wenn der Sonoff Datenpunkt auf true geht (trigger)
          wird ein Bild erstellt und zwei Echos angesprochen. (In deren Routine ist Klingelton hinterlegt.)
          5 Sekunden später das zweite Bild
          Beide Bilder werden per mail an zwei Empfänger versendet
          10 Sekunden später kommt das dritte Bild dran
          nochmal später dann Bild 4
          Die View wird für 60 Sekunden auf das Livebild geschaltet
          Alle 4 Bilder werden aus dem Ordner nach 0_userdata.0 kopiert damit ich sie in VIS nutzen kann.
          Und zusätzlich wird der Klingelknopf für 5 Sekunden gesperrt, weil durch Mehrfachdrücken das Script gestoppt wurde.

          Jetzt müsstest du dir die Schnipsel eigentlich rausnehmen können was du brauchst oder nicht benötigst.

          Ich muss bei meiner Kamera leider den wget Befehl verwenden weil scheinbar der "get" in Verbindung mit "writefile" nicht richtig funktioniert.
          Hier habe ich von LoxDUS ein wirklich schönes Script noch liegen das eleganter wäre.

          D3ltoroxpD Offline
          D3ltoroxpD Offline
          D3ltoroxp
          schrieb am zuletzt editiert von
          #7

          @Chaot Vielen Dank. Ich versuch das aber mal mit Blockly, das ist für mich verständlicher und ich kann es nachvollziehen. Mit JS Scripten hab ich noch nichts am Hut. Vieles nur Bahnhof

          FredFF 1 Antwort Letzte Antwort
          0
          • D3ltoroxpD D3ltoroxp

            @Chaot Vielen Dank. Ich versuch das aber mal mit Blockly, das ist für mich verständlicher und ich kann es nachvollziehen. Mit JS Scripten hab ich noch nichts am Hut. Vieles nur Bahnhof

            FredFF Online
            FredFF Online
            FredF
            Most Active Forum Testing
            schrieb am zuletzt editiert von
            #8

            @D3ltoroxp sagte in Türklingel Video sichtbar bei DP Änderung true:

            Ich versuch das aber mal mit Blockly,

            So sieht es in Blockly aus:
            c1bb6185-4f89-413d-8516-4e9a459a0963-grafik.png

            D3ltoroxpD 1 Antwort Letzte Antwort
            1
            • FredFF FredF

              @D3ltoroxp sagte in Türklingel Video sichtbar bei DP Änderung true:

              Ich versuch das aber mal mit Blockly,

              So sieht es in Blockly aus:
              c1bb6185-4f89-413d-8516-4e9a459a0963-grafik.png

              D3ltoroxpD Offline
              D3ltoroxpD Offline
              D3ltoroxp
              schrieb am zuletzt editiert von D3ltoroxp
              #9

              @FredF 791e12b3-46ee-4235-8fec-6b1a44e9cf6d-image.png

              So hatte ich das gerade gebastelt, bevor du geschrieben hattest. Ich vergleiche mal.

              Genau gleich, ja super, dann hab ich das schon mal kapiert. Ich weiß das Script von @Chaot macht es eigentlich gleich, aber so weiß ich halt genau was gemacht wird und kann es abändern anpassen. Dann werd ich das gleich mal testen.

              Wo bekomme ich den die Instanz heraus ?

              @Chaot @FredF Ich danke euch vielmals, klappt nun wunderbar, zumindest wenn das Display an ist. Ich lass es aber auch anschalten wenn es aus ist, aber dann habe ich nur ein weißes Bild keinen LiveFeed, vllt muss ich da noch mit Verzögerung arbeiten. Aber ich bin auf dem richtigen weg dank euch. Vielen Dank !!

              1 Antwort Letzte Antwort
              0
              • D3ltoroxpD Offline
                D3ltoroxpD Offline
                D3ltoroxp
                schrieb am zuletzt editiert von
                #10

                Ich muss mich hier noch mal anhängen, also irgendwie will das nicht immer. Manchmal klappt es manchmal nicht.

                Ich habe so das Gefühl, wenn es klingelt, klappt es irgendwie nicht, wenn ich das dann teste um zu sehen ob es geht oder nicht klappt es. Keine Ahnung was das sein soll. Vllt die Zeiten dazwischen zu kurz ? Das Tablet ist an, das klappt, aber die View wird dann nicht aufgerufen.

                ChaotC 1 Antwort Letzte Antwort
                0
                • D3ltoroxpD D3ltoroxp

                  Ich muss mich hier noch mal anhängen, also irgendwie will das nicht immer. Manchmal klappt es manchmal nicht.

                  Ich habe so das Gefühl, wenn es klingelt, klappt es irgendwie nicht, wenn ich das dann teste um zu sehen ob es geht oder nicht klappt es. Keine Ahnung was das sein soll. Vllt die Zeiten dazwischen zu kurz ? Das Tablet ist an, das klappt, aber die View wird dann nicht aufgerufen.

                  ChaotC Offline
                  ChaotC Offline
                  Chaot
                  schrieb am zuletzt editiert von
                  #11

                  @D3ltoroxp In meinem Script ist noch eine Verzögerung drin die den Klingelknopf blockiert. Das erste Script wurde immer gestoppt wenn jemand den Klingelknopf zweimal gedrückt hat.
                  Ich kann das in Blockly nicht. Aber vielleicht findest du eine Möglichkeit den Ablauf als Loop auszuführen und erst wenn der Loop beenbdet ist wieder auf den Knopf zu reagieren.

                  ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                  D3ltoroxpD 1 Antwort Letzte Antwort
                  0
                  • ChaotC Chaot

                    @D3ltoroxp In meinem Script ist noch eine Verzögerung drin die den Klingelknopf blockiert. Das erste Script wurde immer gestoppt wenn jemand den Klingelknopf zweimal gedrückt hat.
                    Ich kann das in Blockly nicht. Aber vielleicht findest du eine Möglichkeit den Ablauf als Loop auszuführen und erst wenn der Loop beenbdet ist wieder auf den Knopf zu reagieren.

                    D3ltoroxpD Offline
                    D3ltoroxpD Offline
                    D3ltoroxp
                    schrieb am zuletzt editiert von
                    #12

                    @Chaot Also das Script lasse ich bei mir auf einen DP reagieren. Sobald der eben einmal true hat, startet das Script. Der Bildschirm geht auch immer an, nur eben die View nicht immer.

                    Auch wenn man da mehrmals klingelt, schaltet er ja nur wieder auf true um die View müsste dann ja dennoch zu sehen sein.

                    ChaotC 1 Antwort Letzte Antwort
                    0
                    • D3ltoroxpD D3ltoroxp

                      @Chaot Also das Script lasse ich bei mir auf einen DP reagieren. Sobald der eben einmal true hat, startet das Script. Der Bildschirm geht auch immer an, nur eben die View nicht immer.

                      Auch wenn man da mehrmals klingelt, schaltet er ja nur wieder auf true um die View müsste dann ja dennoch zu sehen sein.

                      ChaotC Offline
                      ChaotC Offline
                      Chaot
                      schrieb am zuletzt editiert von
                      #13

                      @D3ltoroxp Das war ja bei mir auch so. Der Datenpunkt geht auf true. Wenn der dann nochmals auf true geht stoppt das script.

                      ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                      D3ltoroxpD 1 Antwort Letzte Antwort
                      0
                      • ChaotC Chaot

                        @D3ltoroxp Das war ja bei mir auch so. Der Datenpunkt geht auf true. Wenn der dann nochmals auf true geht stoppt das script.

                        D3ltoroxpD Offline
                        D3ltoroxpD Offline
                        D3ltoroxp
                        schrieb am zuletzt editiert von
                        #14

                        @Chaot Hatte das bei mir probiert, also wenn ich dem DP erneut true verpasse, tut sich am Bildschirm nichts, sollte ich den Videofeed schon sehen.

                        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

                        589

                        Online

                        32.8k

                        Benutzer

                        82.8k

                        Themen

                        1.3m

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

                        • Du hast noch kein Konto? Registrieren

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