Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. ...nicht in offiziellem Repo
  5. Test Adapter public-transport v0.1.x GitHub/npm

NEWS

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

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

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

Test Adapter public-transport v0.1.x GitHub/npm

Geplant Angeheftet Gesperrt Verschoben ...nicht in offiziellem Repo
öpnvfahrplanhaltestellenwidget
14 Beiträge 6 Kommentatoren 185 Aufrufe 8 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    TT-Tom
    schrieb am zuletzt editiert von
    #3

    Neue Version verfügbar 0.2.0

    ich habe das Widget für die Abfahrten geändert und für die Info - Spalte ein Popup gebaut. Mir hat nicht gefallen, dass der Text dort zum Teil sehr viel / groß ist. Jetzt sind dort drei Symbole zu sehen, je nachdem welche Info vorhanden ist.

    Bildschirmfoto 2026-04-21 um 10.40.14.png

    • rotes Ausrufezeichen im Kreis für Warnungen
    • gelbes Dreieck für Hinweise
    • "i" im Kreis für Statusmeldungen

    wenn man jetzt auf die Symbole klickt, öffnet sich das Popup mit allen Informationen zu dieser Abfahrt. Der Link in den Hinweisen funktioniert ;)

    Bildschirmfoto 2026-04-21 um 10.41.08.png

    Wichtig
    Um das neue Popup zu nutzen, kann es möglich sein das der Adapter neu installiert werden muss. War bei mir nötig, weil das Widget nicht sauber aktualisiert wurde.

    Gruß Tom
    https://github.com/tt-tom17
    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

    NSPanel Script Wiki
    https://github.com/joBr99/nspanel-lovelace-ui/wiki

    NSPanel Adapter Wiki
    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

    1 Antwort Letzte Antwort
    0
    • B Offline
      B Offline
      booleeny
      schrieb am zuletzt editiert von
      #4

      Bei mir funktioniert der Adapter ganz super. Wow richtig gut! Vielen lieben Dank. Nutze zur Zeit die Vendo DB Anbindung. Da kommt die Info gefühlt schneller als HAFAS. Bei der ersten Installation wurde nicht automatisch eine Instanz erstellt die musste ich erst durch den klick auf + erstellen. Aber vielleicht ist das auch normal bei der Installation über "Developer Github Katze". Mir war das Widget für meinen vorhandenen Dashboard Platz zu groß. Außerdem Nutzte ich vis-2 und bin mir nicht sicher ob das Widget dafür auch gemacht ist. Daher habe ich den vis-jsontemplate Adapter installiert. Der klappt ganz großartig und mit ClaudeAI ist ratzfatz ein individuelles Widget erstellt. Man muss nur den JSON Datenpunkt angeben und in Vorlage z.B. folgenden Code kopieren:

      <% 
      if (typeof data !== 'undefined' && data && data.journeys && Array.isArray(data.journeys)) { 
          function formatTime(isoString) {
              if (!isoString) return "--:--";
              var date = new Date(isoString);
              var h = date.getHours().toString();
              var m = date.getMinutes().toString();
              return (h.length < 2 ? '0' + h : h) + ":" + (m.length < 2 ? '0' + m : m);
          }
      
          var firstJourney = data.journeys[0];
          var stationTitle = "Verbindung";
          
          if (firstJourney && firstJourney.legs && firstJourney.legs[0]) {
              var l0 = firstJourney.legs[0];
              if (l0.origin && l0.destination) {
                  stationTitle = l0.origin.name + " → " + l0.destination.name;
              }
          }
      %>
      <div style="color: white; font-family: RobotoCondensed-Bold; padding: 5px;">
        
        <div style="font-size: 0.9em; color: #aaaaaa; margin-bottom: 6px;">
          <%= stationTitle %>
        </div>
      
        <table style="width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 0px;">
          <thead>
            <tr style="text-align: left; border-bottom: 1px solid #444; color: #888; font-size: 0.72em; text-transform: uppercase; letter-spacing: 0.05em;">
              <th style="padding: 6px 8px;">Linie</th>
              <th style="padding: 6px 8px;">Abfahrt</th>
              <th style="padding: 6px 8px;">Ankunft</th>
              <th style="padding: 6px 8px;">Info</th>
            </tr>
          </thead>
          <tbody>
            <% for (var i = 0; i < data.journeys.length; i++) { 
               var journey = data.journeys[i];
               var leg = (journey.legs && journey.legs[0]) ? journey.legs[0] : null;
               if (!leg) continue;
               
               var depDelay = Math.round((leg.departureDelay || 0) / 60);
               var arrDelay = Math.round((leg.arrivalDelay || 0) / 60);
               var hasDepDelay = depDelay > 0;
               var hasArrDelay = arrDelay > 0;
      
               var lineName = (leg.line && leg.line.name) ? leg.line.name : "?";
               var depPlat = leg.departurePlatform ? "Gl. " + leg.departurePlatform : "";
               var plannedDepPlat = leg.plannedDeparturePlatform ? leg.plannedDeparturePlatform : "";
               var platChanged = depPlat && plannedDepPlat && leg.departurePlatform !== leg.plannedDeparturePlatform;
      
               var warnings = [];
               if (leg.remarks && leg.remarks.length > 0) {
                   for (var j = 0; j < leg.remarks.length; j++) {
                       if (leg.remarks[j].type === "warning") {
                           warnings.push(leg.remarks[j].summary || leg.remarks[j].text);
                       }
                   }
               }
               if (platChanged) {
                   warnings.unshift("Gl. " + leg.departurePlatform + " (statt " + leg.plannedDeparturePlatform + ")");
               }
               var warningText = warnings.join(" · ");
      
               // Zeilenfarbe: leicht rot hinterlegt bei Verspätung
               var rowBg = (hasDepDelay || hasArrDelay) ? "background-color: rgba(255,60,60,0.07);" : "";
            %>
            <tr style="border-bottom: 1px solid #222; <%= rowBg %>">
      
              <!-- Linie -->
              <td style="padding: 8px; vertical-align: middle;">
                <div style="display: inline-block; background: #1a6bbf; color: white; font-weight: bold; font-size: 0.85em; padding: 2px 7px; border-radius: 4px; white-space: nowrap;">
                  <%= lineName %>
                </div>
                <% if (depPlat) { %>
                <div style="font-size: 0.7em; color: <%= platChanged ? '#ffaa00' : '#888' %>; margin-top: 3px;">
                  <%= platChanged ? '⚠ ' : '' %><%= depPlat %>
                </div>
                <% } %>
              </td>
      
              <!-- Abfahrt -->
              <td style="padding: 8px; vertical-align: middle;">
                <% if (hasDepDelay) { %>
                  <!-- Geplante Zeit durchgestrichen in rot -->
                  <div style="color: #ff4444; font-size: 0.85em; text-decoration: line-through; opacity: 0.8;">
                    <%= formatTime(leg.plannedDeparture) %>
                  </div>
                  <!-- Echte (hochgerechnete) Abfahrtzeit groß -->
                  <div style="font-weight: bold; font-size: 1.4em; color: #ff4444;">
                    <%= formatTime(leg.departure) %>
                    <span style="font-size: 0.8em; font-weight: normal; margin-left: 4px;">+<%= depDelay %> min</span>
                  </div>
                <% } else { %>
                  <div style="font-weight: bold; font-size: 1.4em; color: #ffffff;">
                    <%= formatTime(leg.plannedDeparture) %>
                    <span style="color: #44cc44; font-size: 0.6em; font-weight: normal; margin-left: 4px;">✓</span>
                  </div>
                <% } %>
              </td>
      
              <!-- Ankunft -->
              <td style="padding: 8px; vertical-align: middle;">
                <% if (hasArrDelay) { %>
                  <div style="color: #ff4444; font-size: 0.85em; text-decoration: line-through; opacity: 0.8;">
                    <%= formatTime(leg.plannedArrival) %>
                  </div>
                  <div style="font-weight: bold; font-size: 1.4em; color: #ff4444;">
                    <%= formatTime(leg.arrival) %>
                    <span style="font-size: 0.8em; font-weight: normal; margin-left: 4px;">+<%= arrDelay %> min</span>
                  </div>
                <% } else { %>
                  <div style="font-weight: bold; font-size: 1.4em; color: #ffffff;">
                    <%= formatTime(leg.plannedArrival) %>
                    <span style="color: #44cc44; font-size: 0.6em; font-weight: normal; margin-left: 4px;">✓</span>
                  </div>
                <% } %>
              </td>
      
              <!-- Warnungen / Info -->
              <td style="padding: 8px; font-size: 0.68em; color: #ffcc00; font-style: italic; line-height: 1.3; vertical-align: middle; max-width: 140px;">
                <%= warningText %>
              </td>
      
            </tr>
            <% } %>
          </tbody>
        </table>
      </div>
      <% } else { %>
          <div style="color: #666; font-family: sans-serif; padding: 10px;">⏳ Warte auf Daten...</div>
      <% } %>
      

      fd2ca4ab-c018-4ffb-87ab-00da5e6f57fc-image.jpeg

      f3f5f978-4579-4348-b70b-ba47e400d31f-image.jpeg

      OliverIOO T 2 Antworten Letzte Antwort
      1
      • B booleeny

        Bei mir funktioniert der Adapter ganz super. Wow richtig gut! Vielen lieben Dank. Nutze zur Zeit die Vendo DB Anbindung. Da kommt die Info gefühlt schneller als HAFAS. Bei der ersten Installation wurde nicht automatisch eine Instanz erstellt die musste ich erst durch den klick auf + erstellen. Aber vielleicht ist das auch normal bei der Installation über "Developer Github Katze". Mir war das Widget für meinen vorhandenen Dashboard Platz zu groß. Außerdem Nutzte ich vis-2 und bin mir nicht sicher ob das Widget dafür auch gemacht ist. Daher habe ich den vis-jsontemplate Adapter installiert. Der klappt ganz großartig und mit ClaudeAI ist ratzfatz ein individuelles Widget erstellt. Man muss nur den JSON Datenpunkt angeben und in Vorlage z.B. folgenden Code kopieren:

        <% 
        if (typeof data !== 'undefined' && data && data.journeys && Array.isArray(data.journeys)) { 
            function formatTime(isoString) {
                if (!isoString) return "--:--";
                var date = new Date(isoString);
                var h = date.getHours().toString();
                var m = date.getMinutes().toString();
                return (h.length < 2 ? '0' + h : h) + ":" + (m.length < 2 ? '0' + m : m);
            }
        
            var firstJourney = data.journeys[0];
            var stationTitle = "Verbindung";
            
            if (firstJourney && firstJourney.legs && firstJourney.legs[0]) {
                var l0 = firstJourney.legs[0];
                if (l0.origin && l0.destination) {
                    stationTitle = l0.origin.name + " → " + l0.destination.name;
                }
            }
        %>
        <div style="color: white; font-family: RobotoCondensed-Bold; padding: 5px;">
          
          <div style="font-size: 0.9em; color: #aaaaaa; margin-bottom: 6px;">
            <%= stationTitle %>
          </div>
        
          <table style="width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 0px;">
            <thead>
              <tr style="text-align: left; border-bottom: 1px solid #444; color: #888; font-size: 0.72em; text-transform: uppercase; letter-spacing: 0.05em;">
                <th style="padding: 6px 8px;">Linie</th>
                <th style="padding: 6px 8px;">Abfahrt</th>
                <th style="padding: 6px 8px;">Ankunft</th>
                <th style="padding: 6px 8px;">Info</th>
              </tr>
            </thead>
            <tbody>
              <% for (var i = 0; i < data.journeys.length; i++) { 
                 var journey = data.journeys[i];
                 var leg = (journey.legs && journey.legs[0]) ? journey.legs[0] : null;
                 if (!leg) continue;
                 
                 var depDelay = Math.round((leg.departureDelay || 0) / 60);
                 var arrDelay = Math.round((leg.arrivalDelay || 0) / 60);
                 var hasDepDelay = depDelay > 0;
                 var hasArrDelay = arrDelay > 0;
        
                 var lineName = (leg.line && leg.line.name) ? leg.line.name : "?";
                 var depPlat = leg.departurePlatform ? "Gl. " + leg.departurePlatform : "";
                 var plannedDepPlat = leg.plannedDeparturePlatform ? leg.plannedDeparturePlatform : "";
                 var platChanged = depPlat && plannedDepPlat && leg.departurePlatform !== leg.plannedDeparturePlatform;
        
                 var warnings = [];
                 if (leg.remarks && leg.remarks.length > 0) {
                     for (var j = 0; j < leg.remarks.length; j++) {
                         if (leg.remarks[j].type === "warning") {
                             warnings.push(leg.remarks[j].summary || leg.remarks[j].text);
                         }
                     }
                 }
                 if (platChanged) {
                     warnings.unshift("Gl. " + leg.departurePlatform + " (statt " + leg.plannedDeparturePlatform + ")");
                 }
                 var warningText = warnings.join(" · ");
        
                 // Zeilenfarbe: leicht rot hinterlegt bei Verspätung
                 var rowBg = (hasDepDelay || hasArrDelay) ? "background-color: rgba(255,60,60,0.07);" : "";
              %>
              <tr style="border-bottom: 1px solid #222; <%= rowBg %>">
        
                <!-- Linie -->
                <td style="padding: 8px; vertical-align: middle;">
                  <div style="display: inline-block; background: #1a6bbf; color: white; font-weight: bold; font-size: 0.85em; padding: 2px 7px; border-radius: 4px; white-space: nowrap;">
                    <%= lineName %>
                  </div>
                  <% if (depPlat) { %>
                  <div style="font-size: 0.7em; color: <%= platChanged ? '#ffaa00' : '#888' %>; margin-top: 3px;">
                    <%= platChanged ? '⚠ ' : '' %><%= depPlat %>
                  </div>
                  <% } %>
                </td>
        
                <!-- Abfahrt -->
                <td style="padding: 8px; vertical-align: middle;">
                  <% if (hasDepDelay) { %>
                    <!-- Geplante Zeit durchgestrichen in rot -->
                    <div style="color: #ff4444; font-size: 0.85em; text-decoration: line-through; opacity: 0.8;">
                      <%= formatTime(leg.plannedDeparture) %>
                    </div>
                    <!-- Echte (hochgerechnete) Abfahrtzeit groß -->
                    <div style="font-weight: bold; font-size: 1.4em; color: #ff4444;">
                      <%= formatTime(leg.departure) %>
                      <span style="font-size: 0.8em; font-weight: normal; margin-left: 4px;">+<%= depDelay %> min</span>
                    </div>
                  <% } else { %>
                    <div style="font-weight: bold; font-size: 1.4em; color: #ffffff;">
                      <%= formatTime(leg.plannedDeparture) %>
                      <span style="color: #44cc44; font-size: 0.6em; font-weight: normal; margin-left: 4px;">✓</span>
                    </div>
                  <% } %>
                </td>
        
                <!-- Ankunft -->
                <td style="padding: 8px; vertical-align: middle;">
                  <% if (hasArrDelay) { %>
                    <div style="color: #ff4444; font-size: 0.85em; text-decoration: line-through; opacity: 0.8;">
                      <%= formatTime(leg.plannedArrival) %>
                    </div>
                    <div style="font-weight: bold; font-size: 1.4em; color: #ff4444;">
                      <%= formatTime(leg.arrival) %>
                      <span style="font-size: 0.8em; font-weight: normal; margin-left: 4px;">+<%= arrDelay %> min</span>
                    </div>
                  <% } else { %>
                    <div style="font-weight: bold; font-size: 1.4em; color: #ffffff;">
                      <%= formatTime(leg.plannedArrival) %>
                      <span style="color: #44cc44; font-size: 0.6em; font-weight: normal; margin-left: 4px;">✓</span>
                    </div>
                  <% } %>
                </td>
        
                <!-- Warnungen / Info -->
                <td style="padding: 8px; font-size: 0.68em; color: #ffcc00; font-style: italic; line-height: 1.3; vertical-align: middle; max-width: 140px;">
                  <%= warningText %>
                </td>
        
              </tr>
              <% } %>
            </tbody>
          </table>
        </div>
        <% } else { %>
            <div style="color: #666; font-family: sans-serif; padding: 10px;">⏳ Warte auf Daten...</div>
        <% } %>
        

        fd2ca4ab-c018-4ffb-87ab-00da5e6f57fc-image.jpeg

        f3f5f978-4579-4348-b70b-ba47e400d31f-image.jpeg

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

        @booleeny

        Super,
        Da mach ich mal bei json-Template gleich eine Referenz hier drauf rein.
        Schöner Anwendungsfall für eine individuelle Anwendung.

        https://github.com/oweitman/ioBroker.vis-jsontemplate#more-use-cases

        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
        1
        • B booleeny

          Bei mir funktioniert der Adapter ganz super. Wow richtig gut! Vielen lieben Dank. Nutze zur Zeit die Vendo DB Anbindung. Da kommt die Info gefühlt schneller als HAFAS. Bei der ersten Installation wurde nicht automatisch eine Instanz erstellt die musste ich erst durch den klick auf + erstellen. Aber vielleicht ist das auch normal bei der Installation über "Developer Github Katze". Mir war das Widget für meinen vorhandenen Dashboard Platz zu groß. Außerdem Nutzte ich vis-2 und bin mir nicht sicher ob das Widget dafür auch gemacht ist. Daher habe ich den vis-jsontemplate Adapter installiert. Der klappt ganz großartig und mit ClaudeAI ist ratzfatz ein individuelles Widget erstellt. Man muss nur den JSON Datenpunkt angeben und in Vorlage z.B. folgenden Code kopieren:

          <% 
          if (typeof data !== 'undefined' && data && data.journeys && Array.isArray(data.journeys)) { 
              function formatTime(isoString) {
                  if (!isoString) return "--:--";
                  var date = new Date(isoString);
                  var h = date.getHours().toString();
                  var m = date.getMinutes().toString();
                  return (h.length < 2 ? '0' + h : h) + ":" + (m.length < 2 ? '0' + m : m);
              }
          
              var firstJourney = data.journeys[0];
              var stationTitle = "Verbindung";
              
              if (firstJourney && firstJourney.legs && firstJourney.legs[0]) {
                  var l0 = firstJourney.legs[0];
                  if (l0.origin && l0.destination) {
                      stationTitle = l0.origin.name + " → " + l0.destination.name;
                  }
              }
          %>
          <div style="color: white; font-family: RobotoCondensed-Bold; padding: 5px;">
            
            <div style="font-size: 0.9em; color: #aaaaaa; margin-bottom: 6px;">
              <%= stationTitle %>
            </div>
          
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 0px;">
              <thead>
                <tr style="text-align: left; border-bottom: 1px solid #444; color: #888; font-size: 0.72em; text-transform: uppercase; letter-spacing: 0.05em;">
                  <th style="padding: 6px 8px;">Linie</th>
                  <th style="padding: 6px 8px;">Abfahrt</th>
                  <th style="padding: 6px 8px;">Ankunft</th>
                  <th style="padding: 6px 8px;">Info</th>
                </tr>
              </thead>
              <tbody>
                <% for (var i = 0; i < data.journeys.length; i++) { 
                   var journey = data.journeys[i];
                   var leg = (journey.legs && journey.legs[0]) ? journey.legs[0] : null;
                   if (!leg) continue;
                   
                   var depDelay = Math.round((leg.departureDelay || 0) / 60);
                   var arrDelay = Math.round((leg.arrivalDelay || 0) / 60);
                   var hasDepDelay = depDelay > 0;
                   var hasArrDelay = arrDelay > 0;
          
                   var lineName = (leg.line && leg.line.name) ? leg.line.name : "?";
                   var depPlat = leg.departurePlatform ? "Gl. " + leg.departurePlatform : "";
                   var plannedDepPlat = leg.plannedDeparturePlatform ? leg.plannedDeparturePlatform : "";
                   var platChanged = depPlat && plannedDepPlat && leg.departurePlatform !== leg.plannedDeparturePlatform;
          
                   var warnings = [];
                   if (leg.remarks && leg.remarks.length > 0) {
                       for (var j = 0; j < leg.remarks.length; j++) {
                           if (leg.remarks[j].type === "warning") {
                               warnings.push(leg.remarks[j].summary || leg.remarks[j].text);
                           }
                       }
                   }
                   if (platChanged) {
                       warnings.unshift("Gl. " + leg.departurePlatform + " (statt " + leg.plannedDeparturePlatform + ")");
                   }
                   var warningText = warnings.join(" · ");
          
                   // Zeilenfarbe: leicht rot hinterlegt bei Verspätung
                   var rowBg = (hasDepDelay || hasArrDelay) ? "background-color: rgba(255,60,60,0.07);" : "";
                %>
                <tr style="border-bottom: 1px solid #222; <%= rowBg %>">
          
                  <!-- Linie -->
                  <td style="padding: 8px; vertical-align: middle;">
                    <div style="display: inline-block; background: #1a6bbf; color: white; font-weight: bold; font-size: 0.85em; padding: 2px 7px; border-radius: 4px; white-space: nowrap;">
                      <%= lineName %>
                    </div>
                    <% if (depPlat) { %>
                    <div style="font-size: 0.7em; color: <%= platChanged ? '#ffaa00' : '#888' %>; margin-top: 3px;">
                      <%= platChanged ? '⚠ ' : '' %><%= depPlat %>
                    </div>
                    <% } %>
                  </td>
          
                  <!-- Abfahrt -->
                  <td style="padding: 8px; vertical-align: middle;">
                    <% if (hasDepDelay) { %>
                      <!-- Geplante Zeit durchgestrichen in rot -->
                      <div style="color: #ff4444; font-size: 0.85em; text-decoration: line-through; opacity: 0.8;">
                        <%= formatTime(leg.plannedDeparture) %>
                      </div>
                      <!-- Echte (hochgerechnete) Abfahrtzeit groß -->
                      <div style="font-weight: bold; font-size: 1.4em; color: #ff4444;">
                        <%= formatTime(leg.departure) %>
                        <span style="font-size: 0.8em; font-weight: normal; margin-left: 4px;">+<%= depDelay %> min</span>
                      </div>
                    <% } else { %>
                      <div style="font-weight: bold; font-size: 1.4em; color: #ffffff;">
                        <%= formatTime(leg.plannedDeparture) %>
                        <span style="color: #44cc44; font-size: 0.6em; font-weight: normal; margin-left: 4px;">✓</span>
                      </div>
                    <% } %>
                  </td>
          
                  <!-- Ankunft -->
                  <td style="padding: 8px; vertical-align: middle;">
                    <% if (hasArrDelay) { %>
                      <div style="color: #ff4444; font-size: 0.85em; text-decoration: line-through; opacity: 0.8;">
                        <%= formatTime(leg.plannedArrival) %>
                      </div>
                      <div style="font-weight: bold; font-size: 1.4em; color: #ff4444;">
                        <%= formatTime(leg.arrival) %>
                        <span style="font-size: 0.8em; font-weight: normal; margin-left: 4px;">+<%= arrDelay %> min</span>
                      </div>
                    <% } else { %>
                      <div style="font-weight: bold; font-size: 1.4em; color: #ffffff;">
                        <%= formatTime(leg.plannedArrival) %>
                        <span style="color: #44cc44; font-size: 0.6em; font-weight: normal; margin-left: 4px;">✓</span>
                      </div>
                    <% } %>
                  </td>
          
                  <!-- Warnungen / Info -->
                  <td style="padding: 8px; font-size: 0.68em; color: #ffcc00; font-style: italic; line-height: 1.3; vertical-align: middle; max-width: 140px;">
                    <%= warningText %>
                  </td>
          
                </tr>
                <% } %>
              </tbody>
            </table>
          </div>
          <% } else { %>
              <div style="color: #666; font-family: sans-serif; padding: 10px;">⏳ Warte auf Daten...</div>
          <% } %>
          

          fd2ca4ab-c018-4ffb-87ab-00da5e6f57fc-image.jpeg

          f3f5f978-4579-4348-b70b-ba47e400d31f-image.jpeg

          T Offline
          T Offline
          TT-Tom
          schrieb zuletzt editiert von
          #6

          @booleeny sagte:

          Nutze zur Zeit die Vendo DB Anbindung. Da kommt die Info gefühlt schneller als HAFAS.

          Danke das du meinen Adapter testest. Die DB unterstützt HAFAS nicht mehr bzw. nur vereinzelt. Sie ist auf Vendo umgestiegen.

          Du hast recht, Installationen über die Katze müssen die Instanzen von Hand angelegt werden.

          @booleeny sagte:

          Mir war das Widget für meinen vorhandenen Dashboard Platz zu groß. Außerdem Nutzte ich vis-2

          Welches Widget ist zu groß? Was wäre eine optimale Größe?
          in wie Weit diese Vis-2 kompatibel sind, kann ich dir nicht sagen, nutze selber Vis-1.
          Werde es aber auf die ToDo-Liste setzen und testen.
          Danke für dein Feedback

          Gruß Tom
          https://github.com/tt-tom17
          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

          NSPanel Script Wiki
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          NSPanel Adapter Wiki
          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

          O 1 Antwort Letzte Antwort
          0
          • T TT-Tom

            @booleeny sagte:

            Nutze zur Zeit die Vendo DB Anbindung. Da kommt die Info gefühlt schneller als HAFAS.

            Danke das du meinen Adapter testest. Die DB unterstützt HAFAS nicht mehr bzw. nur vereinzelt. Sie ist auf Vendo umgestiegen.

            Du hast recht, Installationen über die Katze müssen die Instanzen von Hand angelegt werden.

            @booleeny sagte:

            Mir war das Widget für meinen vorhandenen Dashboard Platz zu groß. Außerdem Nutzte ich vis-2

            Welches Widget ist zu groß? Was wäre eine optimale Größe?
            in wie Weit diese Vis-2 kompatibel sind, kann ich dir nicht sagen, nutze selber Vis-1.
            Werde es aber auf die ToDo-Liste setzen und testen.
            Danke für dein Feedback

            O Offline
            O Offline
            Oli
            schrieb zuletzt editiert von
            #7

            @TT-Tom
            Was ist denn der Unterschied zwischen deinem und dem Fahrplan Adapter?

            Gruß
            Oliver

            T 1 Antwort Letzte Antwort
            0
            • O Oli

              @TT-Tom
              Was ist denn der Unterschied zwischen deinem und dem Fahrplan Adapter?

              T Offline
              T Offline
              TT-Tom
              schrieb zuletzt editiert von
              #8

              @Oli

              Die Fahrplandaten sind die selben. Ich biete für Abfahrten und Verbindungen Widgets an.
              Da der Fahrplan-Adapter zur Zeit nicht gepflegt wird, habe ich mich entschieden einen eigenen zuschreiben.

              Bin jetzt auch dabei, weitere Anbieter ein zu bauen, wie aktuell VBN (Bremen/Niedersachsen).

              Gruß Tom
              https://github.com/tt-tom17
              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

              NSPanel Script Wiki
              https://github.com/joBr99/nspanel-lovelace-ui/wiki

              NSPanel Adapter Wiki
              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

              mcm1957M 1 Antwort Letzte Antwort
              0
              • T TT-Tom

                @Oli

                Die Fahrplandaten sind die selben. Ich biete für Abfahrten und Verbindungen Widgets an.
                Da der Fahrplan-Adapter zur Zeit nicht gepflegt wird, habe ich mich entschieden einen eigenen zuschreiben.

                Bin jetzt auch dabei, weitere Anbieter ein zu bauen, wie aktuell VBN (Bremen/Niedersachsen).

                mcm1957M Offline
                mcm1957M Offline
                mcm1957
                schrieb zuletzt editiert von mcm1957
                #9

                @TT-Tom sagte:

                Da der Fahrplan-Adapter zur Zeit nicht gepflegt wird, habe ich mich entschieden einen eigenen zuschreiben.

                Ähhmm
                Worauf bezieht sich deine Aussage dass der Adapter nicht gepflegt wird?

                Die letzte Release ist noch nicht mal ein Jahr alt. Und die Anzahl der offenen Issues ist ziemlich gernig. Hier zu behaupten dass etwas nicht gepflegt wird ist doch eher gewagt. Welches Issue hast du angelegt? Hast du den dev vesucht zu ereichen?

                d0e7d806-38f6-4a58-81a7-6c5522573dd4-image.jpeg

                Nicht böse sei, aber ich bin mal gespannt wie lange du deinen Adapter im Monatsabstand aktualisiserts ...

                In jedem Fall gebührt auch dir ein DANKE dass du Zeit aufwendest. Aber denk mal über deine Formulierungen und deine Einstellung zu freiwilliger Arbeit anderer nach.

                Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                Support Repositoryverwaltung.

                Wer 'nen Kaffee spendieren will: https://paypal.me

                LESEN - gute Forenbeitrage

                1 Antwort Letzte Antwort
                1
                • T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb zuletzt editiert von
                  #10

                  Ein Adapter der 6 Monate kaputt ist, ist nicht gepflegt

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  1 Antwort Letzte Antwort
                  0
                  • mcm1957M Offline
                    mcm1957M Offline
                    mcm1957
                    schrieb zuletzt editiert von mcm1957
                    #11

                    Ok - wenn es so ist.
                    Ist für mich aus den Issues nicht sofort ersichtlich.

                    Gehts um das Issue https://github.com/gaudes/ioBroker.fahrplan/issues/478 ?
                    Oder welches issue beshcreibt einen Totalausfall?

                    EDIT:
                    Wenn der Adapter wirklich nicht mehr funktioniert damnn sollte er aus den Repos raus. Nur dazu brauch ich greifbare Issues / Reklamationen / Bestätigungen. Meldungen eines Users dass seine Installation nicht funktionier sind für so einen Schritt zu dünn...

                    Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                    Support Repositoryverwaltung.

                    Wer 'nen Kaffee spendieren will: https://paypal.me

                    LESEN - gute Forenbeitrage

                    T 1 Antwort Letzte Antwort
                    0
                    • mcm1957M mcm1957

                      Ok - wenn es so ist.
                      Ist für mich aus den Issues nicht sofort ersichtlich.

                      Gehts um das Issue https://github.com/gaudes/ioBroker.fahrplan/issues/478 ?
                      Oder welches issue beshcreibt einen Totalausfall?

                      EDIT:
                      Wenn der Adapter wirklich nicht mehr funktioniert damnn sollte er aus den Repos raus. Nur dazu brauch ich greifbare Issues / Reklamationen / Bestätigungen. Meldungen eines Users dass seine Installation nicht funktionier sind für so einen Schritt zu dünn...

                      T Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb zuletzt editiert von
                      #12

                      @mcm1957 sagte:

                      EDIT:
                      Wenn der Adapter wirklich nicht mehr funktioniert damnn sollte er aus den Repos raus. Nur dazu brauch ich greifbare Issues / Reklamationen / Bestätigungen. Meldungen eines Users dass seine Installation nicht funktionier sind für so einen Schritt zu dünn...

                      Ich weiß nur davon weil ich öffters mit Tom rede und er darüber geklaggt hat:

                      https://github.com/gaudes/ioBroker.fahrplan/issues/478#issuecomment-3411125556

                      Da steht das es bei dem Nutzer nicht mehr geht. Da hat sich anscheiend die api geändert.

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      1 Antwort Letzte Antwort
                      0
                      • mcm1957M Offline
                        mcm1957M Offline
                        mcm1957
                        schrieb zuletzt editiert von mcm1957
                        #13

                        Ich hab dann mal ein TIMEOUT Issue erstellt.
                        https://github.com/gaudes/ioBroker.fahrplan/issues/543

                        Wenn kein Feedback kommt fliegt er aus den Repos.

                        Und damit nichts falsch rüber kommt:
                        Es ist voll OK einen zweiten Adapter zu entwickeln. inbesondere wenn es Probleme gibt.
                        Und DANKE an tt-tom für deine Arbeit

                        Es wäre aber auch sehr sinnvoll bei Verdacht dass ein Dev nicht mehr aktiv ist ein ganz klares Issue mit der Frage ob der Adapter noch gewartet wird zu verfassen. Es kann nie ausgeschlossen werden, dass ein Dev ein Issue in seiner Wichtigkeit auch falsch einschätzt.

                        Und es ist nach Abklärung mit Core auch jederzeit möglich verwaiste Adapter zu übernehmen sodass andere diese warten können. Damit ersparen sich User ggF eine Migration und eine spätere Zweigleisigkeit wird vermieden.

                        Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                        Support Repositoryverwaltung.

                        Wer 'nen Kaffee spendieren will: https://paypal.me

                        LESEN - gute Forenbeitrage

                        T 1 Antwort Letzte Antwort
                        0
                        • mcm1957M mcm1957

                          Ich hab dann mal ein TIMEOUT Issue erstellt.
                          https://github.com/gaudes/ioBroker.fahrplan/issues/543

                          Wenn kein Feedback kommt fliegt er aus den Repos.

                          Und damit nichts falsch rüber kommt:
                          Es ist voll OK einen zweiten Adapter zu entwickeln. inbesondere wenn es Probleme gibt.
                          Und DANKE an tt-tom für deine Arbeit

                          Es wäre aber auch sehr sinnvoll bei Verdacht dass ein Dev nicht mehr aktiv ist ein ganz klares Issue mit der Frage ob der Adapter noch gewartet wird zu verfassen. Es kann nie ausgeschlossen werden, dass ein Dev ein Issue in seiner Wichtigkeit auch falsch einschätzt.

                          Und es ist nach Abklärung mit Core auch jederzeit möglich verwaiste Adapter zu übernehmen sodass andere diese warten können. Damit ersparen sich User ggF eine Migration und eine spätere Zweigleisigkeit wird vermieden.

                          T Offline
                          T Offline
                          TT-Tom
                          schrieb zuletzt editiert von
                          #14

                          Hi @mcm1957

                          ich will dem Entwickler nichts vorwerfen und weiss selber das Privat und Arbeit vor dem Hobby kommt. Würde auch gerne mehr in die Entwicklung stecken und kann es auch gut einschätzen, was da alles dran hängt.
                          ich hatte Februar 25 mein Issue angelegt https://github.com/gaudes/ioBroker.fahrplan/issues/443
                          und auch ein Lösungsvorschlag als PR unterbreitet, was dann irgendwann im Sande verlief. Da mein Fork funktioniert, nutzte ich diesen auch im Produktivsystem. Die andren offen Issues hatte dann in meinem Fork dann so gut es ging auch behoben und im Issue auch dokumentiert.

                          Irgendwann hatte ich mich entschieden selber ein Adapter zu schreiben und diesen auch hier an zu bieten.

                          Deine Arbeit hier und auch auf Telegramm schätze ich sehr, wobei es doch manchmal sehr direkt ist.

                          Ich werde den Adapter weiterentwickeln, über eine Aufnahme ins Repo können wir uns dann separat noch einmal verständigen.

                          Gruß Tom
                          https://github.com/tt-tom17
                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                          NSPanel Script Wiki
                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                          NSPanel Adapter Wiki
                          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                          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

                          276

                          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