[osd2web + seahawks kivy client] Hilfe zur Reaktivierung unter Ubuntu Jammy yavdr - Vorsicht "noob" auf diesem Gebiet

  • Hallo,


    da hier die Anzeige auf einem "kleinen TFT / 4:3" mit osd2web aus ~3m natürlich suboptimal ist, versuchte ich das PoC kivy JS.Script "kivy-osd2web" von Seahawk mal auszuprobieren (https://github.com/seahawk1986/kivy-osd2web) - das wesentlich besser auf kleinen Displays skalieren sollte - siehe hier: RE: yavdr ansible


    Es müßten alle Pakete zur Verwendung am System installiert sein, aber vermtl. hat sich da mittlerweile bis zu jammy so einiges geändert. Hier hab ich das "master.zip" mal runtergeladen und nach Entpacken sudo python2 ./vdr_status_display.py ausgeführt, leider kommt eine Fehlermeldung zu "twisted_reactor":


    Python
    Traceback (most recent call last):
    File "./vdr_status_display.py", line 6, in <module>
    from kivy.support import install_twisted_reactor
    ImportError: No module named kivy.support


    vdr hatte zum Testzeitpunkt osd2web mit "ViewOnly=1" automatisch via kiosk-browser die Anzeige (halt zu klein) am TFT am Laufen - den Listener localhost:4444 "up", ist aber unabhängig vom Fehler ..


    Bin mir nicht sicher, wie ich das kivy/js Script sauber beim Start/Boot einbinden könnte, wenn es denn überhaupt zum "Fliegen zu bringen ist". Eventuell liegt es aber doch nicht an so viel .. vielleicht hat jemand eine Idee, Hinweis zum Weiterkommen .. :monster2


    Grusz!

  • folgende Versionen wären aktiv:




    [/code]

  • Es gibt einen extra Branch für python3 (die Unterstützung für python2 ist ja schon einige Jahre ausgelaufen), den ich damals für Taipan angelegt hatte: https://github.com/seahawk1986/kivy-osd2web/tree/python3


    Ich habe das gerade auf einem Ubuntu 22.04 System durchgespielt, da ist alles nötige in den Paketquellen:

    Code
    sudo apt install python3-kivy python3-twisted python3-autobahn fonts-roboto
    git clone https://github.com/seahawk1986/kivy-osd2web -b python3
    cd kivy-osd2web
    ./vdr_status_display.py

    Ich hatte jetzt nur mal in der vdrstatusapp.ini den Wert default_screen = clock gesetzt, das scheint auf den ersten Blick zu funktionieren (auch wenn es beim Start einige Warnungen gibt, dass Dinge veraltet sind).


    Wenn du ein yavdr-ansible System hast, sollte sich das recht einfach als Ersatz für osd2web mit kiosk-Browser starten lassen - dazu braucht es dann noch ein Drop-In für die Systemd-Unit /var/lib/vdr/.config/systemd/user/osd2web.service - also z.B. sowas:

    Code: /var/lib/vdr/.config/systemd/user/osd2web.service.d/kivy.conf
    [Service]
    ExecStart=/usr/bin/on_vdr -o -c '/pfad/zur/vdr_status_display.py'

    Nach einem Neustart sollte es dann anstelle des kiosk-browser gestartet werden.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Vielen Dank für deine immer wieder weiterführenden Hinweise - du bringst alles immer "auf den Punkt" (donate :) - jetzt geht's schon viel weiter - allerdings bleibt am TFT (nach dem Reboot) nur das "blaue yavdr Logo". Ich muss mir das morgen nochmal ansehen (eventuell Rechte). Folgend der Output bei einem manuellem Start:



    Aber doch vielversprechend!


    :monster1

  • Hallo,


    bei folgendem Part habe ich Verständnisporbleme - es wird tatsächlich "nur" eine conf-Datei unter einem neuen Verzeichnis unter user (osd2web.service.d) angelegt? /var/lib/vdr/.config/systemd/user/osd2web.service bleibt dabei einfach unverändert?

    [..]

    Wenn du ein yavdr-ansible System hast, sollte sich das recht einfach als Ersatz für osd2web mit kiosk-Browser starten lassen - dazu braucht es dann noch ein Drop-In für die Systemd-Unit /var/lib/vdr/.config/systemd/user/osd2web.service - also z.B. sowas:

    Code: /var/lib/vdr/.config/systemd/user/osd2web.service.d/kivy.conf
    [Service]
    ExecStart=/usr/bin/on_vdr -o -c '/pfad/zur/vdr_status_display.py'

    Nach einem Neustart sollte es dann anstelle des kiosk-browser gestartet werden.


    Ich hab  ./vdr_status_display.py -d  mit "debug" gestartet - leider fehlt hier noch etwas ==> "x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'" ==> [CRITICAL] [App ] Unable to get a Window, abort.



    Grusz!


    //Edit: es wird doch nicht daran liegen, daß die kivy Anwendung via ssh in einem terminal gestartet wird? Irgendwie kommt mir vor, dass noch irgend eine Abhängigkeit fehlt .. ?

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    Einmal editiert, zuletzt von ciax ()

  • //Edit: es wird doch nicht daran liegen, daß die kivy Anwendung via ssh in einem terminal gestartet wird? Irgendwie kommt mir vor, dass noch irgend eine Abhängigkeit fehlt .. ?

    Es liegt vermutlich daran, dass du kein DISPLAY als Umgebungsvariable definiert ist (z.B. export DISPLAY=:0.1 für den zweiten Bildschirm) - wenn du von der SSH-Session aus eine Session für den User vdr haben willst, die die Umgebungsvariablen von dessen GUI-Session widerspiegelt, kannst du über tmux darauf zugreifen: sudo tmux -S /tmp/tmux-666/default

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo,


    was soll ich sagen, mit setzen der Displayvariable (wenn man's richtig macht - ich hatte :1.1 genommen) startet deine kivy Anwendung und die Ausgabe erscheint am TFT. Super!


    Und Danke auch für den Tipp mit "tmux" - immer so praktische Hinweise.


    Was noch nicht funktioniert, ist die Anzeige nach einem Reboot der Box - da kommen einige komische Meldungen im log (Auszugsweise):



    .. und es bleibt am TFT das blaue Standard yavdr-Logo.



    Aber (mit etwas Hilfe :tup ) wird's schon langsam .. :] :)

  • Ah, dann muss man ExecStart erst gezielt leeren, bevor man es übersteuern kann - also:

    Code: /var/lib/vdr/.config/systemd/user/osd2web.service.d/kivy.conf
    [Service]
    ExecStart=
    ExecStart=/usr/bin/on_vdr -o -c '/pfad/zur/vdr_status_display.py -f'

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • .. du bist der Beste - jetzt geht's auch nach einem Restart der Box :]


    Eine "Kleinigkeit" (will nicht meckern) habe ich noch - die Anzeige am TFT sieht wie im angehängten Bild aus (Vorsicht "staubig"). Leider wird nicht der ganze Bildschirm mit der Anzeige ausgefüllt. Man sieht auch den Fensterbalken der Anwendung oben. Ich weiß nicht, an was das liegen könnte - osd2web hatte den ganzen Bildschirm ausgefüllt. Für das Display hatte ich aus einer alten Installation noch eine EDID rumliegen, die ist nun bei X im Einsatz (?), bin mir aber nicht sicher, ob überhaupt die richtige Auflösung genutzt wird (dachte immer es wäre ein 640x480er, aber EDID sagt etwas anderes ... das Xorg.0.log meint, dass es genutzt wird, teilt allerdings nichts über die Auflösung mit:


    Code
    [     9.469] (--) NVIDIA(GPU-0): EST LILY Ver1.00 (DFP-0): connected
    [     9.469] (--) NVIDIA(GPU-0): EST LILY Ver1.00 (DFP-0): Internal DisplayPort
    [     9.469] (--) NVIDIA(GPU-0): EST LILY Ver1.00 (DFP-0): 1440.0 MHz maximum pixel clock


    EDID


    falls dies überhaupt mit der "zu kleinen Anzeige" zusammenhängt.


  • Da gibt es mehrere Möglichkeiten - am einfachsten ist es das Programm mit dem Schalter -a für den Vollbildmodus mit automatischer Anpassung an die Bildschirmauflösung aufzurufen. Ansonsten unterstützt es auch noch andere Methoden wie einen Pseudo-Vollbildmodus, bei dem die Fensterdekoration entfernt wird und man eine beliebige Auflösung vorgeben kann:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • .. dachte das "Script" ist ein PoC .. Spitze - mit

    Code
    ExecStart=/usr/bin/on_vdr -o -c '/pfad/zur/vdr_status_display.py -a'


    wird's schön skaliert auf das TFT :tup


    PS: beim Ansehen einer Aufnahme zeigt es "automatisch" das EPG dazu an, beim Rückschalten auf "Live-TV" bleibt die EPG-Anzeige für die aktuelle/folgende Sendung (auch okay), aber nicht mehr die "gewohnte Uhr" ..


    Danke für die "Schubser" :coolgr

  • Was wäre denn das gewünschte Verhalten? Für eine einfache Anzeige der Uhrzeit (dann braucht es auch keine Anbindung an den VDR) könnte man das Skript stark verschlanken.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Initial habe ich drzt. über die vdrstatusapp.ini den Startbildschirm auf default_screen = clock gesetzt (die Box startet am TV mit "live-TV", am TFT mit der Uhr). Wenn man nun eine Aufnahme startet, schwenkt von rechts nach links (was ich übrigens cool finde) die EPG-Info/Beschreibung der Aufnahme rein. Wenn man nun die Aufnahme stoppt/abbricht und zum "live-TV" zurück geht, schwenkt von rechts nach links das EPG für die laufende und folgende Sendung ein. Die Uhr (sollte hier "standard" sein) kommt nicht mehr.


    Das ist jetzt nicht weiter tragisch .. ganz vom vdr abgekoppelt soll es (eigentlich) nicht sein.


    Ich bin etwas durch dein Skript "durchgstöbert" und hab über python/kivy ein wenig gelesen - sorry, keine Chance - da fehlt die Routine. Ich finde ja nicht mal in vdr_status_display.py, wo man zB. die Farben der Schrift für die Zeit ändern könnte oder für den Balken der laufenden Sendung unter der Uhrzeit.


    CPU nimmt das Skript aktuell um die ~10% in Anspruch (auf einem SoC J3455M). Bei einer expliziten Anzeige der Uhr ohne vdr-Anbindung wird das weniger sein - eine große "analoge Uhr" am Display darzustellen wird dennoch nicht soo simpel sein - ich bring sie nicht mal digital auf's TFT :schiel :jb


    Grusz!


    PS: .. "ChatGPT" bringt das mit meinen "promts" nicht auf die Reihe :monster2

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu jammy / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

    Einmal editiert, zuletzt von ciax ()

  • Die Uhr (sollte hier "standard" sein) kommt nicht mehr.

    Das hängt an dieser Zeile wenn die Wiedergabe beendet wird: https://github.com/seahawk1986…ster/osd2web_data.py#L170 - da könntest du auch 'clock' eintragen.

    Ich bin etwas durch dein Skript "durchgstöbert" und hab über python/kivy ein wenig gelesen - sorry, keine Chance - da fehlt die Routine.

    Ich bin damals über einen c't Artikel zu kivy gestolpert und bin recht schnell reingekommen (mich hat damals vor allem twisted mit der asynchronen Programmierung aufgehalten - das war lange, bevor Python3 asyncio bekommen hat) - aber danach habe ich nicht mehr wirklich etwas damit gemacht, weil es lange Zeit nur für Python2 verfügbar war.

    Ich finde ja nicht mal in vdr_status_display.py, wo man zB. die Farben der Schrift für die Zeit ändern könnte oder für den Balken der laufenden Sendung unter der Uhrzeit.

    Kivy splittet das auf - der Clock-Screen ist hier definiert: https://github.com/seahawk1986…/master/vdrstatus.kv#L639 ff. - formatierter Text funktioniert über Markup im String: https://kivy.org/doc/stable/ap…ix.label.html#markup-text - d.h. man müsste das in den String, der die aktuelle Uhrzeit repräsentiert einarbeiten: https://github.com/seahawk1986…dr_status_display.py#L220


    Das Progressbar-Widget ist ein bisschen unpraktisch - https://stackoverflow.com/a/51732176 bietet da einen Ansatz, um die Farbe zu ändern.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das hängt an dieser Zeile wenn die Wiedergabe beendet wird: https://github.com/seahawk1986…ster/osd2web_data.py#L170 - da könntest du auch 'clock' eintragen.

    .. Danke :cool1 - das hat schon mal funktioniert :tup - für die anderen Tipps brauch' ich noch etwas :schiel - super! :coolred

  • für die anderen Tipps brauch' ich noch etwas :schiel - super! :coolred

    Die Schriftart der Uhr hab ich auf ds-digital geändert - bei den anderen Details blicke ich nicht mehr durch, viele "Verschachtelungen, coden ..", keine "Routine" .. ChatGPT hilft auch nicht wirklich :O|


    Die Progressbar (laufende Sendung) unter der Uhr am Display, statt blau sehr grell "rot, orange, grün .." anzuzeigen .. finde ich leider nicht auf die Schnelle. Sollte doch ein "Farbwert" (wie [color=3333ff]) sein? Die "Dicke" des Balkens etwas größer zu stellen, bin mir da absulut nicht sicher, wo "rumschrauben".


    Für meine alten Augen wäre das ideal :coolgr


    Egal :tup - bin nun sehr zufrieden damit.

  • ChatGPT hilft auch nicht wirklich :O|

    Ich habe noch nie gesehen, dass das bei komplexeren Programmen hilfreich ist - insbesondere bei Rust scheitert das grandios (aber dafür findet man schnell die Seiten, die für das Training genutzt wurden).

    Die Progressbar (laufende Sendung) unter der Uhr am Display, statt blau sehr grell "rot, orange, grün .." anzuzeigen .. finde ich leider nicht auf die Schnelle. Sollte doch ein "Farbwert" (wie [color=3333ff]) sein? Die "Dicke" des Balkens etwas größer zu stellen, bin mir da absulut nicht sicher, wo "rumschrauben".

    Das hatte ich schon weiter oben verlinkt, das Widget hat kein Farb-Attribut, weil es die Balken aus mehreren Bildern zusammensetzt:

    Das Progressbar-Widget ist ein bisschen unpraktisch - https://stackoverflow.com/a/51732176 bietet da einen Ansatz, um die Farbe zu ändern.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • seahawk1986

    ...wenn ich doch nur noch einen Monitor dranhängen hätte würde ich auch wieder Deine Variante nutzen - schnief. :thumbup:

  • ciax

    wenn Du es komplett nach Deinen Wünschen fertig hast, mach doch bitte nochmal ein aktuelles Bild... ;)

  • (aber dafür findet man schnell die Seiten, die für das Training genutzt wurden).

    .. damit keine Missverständnisse entstehen - dein Code wurde nicht an OpenAI/MS weitergegeben, nur eine kleine Passage (def) zur "Clock". Beim nächsten "Webupdate" ist vdr_status_display.py wahrscheinlich eh auch dabei :alien5 :coolgr


    Anbei etwas zum Lachen (entkoppelt von vdr / on_vdr)- denke, dass ich beim Original bleibe, das passt super! :]


    Grusz!


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!