[Announce] osd2web Plugin

  • osd2web ist ein VDR Skin Interface für den Browser, der das OSD anzeigt und alle Interaktionen welche am OSD möglich sind zulässt.


    Die Skins (Widgets, Layout, ....) sowie die Themes (Farbe, Aussehen, ....) können selbst erstellt werden.


    Gedacht haben wir, Dirk (Rechner) und ich es einerseits als Ergänzung des 'epgd' Web Interface und ggf. auch Nachfolger von live und andererseits als Ersatz für das graphTFT(ng) Plugin welches ich ab jetzt nicht mehr weiter entwickeln und pflegen werde.


    Installation:


    Voraussetzung: libwebsocket Version >= 2.1.0.


    Code
    git clone git@github.com:horchi/vdr-plugin-osd2web.git
    cd vdr-plugin-osd2web
    make install


    epg2vdr
    Verwendet man das Plugin zusammen mit epg2vdr muss >= 1.1.61 sein.
    Für VDR Versionen < 2.3.4 muss der mit dem epg2vdr Plugin ausgelieferte AUX Patch verwendet werden sofern man im Theme auf die erweiterten Event Daten zugreifen möchte, verwendet man diesen Patch muss man das dem epg2vdr beim compilieren verraten (in make.config PATCHED = 1 ein-kommentieren).
    Ab VDR 2.3.4 ist dieser Patch bereits integriert!
    Zum aktivieren der erweiterten Event Daten kann man diese nun in Plugin-Setup (epg2vdr) aktivieren: "Store extended EPD Data to AUX (e.g. for Skins)", diese Einstellung verdoppelt die Größe der epg.data!


    Somit stehen dem Skin zusätzliche Daten wie Category, Genre, Year, Tipp, Rating, Country und viele weitere zur Verfügung. Diese können potentiell dann auch von anderen Skin Plugins genutzt werden.


    Konfiguration:


    Parameter



    setup.conf

    Code
    osd2web.LogLevel = 1   (0-4, default 1)


    Verwendung


    Wenn der VDR gestartet ist zugriff über den Browser:

    Code
    http://<dein host>:4444


    bzw. der konfigurierte Port


    Als graphtft kann man es in einem Browser im Vollbild, im Kioskmodus oder mit einem webkit starten. gibt man in der URL die Option onlyView=1 mit wird die Interaktion ausgeschaltet und die Menüleiste ausgeblendet.


    Code
    http://192.168.200.101:4444/skins/default/index.html?onlyView=1


    Hinweise


    Das Plugin selbst ist ein Skin Plugin, der VDR unterstützt nur ein aktives Skin welches man im OSD Setup des VDR auswählt bzw. einstellt.


    Die nicht interaktive Anzeige (viewOnly) geht immer und zeigt Daten der Aktuellen/Nächsten Sendung oder zur laufende Wiedergabe (wie von graphtft Plugin gewohnt).
    Für die Interaktive Anzeige mit den OSD Menüs muss das osd2web als Theme gewählt sein, herzu gibt es zwei Möglichkeiten:


    - temporär -> indem man im Browser oben rechts auf das Monitor Symbol drückt - solange verschwindet am TV das OSD!
    - permanent -> man konfiguriert im OSD Setup das VDR das osd2web als Skin - dann hat man am TV kein OSD mehr bis man es manuell zurück stellt - dies ist bei Headless Servern sinnvoll



    Help ;)


    nun sind Theme Entwickler gefragt, das mitgelieferte default Theme ist im Browser schon sehr gut verwendbar auch wenn es längst nicht alle Features ausschöpft.
    Für die Anzeige auf einem TFT werden noch Themes benötigt welche ohne scrollen die nötigen Elemente Anzeigen.


    In client/README.md findet man die Voraussetzungen (Tools) welche man zur ThemeErstellung installieren muss. Das default Theme ist ein gute Basis sich um den Syntax anzusehen. Weitere Fragen zur Theme Erstellung kann Dirk am besten beantworten.

  • Hier mal ein paar screenshots:



    Skin und theme sind erstmal nur exemplarisch, da ist nichts optimiert oder dergleichen.


    Die Programmierung basiert auf vue, mit dem relativ einfach htmlcode erzeugen kann und das ganze in Komponenten aufzuteilen.
    Als css-Framework wurde bootstrap eingesetzt, welches weit verbreitet und gut dokumentiert ist.


    In der readme unterhalb von client steht, was zu tun ist, wenn man ein Skin oder Theme erstellen möchte. Wer das mit uns teilen möchte, gibt uns Bescheid, das checken wir dann mit ein.


    Rechner

  • Hi
    Hab ich das richtig verstanden dass man um das Plugin als live Ersatz zu nutzen, dieses als Skin im Setup einstellen muss ?
    Oder kann ich weiterhin z.B. den Skindesigner nutzen, aber bei Starten des Plugins wird auf dieses umgeschaltet ?

  • Hi,


    Merci für das neue Plugin!


    Voraussetzung: libwebsocket Version >= 2.1.0

    Die neuste Version von "libwebsocket" die ich auf Debian/Ubuntu finden konnte ist 2.0.3. Bei Ubuntu Trusty ist die Version "1.2.2"
    Ob sich libwebsocket-2.1.0 für trusty bauen lässt und es dann noch zu Problemen mit libssl-dev(openssl) kommt, wird sich zeigen.
    ...sieht so aus als würde OpenSSL-1.1 von libwebsocket-2.1.0 erwartet.


    [Edit On]
    Da es kein Paket libuv1 unter Trusty gibt libuv1-1.8.0 von Xenial unter Trusty im PPA gebaut - Ok
    libwebsockets-2.1.1 aus git geholt, unter Trusty im PPA gebaut, auch Ok. ...kein Stress mit Openssl
    https://launchpadlibrarian.net…R0~trusty_BUILDING.txt.gz
    [Edit Off]


    Gruss
    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

    2 Mal editiert, zuletzt von wolfi.m ()

  • Alexander hat zu libwebsocket Trusty Pakete in yavdr Main vorbereitet ;)


    Wir haben in Richtung graphtftng Ersatz auch schon ein paar Sachen zu Midori, upstart, Erweiterung openbox.xml zum Betrieb im Fenster vorbereitet, nur ein entsprechendes Skin fehlt noch... ;)


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



    Einmal editiert, zuletzt von CKone ()

  • Ich habe das Plugin mal für yaVDR 0.6 in einem PPA mit VDR-Paketen mit dem AUX-Patch gebaut (die können gerne nach testing-vdr, wenn das mal ein paar Leute ausprobieren, auf meinem VDR läuft das ganze bislang unauffällig): https://launchpad.net/~seahawk…rchive/ubuntu/testing-vdr


    Ohne den AUX-Patch baut osd2web momentan wohl leider nicht:

    Code
    g++ -c -ggdb -O0 -fPIC -Wreturn-type -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wformat -pedantic -Wno-long-long -Wunused-variable -Wunused-label -Wno-unused-result -Wunused-value -Wunused-function -Wno-variadic-macros -Wunused-local-typedefs -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -D__STDC_FORMAT_MACROS -Wunused-but-set-variable -Wunused-but-set-parameter -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -g -O3 -Wall -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STL_CONFIG_H -DOSD2WEB -DLOG_PREFIX='"osd2web: "' -DVDR_PLUGIN -DUSEJSON -DUSEGUNZIP -DPLUGIN_NAME_I18N='"osd2web"' -DGIT_REV='""' -I/usr/include/mysql -o jobject.o jobject.c
    jobject.c: In function ‘int event2Json(json_t*, const cEvent*, const cChannel*, eTimerMatch, int, cOsdService::ObjectShape)’:
    jobject.c:67:24: error: ‘const class cEvent’ has no member named ‘Aux’
        if (!isEmpty(event->Aux()))
                            ^
    jobject.c:73:26: error: ‘const class cEvent’ has no member named ‘Aux’
           if (xml.set(event->Aux()) == success)
                              ^
    make[1]: *** [jobject.o] Error 1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Irgendwie scheint osd2web bei den Timern etwas in der Vergangenheit zu leben (die ER-Timer von November 2016 sind nicht mehr in der timers.conf) und die Sortierung nach Datum scheint auch noch nicht so ganz zu funktionieren:


    Edit: mit in der Make.config aktivierten AUX-Unterstützung crasht mir der VDR ständig, eventuell war das nur ein Folgefehler.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    2 Mal editiert, zuletzt von seahawk1986 ()

  • Build ohne Patch ist behoben, kommt nachehr ins git.
    hast du für den crash ein BT?

  • hast du für den crash ein BT?

    Der Crash tritt erst auf, wenn man ich auf osd2web zugreife, also die URL http://vdr:4444/skins/default/index.html?theme=default aufrufe (bei der Theme-Auswahl unter http://vdr:4444/ noch nicht).


    Die Zeile 318 aus der status.c müsste vom opt-50_graphtftng.patch Pin-Patch stammen - kann der da irgendwie mit hinein spielen?

    Code
    bool cStatus::MsgMenuItemProtected(const char* Name, int menuView)               // PIN PATCH
    {
      for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
         if (sm->MenuItemProtected(Name, menuView) == true)
             return true;
          return false;
    }

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • da geht es um die Zeile 318 in der status.c des osd2web Plugin, in der sehe ich aber nichts kritisches

  • ups, versuche es mal hiermit bitte:



    da ist mir was in die VDR > 20301 Klammer gerutscht :o


    für die status.c des Plugins!

  • da geht es um die Zeile 318 in der status.c des osd2web Plugin, in der sehe ich aber nichts kritisches


    Der Stand, den ich davor zuletzt ausprobiert hatte war der Commit 83b66d6 vom 22.05.2017 - dann muss ich mich wohl mal suchen, ab welchem Commit es kaputt gegangen ist.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • warum? Hilft der Patch von gerade denn nicht? Wenn er hilft schiebe ich ihn ins git!

  • warum? Hilft der Patch von gerade denn nicht?

    Ich hatte deine Antwort beim Posten noch nicht gesehen, ich probiere den Patch gleich aus.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ok, mit dem Patch ist schon mal der Crash beim Aufruf des Webinterface weg, aber das Problem mit der Anzeige der Timerliste noch vorhanden.


    Die Timer von 2016 standen noch in der Liste von epghttp für eine VDR-Installation, die lange nicht mehr gelaufen ist.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • be

    Ok, mit dem Patch ist schon mal der Crash beim Aufruf des Webinterface weg, aber das Problem mit der Anzeige der Timerliste noch vorhanden.


    kommst du die auch alle im Timer Menü des VDR oder im Timer Menü des epg2vdr?

  • Die Timer sind nicht in der timers.conf des VDR. Die Timer von 2016 waren mal für eine Test-Installation über epghttpd gesetzt worden, aber da die schon länger nicht mehr gelaufen ist, hingen die seitdem wohl in der Liste von epghttpd.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ok, mit dem Patch ist schon mal der Crash beim Aufruf des Webinterface weg, aber das Problem mit der Anzeige der Timerliste noch vorhanden.


    Die Timer von 2016 standen noch in der Liste von epghttp für eine VDR-Installation, die lange nicht mehr gelaufen ist.


    was liefert:

    Code
    select * from timers where  state in ('P','R') or state is null


    wenn da noch alte Timer drin sind die entweder keinen State oder P oder R haben müssen die mal manuell gelöscht werden. vermute die haben auch eine VDR uuid für die sich kein VDR mehr hinsichtlich aufräumen zuständig fühlt?
    Müssten über das epghttp WEBIF löschbar sein

Jetzt mitmachen!

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