Skip to content
  • Home
  • 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

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed

NEWS

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

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

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

Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed

Geplant Angeheftet Gesperrt Verschoben Tester
adapteratomfeediobroker.rssfeedrdfrssviswidget
695 Beiträge 34 Kommentatoren 170.3k Aufrufe 38 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.
  • T trojanhector

    @oliverio Servus,
    habe mittlerweile die Version 0.1.8 von vis-2-widget ovarious. Das mit dem abspeichern bei einem Widget klappt jetzt. Allerdings bei zwei und mehr Widgets werden die Werte nicht gespeichert. Ich habe unterschiedliche Zieldatenpunkte angelegt und diese jeweils im Template berücksichtigt und ich ich habe die ID im Template ebenfalls unterschiedlich gestaltet. Ich teste mit drei Widgets. Der erste Zieldatenpunkt wird immer richtig aktualisiert, alle weiteren bleiben leer.

    json-template-Problem_bei_mehreren_Widgets.PNG

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von
    #614

    @trojanhector

    ok, dann muss in der neuen version etwas mehr gekapselt werden

    <% 
        let selectid="mydropdown1"; 
        //der folgende datenpunkt muss auch unter dp1 in den widgeteinstellungen eingetragen werden
        let dp_write = "0_userdata.0.testFolder.b1"; 
        
    %>
    <script>
        (()=>{
            
        debugger;
        let selectid="<%- selectid %>";
        let dp_write="<%- dp_write %>";
        
        window.writeDP<%- selectid %>=(el)=>{
            debugger;
            if (el.selectedOptions[0].value) vis.setValue(dp_write,el.selectedOptions[0].value);
        }
        })();
    </script>
    <style>
    #mydropdown {
        color:rgb(255,255,255);
        background:black;
        font-size:22px;
    }
    </style>
    <select id="<%- selectid %>" name="<%- selectid %>" size="1" onchange="javascript:writeDP<%- selectid %>(this)" >
    <% 
      //debugger;
      for (var i = 0; i<data.length;i++) { 
          var el = data[i];
    %>
      <option value="<%- el.id %>" <%- ((dp[dp_write]==el.id) ? "selected":"") %>><%- el.name %></option>
    <% } %>
    </select>
    
    

    test-widegts zum importieren

    [
     {
       "tpl": "tplJSONTemplateWidget",
       "data": {
         "bindings": [],
         "oid": "0_userdata.0.testFolder.a",
         "dpcount": 1,
         "g_common": true,
         "name": null,
         "comment": null,
         "class": null,
         "filterkey": null,
         "multi-views": null,
         "locked": null,
         "g_fixed": true,
         "template": "<% \r\n    let selectid=\"mydropdown1\"; \r\n    //der folgende datenpunkt muss auch unter dp1 in den widgeteinstellungen eingetragen werden\r\n    let dp_write = \"0_userdata.0.testFolder.b1\"; \r\n    \r\n%>\r\n<script>\r\n    (()=>{\r\n        \r\n    debugger;\r\n    let selectid=\"<%- selectid %>\";\r\n    let dp_write=\"<%- dp_write %>\";\r\n    \r\n    window.writeDP<%- selectid %>=(el)=>{\r\n        debugger;\r\n        if (el.selectedOptions[0].value) vis.setValue(dp_write,el.selectedOptions[0].value);\r\n    }\r\n    })();\r\n</script>\r\n<style>\r\n#mydropdown {\r\n    color:rgb(255,255,255);\r\n    background:black;\r\n    font-size:22px;\r\n}\r\n</style>\r\n<select id=\"<%- selectid %>\" name=\"<%- selectid %>\" size=\"1\" onchange=\"javascript:writeDP<%- selectid %>(this)\" >\r\n<% \r\n  //debugger;\r\n  for (var i = 0; i<data.length;i++) { \r\n      var el = data[i];\r\n%>\r\n  <option value=\"<%- el.id %>\" <%- ((dp[dp_write]==el.id) ? \"selected\":\"\") %>><%- el.name %></option>\r\n<% } %>\r\n</select>\r\n",
         "datapoint-oid1": "0_userdata.0.testFolder.b1",
         "g_datapoints-1": true
       },
       "style": {
         "bindings": [],
         "left": "138px",
         "top": "55px",
         "width": "98px",
         "height": "33px"
       },
       "widgetSet": "vis-2-widgets-ovarious",
       "_id": "i000001"
     },
     {
       "tpl": "tplValueStringRaw",
       "data": {
         "bindings": [],
         "oid": "0_userdata.0.testFolder.b1"
       },
       "style": {
         "bindings": [],
         "left": 277,
         "top": 60
       },
       "widgetSet": "basic",
       "_id": "i000002"
     },
     {
       "tpl": "tplJSONTemplateWidget",
       "data": {
         "bindings": [],
         "oid": "0_userdata.0.testFolder.a",
         "dpcount": 1,
         "g_common": true,
         "name": null,
         "comment": null,
         "class": null,
         "filterkey": null,
         "multi-views": null,
         "locked": null,
         "g_fixed": true,
         "template": "<% \r\n    let selectid=\"mydropdown2\"; \r\n    //der folgende datenpunkt muss auch unter dp1 in den widgeteinstellungen eingetragen werden\r\n    let dp_write = \"0_userdata.0.testFolder.b2\"; \r\n    \r\n%>\r\n<script>\r\n    (()=>{\r\n        \r\n    debugger;\r\n    let selectid=\"<%- selectid %>\";\r\n    let dp_write=\"<%- dp_write %>\";\r\n    \r\n    window.writeDP<%- selectid %>=(el)=>{\r\n        debugger;\r\n        if (el.selectedOptions[0].value) vis.setValue(dp_write,el.selectedOptions[0].value);\r\n    }\r\n    })();\r\n</script>\r\n\r\n<style>\r\n#mydropdown {\r\n    color:rgb(255,255,255);\r\n    background:black;\r\n    font-size:22px;\r\n}\r\n</style>\r\n<select id=\"<%- selectid %>\" name=\"<%- selectid %>\" size=\"1\" onchange=\"javascript:writeDP<%- selectid %>(this)\" >\r\n<% \r\n  //debugger;\r\n  for (var i = 0; i<data.length;i++) { \r\n      var el = data[i];\r\n%>\r\n  <option value=\"<%- el.id %>\" <%- ((dp[dp_write]==el.id) ? \"selected\":\"\") %>><%- el.name %></option>\r\n<% } %>\r\n</select>\r\n\r\n",
         "datapoint-oid1": "0_userdata.0.testFolder.b2",
         "g_datapoints-1": true
       },
       "style": {
         "bindings": [],
         "left": 139,
         "top": 100,
         "width": "98px",
         "height": "33px"
       },
       "widgetSet": "vis-2-widgets-ovarious",
       "_id": "i000003"
     },
     {
       "tpl": "tplValueStringRaw",
       "data": {
         "bindings": [],
         "oid": "0_userdata.0.testFolder.b2"
       },
       "style": {
         "bindings": [],
         "left": 278,
         "top": 105
       },
       "widgetSet": "basic",
       "_id": "i000004"
     },
     {
       "tpl": "tplJSONTemplateWidget",
       "data": {
         "bindings": [],
         "oid": "0_userdata.0.testFolder.a",
         "dpcount": 1,
         "g_common": true,
         "name": null,
         "comment": null,
         "class": null,
         "filterkey": null,
         "multi-views": null,
         "locked": null,
         "g_fixed": true,
         "template": "<% \r\n    let selectid=\"mydropdown3\"; \r\n    //der folgende datenpunkt muss auch unter dp1 in den widgeteinstellungen eingetragen werden\r\n    let dp_write = \"0_userdata.0.testFolder.b3\"; \r\n    \r\n%>\r\n<script>\r\n    (()=>{\r\n        \r\n    debugger;\r\n    let selectid=\"<%- selectid %>\";\r\n    let dp_write=\"<%- dp_write %>\";\r\n    \r\n    window.writeDP<%- selectid %>=(el)=>{\r\n        debugger;\r\n        if (el.selectedOptions[0].value) vis.setValue(dp_write,el.selectedOptions[0].value);\r\n    }\r\n    })();\r\n</script>\r\n\r\n<style>\r\n#mydropdown {\r\n    color:rgb(255,255,255);\r\n    background:black;\r\n    font-size:22px;\r\n}\r\n</style>\r\n<select id=\"<%- selectid %>\" name=\"<%- selectid %>\" size=\"1\" onchange=\"javascript:writeDP<%- selectid %>(this)\" >\r\n<% \r\n  //debugger;\r\n  for (var i = 0; i<data.length;i++) { \r\n      var el = data[i];\r\n%>\r\n  <option value=\"<%- el.id %>\" <%- ((dp[dp_write]==el.id) ? \"selected\":\"\") %>><%- el.name %></option>\r\n<% } %>\r\n</select>\r\n\r\n",
         "datapoint-oid1": "0_userdata.0.testFolder.b3",
         "g_datapoints-1": true
       },
       "style": {
         "bindings": [],
         "left": 139,
         "top": 145,
         "width": "98px",
         "height": "33px"
       },
       "widgetSet": "vis-2-widgets-ovarious",
       "_id": "i000005"
     },
     {
       "tpl": "tplValueStringRaw",
       "data": {
         "bindings": [],
         "oid": "0_userdata.0.testFolder.b3"
       },
       "style": {
         "bindings": [],
         "left": 278,
         "top": 150
       },
       "widgetSet": "basic",
       "_id": "i000006"
     }
    ]
    

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

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      trojanhector
      schrieb am zuletzt editiert von
      #615

      @oliverio Ich habe das jetzt mit einem und mehreren Widgets ausführlich getestet. Immer wieder Widgets gelöscht oder neue hinzugefügt. Es klappt.

      OliverIOO 1 Antwort Letzte Antwort
      0
      • T trojanhector

        @oliverio Ich habe das jetzt mit einem und mehreren Widgets ausführlich getestet. Immer wieder Widgets gelöscht oder neue hinzugefügt. Es klappt.

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #616

        @trojanhector
        super, danke

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

        T 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @trojanhector
          super, danke

          T Offline
          T Offline
          trojanhector
          schrieb am zuletzt editiert von
          #617

          @oliverio Servus,
          es geht um das json widget aus rss-feed.
          Grundsätzlich ist mein Vorhaben die Daten aus dem JSON-Datenpunkt per Javascript in eine einfache Tabelle zu bringen. Dazu habe ich aus dem Netz folgenden Code, der in Visial Studio Code funktioniert:

          <!DOCTYPE html>
          <html lang="en">
           
          <body>
              <script>
                  const data = [
                      { name: 'Rahul', age: 25, city: 'New Delhi' },
                      { name: 'Vijay', age: 30, city: 'Muzaffarpur' },
                      { name: 'Gaurav', age: 22, city: 'Noida' },
                  ];
           
                  function createTableWithForEach() {
                      const table = document.createElement('table');
                      table.setAttribute('border', '1');
           
                      const headerRow = document.createElement('tr');
                      Object.keys(data[0]).forEach(key => {
                          const th = document.createElement('th');
                          th.appendChild(document.createTextNode(key));
                          headerRow.appendChild(th);
                      });
                      table.appendChild(headerRow);
           
                      data.forEach(item => {
                          const row = document.createElement('tr');
                          Object.values(item).forEach(value => {
                              const td = document.createElement('td');
                              td.appendChild(document.createTextNode(value));
                              row.appendChild(td);
                          });
                          table.appendChild(row);
                      });
           
                      document.body.appendChild(table);
                  }
           
                  createTableWithForEach();
              </script>
          </body>
           
          </html>
          

          Als ersten Schritt wollte ich erstmal diesen Code im JSON Widget zum Laufen bringen, was mir schon nicht gelingt. Und ich habe verschiedene Variationen versucht.
          Wenn das aber mal geklärt ist, wollte ich die Variable Data, die vom Template bereitgestellt wird, hier anstatt der const Data ersetzen. Hättest Du da einen Vorschlag?

          OliverIOO 1 Antwort Letzte Antwort
          0
          • T trojanhector

            @oliverio Servus,
            es geht um das json widget aus rss-feed.
            Grundsätzlich ist mein Vorhaben die Daten aus dem JSON-Datenpunkt per Javascript in eine einfache Tabelle zu bringen. Dazu habe ich aus dem Netz folgenden Code, der in Visial Studio Code funktioniert:

            <!DOCTYPE html>
            <html lang="en">
             
            <body>
                <script>
                    const data = [
                        { name: 'Rahul', age: 25, city: 'New Delhi' },
                        { name: 'Vijay', age: 30, city: 'Muzaffarpur' },
                        { name: 'Gaurav', age: 22, city: 'Noida' },
                    ];
             
                    function createTableWithForEach() {
                        const table = document.createElement('table');
                        table.setAttribute('border', '1');
             
                        const headerRow = document.createElement('tr');
                        Object.keys(data[0]).forEach(key => {
                            const th = document.createElement('th');
                            th.appendChild(document.createTextNode(key));
                            headerRow.appendChild(th);
                        });
                        table.appendChild(headerRow);
             
                        data.forEach(item => {
                            const row = document.createElement('tr');
                            Object.values(item).forEach(value => {
                                const td = document.createElement('td');
                                td.appendChild(document.createTextNode(value));
                                row.appendChild(td);
                            });
                            table.appendChild(row);
                        });
             
                        document.body.appendChild(table);
                    }
             
                    createTableWithForEach();
                </script>
            </body>
             
            </html>
            

            Als ersten Schritt wollte ich erstmal diesen Code im JSON Widget zum Laufen bringen, was mir schon nicht gelingt. Und ich habe verschiedene Variationen versucht.
            Wenn das aber mal geklärt ist, wollte ich die Variable Data, die vom Template bereitgestellt wird, hier anstatt der const Data ersetzen. Hättest Du da einen Vorschlag?

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #618

            @trojanhector sagte in Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed:

            1. dein json ist kein gültiges json.
              eigentlich sind dort nur doppelte anführungsstriche erlaubt
            [
              {
                "name": "Rahul",
                "age": 25,
                "city": "New Delhi"
              },
              {
                "name": "Vijay",
                "age": 30,
                "city": "Muzaffarpur"
              },
              {
                "name": "Gaurav",
                "age": 22,
                "city": "Noida"
              }
            ]
            
            1. das dahinterliegende system ist das ejs templating system.
              daher macht es keinen sinn elemente programatisch zu erzeugen.
              daher eine methode wie es für das widget besser ist
              ich habe dir mal 2 beispiele gemacht. das 2. verwendet css als styling.
              was besser ist, da wahrscheinlich diese alten properties wie border, die zum styling gedacht waren nicht mehr zeitgemäß sind
            <table border="1">
                <tr>
                <% let keys1 = Object.keys(data[0]);
                keys1.map(key => { %>
                    <th><%= key %></th>
                <% }) %>
                <% data.map(row => { %>
                    <tr>
                    <% keys1.map(key => { %>
                        <td><%= row[key] %></td>
                    <% }) %>
                    </tr>
                <% }) %>        
                </tr>
            </table> 
            <style>
            table.mytable,
            .mytable th,
            .mytable td {
            	border: 1px solid red;
            	border-collapse: collapse;
            }
            </style>
            <table class="mytable">
                <tr>
                <% let keys2 = Object.keys(data[0]);
                keys2.map(key => { %>
                    <th><%= key %></th>
                <% }) %>
                <% data.map(row => { %>
                    <tr>
                    <% keys2.map(key => { %>
                        <td><%= row[key] %></td>
                    <% }) %>
                    </tr>
                <% }) %>        
                </tr>
            </table>
            

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

            T 2 Antworten Letzte Antwort
            0
            • OliverIOO OliverIO

              @trojanhector sagte in Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed:

              1. dein json ist kein gültiges json.
                eigentlich sind dort nur doppelte anführungsstriche erlaubt
              [
                {
                  "name": "Rahul",
                  "age": 25,
                  "city": "New Delhi"
                },
                {
                  "name": "Vijay",
                  "age": 30,
                  "city": "Muzaffarpur"
                },
                {
                  "name": "Gaurav",
                  "age": 22,
                  "city": "Noida"
                }
              ]
              
              1. das dahinterliegende system ist das ejs templating system.
                daher macht es keinen sinn elemente programatisch zu erzeugen.
                daher eine methode wie es für das widget besser ist
                ich habe dir mal 2 beispiele gemacht. das 2. verwendet css als styling.
                was besser ist, da wahrscheinlich diese alten properties wie border, die zum styling gedacht waren nicht mehr zeitgemäß sind
              <table border="1">
                  <tr>
                  <% let keys1 = Object.keys(data[0]);
                  keys1.map(key => { %>
                      <th><%= key %></th>
                  <% }) %>
                  <% data.map(row => { %>
                      <tr>
                      <% keys1.map(key => { %>
                          <td><%= row[key] %></td>
                      <% }) %>
                      </tr>
                  <% }) %>        
                  </tr>
              </table> 
              <style>
              table.mytable,
              .mytable th,
              .mytable td {
              	border: 1px solid red;
              	border-collapse: collapse;
              }
              </style>
              <table class="mytable">
                  <tr>
                  <% let keys2 = Object.keys(data[0]);
                  keys2.map(key => { %>
                      <th><%= key %></th>
                  <% }) %>
                  <% data.map(row => { %>
                      <tr>
                      <% keys2.map(key => { %>
                          <td><%= row[key] %></td>
                      <% }) %>
                      </tr>
                  <% }) %>        
                  </tr>
              </table>
              
              T Offline
              T Offline
              trojanhector
              schrieb am zuletzt editiert von trojanhector
              #619

              @oliverio Servus,
              vielen Dank für Deine Hilfe. Das ist genau das, was ich brauche. Ich habe einige Zeit gebraucht, bis ich ein vernünftiges JSON-Array hatte, was durch Trigger aktualisiert wird. Deshalb die Verspätung. Jetzt passt alles.
              Ergebnis_JSON_Template.PNG

              1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @trojanhector sagte in Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed:

                1. dein json ist kein gültiges json.
                  eigentlich sind dort nur doppelte anführungsstriche erlaubt
                [
                  {
                    "name": "Rahul",
                    "age": 25,
                    "city": "New Delhi"
                  },
                  {
                    "name": "Vijay",
                    "age": 30,
                    "city": "Muzaffarpur"
                  },
                  {
                    "name": "Gaurav",
                    "age": 22,
                    "city": "Noida"
                  }
                ]
                
                1. das dahinterliegende system ist das ejs templating system.
                  daher macht es keinen sinn elemente programatisch zu erzeugen.
                  daher eine methode wie es für das widget besser ist
                  ich habe dir mal 2 beispiele gemacht. das 2. verwendet css als styling.
                  was besser ist, da wahrscheinlich diese alten properties wie border, die zum styling gedacht waren nicht mehr zeitgemäß sind
                <table border="1">
                    <tr>
                    <% let keys1 = Object.keys(data[0]);
                    keys1.map(key => { %>
                        <th><%= key %></th>
                    <% }) %>
                    <% data.map(row => { %>
                        <tr>
                        <% keys1.map(key => { %>
                            <td><%= row[key] %></td>
                        <% }) %>
                        </tr>
                    <% }) %>        
                    </tr>
                </table> 
                <style>
                table.mytable,
                .mytable th,
                .mytable td {
                	border: 1px solid red;
                	border-collapse: collapse;
                }
                </style>
                <table class="mytable">
                    <tr>
                    <% let keys2 = Object.keys(data[0]);
                    keys2.map(key => { %>
                        <th><%= key %></th>
                    <% }) %>
                    <% data.map(row => { %>
                        <tr>
                        <% keys2.map(key => { %>
                            <td><%= row[key] %></td>
                        <% }) %>
                        </tr>
                    <% }) %>        
                    </tr>
                </table>
                
                T Offline
                T Offline
                trojanhector
                schrieb am zuletzt editiert von
                #620

                @oliverio Hi,
                ich bräuchte noch mal Unterstützung. Ich habe die Tabelle um einen TableHeader erweitert. Dort soll drinstehen, um was es sich handelt. Soweit so gut. Der colSpan soll über alle Spalten von data gehen. Das funktioniert nur beim ersten Aufruf. Beim Refresh der Seite oder Update das JSON erscheint ein Fehler. Habe schon mehrere Varianten durch, lande aber immer in der Sackgasse. Ich bekomme das auch nur wieder hin, indem ich einmal den Scriptteil entferne, abspeichere und wieder neu einfüge. Mit fest codierter Zahl im Scriptteil bekomme ich das hin, das Ganze soll aber generisch sein.
                Hast Du hier noch eine Idee?

                <table id="table_SunSensor" class="blacktable">
                    <tr>
                    <% let keys2 = Object.keys(data[0]);
                    let keysCount = Object.keys(data[0]).length;%>
                    <th id="tbhd" class="th_orange">Sonnensensor</th>
                    </tr>
                    <tr>
                    <% keys2.map(key => { %>
                        <th><%= key %></th>
                    <% }) %>
                   
                    <% data.map(row => { %>
                        <tr>
                        <% keys2.map(key => { %>
                            <td><%= row[key] %></td>
                        <% }) %>
                        </tr>
                    <% }) %>        
                    </tr>
                </table>
                <script>
                    <% document.getElementById("tbhd").colSpan=keysCount; %>
                </script>
                

                Fehler:

                ejs:22
                    20| </table>
                    21| <script>
                 >> 22|     <% document.getElementById("tbhd").colSpan=keysCount; %>
                    23| </script>
                
                Cannot set properties of null (setting 'colSpan')
                
                
                1 Antwort Letzte Antwort
                0
                • OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #621

                  @trojanhector

                  eigentlich sollte das nie funktionieren, da du

                  1. colSpan falschgeschrieben hast (groß/kleinschreibung beachten. dass attribut ist colspan ) und
                  2. das prinzip der template maschine nicht ganz verstanden hast

                  etwas zum ablauf wie die template engine funktioniert.
                  wenn das widget von iobroker aktualisiert wird, wird das widget komplett entfernt und sogleich wieder hinzugefügt. das betrifft aber nur das oberste element. sogleich wird eine funktion aufgerufen, die dann den inhalt definiert.
                  diese funktion nimmt das von dir definierte template lässt es durch die template engine laufen, das ergebnis ist dann html/script/css-inhalt, welcher dann dem sogenannten dom-baum hinzugefügt wird. das löst wiederum im browser den prozess des renderings aus. d.h. die elemente werden dann auf den bildschirm gemalt und evtls javascript wird ausgeführt.

                  diese answeisung ist falsch, weil du zum einen das script tag definierst, aber die javascript anweisung mit den template tags umklammerst. im ergebnis würde das bedeuten, das während der templateverarbeitung an die stelle das ergebnis der javaschript anweisung geschrieben wird. da die aber falsch ist, bricht das ab und die fehlermeldung erscheint.

                  <script>
                      <% document.getElementById("tbhd").colSpan=keysCount; %>
                  </script>
                  

                  wenn dann müsste es so aussehen, das heißt bei der verarbeitung des templates wird hinten die zahl geschrieben, sobald das ergebis dem dom baum hinztugefügt wurde, werden die anweisungen des script tags ausgeführt. aber auch das würde ich nicht empfehlen

                  <script>
                      document.getElementById("tbhd").colSpan= <%= keysCount %;>
                  </script>
                  

                  du hast ja den wert schon und kannst ihn direkt eintragen.

                  <table id="table_SunSensor" class="blacktable">
                      <tr>
                      <% let keys2 = Object.keys(data[0]);
                      let keysCount = Object.keys(data[0]).length;%>
                      <th id="tbhd" class="th_orange" colspan="<%= keysCount %>">Sonnensensor</th>
                      </tr>
                      <tr>
                      <% keys2.map(key => { %>
                          <th><%= key %></th>
                      <% }) %>
                     
                      <% data.map(row => { %>
                          <tr>
                          <% keys2.map(key => { %>
                              <td><%= row[key] %></td>
                          <% }) %>
                          </tr>
                      <% }) %>        
                      </tr>
                  </table>
                  
                  

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

                  T 2 Antworten Letzte Antwort
                  0
                  • OliverIOO OliverIO

                    @trojanhector

                    eigentlich sollte das nie funktionieren, da du

                    1. colSpan falschgeschrieben hast (groß/kleinschreibung beachten. dass attribut ist colspan ) und
                    2. das prinzip der template maschine nicht ganz verstanden hast

                    etwas zum ablauf wie die template engine funktioniert.
                    wenn das widget von iobroker aktualisiert wird, wird das widget komplett entfernt und sogleich wieder hinzugefügt. das betrifft aber nur das oberste element. sogleich wird eine funktion aufgerufen, die dann den inhalt definiert.
                    diese funktion nimmt das von dir definierte template lässt es durch die template engine laufen, das ergebnis ist dann html/script/css-inhalt, welcher dann dem sogenannten dom-baum hinzugefügt wird. das löst wiederum im browser den prozess des renderings aus. d.h. die elemente werden dann auf den bildschirm gemalt und evtls javascript wird ausgeführt.

                    diese answeisung ist falsch, weil du zum einen das script tag definierst, aber die javascript anweisung mit den template tags umklammerst. im ergebnis würde das bedeuten, das während der templateverarbeitung an die stelle das ergebnis der javaschript anweisung geschrieben wird. da die aber falsch ist, bricht das ab und die fehlermeldung erscheint.

                    <script>
                        <% document.getElementById("tbhd").colSpan=keysCount; %>
                    </script>
                    

                    wenn dann müsste es so aussehen, das heißt bei der verarbeitung des templates wird hinten die zahl geschrieben, sobald das ergebis dem dom baum hinztugefügt wurde, werden die anweisungen des script tags ausgeführt. aber auch das würde ich nicht empfehlen

                    <script>
                        document.getElementById("tbhd").colSpan= <%= keysCount %;>
                    </script>
                    

                    du hast ja den wert schon und kannst ihn direkt eintragen.

                    <table id="table_SunSensor" class="blacktable">
                        <tr>
                        <% let keys2 = Object.keys(data[0]);
                        let keysCount = Object.keys(data[0]).length;%>
                        <th id="tbhd" class="th_orange" colspan="<%= keysCount %>">Sonnensensor</th>
                        </tr>
                        <tr>
                        <% keys2.map(key => { %>
                            <th><%= key %></th>
                        <% }) %>
                       
                        <% data.map(row => { %>
                            <tr>
                            <% keys2.map(key => { %>
                                <td><%= row[key] %></td>
                            <% }) %>
                            </tr>
                        <% }) %>        
                        </tr>
                    </table>
                    
                    
                    T Offline
                    T Offline
                    trojanhector
                    schrieb am zuletzt editiert von
                    #622

                    @oliverio
                    Jetzt habe ich zum Einen gelernt, dass ich beim Copy/Paste aus dem Internet besser aufpassen muss und zum Anderen etwas über die Engine. Da war/ist noch großer Lernbedarf. Das passt jetzt wie gedacht. Danke Dir.

                    1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @trojanhector

                      eigentlich sollte das nie funktionieren, da du

                      1. colSpan falschgeschrieben hast (groß/kleinschreibung beachten. dass attribut ist colspan ) und
                      2. das prinzip der template maschine nicht ganz verstanden hast

                      etwas zum ablauf wie die template engine funktioniert.
                      wenn das widget von iobroker aktualisiert wird, wird das widget komplett entfernt und sogleich wieder hinzugefügt. das betrifft aber nur das oberste element. sogleich wird eine funktion aufgerufen, die dann den inhalt definiert.
                      diese funktion nimmt das von dir definierte template lässt es durch die template engine laufen, das ergebnis ist dann html/script/css-inhalt, welcher dann dem sogenannten dom-baum hinzugefügt wird. das löst wiederum im browser den prozess des renderings aus. d.h. die elemente werden dann auf den bildschirm gemalt und evtls javascript wird ausgeführt.

                      diese answeisung ist falsch, weil du zum einen das script tag definierst, aber die javascript anweisung mit den template tags umklammerst. im ergebnis würde das bedeuten, das während der templateverarbeitung an die stelle das ergebnis der javaschript anweisung geschrieben wird. da die aber falsch ist, bricht das ab und die fehlermeldung erscheint.

                      <script>
                          <% document.getElementById("tbhd").colSpan=keysCount; %>
                      </script>
                      

                      wenn dann müsste es so aussehen, das heißt bei der verarbeitung des templates wird hinten die zahl geschrieben, sobald das ergebis dem dom baum hinztugefügt wurde, werden die anweisungen des script tags ausgeführt. aber auch das würde ich nicht empfehlen

                      <script>
                          document.getElementById("tbhd").colSpan= <%= keysCount %;>
                      </script>
                      

                      du hast ja den wert schon und kannst ihn direkt eintragen.

                      <table id="table_SunSensor" class="blacktable">
                          <tr>
                          <% let keys2 = Object.keys(data[0]);
                          let keysCount = Object.keys(data[0]).length;%>
                          <th id="tbhd" class="th_orange" colspan="<%= keysCount %>">Sonnensensor</th>
                          </tr>
                          <tr>
                          <% keys2.map(key => { %>
                              <th><%= key %></th>
                          <% }) %>
                         
                          <% data.map(row => { %>
                              <tr>
                              <% keys2.map(key => { %>
                                  <td><%= row[key] %></td>
                              <% }) %>
                              </tr>
                          <% }) %>        
                          </tr>
                      </table>
                      
                      
                      T Offline
                      T Offline
                      trojanhector
                      schrieb am zuletzt editiert von
                      #623

                      @oliverio Servus,
                      ich habe eine neue Frage bezüglich der zusätzlichen Datenpunkte im Widget JSON Template. Der Wert ist immer leer. Wie im Screeshot zu sehen ist, wird der Datenpunkt richtig angezeigt. Zur Überprüfung ob das JSON richtig ist, habe ich es als joid für das Widget genommen. Wie man sehen kann, wird es richtig angezeigt. Gibt es noch eine andere Doku als die readme von Github? Jedenfalls liest sich das manchmal so. Im Chapter "Available variables" ist leider kein Beispiel zu dp[] zu finden. Ich habe mit dp[0],dp[1] und dp[] versucht, alles ohne Erfolg. Hättest Du nochmal ein Beispiel?

                      JSON_Template_dp_keine_Werte.PNG

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • T trojanhector

                        @oliverio Servus,
                        ich habe eine neue Frage bezüglich der zusätzlichen Datenpunkte im Widget JSON Template. Der Wert ist immer leer. Wie im Screeshot zu sehen ist, wird der Datenpunkt richtig angezeigt. Zur Überprüfung ob das JSON richtig ist, habe ich es als joid für das Widget genommen. Wie man sehen kann, wird es richtig angezeigt. Gibt es noch eine andere Doku als die readme von Github? Jedenfalls liest sich das manchmal so. Im Chapter "Available variables" ist leider kein Beispiel zu dp[] zu finden. Ich habe mit dp[0],dp[1] und dp[] versucht, alles ohne Erfolg. Hättest Du nochmal ein Beispiel?

                        JSON_Template_dp_keine_Werte.PNG

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #624

                        @trojanhector

                        Tatsächlich.
                        Bei der Überarbeitung ist die Doku zu den so rausgeflogen. Muss ich wieder einfügen.

                        Die Werte kannst du im template mit

                        dp['0_userdata.test']

                        Adressieren. Du nimmst nszütlich die genaue Bezeichnung deines eingetragenen datenpunkts

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

                        1 Antwort Letzte Antwort
                        0
                        • OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb am zuletzt editiert von
                          #625

                          Information für alle die das JSONTemplate-Widget aus dem rssfeed-Adapter nutzen

                          Dieses Widget nutzt zwar die gleiche Technologie wie rssfeeds Widgets, gehörte aber Thematisch da nie rein. Nach langer Zeit habe ich es nun über einen neuen Adapter bereitgestellt.

                          • https://github.com/oweitman/ioBroker.ovarious
                            für vis-1
                            (wird in den nächsten Tagen im beta verfügbar sein, bis dahin von github installieren)
                          • https://github.com/oweitman/ioBroker.vis-2-widgets-ovarious
                            für vis-2
                            (bereits in stable vorhanden)

                          das JSONTemplate widget wird mit einem der nächsten Releases des rssfeed-Adapters als deprecated markiert und dann wiederum nach einiger Zeit daraus entfernt.
                          Bitte wechselt demnächst zum anderen Adapter.
                          Support gibt es weiterhin hier
                          https://forum.iobroker.net/topic/31521/test-widget-json-template

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

                          1 Antwort Letzte Antwort
                          0
                          • OliverIOO Offline
                            OliverIOO Offline
                            OliverIO
                            schrieb am zuletzt editiert von
                            #626

                            Neue Version 3.3.0

                            • Umstellung der Bibliothek für den Abruf der Daten von request auf axios

                            Ich bitte um Rückmeldung, ob das bei euch so funktioniert.

                            tagesschau und tvspielfilm funktioniert hier.

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

                            T R 2 Antworten Letzte Antwort
                            0
                            • OliverIOO OliverIO

                              Neue Version 3.3.0

                              • Umstellung der Bibliothek für den Abruf der Daten von request auf axios

                              Ich bitte um Rückmeldung, ob das bei euch so funktioniert.

                              tagesschau und tvspielfilm funktioniert hier.

                              T Offline
                              T Offline
                              trojanhector
                              schrieb am zuletzt editiert von
                              #627

                              @oliverio
                              Servus,
                              Tagesschau, Spiegel.de und Heise.de funktionieren sowohl als rss-feed als auch als Artikel mit Bildern. Links gehen auch.

                              1 Antwort Letzte Antwort
                              0
                              • OliverIOO OliverIO

                                Neue Version 3.3.0

                                • Umstellung der Bibliothek für den Abruf der Daten von request auf axios

                                Ich bitte um Rückmeldung, ob das bei euch so funktioniert.

                                tagesschau und tvspielfilm funktioniert hier.

                                R Online
                                R Online
                                Ralf 2
                                schrieb am zuletzt editiert von
                                #628

                                @oliverio
                                Auch hier scheint alles zu klappen.
                                Heise und RP-Online

                                Gruß Ralf

                                1 Antwort Letzte Antwort
                                0
                                • OliverIOO Offline
                                  OliverIOO Offline
                                  OliverIO
                                  schrieb am zuletzt editiert von
                                  #629

                                  Super, vielen Dank
                                  Dann war die Umstellung von request zu axios doch einfacher

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • OliverIOO Offline
                                    OliverIOO Offline
                                    OliverIO
                                    schrieb am zuletzt editiert von
                                    #630

                                    Neue Version 3.3.1

                                    • die Header vorgaben für den http-request wurden angepasst.

                                    Die request- und axios-bibliothek haben hier wohl unterschiedliche vorgaben.
                                    zusätzlich wertet die boerse franfurt diese wohl auch genauer aus.

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

                                    T OliverIOO 2 Antworten Letzte Antwort
                                    0
                                    • OliverIOO OliverIO

                                      Neue Version 3.3.1

                                      • die Header vorgaben für den http-request wurden angepasst.

                                      Die request- und axios-bibliothek haben hier wohl unterschiedliche vorgaben.
                                      zusätzlich wertet die boerse franfurt diese wohl auch genauer aus.

                                      T Offline
                                      T Offline
                                      trojanhector
                                      schrieb am zuletzt editiert von trojanhector
                                      #631

                                      @oliverio
                                      Da hängt noch was.
                                      Der erste Feed ist die Börse Frankfurt.
                                      2 ist Golem Security
                                      3 ist Golem OpenSource (ATOM)

                                      rss-feed 3.3.1.PNG

                                      Edit: Der Börsenfeed ging zuerst. Irgendwann aber nicht mehr.

                                      OliverIOO 1 Antwort Letzte Antwort
                                      0
                                      • T trojanhector

                                        @oliverio
                                        Da hängt noch was.
                                        Der erste Feed ist die Börse Frankfurt.
                                        2 ist Golem Security
                                        3 ist Golem OpenSource (ATOM)

                                        rss-feed 3.3.1.PNG

                                        Edit: Der Börsenfeed ging zuerst. Irgendwann aber nicht mehr.

                                        OliverIOO Offline
                                        OliverIOO Offline
                                        OliverIO
                                        schrieb am zuletzt editiert von OliverIO
                                        #632

                                        @trojanhector sagte in Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed:

                                        Da hängt noch was.
                                        Der erste Feed ist die Börse Frankfurt.
                                        2 ist Golem Security
                                        3 ist Golem OpenSource (ATOM)

                                        links bitte
                                        was bedeutet hängen?
                                        steht im datenpunkt nix mehr?
                                        steht im log eine fehlermeldung?

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

                                        T 1 Antwort Letzte Antwort
                                        0
                                        • OliverIOO OliverIO

                                          @trojanhector sagte in Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed:

                                          Da hängt noch was.
                                          Der erste Feed ist die Börse Frankfurt.
                                          2 ist Golem Security
                                          3 ist Golem OpenSource (ATOM)

                                          links bitte
                                          was bedeutet hängen?
                                          steht im datenpunkt nix mehr?
                                          steht im log eine fehlermeldung?

                                          T Offline
                                          T Offline
                                          trojanhector
                                          schrieb am zuletzt editiert von
                                          #633

                                          @oliverio
                                          Ich habe das jetzt noch mal über eine Stunde laufen lassen. Ich kann das Problem nicht mehr nachvollziehen.
                                          In den Logs steht auch nichts.
                                          Das war dieser Feed:
                                          https://api.boerse-frankfurt.de/v1/feeds/news.rss

                                          Werde das mal weiter beobachten.

                                          OliverIOO 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

                                          420

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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