Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Vorhandene Vis Projekte bzw. Vis Views auslesen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Vorhandene Vis Projekte bzw. Vis Views auslesen

Scheduled Pinned Locked Moved Entwicklung
visentwicklung
9 Posts 3 Posters 684 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • PeoplesP Offline
    PeoplesP Offline
    Peoples
    wrote on last edited by
    #1

    Hi,

    ich möchte mich gerne auch mal mit dem Entwurf eines Adapters beschäftigen und habe dazu gleich eine Frage:
    Gibt es auf Adapterebene eine Variable, ein Array o.Ä in dem die vorhandenen Vis-Views / Vis-Projekte vorhanden/aufgelistet sind? Sollte es doch geben da ja im Editor auch irgendwie die Liste generiert wird?

    Dass die Views generell in der Datei iobroker-data/files/vis.0/PROJEKT/vis-views.json habe ich von Meistertr erfahren, nur frage ich mich ob es wirklich nötig ist diese Json auszuwerten oder ob die Vis-Infos evtl. schon irgendwo vorhanden sind.

    Ich beantworte keine Fragen zu Themen via PN

    GlasfaserG OliverIOO 2 Replies Last reply
    0
    • PeoplesP Peoples

      Hi,

      ich möchte mich gerne auch mal mit dem Entwurf eines Adapters beschäftigen und habe dazu gleich eine Frage:
      Gibt es auf Adapterebene eine Variable, ein Array o.Ä in dem die vorhandenen Vis-Views / Vis-Projekte vorhanden/aufgelistet sind? Sollte es doch geben da ja im Editor auch irgendwie die Liste generiert wird?

      Dass die Views generell in der Datei iobroker-data/files/vis.0/PROJEKT/vis-views.json habe ich von Meistertr erfahren, nur frage ich mich ob es wirklich nötig ist diese Json auszuwerten oder ob die Vis-Infos evtl. schon irgendwo vorhanden sind.

      GlasfaserG Offline
      GlasfaserG Offline
      Glasfaser
      wrote on last edited by Glasfaser
      #2

      @Peoples sagte in Vorhandene Vis Projekte bzw. Vis Views auslesen:

      Gibt es auf Adapterebene eine Variable,

      Es gibt ein Datenpunkt vis.0.datapoints der diese auflistet ....

      ... aber wie du in meinem Scrennshot siehst , sind dort sehr viele Leichen drin .. also nicht gerade zuverlässig.

      1.JPG

      da ja im Editor auch irgendwie die Liste generiert wird?

      der vis Adapter selber liest das Verzeichnis aus und Werte es aus .

      siehe main.js ab Zeile 149

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      PeoplesP 2 Replies Last reply
      0
      • GlasfaserG Glasfaser

        @Peoples sagte in Vorhandene Vis Projekte bzw. Vis Views auslesen:

        Gibt es auf Adapterebene eine Variable,

        Es gibt ein Datenpunkt vis.0.datapoints der diese auflistet ....

        ... aber wie du in meinem Scrennshot siehst , sind dort sehr viele Leichen drin .. also nicht gerade zuverlässig.

        1.JPG

        da ja im Editor auch irgendwie die Liste generiert wird?

        der vis Adapter selber liest das Verzeichnis aus und Werte es aus .

        siehe main.js ab Zeile 149

        PeoplesP Offline
        PeoplesP Offline
        Peoples
        wrote on last edited by
        #3

        @Glasfaser
        Tausend Dank, dann werde ich das ähnlich probieren

        Ich beantworte keine Fragen zu Themen via PN

        1 Reply Last reply
        1
        • GlasfaserG Glasfaser

          @Peoples sagte in Vorhandene Vis Projekte bzw. Vis Views auslesen:

          Gibt es auf Adapterebene eine Variable,

          Es gibt ein Datenpunkt vis.0.datapoints der diese auflistet ....

          ... aber wie du in meinem Scrennshot siehst , sind dort sehr viele Leichen drin .. also nicht gerade zuverlässig.

          1.JPG

          da ja im Editor auch irgendwie die Liste generiert wird?

          der vis Adapter selber liest das Verzeichnis aus und Werte es aus .

          siehe main.js ab Zeile 149

          PeoplesP Offline
          PeoplesP Offline
          Peoples
          wrote on last edited by
          #4

          @Glasfaser
          Da ich mich mit dem ganzen Adapterthema das erste mal auseinander setze und alles andere als ein Programmierer bin, möchte ich gleich noch eine weitere "dumme" Frage hinterherschieben:

          Angenommen ich möchte in der Adminoberfläche meines Adapters ein Select mit den dynamisch erstellten Werten der vorhandenen Projekte (Wandtablet, main,...).

          Ich könnte das ja so (in der main.js?) erstellen:

          let projectSelect = '<select id="land" class="value">';
          fs.readdir(dirPath, (err, files) => { 
            if (err) 
              adapter.log.info(err); 
            else { 
              files.forEach(file => { 
                  let isDirExists = fs.existsSync(dirPath + file) && fs.lstatSync(dirPath + file).isDirectory();
                  if(isDirExists === true){
                      if(fs.existsSync(dirPath + file + viewsJsonFile)){
                          projectSelect += '<option value="'+file+'" class="translate">'+file+'</option>';
                      }
                  }
              }) 
            } 
          }) 
          projectSelect += '</select>'
          

          Aber wie ich das in der index_m.html dann so:

          <div class="input-field col s10 m4">
               <select id="visProjects" class="value">
                     <option value="Wandtablet" class="translate">Wandtablet</option>
                     <option value="main" class="translate">main</option>
                </select>
                <label  class="translate" for="visProject">Select your Project</label>
          </div>
          

          darstellen kann ist mir völlig unklar.

          Ich verstehe nicht wie bspw. ein "Platzhalter" in index_m.html durch den ausgewerteten Inhalt getauscht wird. Sprich wie ich die Bedienoberfläche des Adapters mit den dynamischen Werten verbinde.

          Ich bin auch der Meinung dass ich wirklich gesucht habe, nur etwas das mir Hilft zu verstehen habe ich nicht gefunden.
          Sorry für die wahrscheinlich banalen Fragen, vieleicht sollte ich doch die Finger von den Adatern lassen :grin:

          Ich beantworte keine Fragen zu Themen via PN

          GlasfaserG 1 Reply Last reply
          0
          • PeoplesP Peoples

            @Glasfaser
            Da ich mich mit dem ganzen Adapterthema das erste mal auseinander setze und alles andere als ein Programmierer bin, möchte ich gleich noch eine weitere "dumme" Frage hinterherschieben:

            Angenommen ich möchte in der Adminoberfläche meines Adapters ein Select mit den dynamisch erstellten Werten der vorhandenen Projekte (Wandtablet, main,...).

            Ich könnte das ja so (in der main.js?) erstellen:

            let projectSelect = '<select id="land" class="value">';
            fs.readdir(dirPath, (err, files) => { 
              if (err) 
                adapter.log.info(err); 
              else { 
                files.forEach(file => { 
                    let isDirExists = fs.existsSync(dirPath + file) && fs.lstatSync(dirPath + file).isDirectory();
                    if(isDirExists === true){
                        if(fs.existsSync(dirPath + file + viewsJsonFile)){
                            projectSelect += '<option value="'+file+'" class="translate">'+file+'</option>';
                        }
                    }
                }) 
              } 
            }) 
            projectSelect += '</select>'
            

            Aber wie ich das in der index_m.html dann so:

            <div class="input-field col s10 m4">
                 <select id="visProjects" class="value">
                       <option value="Wandtablet" class="translate">Wandtablet</option>
                       <option value="main" class="translate">main</option>
                  </select>
                  <label  class="translate" for="visProject">Select your Project</label>
            </div>
            

            darstellen kann ist mir völlig unklar.

            Ich verstehe nicht wie bspw. ein "Platzhalter" in index_m.html durch den ausgewerteten Inhalt getauscht wird. Sprich wie ich die Bedienoberfläche des Adapters mit den dynamischen Werten verbinde.

            Ich bin auch der Meinung dass ich wirklich gesucht habe, nur etwas das mir Hilft zu verstehen habe ich nicht gefunden.
            Sorry für die wahrscheinlich banalen Fragen, vieleicht sollte ich doch die Finger von den Adatern lassen :grin:

            GlasfaserG Offline
            GlasfaserG Offline
            Glasfaser
            wrote on last edited by
            #5

            @Peoples

            Würde dir sehr gerne helfen ... aber das Thema Adapter Programmieren habe ist selber noch nicht gemacht .

            Ich denke mal , da würde bestimmt @Jey-Cee oder @apollon77 dir helfen können .

            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

            1 Reply Last reply
            0
            • PeoplesP Peoples

              Hi,

              ich möchte mich gerne auch mal mit dem Entwurf eines Adapters beschäftigen und habe dazu gleich eine Frage:
              Gibt es auf Adapterebene eine Variable, ein Array o.Ä in dem die vorhandenen Vis-Views / Vis-Projekte vorhanden/aufgelistet sind? Sollte es doch geben da ja im Editor auch irgendwie die Liste generiert wird?

              Dass die Views generell in der Datei iobroker-data/files/vis.0/PROJEKT/vis-views.json habe ich von Meistertr erfahren, nur frage ich mich ob es wirklich nötig ist diese Json auszuwerten oder ob die Vis-Infos evtl. schon irgendwo vorhanden sind.

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              wrote on last edited by OliverIO
              #6

              @Peoples

              die entsprechende stelle in vis ist

              für projekte https://github.com/ioBroker/ioBroker.vis/blob/a3d4ae6139ee5e20253a1257136f7fe0e7a635f0/www/js/visEdit.js#L1137
              Hier kann die funktion this.conn.readProjects() zum abruf der aktuellen projekte vom server verwendet werden.

              für views
              https://github.com/ioBroker/ioBroker.vis/blob/a3d4ae6139ee5e20253a1257136f7fe0e7a635f0/www/js/visEdit.js#L2496
              Da sieht man, das die views für das aktuelle projekt im objekt vis.views verfügbar sind.

              wenn du nicht nur die views des aktuellen projekts betrachten wills, dann musst du
              die Datei vis-views.json für das jeweilige projekt laden. Hier stehen direkt die views des Projekts drin.
              Siehe auch ab der folgenden Zeile
              https://github.com/ioBroker/ioBroker.vis/blob/a3d4ae6139ee5e20253a1257136f7fe0e7a635f0/www/js/vis.js#L1928

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              PeoplesP 1 Reply Last reply
              0
              • OliverIOO OliverIO

                @Peoples

                die entsprechende stelle in vis ist

                für projekte https://github.com/ioBroker/ioBroker.vis/blob/a3d4ae6139ee5e20253a1257136f7fe0e7a635f0/www/js/visEdit.js#L1137
                Hier kann die funktion this.conn.readProjects() zum abruf der aktuellen projekte vom server verwendet werden.

                für views
                https://github.com/ioBroker/ioBroker.vis/blob/a3d4ae6139ee5e20253a1257136f7fe0e7a635f0/www/js/visEdit.js#L2496
                Da sieht man, das die views für das aktuelle projekt im objekt vis.views verfügbar sind.

                wenn du nicht nur die views des aktuellen projekts betrachten wills, dann musst du
                die Datei vis-views.json für das jeweilige projekt laden. Hier stehen direkt die views des Projekts drin.
                Siehe auch ab der folgenden Zeile
                https://github.com/ioBroker/ioBroker.vis/blob/a3d4ae6139ee5e20253a1257136f7fe0e7a635f0/www/js/vis.js#L1928

                PeoplesP Offline
                PeoplesP Offline
                Peoples
                wrote on last edited by Peoples
                #7

                @OliverIO
                Danke für die Links, aber mein egentliches Problem ist viel banaler nur schlecht zu erklären.

                In der Edit.html Auszug ist in Zeile 3 die menu_projects Liste

                <li id="li_menu_projects" class="ui-state-default menu-item" role="tab">
                       <a class="menu-tab-text"><span class="translate">Projects</span><span style="float: right; margin-top:4px" class="ui-icon ui-icon-carat-1-e"></span></a>
                       <ul id="menu_projects" class="ui-widget-content">
                       <li class="ui-state-default project-select menu-item" data-language="de"><a>Main</a></li>
                     </ul>
                </li>
                

                und hier wird sie anscheinend in Zeile 11 generiert: $('#menu_projects').html(text);

                this.conn.readProjects(function (err, projects) {
                            var text = '';
                            if (projects.length) {
                                for (var d = 0; d < projects.length; d++) {
                                    text += '<li class="ui-state-default project-select ' + (projects[d].name + '/' === that.projectPrefix ? 'ui-state-active' : '') +
                                        ' menu-item" data-project="' + projects[d].name + '"><a>' + projects[d].name + (projects[d].readOnly ? ' (' + _('readOnly') + ')' : '') + '</a></li>\n';
                                    if (projects[d].name + '/' === that.projectPrefix) {
                                        $('#vis_access_mode').prop('checked', projects[d].mode & 0x60);
                                    }
                                }
                                $('#menu_projects').html(text);
                                $('.project-select').unbind('click').click(function () {
                                    window.location.href = 'edit.html?' + $(this).attr('data-project');
                                });
                            } else {
                                $('#li_menu_projects').hide();
                            }
                        });
                    },
                

                Aber ich verstehe nicht wie die Ersetzung funktioniert:

                <script type="text/javascript">
                // Hier die erzeugten Listeninhalte
                    let Liste = '<li>Main</li><li>Wandtablet</li>';
                    $('#testliste').html(Liste);
                </script>
                
                
                
                //hier der Auszug des admin_m.html den ich durch oben stehenden Inhalt ersetzen will
                <ul id="testliste" class="ui-widget-content">
                

                Nur wie mache ich das?

                Ich beantworte keine Fragen zu Themen via PN

                OliverIOO 1 Reply Last reply
                0
                • PeoplesP Peoples

                  @OliverIO
                  Danke für die Links, aber mein egentliches Problem ist viel banaler nur schlecht zu erklären.

                  In der Edit.html Auszug ist in Zeile 3 die menu_projects Liste

                  <li id="li_menu_projects" class="ui-state-default menu-item" role="tab">
                         <a class="menu-tab-text"><span class="translate">Projects</span><span style="float: right; margin-top:4px" class="ui-icon ui-icon-carat-1-e"></span></a>
                         <ul id="menu_projects" class="ui-widget-content">
                         <li class="ui-state-default project-select menu-item" data-language="de"><a>Main</a></li>
                       </ul>
                  </li>
                  

                  und hier wird sie anscheinend in Zeile 11 generiert: $('#menu_projects').html(text);

                  this.conn.readProjects(function (err, projects) {
                              var text = '';
                              if (projects.length) {
                                  for (var d = 0; d < projects.length; d++) {
                                      text += '<li class="ui-state-default project-select ' + (projects[d].name + '/' === that.projectPrefix ? 'ui-state-active' : '') +
                                          ' menu-item" data-project="' + projects[d].name + '"><a>' + projects[d].name + (projects[d].readOnly ? ' (' + _('readOnly') + ')' : '') + '</a></li>\n';
                                      if (projects[d].name + '/' === that.projectPrefix) {
                                          $('#vis_access_mode').prop('checked', projects[d].mode & 0x60);
                                      }
                                  }
                                  $('#menu_projects').html(text);
                                  $('.project-select').unbind('click').click(function () {
                                      window.location.href = 'edit.html?' + $(this).attr('data-project');
                                  });
                              } else {
                                  $('#li_menu_projects').hide();
                              }
                          });
                      },
                  

                  Aber ich verstehe nicht wie die Ersetzung funktioniert:

                  <script type="text/javascript">
                  // Hier die erzeugten Listeninhalte
                      let Liste = '<li>Main</li><li>Wandtablet</li>';
                      $('#testliste').html(Liste);
                  </script>
                  
                  
                  
                  //hier der Auszug des admin_m.html den ich durch oben stehenden Inhalt ersetzen will
                  <ul id="testliste" class="ui-widget-content">
                  

                  Nur wie mache ich das?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  wrote on last edited by
                  #8

                  @Peoples said in Vorhandene Vis Projekte bzw. Vis Views auslesen:

                  $('#menu_projects').html(text);

                  In der Schleife Zeile 4 bis 10 wird für jedes einzelne Projekt das html in der Variable text eingesammelt. Das text += "..." bedeutet, das immer an text angehängt wird.
                  Das .html() ist ein jquery-Befehl
                  https://api.jquery.com/html/#html2
                  Damit wird der Inhalt von text dann dem Element #menu_projects angehängt.

                  Zum weiteren verständnis:
                  Zeile 7+8 wird auf das aktuelle Projekt geprüft und das Element angemarkt (checked)
                  Zeile 12+13: hier wird das Klick-Event gesetzt, das bei Klick die richtige Aktion passiert. Hier wird im Browser die Seite einfach neu mit dem neuen Projektkenner geladen (Zeile 13).

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  PeoplesP 1 Reply Last reply
                  1
                  • OliverIOO OliverIO

                    @Peoples said in Vorhandene Vis Projekte bzw. Vis Views auslesen:

                    $('#menu_projects').html(text);

                    In der Schleife Zeile 4 bis 10 wird für jedes einzelne Projekt das html in der Variable text eingesammelt. Das text += "..." bedeutet, das immer an text angehängt wird.
                    Das .html() ist ein jquery-Befehl
                    https://api.jquery.com/html/#html2
                    Damit wird der Inhalt von text dann dem Element #menu_projects angehängt.

                    Zum weiteren verständnis:
                    Zeile 7+8 wird auf das aktuelle Projekt geprüft und das Element angemarkt (checked)
                    Zeile 12+13: hier wird das Klick-Event gesetzt, das bei Klick die richtige Aktion passiert. Hier wird im Browser die Seite einfach neu mit dem neuen Projektkenner geladen (Zeile 13).

                    PeoplesP Offline
                    PeoplesP Offline
                    Peoples
                    wrote on last edited by
                    #9

                    @OliverIO sagte in Vorhandene Vis Projekte bzw. Vis Views auslesen:

                    Das .html() ist ein jquery-Befehl
                    https://api.jquery.com/html/#html2

                    Das wars! Jetzt begreife ich auch wie das gemacht wird.
                    Tausend Dank Oli

                    Ich beantworte keine Fragen zu Themen via PN

                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    680

                    Online

                    32.7k

                    Users

                    82.4k

                    Topics

                    1.3m

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

                    • Don't have an account? Register

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