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. Русский
  3. ioBroker
  4. Скрипты
  5. ioBroker скрипты
  6. Голосовое управление

NEWS

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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    9
    1
    268

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

Голосовое управление

Geplant Angeheftet Gesperrt Verschoben ioBroker скрипты
20 Beiträge 4 Kommentatoren 5.5k Aufrufe
  • Ä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.
  • I Offline
    I Offline
    instalator
    schrieb am zuletzt editiert von
    #4

    @Vlad_k:

    Вставить в Static HTML в визе, <u>http://192.168.1.34:8087</u> -заменить на свой айпишник и можно без Tasker пользоваться… `
    не работает ни в одном браезере.

    В хроме на компе рабоатет, но постоянно запрашивает разрешение на использование микрофона.

    На телефоне вообще не реагирует.

    Да и придется тогда каждый раз сначала запускать браузер, ждать загрузки страницы потом только жать кнопку и говорить, не удобно и долго.

    Высокий уровень Децибел вреден для здоровья!

    http://blog.instalator.ru/

    1 Antwort Letzte Antwort
    0
    • aurodionovA Offline
      aurodionovA Offline
      aurodionov
      schrieb am zuletzt editiert von
      #5

      @Vlad_k:

      Вставить в Static HTML в визе, <u>http://192.168.1.34:8087</u> -заменить на свой айпишник и можно без Tasker пользоваться… `
      А что лежит в javascript.0.Voice.Command ? скрипт инсталятора из первого поста?
      3514_alexa2_keineahnung.log
      3514_alexa2_meike.log

      Пишу с пульта….

      1 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        Haus
        schrieb am zuletzt editiert von
        #6

        @aurodionov:

        @Vlad_k:

        Вставить в Static HTML в визе, <u>http://192.168.1.34:8087</u> -заменить на свой айпишник и можно без Tasker пользоваться… А что лежит в javascript.0.Voice.Command ? скрипт инсталятора из первого поста?
        Это скрипт инсталятора из первого поста создаёт переменную javascript.0.Voice.Command

        js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

        admin: 3.6.0

        javascript: 4.1.10

        web: 2.4.1 vis: 1.1.10

        cloud: 2.6.2

        Server: DELL FX170 / linux: Debian 9.5 Stretch

        Adapter: MegaD-2561, Mega-ES…

        1 Antwort Letzte Antwort
        0
        • I Offline
          I Offline
          instalator
          schrieb am zuletzt editiert von
          #7

          @aurodionov:

          @Vlad_k:

          Вставить в Static HTML в визе, <u>http://192.168.1.34:8087</u> -заменить на свой айпишник и можно без Tasker пользоваться… А что лежит в javascript.0.Voice.Command ? скрипт инсталятора из первого поста?

          Это переменная созданная так````
          createState('Voice.Command', '');

          Высокий уровень Децибел вреден для здоровья!

          http://blog.instalator.ru/

          1 Antwort Letzte Antwort
          0
          • aurodionovA Offline
            aurodionovA Offline
            aurodionov
            schrieb am zuletzt editiert von
            #8

            на мобильном работает распознавание, но скрипту похоже не передается

            да , на компе в хроме тоже работает распознование
            2858_screenshot__1461_.png
            2858_screenshot__1444_.png
            2858_screenshot__1411_.png
            2858_screenshot__1405__li.jpg
            2858_screenshot__1316_.png
            2858_screenshot__1218_.png
            2858_screenshot__1147_.png
            2858_screenshot__1147_.png
            2858_screenshot__1476__li.jpg

            Пишу с пульта….

            1 Antwort Letzte Antwort
            0
            • V Offline
              V Offline
              Vlad_k
              schrieb am zuletzt editiert von
              #9

              возможно без SimpleAPI адаптера не работает, через него рестфул организован как я понял, по поводу браузеров, я кроме хрома ни чем не пользуюсь, но предустановленные на телефонах и планшетах что у меня, все пашет, только графика ломается, поэтому сразу хром ставлю, с запросом на использование микрофона, можно справиться если не по айпи по ссылке ходить а например прописать название сайта и привязать к айпи, на локалхосте к примеру стоит один раз добавить разрешение и больше окошко невылазит…

              1 Antwort Letzte Antwort
              0
              • I Offline
                I Offline
                instalator
                schrieb am zuletzt editiert von
                #10

                @Vlad_k:

                возможно без SimpleAPI адаптера не работает, через него рестфул организован как я понял, по поводу браузеров, я кроме хрома ни чем не пользуюсь, но предустановленные на телефонах и планшетах что у меня, все пашет, только графика ломается, поэтому сразу хром ставлю, с запросом на использование микрофона, можно справиться если не по айпи по ссылке ходить а например прописать название сайта и привязать к айпи, на локалхосте к примеру стоит один раз добавить разрешение и больше окошко невылазит… `
                Вобщем добавил для пользования с компа. С телефона все таки через таскер намного удобнее, я добавил иконку на главный экран или есть возможность активировать по "встряхиванию" телефона (отключил так как были ложные срабатывания) и не надо браузеров запускать и ждать, нажал иконку сказал и тут же все включилось\выключилось и тд и тп. К тому же на таскере организована передача входящих вызовов, активация wifi по геоданным, передача уровня заряда телефона…..

                Высокий уровень Децибел вреден для здоровья!

                http://blog.instalator.ru/

                1 Antwort Letzte Antwort
                0
                • H Offline
                  H Offline
                  Haus
                  schrieb am zuletzt editiert von
                  #11

                  @aurodionov:

                  на мобильном работает распознавание, но скрипту похоже не передается

                  да , на компе в хроме тоже работает распознование `
                  if (voice == 'включить+свет'){ пропиши без + 'включить свет'

                  js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

                  admin: 3.6.0

                  javascript: 4.1.10

                  web: 2.4.1 vis: 1.1.10

                  cloud: 2.6.2

                  Server: DELL FX170 / linux: Debian 9.5 Stretch

                  Adapter: MegaD-2561, Mega-ES…

                  1 Antwort Letzte Antwort
                  0
                  • I Offline
                    I Offline
                    instalator
                    schrieb am zuletzt editiert von
                    #12

                    @Haus:

                    @aurodionov:

                    на мобильном работает распознавание, но скрипту похоже не передается

                    да , на компе в хроме тоже работает распознование if (voice == 'включить+свет'){ пропиши без + 'включить свет'
                    Это ничего не изменит, так как уже добавлено:

                     var voice = obj.newState.val.toLowerCase().toString().replace(/\ /g, "+");
                    

                    И с компа у мня работает этот скрипт, а вот на телефоне ни в одном браузере нет, даже не просит сказать фразу, вообще не реагирует на кнопку.

                    Высокий уровень Децибел вреден для здоровья!

                    http://blog.instalator.ru/

                    1 Antwort Letzte Antwort
                    0
                    • H Offline
                      H Offline
                      Haus
                      schrieb am zuletzt editiert von
                      #13

                      @instalator:

                      @Haus:

                      @aurodionov:

                      на мобильном работает распознавание, но скрипту похоже не передается

                      да , на компе в хроме тоже работает распознование if (voice == 'включить+свет'){ пропиши без + 'включить свет'
                      Это ничего не изменит, так как уже добавлено:

                       var voice = obj.newState.val.toLowerCase().toString().replace(/\ /g, "+");
                      

                      И с компа у мня работает этот скрипт, а вот на телефоне ни в одном браузере нет, даже не просит сказать фразу, вообще не реагирует на кнопку. `
                      У меня на телефоне всё работает в хроме, а вот твой скрипт начал выполнять действия когда убрал "+" :)

                      Даже пикает как окей гугл.

                      js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

                      admin: 3.6.0

                      javascript: 4.1.10

                      web: 2.4.1 vis: 1.1.10

                      cloud: 2.6.2

                      Server: DELL FX170 / linux: Debian 9.5 Stretch

                      Adapter: MegaD-2561, Mega-ES…

                      1 Antwort Letzte Antwort
                      0
                      • I Offline
                        I Offline
                        instalator
                        schrieb am zuletzt editiert von
                        #14

                        @Haus:

                        У меня на телефоне всё работает в хроме, а вот твой скрипт начал выполнять действия когда убрал "+" :) `
                        Это потому что таскер отдает с + вместо пробела, добавь строчку как я написал выше

                        Высокий уровень Децибел вреден для здоровья!

                        http://blog.instalator.ru/

                        1 Antwort Letzte Antwort
                        0
                        • H Offline
                          H Offline
                          Haus
                          schrieb am zuletzt editiert von
                          #15

                          @instalator:

                          @Haus:

                          У меня на телефоне всё работает в хроме, а вот твой скрипт начал выполнять действия когда убрал "+" :) Это потому что таскер отдает с + вместо пробела, добавь строчку как я написал выше
                          Строчку добавлю, спасибо. У тебя заработал в хроме?

                          P.S добавил строчку работает с "+".

                          js-controller: 1.5.7 / node.js: v8.15.1/ npm: 6.4.1

                          admin: 3.6.0

                          javascript: 4.1.10

                          web: 2.4.1 vis: 1.1.10

                          cloud: 2.6.2

                          Server: DELL FX170 / linux: Debian 9.5 Stretch

                          Adapter: MegaD-2561, Mega-ES…

                          1 Antwort Letzte Antwort
                          0
                          • I Offline
                            I Offline
                            instalator
                            schrieb am zuletzt editiert von
                            #16

                            @Haus:

                            @instalator:

                            @Haus:

                            У меня на телефоне всё работает в хроме, а вот твой скрипт начал выполнять действия когда убрал "+" :) Это потому что таскер отдает с + вместо пробела, добавь строчку как я написал выше
                            Строчку добавлю, спасибо. У тебя заработал в хроме? `
                            Я же говорю что на телефоне вообще не реагирует на кнопку, на компе работает. С телефона я пользуюсь таскером, и в браузере на телефоне мне эта функция не нужна.

                            Высокий уровень Децибел вреден для здоровья!

                            http://blog.instalator.ru/

                            1 Antwort Letzte Antwort
                            0
                            • V Offline
                              V Offline
                              Vlad_k
                              schrieb am zuletzt editiert von
                              #17

                              @Haus:

                              if (voice == 'включить+свет'){ пропиши без + 'включить свет' `
                              как по мне так лучше не сравнивать на полное совпадение по фразе, а искать вхождения подстроки в строке тогда можно построить более гибкую логику распознавания команд, под брокер пока не делал а в охабе у меня так:

                              if (command.contains("вет") && command.contains("спал") && command.contains("вкл")) {

                              sendCommand(Light_FF_Bed_Ceiling, "ON")

                              say(command)

                              }

                              1 Antwort Letzte Antwort
                              0
                              • I Offline
                                I Offline
                                instalator
                                schrieb am zuletzt editiert von
                                #18

                                @Vlad_k:

                                @Haus:

                                if (voice == 'включить+свет'){ пропиши без + 'включить свет' `
                                как по мне так лучше не сравнивать на полное совпадение по фразе, а искать вхождения подстроки в строке тогда можно построить более гибкую логику распознавания команд, под брокер пока не делал а в охабе у меня так:

                                if (command.contains("вет") && command.contains("спал") && command.contains("вкл")) {

                                sendCommand(Light_FF_Bed_Ceiling, "ON")

                                say(command)

                                } `
                                Я думал над этим, и хочу полностью переписать свой скрипт, думаю как сделать обучаемую систему, чтобы при новых командах можно было назначить действие… Хотя это уже нужен не скрипт а драйвер, чтобы было что то на подобии таблицы команд("синонимов") и действий.

                                А вообще в идеале прикрутить нейронку :)

                                Высокий уровень Децибел вреден для здоровья!

                                http://blog.instalator.ru/

                                1 Antwort Letzte Antwort
                                0
                                • V Offline
                                  V Offline
                                  Vlad_k
                                  schrieb am zuletzt editiert von
                                  #19

                                  @instalator:

                                  А вообще в идеале прикрутить нейронку :) `
                                  да не слишком жирно :D

                                  я вижу такую реализацию, массив многомерный:

                                  команды голосом–

                                  место- устройство-свойства-параметр-действие

                                  зал++++свет+++ яркость+++50%

                                  зал++++свет++++++++++++++++вкл

                                  зал++++свет++++++++++++++++выкл

                                  зал++++телек++громкость++30%

                                  функция проходит по таблице и возвращает вхождения по столбцам строкам в виде чисел, а на числа ставим уже обработчик...

                                  1 Antwort Letzte Antwort
                                  0
                                  • I Offline
                                    I Offline
                                    instalator
                                    schrieb am zuletzt editiert von
                                    #20

                                    Скрипт разросся, решил немного переписать и унифицировать.

                                    Часть моего скрипта второй итерации:

                                    ! ````
                                    /////////////Голосовое управление/////////////////////////////
                                    on({id: 'javascript.0.Voice.Command', change: 'any'}, function (obj) {
                                    var voice = obj.newState.val.toLowerCase();
                                    VoiceCommands (voice);
                                    });
                                    ! function VoiceCommands (voice){

                                    var SceneKodi     = getState('javascript.0.Scenes.Kodi').val;
                                    var SceneTV       = getState('javascript.0.Scenes.TV').val;
                                    var tempKitchen   = getState('mqtt.0.myhome.Kitchen.Temp_room').val;
                                    var tempBedroom   = getState('mqtt.0.myhome.Bedroom.Temp_room').val;
                                    var tempBathroom  = getState('mqtt.0.myhome.Bathroom.Temp_room').val;
                                    var tempin        = getState('mqtt.0.myhome.Bedroom.Temp_in').val;
                                    var Volume        = parseInt(getState('onkyo.0.master-volume').val, 10);
                                    var ttsVolume     = parseInt(getState('sayit.0.tts.volume').val, 10);
                                    
                                    var voiceArr =  voice.split('+');
                                    log('Вся переменная - ' + voice);
                                    log('Массив - '+ voiceArr);
                                    

                                    ! function found (cmd){
                                    cmd = String(cmd);
                                    if (~voice.indexOf(cmd)){
                                    return true;
                                    } else {
                                    return false;
                                    }
                                    }

                                    var FoundNum = function(voice){
                                    var num =parseInt(voice.replace(/\D+/, ''), 10);
                                    if (num !== isNaN){
                                    return num;
                                    } else {
                                    return false;
                                    }
                                    };
                                    /***************Регулировка громкости/////////////
                                    if ((found('тише') || found('тиши') || found('убавь') || found('кеша') || found('сделайте+же') || found('ты+же')) && !found('говор') && !found('оповещ') && !found('помещ')){
                                    if (FoundNum(voice) && found('на')){
                                    setState('onkyo.0.master-volume', Volume - FoundNum(voice));
                                    }
                                    else if (FoundNum(voice) && !found('на')){
                                    setState('onkyo.0.master-volume', FoundNum(voice));
                                    }
                                    else if (!FoundNum(voice)){
                                    setState('onkyo.0.master-volume', Volume - 3);
                                    }
                                    }

                                    if ((found('громче') || found('прибавь') || found('громк')) && !found('говор') && !found('оповещ') && !found('помещ')){
                                      if (FoundNum(voice) && found('на')){
                                        setState('onkyo.0.master-volume', Volume + FoundNum(voice));
                                      }
                                      else if (FoundNum(voice) && !found('на')){
                                        setState('onkyo.0.master-volume', FoundNum(voice));
                                      } 
                                      else if (!FoundNum(voice)){
                                        setState('onkyo.0.master-volume', Volume + 3);
                                      }
                                    }
                                    

                                    /Управление громкостью Sayit**/
                                    if (found('говор') || (found('оповещ') || found('помещ'))){ //помещения оповещени
                                    if (FoundNum(voice)){
                                    setState('sayit.0.tts.volume', FoundNum(voice));
                                    ttsVolume = getState('sayit.0.tts.volume').val;
                                    setState('sayit.0.tts.text', 'Громкость оповещения установлена на ' + ttsVolume+'.');
                                    }
                                    else {
                                    if (found('гром')){
                                    setState('sayit.0.tts.volume', ttsVolume+10);
                                    ttsVolume = getState('sayit.0.tts.volume').val;
                                    setState('sayit.0.tts.text', 'Громкость оповещения установлена на ' + ttsVolume+'.');
                                    }
                                    if (found('тише')){
                                    setState('sayit.0.tts.volume', ttsVolume-10);
                                    ttsVolume = getState('sayit.0.tts.volume').val;
                                    setState('sayit.0.tts.text', 'Громкость оповещения установлена на ' + ttsVolume+'.');
                                    }
                                    }
                                    }
                                    /Аквасторож************************/
                                    if (found('воду') || found('вода') || found('году') || found('лада')){
                                    if (found('закр') || found('выкл') || found('пере')){
                                    setState('mqtt.0.myhome.NRF.AquaStoroj.ButtonClose', '1');
                                    setState('sayit.0.tts.text', 'Вода перекрыта');
                                    }
                                    if (found('откр')){
                                    setState('mqtt.0.myhome.NRF.AquaStoroj.ButtonOpen', '1');
                                    setState('sayit.0.tts.text', 'Вода открыта');
                                    }
                                    }
                                    /Приточка*************/
                                    if (found('приточ') || found('проточ') || found('вентил')){
                                    var BedRoomMin = 70;
                                    var BedRoomMax = 131;
                                    var GuestRoomMin = 94;
                                    var GuestRoomMax = 163;
                                    if (found('спал')){
                                    if (FoundNum(voice) && FoundNum(voice) >= 0 && FoundNum(voice) <= 100){
                                    setState('mqtt.0.myhome.Bedroom.Servo', ((BedRoomMax - BedRoomMin) / 100) * FoundNum(voice) + BedRoomMin); //70+(*0.61)
                                    }
                                    if (found('откр')){
                                    setState('mqtt.0.myhome.Bedroom.Servo', BedRoomMax);
                                    }
                                    if (found('закр')){
                                    setState('mqtt.0.myhome.Bedroom.Servo', BedRoomMin);
                                    }
                                    }
                                    if (found('зал')){
                                    if (FoundNum(voice) && FoundNum(voice) >= 0 && FoundNum(voice) <= 100){
                                    setState('mqtt.0.myhome.Guestroom.Servo', ((GuestRoomMax - GuestRoomMin) / 100) * FoundNum(voice) + GuestRoomMin);
                                    }
                                    if (found('откр')){
                                    setState('mqtt.0.myhome.Guestroom.Servo', GuestRoomMax);
                                    }
                                    if (found('закр')){
                                    setState('mqtt.0.myhome.Guestroom.Servo', GuestRoomMin);
                                    }
                                    }
                                    }
                                    /*****************Освещение///////////////
                                    function Invert (id){
                                    if (!found('вкл') && !found('выкл')){
                                    IdVal = getState(id).val;
                                    if (IdVal === 1 || IdVal === '1'){
                                    setState(id, '0');
                                    } else {
                                    setState(id, '1');
                                    }
                                    } else {
                                    if (found('вкл')){
                                    setState(id, '1');
                                    }
                                    if (found('выкл')){
                                    setState(id, '0');
                                    }
                                    }
                                    }

                                    if (found('свет') || found('глазк')){
                                      if (found('спал')){
                                        if (found('глаз')){
                                          Invert ('mqtt.0.myhome.Lighting.BedRoom_Additional');
                                        } else {
                                          Invert ('mqtt.0.myhome.Lighting.BedRoom_Main');
                                        }
                                      }
                                      if (found('зал')){
                                        if (found('весь')){
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Additional');
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Main');
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Main2');
                                        }
                                        if (found('глаз')){
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Additional');
                                        }
                                        else {
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Main2');
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Main');
                                          Invert ('mqtt.0.myhome.Lighting.GuestRoom_Additional');
                                        }
                                      }
                                      if (found('кухн')){
                                        if (found('глаз')){
                                          Invert ('mqtt.0.myhome.Lighting.Kitchen_Additional');
                                        } else {
                                          Invert ('mqtt.0.myhome.Lighting.Kitchen_Main');
                                        }
                                      }
                                      if (found('ванн')){
                                        if (found('зерк')){
                                          Invert ('mqtt.0.myhome.Lighting.BathRoom_Additional');
                                        } else {
                                          Invert ('mqtt.0.myhome.Lighting.BathRoom_Main');
                                        }
                                      }
                                      if (found('кор') || found('при')){
                                          Invert ('mqtt.0.myhome.Lighting.Hall_Main');
                                      }
                                    }
                                    

                                    /******************************************************************/
                                    if ( found('домоф') || found('двер') ){
                                    var DomofonRing = getState('mqtt.0.myhome.Mother.DomofonRing').val;
                                    if ((DomofonRing === '1' || DomofonRing === 1)){
                                    setState('mqtt.0.myhome.Mother.DomofonOpen', '1');
                                    } else {
                                    setState('sayit.0.tts.text', 'Режим автооткрытия домофОна активирован! ');
                                    setState('javascript.0.Scenes.DomofonAutoOpen', '1');
                                    }
                                    if (found('откл') || found('выкл')){
                                    setState('sayit.0.tts.text', 'Режим автооткрытия домофОна отключен!');
                                    setState('javascript.0.Scenes.DomofonAutoOpen', '0');
                                    }
                                    }
                                    }

                                    
                                    Добавлено:
                                    
                                    Скрипт получился удобный, можно давать несколько команд УД в одном предложении.

                                    Высокий уровень Децибел вреден для здоровья!

                                    http://blog.instalator.ru/

                                    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

                                    600

                                    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