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.
  • mcm1957M Offline
    mcm1957M Offline
    mcm1957
    schrieb am zuletzt editiert von
    #2

    @homoran
    Der Adapter ist noch nicht im Repro. Bitte in ".....nicht in offiziellem Repo" verschieben.
    https://github.com/ioBroker/ioBroker.repositories/pull/5751

    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
    0
    • HomoranH Homoran verschob dieses Thema von Tester am
    • 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