[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
    1. git clone git@github.com:horchi/vdr-plugin-osd2web.git
    2. cd vdr-plugin-osd2web
    3. 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
    1. osd2web.LogLevel = 1 (0-4, default 1)


    Verwendung


    Wenn der VDR gestartet ist zugriff über den Browser:

    Code
    1. 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
    1. 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,


    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

    Dieser Beitrag wurde bereits 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 0.6.1/2.3.8 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 700, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr 0.6.1/2.3.8 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 700, atric USB
    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.3.8 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, Digital Devices MaxS8, Samsung 840 EVO 120GB, 3x WD Red WD30EFRX 3TB in SW Raid5

    Dieser Beitrag wurde bereits 1 Mal 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
    1. 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
    2. jobject.c: In function ‘int event2Json(json_t*, const cEvent*, const cChannel*, eTimerMatch, int, cOsdService::ObjectShape)’:
    3. jobject.c:67:24: error: ‘const class cEvent’ has no member named ‘Aux’
    4. if (!isEmpty(event->Aux()))
    5. ^
    6. jobject.c:73:26: error: ‘const class cEvent’ has no member named ‘Aux’
    7. if (xml.set(event->Aux()) == success)
    8. ^
    9. 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.)

    Dieser Beitrag wurde bereits 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
    1. bool cStatus::MsgMenuItemProtected(const char* Name, int menuView) // PIN PATCH
    2. {
    3. for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
    4. if (sm->MenuItemProtected(Name, menuView) == true)
    5. return true;
    6. return false;
    7. }

    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
    1. 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