Converter zur Anzeige von Gesamtkapazität und belegtem, freiem und verfügbarem Speicher des jeweils aktiven Speichermediums

  • Ich habe mir diesen Converter (DiskSpaceInfoWeFr) erstellt, weil im EMC nur eine sehr spartanische Information über die Kapazitäten der Speichermedien ausgegeben wird.
    Für meinen verwendeten Skin (Nemesis_FHD) gibt es zwar eine Lösung von Maggy, bei dieser kann man aber nicht einstellen, dass die Info vom jeweils aktivem Speichermedium gelesen wird.

    Beispiel für Implementierung im Skin:

    Display Spoiler


    <widget backgroundColor="background" font="Regular; 30" foregroundColor="foreground" position="20,937" render="Label" size="1143,43" source="Service" transparent="1" halign="left" valign="center" noWrap="1">
    <convert type="DiskSpaceInfoWefr">TUA%,Long,False</convert>
    </widget>

    Der Converter hat 3 Parameter (getrennt durch Komma).
    Gross-/Kleinschreibung ist egal, beim 2. und 3. Parameter kann die Eingabe auf den Anfangsbuchstaben gekürzt werde.

    1. Bestimmt, welche Informationen ausgegeben werden:
    T (für Total): Speicherkapazität des Mediums, U (Used): verwendeter/belegter Speicher, F (Free): freier Speicher, A (Available): verfügbarer Speicher
    Jedem Parameter ausser T kann ein Prozentzeichen nachgestellt werden - in diesem Fall wird neben der Grösse auch der Prozentsatz in Relation zur Gesamtkapazität ausgegeben
    Die Eingabereihenfolge ist egal, ausgegeben wird aber immer in der Reihenfolge TUFA
    Wenn F und A verwendet werden und der freie Speicherplatz gleich dem verfügbaren ist, wird der Wert/Prozentsatz nur 1 x ausgegeben (mit entsprechendem Text)

    2. Text vor der Information:
    L (Lang), K oder S (Kurz/short), ansonsten kein Text

    3. Ausgabe der Werte auf Basis 1024?
    F (Falsch), N (Nein), D (Dezimal): 1 KB = 1000 Bytes, 1 MB = 1000000 Bytes, ...
    alles andere: 1 KB = 1024 Bytes, ...

    Die Werte werden ja nach Grösse in K, M, G, T ... mit 4 Stellen ausgegeben, wobei das Komma entsprechend verschoben wird, sodass immer 4 signifikante Stellen angezeigt werden.
    Prozentangaben erfolgen in Klammer mit einer Nachkommastelle.
    Beim obigen Beispiel sieht die Ausgabe bei mir so aus: Gesamt: 999,7 G Belegt: 592,2 G Verfügbar: 397,4 G (40,8%)

    Als Sprachen sind Deutsch und Englisch (beil allen anderen Sprachen verwendet) abgebildet.

    Der Converter funktioniert mit Skins der Standard-MovieList ebenfalls.

    Viel Spass damit!

    Liebe Grüsse,
    WeFraJo

  • Mit der vorigen Version geht es nur mit Änderungen im Source-Code des Converters.

    Ich habe jetzt weitere Parameter eingebaut: Bei 4 - 6 wird jeweils nur die erste Ziffer verwendet.

    4. Maximale Zeichen vor dem Komma (Eingaben < 3 werden auf 3 gesetzt - sonst können die Einheitenbereiche nicht abgedeckt werden)

    5. Signifikante Zeichen (max. Anzahl der Ziffern ohne Komma) - wenn kleiner als bei Par.4 wird Wert auf diesen gesetzt

    6. Anzahl der Nachkomma bei Prozent

    7. Zeichen, dass der ermittelten EInheit nachgestellt wird (sollte B sein - aus K wird KB usw.)

    Damit Du das gewünschte bekommst must du x, x, x, 4, 6, x, B eingeben.

    Bitte ausprobieren und rückmelden, ob es so passt.

    An der Gleitkommamethode selbst möchte ich nichts ändern, d. h. die Anzahl der Nachkommas ist situationsabhängig, damit die Anzahl der signifikanten Zeichen erfüllt werden kann.
    Wenn man die Parameter 4 - 6 nicht verwendet bleibt alles wie vorher.

  • <convert type="DiskSpaceInfoWefr">TUA%,Long,False,4,6,1,B</convert>

    An den mit x gekennzeichneten Positionen weiss ich nicht, was du haben willst.
    In deinem Fall sieht das dann beispielsweise so aus:
    Gesamt: 1000,00 GB Belegt: 650,123 GB Verfügbar: 445,012 GB (44,5%)

    Edit:
    Ich empfehle als dritten Parameter 'F'.
    Eine 1 TB Festplatte/SSD hat Eintausend-Milliarden Bytes (1.000.000.000.000). 1 KB hat 1024 Bytes. 1 MB = 1024 * 1024 = 1.048.576 Bytes usw. Das ergibt bei Anzeige in TB bereits 9,1%/9,95% Abweichung (1 TB = 1.099.511.627.776 Bytes). Wir denken halt immer noch Dezimal.

  • Ich habe noch eine Erweiterung eingebaut, damit der Converter auch für die Infobar verwendet werden kann:

    Wenn in der Situation, wo die Info ausgegeben werden soll, kein aktuell verwendetes Verzeichnis ermittelbar ist (was bei InfoBar der Fall ist), wird statt dessen das eingestellte Verzeichnis für Timer-Aufnahmen ermittelt und die Information für dessen Speichermedium ausgegeben. Ist dort auch nichts angegeben oder ein ungültiges Verzeichnis wird /media/hdd verwendet.

    Für die Infobar im EMC oder MovieList ist keine Veränderung in den Skin-EInstellungen notwendig, wenn die vorangegegangene Version bereits verwendet wurde.

    In der InfoBar für Live-TV beispielsweise so einbauen:

    Display Spoiler


    <widget backgroundColor="background" font="Regular; 30" foregroundColor="foreground" position="20,150" render="Label" size="1143,43" source="session.CurrentService" transparent="1" halign="left" valign="center" noWrap="1">
    <convert type="DiskSpaceInfoWefr">TUA%,Long,False</convert>
    </widget>

    Und einen Fehler habe ich auch noch behoben:

    Beim Prozentsatz für 'Verfügbar' wurde bisher der von 'Frei' ausgegeben, sollte jetzt richtig sein.

  • Code
    <widget backgroundColor="background" font="Regular; 20" foregroundColor="foreground" position="1250,1042" render="Label" size="500,24" source="session.CurrentService" transparent="1" halign="left" valign="center" noWrap="1">
    <convert type="DiskSpaceInfoWefr">TUA%,Long,False</convert>
    </widget>

    wird bei mir in der IB leider nix angezeigt.

    EDIT
    ich habe noch Z position in den schnipsel mit eingebaut. jetzt wird es angezeigt.
    kann ich den schnipsel auch zusätzliche für HDD1 und USB anpassen ?

  • Auch das geht:

    Habe einen neuen Parameter hinzugefügt:

    8. Verzeichnis, für dessen Medium (HDD, SSD) die Grösseninformation ausgegeben werden soll
    z. B. /media/hdd für die erste Festplatte oder /media/usb ...

    Wenn dieser Parameter nicht leer ist, wird auf jeden Fall die zu diesem gehörige Information ausgegeben.
    Wenn es das eingegebene Verzeichnis nicht existiert, wird 'Disk Size not available' ausgegeeben.

    Wenn du die Informationen für mehrere Medien gleichzeitig in einem Screen ausgeben willst, das widget entsprechend oft aufrufen.

  • Genauso wie in deinem Post #7, zusätzlich als 8. Parameter das Verzeichnis des gewünschten Speichermediums.
    Also z. B.
    <convert type="DiskSpaceInfoWefr">TUA%,Long,False,,,,,/media/hdd</convert>

  • Da haben meine Finger jetzt nicht das gemacht, was mein Gehirn wollte ..

    Ich habe es im Post10 korrigiert.

  • zeigt jetzt trotzdem bei beiden nur die interne HDD an

    Code
    <widget backgroundColor="background" font="Regular; 22" foregroundColor="foreground" position="1150,1027" render="Label" size="700,28" source="session.CurrentService" transparent="1" halign="left" valign="center" zPosition="4" noWrap="1">
    <convert type="DiskSpaceInfoWefr">TUF%,short,False,4,6,1,B,,,,,/media/hdd</convert>
    </widget>
    
    
    <widget backgroundColor="background" font="Regular; 22" foregroundColor="foreground" position="1150,1055" render="Label" size="700,28" source="session.CurrentService" transparent="1" halign="left" valign="center" zPosition="4" noWrap="1">
    <convert type="DiskSpaceInfoWefr">TUF%,short,False,4,6,1,B,,,,,/media/hdd1</convert>
    </widget>
  • musst du so eintragen
    >TUF%,short,False,4,6,1,B, /media/hdd</convert>
    >TUF%,short,False,4,6,1,B, /media/hdd1</convert>

    >TUA%,Long,False,/media/usb</convert>
    kommt bei mir immer die hdd
    mach ich was falsch?
    cu
    speedy005

    so klappt es
    >TUA%,Long,False,4,6,1,B, /media/usb</convert>

  • @speedy005
    Der Converter hat jetzt insgesamt 8 Parameter, alle getrennt durch Komma (,) einzugeben.

    Du musst also eingeben:
    TUA%,Long,False,,,,,/media/usb

    Du hast /media/usb als 4. Parameter eingegeben, bedeutend die maximale Anzahl vor dem Komma. Da darin kein Zeiche aus 0 - 9 enthalten ist wird der Standardwert 3 verwendet.
    Parameter 7 ist also leer. Und das bedeutet: wenn kein Verzeichnis aus Service ermittelt werden kann, wird dein eingestelltes Verzeichnis für Timer-Aufnahmen herangezogen.

    @Lucille_twd
    Bei dir ist es jetzt der 12. Parameter - zähl mal alle Kommas!

  • Passt ja auch so, jetzt ist /media/xxx der 8. Parameter, also davor 7 Komma.

    Parameter 2 bis 7 KANN man eingeben - wenn nicht werden die beschriebenen Standards herangezogen.

  • Hallo
    wohin muss ich die diskspaceinfoWefr.py kopieren


    Gruß

    scanner

  • nach /usr/lib/enigma2/python/components/converter.

    Ich hoffe ich habe das richtig im Gedächtnis - bin unterwegs

  • Sehr praktischer Converter!

    Nur eine Idee zur Formatierung, die ich selbst verwende. Mir gefällt es, wenn bei Werten nahe an der Grenze zum nächsten Bereich "0.xx" angezeigt wird.

    Code
    0 --> 0B
    10 --> 10.0B
    700 --> 700B
    7000 --> 6.84kB
    70000 --> 68.4kB
    700000 --> 684kB
    1000000 --> 0.95MB
    10000000000000000000 --> 8.67EB
    Code
    def readablesize(size):
        if size<=0:
            return "0B"
        m = math.log(size)/math.log(1024)
        d = math.floor(m+0.02)
        f = "{{:.{}f}}{{}}B".format(sum(1 for l in (0.6643,0.3321) if m-d<l))
        return f.format(1024**(m-d),['','k','M','G','T','P','E'][d])

    Edited 2 times, last by a60608 (October 26, 2022 at 12:40 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!