Willkommen! Melden Sie sich an oder registrieren Sie sich.

Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.

Anmelden - oder - Benutzerkonto erstellen

Converter/Render Netzwerkmonitor

  • Moin, da hat mich jemand gefragt ob ich den NetzwerkMonitor nicht und/auch als Converter/Render anbieten will.
    So das man das Teil im z.B. im Skin anwenden kann.
    Ok, wollen schon, aber nicht können. Ich weiß gar nicht wie so ein Converter/Render arbeitet, und auch testen kann.
    Und ja, es ist Richtig das ich bis vor knapp 2 Jahren absolut keinen schimmer von Python hatte, dank eurer Hilfe bin ich heute in der Lage einfache Plugin's zu schreiben.
    Sollte jemand Lust und Zeit haben, kann er das ja übernehmen (den Converter/Render), oder mir eine Hilfestellung geben so das ich das umbauen kann.

  • Mmm, also würde das dann ein Renderer?
    Im NetzwerkMonitor kann der User in den Einstellungen eine von vier Schnittstellen auswählen und zwischen Bit/Byte umschalten.
    Das müsste dann so umgegaut werden das im Skin alle Möglichkeiten abgefragt werden können, dann wären 16 Werte zu übergeben, oder wie?
    Also z.B. eth0 = tx_byte + rx_byte und eth0 tx_bit + rx_bit, wäre das so?


    Aber im Prinzip hat der Normal-User eth0 + WLan, das sollte es gewesen sein.


    Boa Ey.........
    und jetzt bestell ich mir erst einmal einen 2. Monitor, nur einen ist schei..!

  • Es gab mal irgendwo im git eine schöne Darstellung, wie Renderer und Converter zusammenarbeiten.


    Der Converter wird von bestimmten Events getriggert. Dem Converter können im Skin Type (was für eine Info will ich) und Parameter mitgegeben werden. Die Information wird anschliessend so zurückgegeben, wie sie für den Renderer als Input benötigt werden. Der Renderer ist letztlich für die Darstellung der Information im Skin zuständig.


    Dr.Best hat eine schöne Beschreibung zu seiner EventList skincomponent gemacht:

  • Moin, ich sehe das dann so:

    Zitat


    <widget render="Netztraffic" ...... name="rx_byte" ..... />


    wobei "Netztraffic" der Renderer und "rx_byte" die abzufragenden Werte wären.
    Ist das so richtig?


    PS.: Dre , mit "dataAvail" komme ich nicht klar, wie sieht das den mit "Popen" aus? Funktionieren tut es damit.

  • Was ist denn das Problem bei eConsoleAppContainer? dataAvail resp. die zugewiesene Funktion wird aufgerufen, wenn Daten ankommen. Das Problem bei popen ist grad bei einem Converter schlecht. Du blockst damit enigma2. Und da du ja fortlaufend Daten abfragst, blockierst du e2 immer wieder.

  • Moin, im groben gesagt läuft es schon mal, ohne Blocking=).
    Ich hätte da aber noch zwei Fragen:
    1.) wie bekomme ich herraus was für einen Converter ich benutzen kann/muss?
    2.) jetzt habe ich zum Testen den "global.CurrentTime", stand irgendwo, mit "self.text = rx_bytes" genommen.
    das ergibt genau eine Zeile, ich habe aber Zwei, "tx_bytes" will auch angezeigt werden.


    Was muss ich machen damit ich beide Werte angezeigt bekomme?
    also irgendwie so:

    Zitat


    self.text1 = rx_bytes
    self.text2 = tx_bytes


    Am schönsten wäre ja noch, wenn rx + tx einzeln positionieren lassen würden:D


    Danke für eure Geduld und Hilfestellung!


    PS.: Was soll es denn das sein Byte oder Bit, was ist euch lieber? Dritte Möglichkeit 2 Renderer.

  • Sorry, Zeit ist grad rar. Darum nur kurz. Also benutzen kannst du keinen Converter. Du musst selbst einen Schreiben. Und Bit oder Byte muss ja nicht schwarz/weiss gesehen werden. Das kannst du über einen Type Parameter regeln. Je nach Type wird dann Bit oder Byte ausgegeben.


    Aber wenn du einen Converter als Vorlage willst, dann würde ich einen nehmen, der ein File ausliest.

  • Sorry, Zeit ist grad rar. Darum nur kurz. Also benutzen kannst du keinen Converter. Du musst selbst einen Schreiben. Und Bit oder Byte muss ja nicht schwarz/weiss gesehen werden. Das kannst du über einen Type Parameter regeln. Je nach Type wird dann Bit oder Byte ausgegeben.


    Aber wenn du einen Converter als Vorlage willst, dann würde ich einen nehmen, der ein File ausliest.

  • Tipp: schau dir mal BoxInfo.py an. Da wird auch ein File ausgelesen.

  • Das mit dem Converter sieht ja relativ machbar aus.
    Nur noch mal ganz kurz, so sieht die Zeile aus mit dem ich den Renderer abfrage:

    Zitat


    <widget render="Mytraffic" source="global.CurrentTime" position="0,0" size="400,64" halign="center" font="Regular;26" foregroundColor="blue" />


    Wenn ich jetzt die Converter class NetztrafficCon nennen würde, wie benenne ich das im Skin source=NetztrafficCon, oder wie?

  • Momenteinmal... die Daten werden doch im Renderer erzeugt, dann wird im Skin als souce global.CurrentTime angegeben.
    In global.CurrentTime werden die Daten für den Skin aufbereitet, und im Skin ausgegeben, oder?
    Mit global.CurrentTime funktioniert es ja, zumindest eine Zeile.
    Wo, z.B., kommt global.CurrentTime überhaupt her? Kann ich nirgents finden, taucht aber überall auf??? im Skin.


    Ich brauche Nachhilfe! Vielleicht sollte ich den nächsten Sommer in der Sch.... verbringen=)


    Ich habe das bisher so gesehen, der Renderer erzeugt die Daten und der Converter bereitet sie für den Skin auf.
    Nach meinem Verständnis müsste dann die Zeile im Skin ungefähr so aussehen:

    Zitat


    <widget render="MyTrafficRender" source="global.MyTrafficConverter" name="rx_byte" position="10,10" size="60,30" font="Regular;26" />


    Das Problem ist, das es einen GS ergibt, weil global.MyTrafficConverter nicht gefunden wird, wird auch nicht kompiliert, der Renderer schon.


    Am Samstag soll der zweite Monitor kommen, dann hab ich zwar den besseren Überblick, aber Durchblick...

  • Du kannst nicht einfach einen beliebigen source angeben ,man kann nur das nutzen was der code des benutzten screens ( hier bei dir dann der movieplayer) her gibt.
    Daher du kannst renderer oder converter einsetzen aber diese müssen über einen in dem screen verfügbaren source laufen.

  • koepi


    hast du dir in Post #2 verlinkten Threat schon mal angesehen? Damit kannst du jedes x-beliebige file auslesen und mit dem Inhalt mit dem os.system "spielen" also auch die Werte umrechnen etc.


    die class im verlinkten Beispiel ist dann der Name des renders, den du im skin aufrufen kannst, im verlinkten Beispiel z.B. in der Infobar, sieht dann bei mir so aus:

    Code
    1. root@dm800se:~# grep DHT22 /usr/share/enigma2/DMConcinnity-HD-FBT/skin.xml
    2. <widget render="DHT22Hum" position="720,132" size="150,24" font="Regular;18" backgroundColor="black" foregroundColor="cyan" source="global.CurrentTime" valign="top" halign="left" zPosition="2" transparent="1"/>
    3. root@dm800se:~#


    das global.CurrentTime sorgt dafür, dass kein statischer Wert in der Infobar ausgegeben wird, sondern auch jede Änderung im ausgelesenen file solange die Infobar geöffnet ist. Ich zeige auf der dm800 auch die Lüfter rpm Infobar an, da sieht man schön wie sich der Wert, also die Drehzahl ständig ändert, lässt man das source="global.CurrentTime" weg, wird das file nur einmal beim Öffnen der Infobar ausgelesen = statischer Wert


    \\Edit
    ich weiß jetzt aber nicht, ob source="global.CurrentTime" auch ausserhalb der Infobar also z.B. in einem screen eines Plugins funktioniert,

  • Moin,
    Fred , wie du vielleicht gelesen hast gibt CurrentTime genau einen Wert aus, ich habe mindestens 2, besser wäre 4 Werte.
    Und ich weiß nicht ob es in Ordnung ist alle 0,5 Sek ein File zuschreiben, ich denke eher nicht. Vielleich zum Testen, am besten wäre ein Value zu übergeben.
    Wie Dre schon oben schrieb, werde ich mir da was machen müssen. Ich weiß zwar noch nicht genau wie, aber das wird schon.
    Es ist mir auch ein (noch) ein Rätsel wie ich einen Parameter vom Skin in den Renderer bekomme, zum Umschalten Bit / Byte, das ist aber zweitrangig.
    Wie sagt man so schön, Rom ist auch nicht an einem Tag erbaut worden.


    zombi , hier geht es nicht um einen Movieplayer sondern um die Übertragungsraten der Box, Lan / Wlan in Bit bzw. Byte in der Sekunde.
    Das Plugin läuft, mit Trixen mit dem Renderer (TrafficRen) in der Movieplayer-Infobar, aber nicht zufrieden stellend.


    @all, Renderer hat den Namen TrafficRen, die class hat den gleichen Namen, und so ist es auch beim Converter, TrafficCon Name und class.
    was muss ich im Skin als Source angeben, source=TrafficCon oder was?

  • Also doch in der moviebar und da stimmt das was ich schrieb ,du kannst da nur die source einbauen die in der movieplayerbar erlaubt ist vom code her und das ist deine halt nicht .
    Man kann nicht wahllos etwas in irgendwelche screens einbauen sondern nur das was erlaubt ist .