Erweitern der Infobar - Converter ergänzen

  • Oder anders gefragt: Wie bekomme ich die Werte von Stream ID, PLS Mode und Code, verfügbar in der Kanalinformation, auch in der Infobar angezeigt?


    Der Screen Infobar enthält hier den Extended ServiceName Converter for Enigma2 Dreamboxes (ServiceName2.py) von Vlamo - Version: 0.4

    Code
        <widget backgroundColor="background" font="Regular; 17" foregroundColor="saric" noWrap="1" position="125,123" render="Label" size="400,20" source="session.CurrentService" transparent="1" zPosition="3">
          <convert type="cnServiceName">%O  %F  %p  %Y  %f  %s  %M  %r</convert>
        </widget>

    Somit werden dann in einer Zeile bzw. an einem definierten Ort in der Infobar folgende Infos angezeigt:

    %O # Sat/Orbit Position

    %F # Transponder Frequenz

    %p # Polarisation

    %Y # Symbolrate

    %f # FEC/Coderate

    %s # Übertragungsstandard (DVB-S/DVB-S2)

    %M # Modulation (QPSK/8-PSK etc.)

    %r # Roll-off Faktor


    Nun würde ich gern diese Ausgabe um MIS/Stream ID, den PLS Modus (Root/Gold) und die verwendete PLS Code/Sequenzzahl erweitern.

    Dazu muss ich vermutlich den verwendeten Converter ergänzen und diese Werte definieren?

    Vielleicht kann mir jemand auf die Sprünge helfen, wie ich

    "is_id" : _("Stream Id")

    "pls_mode" : _("PLS Mode")

    "pls_code" : _("PLS Code")

    in den Converter integrieren könnte bzw. welche Codezeilen da eingegeben werden müssten...


    Würde das annähernd so oder ähnlich funktionieren?

    Code
                elif f == 'is':  # %is - Stream Id (Multistream)
                    if type == iDVBFrontend.feSatellite:
                        x = self.tpdata.get('is_id')

    Danke für Input...

    Bilder

    Einmal editiert, zuletzt von Binsche ()

  • Ich kenne mich zwar mit diesem Thema (Transponderinfos) nicht wirklich aus, aber du könntest das mal versuchen:

    Als Beispiel jetzt mal als neuen Abfragewert "%Z" (für "is_id").

    Der Code ist so aufgebaut, dass da nur 1-stellige Zeichen übergeben werden können.


    Im Skin:

    Code
        <widget backgroundColor="background" font="Regular; 17" foregroundColor="saric" noWrap="1" position="125,123" render="Label" size="400,20" source="session.CurrentService" transparent="1" zPosition="3">
          <convert type="cnServiceName">%O  %F  %p  %Y  %f  %s  %M  %r %Z</convert>
        </Widget>

    Und im Converter nur die zusätzlichen Zeilen (hattest du ja schon fast richtig:

    (fehlte nur das Anhängen des Ergebnisses an den Rückgabetext)

    Code
                elif f == 'Z':  # %Z - Stream Id (Multistream)
                    if type == iDVBFrontend.feSatellite:
                        x = self.tpdata.get('is_id')
                        result += str(x) 

    Die Ausgabe kannst du dann natürlich noch formatieren, falls der Wert unpassend angezeigt wird.

    Zum "Formatieren" der Ausgabe habe ich das noch gefunden:

    (als Denkanstoß - müsste man dann passend im obigen Code in der letzten Zeile "anwenden")

    Code
    if tp["is_id"] != -1:
                    ret["is_id"] = '%d' %tp["is_id"]
    if tp["pls_mode"] != eDVBFrontendParametersSatellite.PLS_Unknown:
                    ret["pls_code"] = '%d' %tp["pls_code"]
                    ret["pls_mode"] = {
                        eDVBFrontendParametersSatellite.PLS_Root : "Root",
                        eDVBFrontendParametersSatellite.PLS_Gold : "Gold",
                        eDVBFrontendParametersSatellite.PLS_Combo : "Combo"}[tp["pls_mode"]] 


    Und weiter unten im Converter musst du deine "Abfragewerte" (Z) auch noch zulassen:

    Code
                    elif f in 'TtsFfiOMpYroclhmgbeZ':
                        ret += self.getTransponderInfo(info, ref, '%' + f)

    Im Wert "TtsFfiOMpYroclhmgbe" müssen dann deine Abfragewerte enthalten sein und sollten sich von anderen Abfragenwerten (in den Codezeilen darüber - 'N', 'n', 'B', 'P', 'R', 'S') abgrenzen".

    Also dann noch das "Z" dazu: 'TtsFfiOMpYroclhmgbeZ'

    Du kannst dir natürlich auch ein anderes freies Zeichen für dein "is_id" ausdenken.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    4 Mal editiert, zuletzt von Sven H ()

  • :thumbs_up: Ein großer Schritt vorwärts. Sehr geschmeidig. Vielen Dank schon mal


    Die Werte kommen mit tpdata.get grundsätzlich korrekt zurück


    zum Testen im Screenshot:

    "6" ist die korrekte Stream ID 6

    "0" steht für Root ("1" wäre Gold)

    "175803" ist der PLS Code für Root


    Kann ich da irgendwie noch einen Text mit reinschmuggeln?

    Vor die StreamID z.B. ein "MIS6"?

    Und als Klartext darstellen lassen? Also statt "0" oder "1" der Klarname "Root" bzw. "Gold"?

    Meintest du das mit formatieren?


    Habe es jetzt erstmal relativ simpel aufgebaut, um zu testen, ob was zurückkommt als Ausgabe.

    Die Anpassung in der skin.xml lass ich an der Stelle aussen vor...

    Bilder

  • Ja, das ist das, was ich mit dem Formatieren der Ausgabe meinte :winking_face:


    Versuch es mal so:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Mei i bin ja bläd... Das mit Range bedeutet quasi eine gewisse Auswahl, wenn verschiedene Parameter (in dem Fall Root/Gold) möglich wären?

    Und die Ziffer definiert dann den Klartext (welchen man aber auch angeben muss im Converter)


    Also nix anderes wie mit dem Modulationen?

    Code
                elif f == 'M':  # %M - modulation (dvb-s/s2/c)
                    x = self.tpdata.get('modulation', 1)
                    if type == iDVBFrontend.feSatellite:
                        result += x in range(6) and {0:'Auto', 1:'QPSK', 2:'8PSK', 3:'QAM16', 4:'16APSK', 5:'32APSK'}[x] or ''

    Darauf hätte ich auch kommen können :smiling_face:


    Auf jeden Fall... Tada :smiling_face: Genauso hab ich mir das vorgestellt... Ganz herzlichen Dank!

    Bilder

  • Binsche

    Hat das Label [gelöst] hinzugefügt.
  • Freut mich, dass es für dich jetzt passt.


    Ja, im Code gab es noch mehr Varianten mit range :winking_face:
    Das hat sich da ja regelrecht angeboten :grinning_squinting_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Am Converter wurde noch etwas Feintuning betrieben, so dass die Mulitstream Input ID tatsächlich in der Infobar nur dann auf dem jeweils aktuell laufendem Programm bzw. Transponder erscheint, welches(r) auch tatsächlich Multistream Übertragung nutzt, bzw. der PLS Codezahl nur dann erscheint, wenn auch PLS tatsächlich verwendet wird.


    Im screen name="InfoBar" sieht es hier (in dem von mir verwendeten Skin) dann so aus:

    Code
        <widget backgroundColor="background" font="Regular; 17" foregroundColor="grey" noWrap="1" position="125,123" render="Label" size="500,20" source="session.CurrentService" transparent="1" zPosition="3">
          <convert type="cnServiceName">%O  %F  %p  %Y  %f  %s  %M  %r  %Z  %V  %X</convert>
        </widget>

    %Z # Multistream Übertragung (ja/nein)

    %V # PLS Modus verwendet (ja/nein)

    %X # PLS Code (Root/Gold)


    Beispiel Screenshot ohne Multistream, ohne PLS:


    Beispiel Screenshot Multistream, ohne PLS:


    Beispiel Screenshot Multistream, mit Gold Sequenzcode:


    Beispiel Screenshot Multistream, mit Root Sequenzcode:


    Die ursprüngliche Converter Datei "ServiceName2.py" von Vlamo einschliesslich der Erweiterung für Multistream und PLS ist im Anhang zu finden.


    Ergänzt wurden die Zeilen 217 - 230:

    und Zeile 340:

    Code
                    elif f in 'TtsFfiOMpYroclhmgbeZVX':


    Vielen Dank für die Mitarbeit und Unterstützung von Sven H und Handycracker2k2

    Dateien