Neues Modul: 73_DepartureBnT

Begonnen von Sailor, 12 Februar 2026, 16:49:11

Vorheriges Thema - Nächstes Thema

JWRu

Die erste Version des Readings ist richtig - siehe meinen Post #9.
Dein Reading sieht so aus:
[["RNV 5","Schriesheim","5"],["RNV 5","Heidelberg Bismarckplatz","3"]...]Das FTUI Widget kann anscheinend mit dem "RNV " nichts anfangen - es produziert jedenfalls danach immer ein linefeed.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon- und Bresser-Sensoren; Steuerung Viessmann-Heizung; ESP32 für Strom-, Wasser-, Gaszähler, Arduino für Rauchmelder und FI-Schutzschalter

Sailor

Hallo JWRu

Zitat von: JWRu am 26 Februar 2026, 16:47:51Die erste Version des Readings ist richtig - siehe meinen Post #9.
Dein Reading sieht so aus:
[["RNV 5","Schriesheim","5"],["RNV 5","Heidelberg Bismarckplatz","3"]...]Das FTUI Widget kann anscheinend mit dem "RNV " nichts anfangen - es produziert jedenfalls danach immer ein linefeed.

Jetzt verstehe ich das das Problem schon eher.
Du brauchst also von "RNV 5" nur die "5" und das "RNV " muss gelöscht werden.
Gebe mir bitte mal deine Station ID.

Aber eigentlich ist das falsch, weil es ja "S5" für "Strassenbahn Line 5", "E5" für "ExpressLine 5", "5-AST" für Anruf-Sammel-Taxi 5" immer nur die "5" zurück gegeben würde.

Dann gibt das Widget doch etwas vollkommen Falsches wieder, oder verstehe ich da was falsch?

Gruß
    Sailor



******************************
Man wird immer besser...

JWRu

#17
ZitatGebe mir bitte mal deine Station ID.
6000515
ZitatAber eigentlich ist das falsch, weil es ja "S5" für "Strassenbahn Line 5", "E5" für "ExpressLine 5", "5-AST" für Anruf-Sammel-Taxi 5" immer nur die "5" zurück gegeben würde.
Das alte HTTPMOD Departure Device hat nur "5" geliefert - das hat funktioniert. Hier ist halt alles RNV.
Vielleicht ist's auch das Leerzeichen, das Probleme macht. Ich bastle morgen mal mein Userreading so um, dass nur das Leerzeichen entfernt wird und schaue mal, was dann passiert.

Edit:
Ich habe es ausprobiert - ohne Leerzeichen funktioniert es. Allerdings reicht jetzt der Platz in meiner Tabelle nicht mehr, weil die erste Spalte zu breit wird.
Ich behalte einfach mein Userreading bei - du musst dich nicht verknoten, um meinen Spezialfall zu integrieren.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon- und Bresser-Sensoren; Steuerung Viessmann-Heizung; ESP32 für Strom-, Wasser-, Gaszähler, Arduino für Rauchmelder und FI-Schutzschalter

Sailor

Hallo JWRu

Zitat von: JWRu am 26 Februar 2026, 21:39:32Ich habe es ausprobiert - ohne Leerzeichen funktioniert es.
OK, ein Anfang... Leerzeichen in "-" zu verwandeln.

Zitat von: JWRu am 26 Februar 2026, 21:39:32Allerdings reicht jetzt der Platz in meiner Tabelle nicht mehr, weil die erste Spalte zu breit wird.
Ist das Widget hierfür nicht frei parametrierbar?

Zitat von: JWRu am 26 Februar 2026, 21:39:32Ich behalte einfach mein Userreading bei - du musst dich nicht verknoten, um meinen Spezialfall zu integrieren.
Das Widget ist der größte "Kunde" dieses Moduls. Daher habe ich schon Interesse, dass es funktioniert.  ;)

Gruß
    Sailor
******************************
Man wird immer besser...

JWRu

ZitatIst das Widget hierfür nicht frei parametrierbar?
Ja, aber ich hatte das so für das alte Device hingepfrimelt, dass es gerade noch in die Ecke des Tablet-Displays passt.
Außerdem ist bei uns alles RNV. Bus- und Staßenbahnlinien unterscheiden sich nur durch die Liniennummer.
Da spendiere ich lieber etwas mehr Platz für Destination-long.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon- und Bresser-Sensoren; Steuerung Viessmann-Heizung; ESP32 für Strom-, Wasser-, Gaszähler, Arduino für Rauchmelder und FI-Schutzschalter

PNinBB

Vor 2...3 Wochen hatte ich Probleme mit der Anzeige von Fahrzeiten. Die Ursache lag in der vereinzelt auftretenden Nichtverfügbarkeit von
https://transport.stefan-biermann.de/publictransportapi/rest/station/suggest ...Das führt (ca. Zeile 626 und 856) zu Fehlermeldungen: ".... Data cannot be parsed by JSON". Als Folge dessen steigt das Programm aus, da kein neuer
InternalTimer(gettimeofday()+AttrVal($name, "UpdateInterval", 60),  ..... gesetzt wird. Ich habe das folgende Stück an das 'or do' angefügt:      or do
      {
       Log3 $name, 3, $name. " : DepartureBnT_UpdateResponseResponse - Data cannot be parsed by JSON";
       # Handling the error:
       #  1. set Timer for next refresh cycle
       InternalTimer(gettimeofday()+AttrVal($name, "UpdateInterval", 60), \&DepartureBnT_Update, $hash);
       # 2. trigger the browser
        FW_directNotify("FILTER=".$name, "#FHEMWEB:WEB", "location.reload('true')", "");
       # 3. update 'state'
       readingsSingleUpdate($hash, "state", "error", 1);
       return;
      };
Analoges habe ich für die zweite Fehlermeldung vorgesehen. Seither läuft es sehr stabil, vor allem werden die Ausfälle problemlos weggesteckt.
Ein zweites Problem hatte ich bei der sehr instruktiven Zeittafel und Grafik: hier hat wohl OpenStreetMap die Zoomingfunktion modifiziert. Folgendes habe ich ab etwa Zeile 936 eingefügt:### If the Details shall be the Departure Board with Map
        if (AttrVal($name, "ShowDetails","Departure") eq "Departure")
          {
           ### Calculation of parameters for the map
           my $zoomOffset = 0.001;
           my $lonMin = $longitude - $zoomOffset;
           my $latMin = $latitude  - $zoomOffset;
           my $lonMax = $longitude + $zoomOffset;
           my $latMax = $latitude  + $zoomOffset;

                $htmlCode = '
Dann muss man den Aufbau modifizieren (ca. Zeile: 1044): <td rowspan="' . $TableLines . '">
 <iframe width="100%" height="' . $MapHeight . '" src="https://www.openstreetmap.org/export/embed.html?bbox=' . $lonMin . '%2C' . $latMin . '%2C' . $lonMax . '%2C' . $latMax . '&amp;layer=transportmap&amp;marker=' . $latitude . '%2C' . $longitude . '"style="border: 1px solid black"></iframe>
Beim Systemstart (oder reload) gab es zwei Warnungen wegen nicht initialisierten Variablen ( ca. Zeile 642). Erweiterung: my @UniqueDepartureEntries =  grep({ my $e = $_; my $key = join '___', map { $e->{$_} // ''; } sort keys %$_;!$seen{$key}++ } @$DepartureEntries);
und etwa Zeile 724 Korrektur: Log3 $name, 5, $name. " : DepartureBnT_UpdateResponseResponse - DepartureEntryValue : " . ($DepartureEntry->{$DepartureEntryKey} // "n/a"); Falls jemand ähnliche Probleme hat; meine sind damit gelöst.
Auf jeden Fall ein sehr schöner Modul; besten Dank.
Peter
Raspi 4B + RaZberry2 (Deb 13), FritzBox 7490;
AEOTec: KeyFobGen5: 1x;
Danfoss: Living Connect 2.51: 3x;
Fibaro: FGK: 10x: 3x; FGBS: 001: 8x, 222: 1x; FGMS001: 2x; FGR: 222: 3x, 223: 2x; FGRGBWM-441: 1x; FGBS: 222: 2x, 223: 2x,224: 1x;
Philio: PAN06-1A: 3x;

Sailor

Hallo Peter

Zitat von: PNinBB am 28 April 2026, 20:34:23Vor 2...3 Wochen hatte ich Probleme ... Als Folge dessen steigt das Programm aus
Falls jemand ähnliche Probleme hat; meine sind damit gelöst.
Auf jeden Fall ein sehr schöner Modul; besten Dank.

Vielen Dank für dein Kompliment.
Ich habe deine Änderungen übernommen und eingecheckt. Sollte morgen im Update verfügbar sein.

Gruß
    Sailor
******************************
Man wird immer besser...