Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

Geplant Angeheftet Gesperrt Verschoben Tester
appdark-modeiqontrolresponsivevisvisualisierungvisualizationwidget
7.6k Beiträge 296 Kommentatoren 7.0m Aufrufe 201 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.bormannS s.bormann

    1.9.6 (2021-08-21)

    • (sbormann) Removed some unnecessary horizontal lines in dialog.
    • (sbormann) Added option to edit caption of STATE or LEVEL.
    • (sbormann) Enhanced ADDITIONAL_INFO list (you can go back to old style via option) and added optional columns.
    • (sbormann) Added some polyfils for older browsers.
    • (sbormann) Fixed a bug that prevented certain options from being applied correctly.

    .
    .
    .
    @dslraser sagte in Test Adapter iQontrol 1.9.x Vis:

    @s-bormann
    Ich habe mal meine Rasenmäher Datenpunkte in ein Widget gepackt. Kann man eigentlich die beiden oberen Linien weg bekommen ? Ich nutze keinen State, nur additionl Control und additional Info

    Screenshot_20210820-200409_Chrome.jpg

    sollte damit gelöst sein

    @emd sagte in Test Adapter iQontrol 1.9.x Vis:

    @s-bormann
    Iwie Suche ich falsch, aber ich finde den Punkt in den customs nicht... Sorry, bin erst jetzt dazu gekommen...

    Screenshot_2021-08-20-21-14-59-720_com.android.chrome.jpg

    Such ich falsch?

    MfG
    eMd

    Die Einstellung müsste jetzt auch in Admin 4 vorhanden sein.

    @muuulle sagte in Test Adapter iQontrol 1.9.x Vis:

    @s-bormann
    Moin,

    noch eine Anfrage. Ist geplant, Additional Infos auch halbieren zu können?

    Danke!

    Geht jetzt

    @jleg sagte in Test Adapter iQontrol 1.9.x Vis:

    @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

    Und jetzt hab' ich auch plötzlich "Dark mode" - aber ein "read-only"-Status-Bar sieht nun bissel verrutscht aus:

    Danke, Fix kommt

    wenn du schonmal dabei bist 😁 - gibt es evtl. eine Möglichkeit, das Label (hier „Level“) irgendwo festzulegen/zu überschreiben? Derzeit wird das wohl 1:1 aus dem DP genommen…

    Ist jetzt auch möglich:
    206eda17-3e2c-4e48-a63a-0cb19b06a5e1-image.png

    Ich hoffe, so langsam werden auch die Bugs, die sich durch die vielen Updates eingeschlichen haben immer weniger (sorry hierfür, natürlich teste ich alles bei mir - aber da es so viele unterschiedliche Installationen gibt ist es für mich unmöglich, in halbwegs akzeptabler Zeit alles nachzustellen oder vorherzusehen - aber ihr seid ja die perfekten Beta-Tester, danke Euch!)

    da_WoodyD Online
    da_WoodyD Online
    da_Woody
    schrieb am zuletzt editiert von
    #5869

    @s-bormann wie gesagt, wenn probs gibt, machen wir wieder eine sitzung! 🙂
    @dslraser deine sachen passen jetzt? ohne text...

    gruß vom Woody
    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

    M dslraserD 2 Antworten Letzte Antwort
    0
    • M meerkat

      Hi @kilasat,

      hier die beiden Javascripte. Als erstes die Datenpunkte hinzufügen und das Script einmal ausführen (1. Script), danach das 2. Script aktivieren und laufen lassen. Achso, natürlich noch die Werte (in beiden Scripts) anpassen, ich habe 2 von den Dingern laufen und da kannste alles für den 2. rausschmeißen.
      In der Json ist meine Sicht mit dem Gerät, die kannste importieren und auch auf deine Datenpunkte anpassen.

      /* Setze neue Datenpunkte für 
      *  - Wartungspunkt setzen pro Vacuum
      *  - Weitere Zonen einrichten, über script, da wenn der Adapter mal nicht mehr funktioniert die Werte nicht erneut ermittelt werden müssen
      *  - Warteschlange erzeugen, Standard reichte mir nicht
      *  - 
      */
      
      //Settings
      //Anzahl der Vacuum
      var countVacuum = ['mihome-vacuum.0', 'mihome-vacuum.1'];
      var channelRooms = '.rooms';
      var servicePoints = ['22250,32300','27950,25450']
      var addRrooms = [
          {
          'room' : ['Zone1','Zone2','Zone3'],
          'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
          }
          ]
      
      //Channel für alle Vacuum unter userdata anlegen
      setObject("0_userdata.0.vacuums", {
          common: {
              name: "Vacuums Zusatzpunkte"
          },
          type: "channel"
      });
      
      //Datenpunkte für ServicePoint und CleaningQueue pro Vacuum anlegen
      for (var v = 0; v < countVacuum.length; v++) {
          
          //Koordinaten des jeweiligen ServicPoints speichern
          if (servicePoints[v] != null){
              createState("0_userdata.0." + countVacuum[v] + ".servicepoint", servicePoints[v], false, {
                  name: "servicepoint",
                  desc: "coordinates of servicepoint",
                  type: "number",
                  role: "value",
                  unit: "",
                  read: false,
                  write: false
              });
          }
          
          //Eine erweiterte CleaningQueue anlegen, in der dann Zone und Segment herausgefiltert wird und nur der Name steht
          createState("0_userdata.0." + countVacuum[v] + ".cleaningQueue", "", false, {
              name: "cleaning queue",
              desc: "cleaning queue",
              type: "object",
              role: "info",
              unit: "",
              read: true,
              write: true
          });
          
          //Für die Ermittlung und anzeige des aktuellen Raumes, der gereinigt wird
          createState("0_userdata.0." + countVacuum[v] + ".currentRoom", "", false, {
              name: "current cleaning",
              desc: "current cleaning room or zone",
              type: "object",
              role: "info",
              unit: "",
              read: true,
              write: true
          });
      
          //Datenpunkt für den Button Servicepoint
          createState("0_userdata.0." + countVacuum[v] + ".goToService", false, false, {
              name: "goToService",
              desc: "going to ServicePointcleaning queue",
              type: "boolean",
              role: "button",
              unit: "",
              read: false,
              write: true
          });
          
          //Weitere Zonen anlegen
          if(addRrooms[v]!=null){
              for (var i = 0; i < addRrooms[v]['room'].length; i++) {
                  
                  setState(countVacuum[v] + channelRooms + ".addRoom", addRrooms[v]['datenpunkt'][i]);
                  var roomchannel = addRrooms[v]['datenpunkt'][i].toString();
                  roomchannel = roomchannel.replace("[", "");
                  roomchannel = roomchannel.replace("]", "");
                  roomchannel = roomchannel.split(",").join("_"); /*replaceAll(",", "_");*/
              
                  setState(countVacuum[v] + channelRooms + "." + roomchannel + ".roomFanPower", 103);
                  setState(countVacuum[v] + channelRooms +  "." + roomchannel + ".roomWaterBoxMode", 202);
              }
          }
      }
      
      
      //////////////////// Vacuum 1 //////////////////////
      //Die beim nach Hause schicken die Queue leeren
      on({id: 'mihome-vacuum.0.control.home', val: true}, function() {
         setState('mihome-vacuum.0.control.clearQueue', true);
      });
      
      //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
      on({id: 'mihome-vacuum.0.info.state'/*Vacuum state*/, val: 8}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', '');
      });
      
      //Den aktuell zu reinigenden Raum ermitteln
      on({id: 'mihome-vacuum.0.rooms.106001012191.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012191').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012206.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012206').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012207.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012207').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012208.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012208').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012209.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012209').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.106001012210.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012210').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.manual_23502_24895_25102_25995.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_23502_24895_25102_25995').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.manual_25235_29306_27535_30356.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_25235_29306_27535_30356').common.name);
      });
      on({id: 'mihome-vacuum.0.rooms.manual_27763_30413_29163_33013.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_27763_30413_29163_33013').common.name);
      });
      
      
      //Die Standard CleaningQueue anpassen
      on({id: 'mihome-vacuum.0.info.queue', change: 'any'}, function (obj) {
          var queue = obj.state.val
          var tmpCleaningQueue = "Next: ";
      
          if (queue.length != 0) {
              log(queue.length);
              queue.reverse();
              for (var i = 0; i < queue.length; i++){
                  tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                  if(i+1<queue.length){
                      tmpCleaningQueue+= ",";
                  }
              }
          }
          else {
              tmpCleaningQueue = "";
          }
      
          setState('0_userdata.0.mihome-vacuum.0.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
        
      });
      
      //Auf den Button goToServicepoint reagieren
      on({id: '0_userdata.0.mihome-vacuum.0.goToService'/*goToService*/, val: true}, function (obj) {
          var servicepoint = getState('0_userdata.0.mihome-vacuum.0.servicepoint'/*map index*/).val;
          setState('mihome-vacuum.0.control.goTo'/*Go to point*/,servicepoint);
      });
      
      
      //////////////////// Vacuum 2 //////////////////////
      //Die beim nach Hause schicken die Queue leeren
      on({id: 'mihome-vacuum.1.control.home', val: true}, function() {
         setState('mihome-vacuum.1.control.clearQueue', true);
      });
      
      //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
      on({id: 'mihome-vacuum.1.info.state'/*Vacuum state*/, val: 8}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', '');
      });
      
      //Den aktuell zu reinigenden Raum ermitteln
      on({id: 'mihome-vacuum.1.rooms.106001012200.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012200').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012201.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012201').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012202.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012202').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012203.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012203').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012205.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012205').common.name);
      });
      on({id: 'mihome-vacuum.1.rooms.106001012607.state'/*info*/, val: "clean Room"}, function() {
         setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012607').common.name);
      });
      
      //Die Standard CleaningQueue anpassen
      on({id: 'mihome-vacuum.1.info.queue', change: 'any'}, function (obj) {
          var queue = obj.state.val
          var tmpCleaningQueue = "Next ";
      
          if (queue.length != 0) {
              for (var i = 0; i < queue.length; i++){
                  tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                  if(i+1<queue.length){
                      tmpCleaningQueue+= ",";
                  }
              }
          }
          else {
              tmpCleaningQueue = "";
          }
      
          setState('0_userdata.0.mihome-vacuum.1.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
        
      });
      
      //Auf den Button goToServicepoint reagieren
      on({id: '0_userdata.0.mihome-vacuum.1.goToService'/*goToService*/, val: true}, function (obj) {
          var servicepoint = getState('0_userdata.0.mihome-vacuum.1.servicepoint'/*map index*/).val;
          setState('mihome-vacuum.1.control.goTo'/*Go to point*/,servicepoint);
      });
      

      2021-08-20_iqontrol_0_selected_views.json

      K Offline
      K Offline
      kilasat
      schrieb am zuletzt editiert von
      #5870

      @meerkat wir genau ermittelst du die Koordinaten?

      1 Antwort Letzte Antwort
      0
      • da_WoodyD da_Woody

        @s-bormann wie gesagt, wenn probs gibt, machen wir wieder eine sitzung! 🙂
        @dslraser deine sachen passen jetzt? ohne text...

        M Offline
        M Offline
        muuulle
        schrieb am zuletzt editiert von
        #5871

        @da_woody said in Test Adapter iQontrol 1.9.x Vis:

        @s-bormann wie gesagt, wenn probs gibt, machen wir wieder eine sitzung! 🙂
        @dslraser deine sachen passen jetzt? ohne text...

        Hier sieht es weitestgehend gut aus. Überschriften fehlen noch.

        s.bormannS 1 Antwort Letzte Antwort
        0
        • da_WoodyD da_Woody

          @s-bormann wie gesagt, wenn probs gibt, machen wir wieder eine sitzung! 🙂
          @dslraser deine sachen passen jetzt? ohne text...

          dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #5872

          @da_woody sagte in Test Adapter iQontrol 1.9.x Vis:

          deine sachen passen jetzt? ohne text...

          Sorry, ja, passt....👍

          1 Antwort Letzte Antwort
          0
          • M muuulle

            @da_woody said in Test Adapter iQontrol 1.9.x Vis:

            @s-bormann wie gesagt, wenn probs gibt, machen wir wieder eine sitzung! 🙂
            @dslraser deine sachen passen jetzt? ohne text...

            Hier sieht es weitestgehend gut aus. Überschriften fehlen noch.

            s.bormannS Offline
            s.bormannS Offline
            s.bormann
            Most Active
            schrieb am zuletzt editiert von
            #5873

            @muuulle sagte in Test Adapter iQontrol 1.9.x Vis:

            @da_woody said in Test Adapter iQontrol 1.9.x Vis:

            @s-bormann wie gesagt, wenn probs gibt, machen wir wieder eine sitzung! 🙂
            @dslraser deine sachen passen jetzt? ohne text...

            Hier sieht es weitestgehend gut aus. Überschriften fehlen noch.

            Schreib mich an, wenn Du Zeit hast, dann schauen wir.

            1 Antwort Letzte Antwort
            0
            • s.bormannS s.bormann

              @rookie50 sagte in Test Adapter iQontrol 1.7.x Vis:

              @da_woody Alexa-FB.pdf

              Hi Woody, ich habe eine kl. Anleitung geschrieben, wie ich es mit der Alexa FB in iQontrol gemacht habe. Sag mal bescheid, ob Du damit klar kommst.

              Gruß
              Rookie

              Sehr schöne Anleitung!
              Darf ich die im Wiki posten?
              LG

              da_WoodyD Online
              da_WoodyD Online
              da_Woody
              schrieb am zuletzt editiert von da_Woody
              #5874

              @s-bormann

              @rookie50 sagte in Test Adapter iQontrol 1.7.x Vis:

               @da_woody Alexa-FB.pdf
              
               Hi Woody, ich habe eine kl. Anleitung geschrieben, wie ich es mit der Alexa FB in iQontrol gemacht habe. Sag mal bescheid, ob Du damit klar kommst.
              
               Gruß
               Rookie
              

              Sehr schöne Anleitung!
              Darf ich die im Wiki posten?
              LG

              pöff. die umschaltung funktioniert bei mir überhaupt nicht mehr. auch komm ich mir der beschreibung unter admin5 überhaupt nicht mehr zurecht... 😞

              gruß vom Woody
              HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

              1 Antwort Letzte Antwort
              0
              • M meerkat

                Hi @kilasat,

                hier die beiden Javascripte. Als erstes die Datenpunkte hinzufügen und das Script einmal ausführen (1. Script), danach das 2. Script aktivieren und laufen lassen. Achso, natürlich noch die Werte (in beiden Scripts) anpassen, ich habe 2 von den Dingern laufen und da kannste alles für den 2. rausschmeißen.
                In der Json ist meine Sicht mit dem Gerät, die kannste importieren und auch auf deine Datenpunkte anpassen.

                /* Setze neue Datenpunkte für 
                *  - Wartungspunkt setzen pro Vacuum
                *  - Weitere Zonen einrichten, über script, da wenn der Adapter mal nicht mehr funktioniert die Werte nicht erneut ermittelt werden müssen
                *  - Warteschlange erzeugen, Standard reichte mir nicht
                *  - 
                */
                
                //Settings
                //Anzahl der Vacuum
                var countVacuum = ['mihome-vacuum.0', 'mihome-vacuum.1'];
                var channelRooms = '.rooms';
                var servicePoints = ['22250,32300','27950,25450']
                var addRrooms = [
                    {
                    'room' : ['Zone1','Zone2','Zone3'],
                    'datenpunkt' : [[25235,29306,27535,30356],[23502,24895,25102,25995],[27763,30413,29163,33013]]
                    }
                    ]
                
                //Channel für alle Vacuum unter userdata anlegen
                setObject("0_userdata.0.vacuums", {
                    common: {
                        name: "Vacuums Zusatzpunkte"
                    },
                    type: "channel"
                });
                
                //Datenpunkte für ServicePoint und CleaningQueue pro Vacuum anlegen
                for (var v = 0; v < countVacuum.length; v++) {
                    
                    //Koordinaten des jeweiligen ServicPoints speichern
                    if (servicePoints[v] != null){
                        createState("0_userdata.0." + countVacuum[v] + ".servicepoint", servicePoints[v], false, {
                            name: "servicepoint",
                            desc: "coordinates of servicepoint",
                            type: "number",
                            role: "value",
                            unit: "",
                            read: false,
                            write: false
                        });
                    }
                    
                    //Eine erweiterte CleaningQueue anlegen, in der dann Zone und Segment herausgefiltert wird und nur der Name steht
                    createState("0_userdata.0." + countVacuum[v] + ".cleaningQueue", "", false, {
                        name: "cleaning queue",
                        desc: "cleaning queue",
                        type: "object",
                        role: "info",
                        unit: "",
                        read: true,
                        write: true
                    });
                    
                    //Für die Ermittlung und anzeige des aktuellen Raumes, der gereinigt wird
                    createState("0_userdata.0." + countVacuum[v] + ".currentRoom", "", false, {
                        name: "current cleaning",
                        desc: "current cleaning room or zone",
                        type: "object",
                        role: "info",
                        unit: "",
                        read: true,
                        write: true
                    });
                
                    //Datenpunkt für den Button Servicepoint
                    createState("0_userdata.0." + countVacuum[v] + ".goToService", false, false, {
                        name: "goToService",
                        desc: "going to ServicePointcleaning queue",
                        type: "boolean",
                        role: "button",
                        unit: "",
                        read: false,
                        write: true
                    });
                    
                    //Weitere Zonen anlegen
                    if(addRrooms[v]!=null){
                        for (var i = 0; i < addRrooms[v]['room'].length; i++) {
                            
                            setState(countVacuum[v] + channelRooms + ".addRoom", addRrooms[v]['datenpunkt'][i]);
                            var roomchannel = addRrooms[v]['datenpunkt'][i].toString();
                            roomchannel = roomchannel.replace("[", "");
                            roomchannel = roomchannel.replace("]", "");
                            roomchannel = roomchannel.split(",").join("_"); /*replaceAll(",", "_");*/
                        
                            setState(countVacuum[v] + channelRooms + "." + roomchannel + ".roomFanPower", 103);
                            setState(countVacuum[v] + channelRooms +  "." + roomchannel + ".roomWaterBoxMode", 202);
                        }
                    }
                }
                
                
                //////////////////// Vacuum 1 //////////////////////
                //Die beim nach Hause schicken die Queue leeren
                on({id: 'mihome-vacuum.0.control.home', val: true}, function() {
                   setState('mihome-vacuum.0.control.clearQueue', true);
                });
                
                //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
                on({id: 'mihome-vacuum.0.info.state'/*Vacuum state*/, val: 8}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', '');
                });
                
                //Den aktuell zu reinigenden Raum ermitteln
                on({id: 'mihome-vacuum.0.rooms.106001012191.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012191').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.106001012206.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012206').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.106001012207.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012207').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.106001012208.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012208').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.106001012209.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012209').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.106001012210.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.106001012210').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.manual_23502_24895_25102_25995.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_23502_24895_25102_25995').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.manual_25235_29306_27535_30356.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_25235_29306_27535_30356').common.name);
                });
                on({id: 'mihome-vacuum.0.rooms.manual_27763_30413_29163_33013.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.0.currentRoom', getObject('mihome-vacuum.0.rooms.manual_27763_30413_29163_33013').common.name);
                });
                
                
                //Die Standard CleaningQueue anpassen
                on({id: 'mihome-vacuum.0.info.queue', change: 'any'}, function (obj) {
                    var queue = obj.state.val
                    var tmpCleaningQueue = "Next: ";
                
                    if (queue.length != 0) {
                        log(queue.length);
                        queue.reverse();
                        for (var i = 0; i < queue.length; i++){
                            tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                            if(i+1<queue.length){
                                tmpCleaningQueue+= ",";
                            }
                        }
                    }
                    else {
                        tmpCleaningQueue = "";
                    }
                
                    setState('0_userdata.0.mihome-vacuum.0.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
                  
                });
                
                //Auf den Button goToServicepoint reagieren
                on({id: '0_userdata.0.mihome-vacuum.0.goToService'/*goToService*/, val: true}, function (obj) {
                    var servicepoint = getState('0_userdata.0.mihome-vacuum.0.servicepoint'/*map index*/).val;
                    setState('mihome-vacuum.0.control.goTo'/*Go to point*/,servicepoint);
                });
                
                
                //////////////////// Vacuum 2 //////////////////////
                //Die beim nach Hause schicken die Queue leeren
                on({id: 'mihome-vacuum.1.control.home', val: true}, function() {
                   setState('mihome-vacuum.1.control.clearQueue', true);
                });
                
                //Die Queue der aktuellen Reinigung löschen wenn Vacuum in der Ladestation ist
                on({id: 'mihome-vacuum.1.info.state'/*Vacuum state*/, val: 8}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', '');
                });
                
                //Den aktuell zu reinigenden Raum ermitteln
                on({id: 'mihome-vacuum.1.rooms.106001012200.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012200').common.name);
                });
                on({id: 'mihome-vacuum.1.rooms.106001012201.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012201').common.name);
                });
                on({id: 'mihome-vacuum.1.rooms.106001012202.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012202').common.name);
                });
                on({id: 'mihome-vacuum.1.rooms.106001012203.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012203').common.name);
                });
                on({id: 'mihome-vacuum.1.rooms.106001012205.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012205').common.name);
                });
                on({id: 'mihome-vacuum.1.rooms.106001012607.state'/*info*/, val: "clean Room"}, function() {
                   setState('0_userdata.0.mihome-vacuum.1.currentRoom', getObject('mihome-vacuum.1.rooms.106001012607').common.name);
                });
                
                //Die Standard CleaningQueue anpassen
                on({id: 'mihome-vacuum.1.info.queue', change: 'any'}, function (obj) {
                    var queue = obj.state.val
                    var tmpCleaningQueue = "Next ";
                
                    if (queue.length != 0) {
                        for (var i = 0; i < queue.length; i++){
                            tmpCleaningQueue += queue[i].replace("segment", "").replace("zone", "");
                            if(i+1<queue.length){
                                tmpCleaningQueue+= ",";
                            }
                        }
                    }
                    else {
                        tmpCleaningQueue = "";
                    }
                
                    setState('0_userdata.0.mihome-vacuum.1.cleaningQueue'/*cleaning queue*/, tmpCleaningQueue)
                  
                });
                
                //Auf den Button goToServicepoint reagieren
                on({id: '0_userdata.0.mihome-vacuum.1.goToService'/*goToService*/, val: true}, function (obj) {
                    var servicepoint = getState('0_userdata.0.mihome-vacuum.1.servicepoint'/*map index*/).val;
                    setState('mihome-vacuum.1.control.goTo'/*Go to point*/,servicepoint);
                });
                

                2021-08-20_iqontrol_0_selected_views.json

                K Offline
                K Offline
                kilasat
                schrieb am zuletzt editiert von
                #5875

                @meerkat

                Hi Meerkat,

                Danke noch für die Scripe und die JSON. Ich habe noch ein paar Fragen dazu. Soll ich das hier im Thread behandeln oder dich direkt anfragen?

                Danke und Gruss
                Alex

                da_WoodyD M 2 Antworten Letzte Antwort
                0
                • K kilasat

                  @meerkat

                  Hi Meerkat,

                  Danke noch für die Scripe und die JSON. Ich habe noch ein paar Fragen dazu. Soll ich das hier im Thread behandeln oder dich direkt anfragen?

                  Danke und Gruss
                  Alex

                  da_WoodyD Online
                  da_WoodyD Online
                  da_Woody
                  schrieb am zuletzt editiert von
                  #5876

                  @kilasat das ist immer so eine sache. die postingzahl ist schon hardcore. allerdings könntest du einen eigenen fred aufmachen. kann ja anderen auch helfen. chats helfen nur dir... 🙂

                  gruß vom Woody
                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                  1 Antwort Letzte Antwort
                  2
                  • K kilasat

                    @meerkat

                    Hi Meerkat,

                    Danke noch für die Scripe und die JSON. Ich habe noch ein paar Fragen dazu. Soll ich das hier im Thread behandeln oder dich direkt anfragen?

                    Danke und Gruss
                    Alex

                    M Offline
                    M Offline
                    meerkat
                    schrieb am zuletzt editiert von
                    #5877

                    @kilasat
                    Ich stimme da @da_Woody zu. Entweder in diesem thread oder einen neuen anlegen. Würde mir dann bei ähnlichen Fragen auch helfen und es vereinfachen.

                    Gruß

                    1 Antwort Letzte Antwort
                    2
                    • B Offline
                      B Offline
                      BenGreenHigh
                      schrieb am zuletzt editiert von
                      #5878

                      @s-bormann Ich komme damit einfach nicht weiter. Zum Testen hab ich einen DP angelegt. Nehme ich eines der beiden Homematic-Thermostate, passiert im DP nichts. Ändere ich den DP manuell, wird die Änderung in der Vis korrekt angezeigt. Nehme ich das normale Thermostat, funktioniert die Änderung im DP nur mit den Einstellungen "string" und "state".

                      Warum ist im normalen Thermostat nur die Darstellung als Pulldown-Menü möglich?

                      Bis zur Version 1.9.0 hat die Steuerung mit dem Homematic-Thermostat problemlos funktioniert. Was hat sich dort geändert?

                      Was für Befehle und Einstellungen braucht man für die beiden Homematic-Thermostate?

                      LG

                      s.bormannS 1 Antwort Letzte Antwort
                      0
                      • dslraserD Offline
                        dslraserD Offline
                        dslraser
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von dslraser
                        #5879

                        @s-bormann
                        Frage: bei den remote channels in der Fernbedienung lassen sich die Namen ausblenden

                        Bildschirmfoto 2021-08-23 um 20.42.43.png

                        Ginge das auch bei den additional control im widget ?
                        Ich habe mal Testweise meine Rollos in ein Widget gepackt, da ist dann quasi die "Unterüberschrift", also bei hoch / runter / stopp "doppelt" bzw. über, da würde die Beschriftung auf dem Button reichen.
                        Also nicht generell entfernen, aber vielleicht als Option mit einem Haken setzen ?

                        Bildschirmfoto 2021-08-23 um 20.46.17.png

                        s.bormannS 1 Antwort Letzte Antwort
                        0
                        • dslraserD dslraser

                          @s-bormann
                          Frage: bei den remote channels in der Fernbedienung lassen sich die Namen ausblenden

                          Bildschirmfoto 2021-08-23 um 20.42.43.png

                          Ginge das auch bei den additional control im widget ?
                          Ich habe mal Testweise meine Rollos in ein Widget gepackt, da ist dann quasi die "Unterüberschrift", also bei hoch / runter / stopp "doppelt" bzw. über, da würde die Beschriftung auf dem Button reichen.
                          Also nicht generell entfernen, aber vielleicht als Option mit einem Haken setzen ?

                          Bildschirmfoto 2021-08-23 um 20.46.17.png

                          s.bormannS Offline
                          s.bormannS Offline
                          s.bormann
                          Most Active
                          schrieb am zuletzt editiert von
                          #5880

                          @dslraser sagte in Test Adapter iQontrol 1.9.x Vis:

                          @s-bormann
                          Frage: bei den remote channels in der Fernbedienung lassen sich die Namen ausblenden

                          Bildschirmfoto 2021-08-23 um 20.42.43.png

                          Ginge das auch bei den additional control im widget ?
                          Ich habe mal Testweise meine Rollos in ein Widget gepackt, da ist dann quasi die "Unterüberschrift", also bei hoch / runter / stopp "doppelt" bzw. über, da würde die Beschriftung auf dem Button reichen.
                          Also nicht generell entfernen, aber vielleicht als Option mit einem Haken setzen ?

                          Bildschirmfoto 2021-08-23 um 20.46.17.png

                          Das geht schon, in den Optionen für ADDITIONAL_CONTROLS gibt es das (also nicht in der Tabelle, sondern in den globalen Optionen, die Namen für Buttons auszublenden)

                          M dslraserD 2 Antworten Letzte Antwort
                          0
                          • s.bormannS s.bormann

                            @dslraser sagte in Test Adapter iQontrol 1.9.x Vis:

                            @s-bormann
                            Frage: bei den remote channels in der Fernbedienung lassen sich die Namen ausblenden

                            Bildschirmfoto 2021-08-23 um 20.42.43.png

                            Ginge das auch bei den additional control im widget ?
                            Ich habe mal Testweise meine Rollos in ein Widget gepackt, da ist dann quasi die "Unterüberschrift", also bei hoch / runter / stopp "doppelt" bzw. über, da würde die Beschriftung auf dem Button reichen.
                            Also nicht generell entfernen, aber vielleicht als Option mit einem Haken setzen ?

                            Bildschirmfoto 2021-08-23 um 20.46.17.png

                            Das geht schon, in den Optionen für ADDITIONAL_CONTROLS gibt es das (also nicht in der Tabelle, sondern in den globalen Optionen, die Namen für Buttons auszublenden)

                            M Offline
                            M Offline
                            muuulle
                            schrieb am zuletzt editiert von
                            #5881

                            @s-bormann
                            Besten Dank für den Dark Mode. Hier mein Strand der Dinge, ein bisschen Liebe muss aber noch investiert werden 😊

                            Normal
                            PNG-Bild.png

                            Dark Mode
                            PNG-Bild Dark Mode.png

                            da_WoodyD N 2 Antworten Letzte Antwort
                            1
                            • s.bormannS s.bormann

                              @dslraser sagte in Test Adapter iQontrol 1.9.x Vis:

                              @s-bormann
                              Frage: bei den remote channels in der Fernbedienung lassen sich die Namen ausblenden

                              Bildschirmfoto 2021-08-23 um 20.42.43.png

                              Ginge das auch bei den additional control im widget ?
                              Ich habe mal Testweise meine Rollos in ein Widget gepackt, da ist dann quasi die "Unterüberschrift", also bei hoch / runter / stopp "doppelt" bzw. über, da würde die Beschriftung auf dem Button reichen.
                              Also nicht generell entfernen, aber vielleicht als Option mit einem Haken setzen ?

                              Bildschirmfoto 2021-08-23 um 20.46.17.png

                              Das geht schon, in den Optionen für ADDITIONAL_CONTROLS gibt es das (also nicht in der Tabelle, sondern in den globalen Optionen, die Namen für Buttons auszublenden)

                              dslraserD Offline
                              dslraserD Offline
                              dslraser
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #5882

                              @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

                              Das geht schon, in den Optionen für ADDITIONAL_CONTROLS gibt es das (also nicht in der Tabelle, sondern in den globalen Optionen, die Namen für Buttons auszublenden)

                              Meinst Du das ? (ganz unten)

                              Screenshot_20210823-213913_Chrome.jpg

                              Das ändert aber nichts ?

                              s.bormannS 1 Antwort Letzte Antwort
                              0
                              • M muuulle

                                @s-bormann
                                Besten Dank für den Dark Mode. Hier mein Strand der Dinge, ein bisschen Liebe muss aber noch investiert werden 😊

                                Normal
                                PNG-Bild.png

                                Dark Mode
                                PNG-Bild Dark Mode.png

                                da_WoodyD Online
                                da_WoodyD Online
                                da_Woody
                                schrieb am zuletzt editiert von
                                #5883

                                @muuulle naja, dafür freie einstellungen! besser, als nur einen filter drüberlegen...
                                bei der session gestern ist uns auf gefallen, daß das problem mit der jetzigen version, nicht auffällt.
                                mein widget passt nur so rein. drum ist unten grösserer abstand.
                                098f0dee-0e16-4bbe-b35e-f1302ab9affd-grafik.png
                                bei der ersten version, hatte ich dort eine graue fläche...

                                gruß vom Woody
                                HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                M 1 Antwort Letzte Antwort
                                0
                                • da_WoodyD da_Woody

                                  @muuulle naja, dafür freie einstellungen! besser, als nur einen filter drüberlegen...
                                  bei der session gestern ist uns auf gefallen, daß das problem mit der jetzigen version, nicht auffällt.
                                  mein widget passt nur so rein. drum ist unten grösserer abstand.
                                  098f0dee-0e16-4bbe-b35e-f1302ab9affd-grafik.png
                                  bei der ersten version, hatte ich dort eine graue fläche...

                                  M Offline
                                  M Offline
                                  muuulle
                                  schrieb am zuletzt editiert von
                                  #5884

                                  @da_woody
                                  Ein allgemeiner Überzug ist deutlich uncharmanter als die jetzige Variante! Ich muss allerdings noch an den Farben drehen - vor allem bei den Schriftfarben 🤔

                                  da_WoodyD 1 Antwort Letzte Antwort
                                  0
                                  • M muuulle

                                    @da_woody
                                    Ein allgemeiner Überzug ist deutlich uncharmanter als die jetzige Variante! Ich muss allerdings noch an den Farben drehen - vor allem bei den Schriftfarben 🤔

                                    da_WoodyD Online
                                    da_WoodyD Online
                                    da_Woody
                                    schrieb am zuletzt editiert von
                                    #5885

                                    @muuulle as u say! klar, das es jetzt mehr arbeit ist. 🙂 darum benutz ich den dark gar nicht... noe.png

                                    gruß vom Woody
                                    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                    1 Antwort Letzte Antwort
                                    0
                                    • dslraserD dslraser

                                      @s-bormann sagte in Test Adapter iQontrol 1.9.x Vis:

                                      Das geht schon, in den Optionen für ADDITIONAL_CONTROLS gibt es das (also nicht in der Tabelle, sondern in den globalen Optionen, die Namen für Buttons auszublenden)

                                      Meinst Du das ? (ganz unten)

                                      Screenshot_20210823-213913_Chrome.jpg

                                      Das ändert aber nichts ?

                                      s.bormannS Offline
                                      s.bormannS Offline
                                      s.bormann
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #5886

                                      @dslraser Ja genau, ich habe aber gerade gesehen, dass ich das nur für die Art "Knopf" implementiert hatte, nicht für "abhängig vom Datenpunkt" oder "schreibgeschützt":
                                      d9703462-4a55-4dd4-856a-9bf64a7be79b-image.png

                                      In der aktuellen Github-Version habe ich das korrigiert. Danke für den Hinweis.

                                      dslraserD 1 Antwort Letzte Antwort
                                      1
                                      • C Cino

                                        Mir ist gerade aufgefallen das ich einige View nicht mehr aufrufen kann.

                                        Sie sind in der Toolbar zum anwählen vorhanden. Beim draufklicken passiert nichts. Auf dem Handy werden beim swipen diese Ansichten dann übersprungen. Zudem ist ein Grafana Diagramm und 2 Cam Streams blank.

                                        Die Ansichten sind vorhanden, unter Toolbar auch verknüft. Die Ansichten mit den Geräten lassen sich auch bearbeiten.

                                        s.bormannS Offline
                                        s.bormannS Offline
                                        s.bormann
                                        Most Active
                                        schrieb am zuletzt editiert von
                                        #5887

                                        @cino sagte in Test Adapter iQontrol 1.9.x Vis:

                                        Mir ist gerade aufgefallen das ich einige View nicht mehr aufrufen kann.

                                        Sie sind in der Toolbar zum anwählen vorhanden. Beim draufklicken passiert nichts. Auf dem Handy werden beim swipen diese Ansichten dann übersprungen. Zudem ist ein Grafana Diagramm und 2 Cam Streams blank.

                                        Die Ansichten sind vorhanden, unter Toolbar auch verknüft. Die Ansichten mit den Geräten lassen sich auch bearbeiten.

                                        Hallo,

                                        bitte die folgenden Schritte durchführen. Bei weiteren Problemen bitte vor allem den 2. Absatz beachten, hier wird beschrieben, wie man ein Log des Fehlers erzeugt und welche Screenshots für die weitere Analyse notwendig sind:

                                        https://github.com/sbormann/ioBroker.iqontrol#troubleshooting

                                        Vielen Dank!

                                        1 Antwort Letzte Antwort
                                        0
                                        • B BenGreenHigh

                                          @s-bormann Ich komme damit einfach nicht weiter. Zum Testen hab ich einen DP angelegt. Nehme ich eines der beiden Homematic-Thermostate, passiert im DP nichts. Ändere ich den DP manuell, wird die Änderung in der Vis korrekt angezeigt. Nehme ich das normale Thermostat, funktioniert die Änderung im DP nur mit den Einstellungen "string" und "state".

                                          Warum ist im normalen Thermostat nur die Darstellung als Pulldown-Menü möglich?

                                          Bis zur Version 1.9.0 hat die Steuerung mit dem Homematic-Thermostat problemlos funktioniert. Was hat sich dort geändert?

                                          Was für Befehle und Einstellungen braucht man für die beiden Homematic-Thermostate?

                                          LG

                                          s.bormannS Offline
                                          s.bormannS Offline
                                          s.bormann
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #5888

                                          @bengreenhigh sagte in Test Adapter iQontrol 1.9.x Vis:

                                          @s-bormann Ich komme damit einfach nicht weiter. Zum Testen hab ich einen DP angelegt. Nehme ich eines der beiden Homematic-Thermostate, passiert im DP nichts. Ändere ich den DP manuell, wird die Änderung in der Vis korrekt angezeigt. Nehme ich das normale Thermostat, funktioniert die Änderung im DP nur mit den Einstellungen "string" und "state".

                                          Warum ist im normalen Thermostat nur die Darstellung als Pulldown-Menü möglich?

                                          Bis zur Version 1.9.0 hat die Steuerung mit dem Homematic-Thermostat problemlos funktioniert. Was hat sich dort geändert?

                                          Was für Befehle und Einstellungen braucht man für die beiden Homematic-Thermostate?

                                          LG

                                          Hi,
                                          hab gerade noch mal in den Code geschaut. Die Homematic-Thermostate (nicht IP! Da ist es wieder anders) senden ihre Auswahl nicht an den Datenpunkt selbst, sondern an .BOOST_MODE, .MANU_MODE und .AUTO_MODE.

                                          Erstelle mal bitte den Datenpunkt .CONTROL_MODE mit folgenden Einstellungen:

                                          {
                                            "type": "state",
                                            "common": {
                                              "name": "Heizungssteuerung Wohnzimmer - Sollwert.CONTROL_MODE",
                                              "def": 0,
                                              "type": "number",
                                              "read": true,
                                              "write": false,
                                              "min": 0,
                                              "max": 3,
                                              "states": {
                                                "0": "AUTO-MODE",
                                                "1": "MANU-MODE",
                                                "2": "PARTY-MODE",
                                                "3": "BOOST-MODE"
                                              },
                                              "role": "indicator"
                                            },
                                            "native":  {}
                                          }
                                          

                                          und die oben genannen drei Datenpunkte im gleichen Verzeichnis mit

                                          {
                                            "common": {
                                              "name": "Test.Testbool",
                                              "role": "button",
                                              "type": "boolean",
                                              "desc": "Manuell erzeugt",
                                              "def": "",
                                              "read": true,
                                              "write": true
                                            },
                                            "native": {}
                                          }
                                          

                                          Und diese drei Datenpunkte müsstest Du dann mit einem Blockly abgreifen und entsprechend die gewünschten Funktionen ausführen lassen.

                                          B 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

                                          328

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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