[gelöst] Kanal umschalten per URL (bzw. Sprachassistent)?

  • Ich hoffe, ich bin damit im richtigen Unterforum, sonst bitte verschieben - Danke!


    Gibt es eine Möglichkeit eine URL von einem beliebigen Gerät im LAN aufzurufen, die dazu führt, dass im VDR auf einen bestimmten Kanal umgeschaltet wird?

    zB http://192.168.x.y:8008/switch_to_channel?channel=13 oder http://192.168.x.y:8008/switch_to_channel?id=S19p2Em1m1010m11150



    Hintergrund:

    Wir haben einige Multiroomgeräte, auf denen ein Server läuft, auf dem man URLs mit diversen Steuerbefehlen absetzen kann.

    Deshalb konnten wir ganz einfach zB einen Kurzbefehl basteln, der mit Siri per Sprachbefehl aufgerufen werden kann.

    "Hey Siri, ich mag das Lied" ruft zB einfach nur die URL "http://192.168.x.y:8080/raumserver/controller/addCurrentItemToPlaylist?playlist=autoLike&id=Wohnzimmer" auf und der Raumserver fügt das aktuell laufende Lied der übergebenen Playlist hinzu.

    Da ich ja dzt. auch von meinem Notebook aus mit der Fernbedienung von Live auf einen beliebigen Kanal umschalten kann, müsste das ja irgendwie "recht einfach" schon gehen, oder bin ich da zu naiv?


    Danke schon jetzt für euren Input!

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Du hast doch die Lösung (fast) schon genannt: Mit Live müsste es gehen (nicht getestet mangels Frontend):

    Code
    http://vdr:8008/vdr_request/switch_channel?param=S19.2E-1-1019-10301

    Schaltet zum Beispiel auf Das Erste HD um.

  • Echt jetzt? Das wär ja cool (obwohl auch etwas peinlich)


    Trotz der fehlerhaft anmutenden Meldung

    Code: http://192.168.x.y:8008/vdr_request/switch_channel?param=S19.2E-1-1019-10301
    Normale Seite:
    channel: S19.2E-1-1019-10301
    result: 1
    error:
    Seitenende!


    haut das tatsächlich hin: der VDR schaltet auf ARD - VIELEN DANK kfb77 !


    Ich werde also den live-Code durchsuchen bzw. mal damit Rumspielen, ob es da auch einfachere Möglichkeiten ohne diese IDs gibt.

    Woher weißt du, dass es den Request "switch_channel" überhaupt gibt - Erfahrung/Erinnerung oder Code-Studium?

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

    Edited 3 times, last by davie2000 ().

  • Woher weißt du, dass es den Request "switch_channel" überhaupt gibt - Erfahrung/Erinnerung oder Code-Studium?

    Rechte Maus Taste auf der "Programm" Seite über den Button "Zu diesem Kanal umschalten", dann URL kopieren.

  • Danke!

    Update: habs gefunden ;) "vdr-plugin-live/pages/switch_channel.ecpp"


    Update2:

    Hat wohl geklappt, weil ich in dem Browser in live schon angemeldet war.
    Geht das auch irgendwie ganz OHNE Anmeldung?
    Oder kann man die Anmeldung irgendwie auch via URL durchführen?

    ["vdr-plugin-live/pages/switch_channel.ecpp" ist offenbar kein solcher "Request" (wie switch_channel) sondern zeigt die Anmeldeseite.]

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Ob man angemeldet sein muss, lässt sich in den Einstellungen regeln. Das Modul switch_channel wird, wenn ich das richtig verstanden habe, normalerweise nur im Hintergrund per Ajax-Request aufgerufen, weshalb man diese Meldung normalerweise nicht sieht.


    Die Angabe der Kanalnummer beherrscht das Modul nicht, ließe sich von Markus aber sicherlich nachrüsten (?channel=X).

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Vielen Dank für eure schnellen Rückmeldungen!


    Ich habs ausprobiert - klappt nur, wenn der Rechner, wo die URL abgesetzt wird, auch angemeldet ist.
    Sonst kommt "Leider nicht erlaubt. Bitte kontaktieren Sie Ihren Administrator!"

    Da ich ja im LAN bin, könnte ich die Anmeldepflicht für live tatsächlich einfach komplett ausschalten.
    Obwohl mir lieber wäre, die Anmeldung zu automatisieren.



    Die Angabe der Kanalnummer beherrscht das Modul nicht, ließe sich von Markus aber sicherlich nachrüsten (?channel=X).

    Dann werde ich mal schauen, ob ich vielleicht sogar einen Pullrequest zusammenbringe.
    Bei Markus betteln kann ich sonst auch noch ;)

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Ganz grob ins Unreine gedacht:

    Aufruf dann mit ?number=N


    Habs nur schnell zusammengehackt. Musst vielleicht noch ein bisschen feilen... ;)

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.3 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Danke für den Code!
    Deine neuen Zeilen 18-23 (im Vergleich zu vdr-plugin-live/pages/switch_channel.ecpp) lesen sich sehr gut.
    Sehr gute Idee mit GetByNumber und GetChannelID! Ich hätte wahrscheinlich versucht ein passendes svdrp-Kommando abzusetzen oder so was *brrrr*


    Jetzt ist mir aber schmerzlich aufgefallen, dass ich noch mit einer veralteten Version (2.3.1) unterwegs bin.

    Code: apt-cache policy vdr-plugin-live
    vdr-plugin-live:
      Installiert:           2.3.1+git20170623.4.6335b64-7yavdr7~focal
      Installationskandidat: 2.3.1+git20170623.4.6335b64-7yavdr7~focal
      Versionstabelle:
     *** 2.3.1+git20170623.4.6335b64-7yavdr7~focal 500
            500 http://ppa.launchpad.net/yavdr/experimental-vdr/ubuntu focal/main amd64 Packages
            100 /var/lib/dpkg/status
         2.3.1-5build1 500
            500 http://at.archive.ubuntu.com/ubuntu focal/universe amd64 Packages


    seahawk1986 könntest du bitte bei Gelegenheit mal in deinen Focal-Zweig vdr-plugin-live auf v3.3.7 aktualisieren?

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Das restfulapi-Plugin kann auch Kanäle umschalten - man muss dafür einen POST-Request mit einer URL in der Form schicken: POST http://<ip>:<port>/remote/switch/<channelid>


    Das Live-Plugin baut gegen den VDR 2.4.8 wohl nicht: https://launchpadlibrarian.net…dr0~focal_BUILDING.txt.gz

    Code
    CC recman.o
    recman.cpp: In member function ‘bool vdrlive::RecordingsManager::UpdateRecording(const cRecording*, cSv, cSv, bool, cSv, cSv, cSv) const’:
    recman.cpp:155:43: error: invalid conversion from ‘const cRecordingInfo*’ to ‘cRecordingInfo*’ [-fpermissive]
      155 |     cRecordingInfo* info = recording->Info();
          |                            ~~~~~~~~~~~~~~~^~
          |                                           |
          |                                           const cRecordingInfo*
    compilation terminated due to -Wfatal-errors.

    Du könntest eine aktuellere VDR-Version nutzen (für Focal gibt es bislang Pakete bis zum VDR 2.6.9: https://launchpad.net/~seahawk…+archive/ubuntu/vdr-2.6.9, ich bin gerade am VDR 2.7.3 dran)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das Problem hier ist wohl, daß es eigentlich vdr-plugin-live-NG sein sollte:

    Code
    # apt-cache policy vdr-plugin-live-ng
    vdr-plugin-live-ng:
    Installiert:           3.3.7+git20241008-3-80b8da8-0yavdr0~focal
    Installationskandidat: 3.3.7+git20241008-3-80b8da8-0yavdr0~focal
    Versionstabelle:
    *** 3.3.7+git20241008-3-80b8da8-0yavdr0~focal 500
    500 http://ppa.launchpad.net/seahawk1986-hotmail/vdr-2.6.7/ubuntu focal/main amd64 Packages
  • Wieder mal vielen Dank für eure Rückmeldungen!


    wmautner Du hast natürlich Recht! Dann habe ich schon mal Version 3.3.4 drauf.

    Code: apt-cache policy vdr-plugin-live-ng
    vdr-plugin-live-ng:
      Installiert:           (keine)
      Installationskandidat: 3.3.4+git20240110-1-af40f42-0yavdr0~focal
      Versionstabelle:
         3.3.4+git20240110-1-af40f42-0yavdr0~focal 500
            500 http://ppa.launchpad.net/yavdr/experimental-vdr/ubuntu focal/main amd64 Packages


    seahawk1986 Danke für den Hinweis mit restfulapi - werde ich mir alternativ auch anschauen.
    Gibts da vielleicht schon eine Möglichkeit mit Kanalnummer statt ID?
    Und ja, ich sollte schon längst mal den VDR updaten; aber eigentlich auch Ubuntu und überhaupt alles ganz neu, aber dafür fehlt mir im Moment einfach die Zeit.

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Das Live-Plugin baut gegen den VDR 2.4.8 wohl nicht: https://launchpadlibrarian.net…dr0~focal_BUILDING.txt.gz

    Code
    CC recman.o
    recman.cpp: In member function ‘bool vdrlive::RecordingsManager::UpdateRecording(const cRecording*, cSv, cSv, bool, cSv, cSv, cSv) const’:
    recman.cpp:155:43: error: invalid conversion from ‘const cRecordingInfo*’ to ‘cRecordingInfo*’ [-fpermissive]
      155 |     cRecordingInfo* info = recording->Info();
          |                            ~~~~~~~~~~~~~~~^~
          |                                           |
          |                                           const cRecordingInfo*
    compilation terminated due to -Wfatal-errors.

    im git von live ist ein Update. Damit sollte es wieder gegen VDR 2.4.8 compilieren.

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Danke MarkusE für die Anpassung!


    Ich habe leider erst jetzt bemerkt, dass ich vdr-plugin-live-ng ja noch gar nicht installiert habe ("Installationskanditat").

    Vielleicht sollte ich zuerst mal das alte deinstallieren und durch das ng ersetzen.
    Und den etwaigen PullRequest wg. der Kanalnummer sollte ich dann wohl auch beim Neuen einbringen.

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • im git von live ist ein Update. Damit sollte es wieder gegen VDR 2.4.8 compilieren.

    MarkusE das klappt leider noch nicht: https://launchpadlibrarian.net…dr0~focal_BUILDING.txt.gz

    Code
    CC recman.o
    recman.cpp: In member function ‘bool vdrlive::RecordingsManager::UpdateRecording(const cRecording*, cSv, cSv, bool, cSv, cSv, cSv) const’:
    recman.cpp:131:174: error: ‘void cRecordingInfo::SetData(const char*, const char*, const char*)’ is private within this context
      131 |       info->SetData(title.empty() ? nullptr : std::string(title).c_str(), shorttext.empty() ? nullptr : std::string(shorttext).c_str(), desc.empty() ? nullptr : desc.c_str());
          |                                                                                                                                                                              ^
    compilation terminated due to -Wfatal-errors.
    make[1]: *** [Makefile:117: recman.o] Error 1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich bin mittlerweile erfolgreich auf "NG" umgestiegen.

    MIR persönlich wäre also mittlerweile lieber, wenn die aktuellste NG-Version im focal-PPA landen würde ;)

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

  • Gibts da vielleicht schon eine Möglichkeit mit Kanalnummer statt ID?

    Was ist denn der Vorteil der Kanalnummer? Die Channel-ID sucht man sich einmal raus und dann ist es egal, wenn man den Kanal in der Kanallliste verschiebt.


    Man kann sich die Channel-ID auch mit Hilfe der Kanal-Nummer holen - in der Bash ginge das z.B. so mit curl und jq:

    Code
    function channel_id_by_number () {
        echo $(curl -s 'http://localhost:8002/channels/.json' | jq -r ".channels | .[] | select(.number == $1) | .channel_id ")
    }

    Ansonsten würde ich mir überlegen, ob man nicht eine kleine HTTP-SVDRP Brücke nutzt:

    Code
    sudo apt install python3-venv
    sudo su - vdr
    python3 -m venv ~/.venv
    . ~/.venv/bin/activate
    pip install -U fastapi[standard]

    Dann ein kleines Python-Skript:

    Und dann noch eine Systemd-Unit, die das Ding startet:

    Und dann noch anschalten: systemctl enable --now http2svdrp.service

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Der Vorteil ist, dass die URL kürzer ist und ich in die "Kurzbefehle" weniger eintippen muss ;)
    Wenn ich das für alle "Lieblingssender" mache, kommt schon was zusammen.


    VIELEN DANK übrigens, dass du meinen Hinweis oben verstanden hast und dein focal-PPA so schnell aktualisiert hast - habe jetzt live-ng 3.3.7:thumbup:

    MyVDR: yaVDR-Ansible (Ubuntu 20) - softhddevice-openglosd (ffmpeg 2.8) - epgd/epg2vdr - skindesigner estuary4vdr (adaptiert) - 1920x1080@50 Hz | kodi 18 - inputstream + amazon vod
    Aerocube M40 | 300W | ASRock H61M-GE | Intel G530 | Asus ENGT520 | 2 x TT-budget S2-3200 | ASRock Smart Remote (CIR) | 4 GB RAM | 120 GB SSD | 3 TB HDD

Participate now!

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