[Modul]IPS-Tvheadend

Hallo zusammen,

ich habe mal wieder ein kleines Modul für euch. :slight_smile:

Mit diesem Modul ist es möglich, einen Tvheadend Server in IPS zu überwachen.

Funktionsumfang

[ul]
[li]Starten und Herunterfahren des Tvheadend Servers[/li][li]Ansicht der Verbindungen[/li][li]Ansicht der Subscriptions[/li][li]Ansicht der nächsten Aufnahme[/li][LIST]
[li]Auf welchem Kanl wird aufgenommen[/li][li]Titel der Aufnahme[/li][li]Start- und Endzeit der Aufnahme[/li][/ul]
[/LIST]

Das Modul kann über den Modul Store installiert werden.

Screenshot

Die Doku ist hier zu finden: Tvheadend | DeinSmartHome

Gerne könnt ihr weitere Ideen posten, die noch in dem Modul aufgenommen werden sollen.

Grüße,
Kai

Changelog
27.08.2020: Version 1.8.1
Fix - Wenn Server offline ist, kommen keine Fehlermeldungen mehr.
26.06.2019: Version 1.8
Fix - Beim Versuch den Server herunterzufahren, wenn er offline ist, gab es eine Fehlermeldung im Log.
15.02.2019: Version 1.7
Übersetzungen hinzugefügt
07.02.2019: Version 1.6
Fix - module.json für IPS 5.1 angepasst
27.08.2018: Version 1.5
Neu - Wenn keine Aufnahme vorhanden sind, werden die Variablen geleert
Fix - Bei Subscriptions wird nun geprüft ob die Array Keys vorhanden sind.
27.08.2018: Version 1.4
Neu - Variable hinzugefügt, ob eine Aufnahme aktiv ist oder nicht, eine Vorlaufzeit und Nachlaufzeit kann in den Einstellungen gesetzt werden.
Fix - Fehler bei den Aufnahmen gefixt (subtitle wurde nicht gefunden)
26.08.2018: Version 1.3
Fix - Username und Passwort für das Webinterface konnten nicht eingestellt werden.
15.08.2018: Version 1.2
Fix - Konfigurationsformular JSON
Fix - Errors wenn keine User mit dem TVH Server verbunden sind
31.07.2018: Version 1.1
Anzahl der Subscriptions hinzugefügt

Vielen Dank Kai.
Die Anzahl der Abonnements wäre noch interessant.

Gruß
Dieter

Hallo Dieter,

Version 1.1 ist online mit der Anzahl der Subscriptions.

Grüße,
Kai

Super
Danke Kai

Bei mir kommt noch anhängender Fehler in der Webconsole. In der Legacy lässt sich alles konfigurieren.tvheadend.png

Danke, habe nur mit der Legacy Konsole getestet. Mein Fehler, schaue ich mir an.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Kai,

habe gerade Dein Modul mal installiert.
Leider werden bei mir nicht die Variablen für die anstehenden Aufnahmen etc. aktualisiert.

Muß da das phpseclib noch installiert werden ? wenn ja wie ?

viele Grüße
Georg

Hallo,

der Fehler ist behoben. :wink:

Grüße,
Kai

Sorry, habe deine Frage übersehen.
Funktioniert es jetzt? Nein, die Lib wird mitgeliefert.

Grüße,
Kai

Hallo Kai,

leider nein - es werden nur die Variablen für Power, Online, Verbindungen , subscriptions und subscriptions info aktualisiert jedoch im Monitor kommt beim Aktualisieren nur folgendes

24.08.2018 09:02:09 | VariableManager | [EG\Wohnzimmer \TVHeadend\Tvheadend\Power] = false
24.08.2018 09:02:07 | VariableManager | [EG\Wohnzimmer \TVHeadend\Tvheadend\Power] = true

Die Variablen für nächste Aufnahme etc wurden noch nie aktualisiert.

viele Grüße
GEorg

Hallo,

kannst du mal folgendes tun?

Ruf mal diese URL im Browser auf:

http://admin:passwort@IP:Port/api/dvr/entry/grid_upcoming?sort=start

Natürlich Benutzer, Passwort, IP und Port anpassen.

Bekommst du dort eine Ausgabe?

Edit: Ich habe die Beiträge mal in den Modul Thread verschoben.

Grüße,
Kai

Hallo Kai,

dort bekomme ich als Ausgabe alle anstehenden Aufnahmen korrekt gelistet.
Auch eine Neuinstallation des Moduls ergab keine Änderung.
Ich habe IPS 5 in Betrieb.
Fehlt da womöglich eine Library ?

Viele Grüße
Georg

Nein, das wird alles mitgeliefert.
Ich baue mal Debug Meldungen an der Stelle ein. Würdest du dann nochmal für mich testen?

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

ja klar !

Georg

Hallo,

so ich habe jetzt eine Debug Ausgabe hinzugefügt, nun sollte eine Anzahl der vorhandene Elemente im Array zu sehen sein.
Kannst du das mal testen und mir ggf. auch mal das JSON von der API zukommen lassen?
Also das was du im Browser sehen konntest.

Grüße,
Kai

Hallo Kai.

Da ich das gleiche Verhalten habe wie Georg klinke ich mich mal mit ein :).

Hier einige Eckdaten:

  • Aktuellste Version von deinem TVheadend Modul installiert
  • IPS 5.0 auf Raspberry Pi
  • TV-Headend läuft auf meiner QNAP NAS
  • TV-Headend läuft in Version 4.1-2141~g01c26fc

Ich habe eine Aufnahme testweise über das TVH Webinterface programmiert, was ich auch im API Abruf erkennen kann.
http://<IP>:9981/api/dvr/entry/grid_upcoming?sort=start


{
  "entries": [
    {
      "uuid": "b17a0dfaa84c13ec65e715540c4f0590",
      "enabled": true,
      "start": 1535180400,
      "start_extra": 0,
      "start_real": 1535180370,
      "stop": 1535182200,
      "stop_extra": 0,
      "stop_real": 1535182200,
      "duration": 1800,
      "channel": "be7a335dced7000d656d7bf37404fe64",
      "channel_icon": "",
      "channelname": "n-tv",
      "title": {
        "ger": "Nachrichten"
      },
      "disp_title": "Nachrichten",
      "disp_subtitle": "",
      "description": {
        "ger": "n-tv informiert über die aktuellen Top-Themen des Tages ..."
      },
      "disp_description": "n-tv informiert über die aktuellen Top-Themen des Tages ...",
      "pri": 2,
      "retention": 0,
      "removal": 0,
      "config_name": "69c62c25fcd0bc8c4295721f0c2c4de2",
      "creator": "192.168.x.y",
      "filename": "/share/Filme/TV-Aufnahmen/Nachrichten-5.ts",
      "errorcode": 0,
      "errors": 0,
      "data_errors": 530,
      "dvb_eid": 44128,
      "noresched": false,
      "norerecord": false,
      "autorec": "",
      "autorec_caption": "",
      "timerec": "",
      "timerec_caption": "",
      "parent": "",
      "child": "",
      "content_type": 0,
      "broadcast": 3145389,
      "url": "dvrfile/b17a0dfaa84c13ec65e715540c4f0590",
      "filesize": 17529120,
      "status": "Running",
      "sched_status": "recording",
      "duplicate": 0
    }
  ],
  "total": 1
}

Die Debug Ausgabe zeigt auch einen Eintrag. Die Variablen werden aber nicht aktualisiert (siehe angehängte Screenshots).

Interessant ist, wenn ich zwei oder drei Aufnahmen testweise programmiere, dann ändert sich die Debug Ausgabe nicht (RecordingsCount=1).
Das JSON vom Webservice listet allerdings schon alle drei Aufnahmen inkl. Details auf.

Gruß
Thorsten

Vielen Dank für die ausführliche Antwort.
Kannst du mir bitte noch eine Ausgabe des JSON mit zwei Aufnahmen zukommen lassen?

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Kein Problem.
Hier das JSON mit zwei geplanten Aufnahmen.


{
  "entries": [
    {
      "uuid": "f011755cf0fcc721e72befd1ef3fe5c3",
      "enabled": true,
      "start": 1535186700,
      "start_extra": 0,
      "start_real": 1535186670,
      "stop": 1535189400,
      "stop_extra": 0,
      "stop_real": 1535189400,
      "duration": 2700,
      "channel": "86c6e8c112edcb4ea96453e0d78fc349",
      "channel_icon": "",
      "channelname": "zdf_neo HD",
      "title": {
        "ger": "Terra X"
      },
      "disp_title": "Terra X",
      "subtitle": {
        "ger": "Der Limes (1) - Grenzwall gegen die Barbaren"
      },
      "disp_subtitle": "Der Limes (1) - Grenzwall gegen die Barbaren",
      "description": {
        "ger": "Eine schwer befestigte Grenzanlage zieht sich vor beinahe 2000 Jahren quer durch ganz Europa - der Limes. Ein Bollwerk von Nordbritannien bis zum Schwarzen Meer.Das Team von \"Schliemanns Erben\" spürt den immer noch vorhandenen Resten des Schutzwalls nach und begleitet Wissenschaftler, die mit ausgefallenen Ideen das Geheimnis des Limes zu enträtseln versuchen. Wozu diente der Grenzwall gegen die Barbaren?HD-ProduktionAltersfreigabe: 6"
      },
      "disp_description": "Eine schwer befestigte Grenzanlage zieht sich vor beinahe 2000 Jahren quer durch ganz Europa - der Limes. Ein Bollwerk von Nordbritannien bis zum Schwarzen Meer.Das Team von \"Schliemanns Erben\" spürt den immer noch vorhandenen Resten des Schutzwalls nach und begleitet Wissenschaftler, die mit ausgefallenen Ideen das Geheimnis des Limes zu enträtseln versuchen. Wozu diente der Grenzwall gegen die Barbaren?HD-ProduktionAltersfreigabe: 6",
      "pri": 2,
      "retention": 0,
      "removal": 0,
      "config_name": "69c62c25fcd0bc8c4295721f0c2c4de2",
      "creator": "192.168.x.y",
      "filename": "",
      "errorcode": 0,
      "errors": 0,
      "data_errors": 0,
      "dvb_eid": 33888,
      "noresched": false,
      "norerecord": false,
      "autorec": "",
      "autorec_caption": "",
      "timerec": "",
      "timerec_caption": "",
      "parent": "",
      "child": "",
      "content_type": 8,
      "broadcast": 3090525,
      "url": "",
      "filesize": 0,
      "status": "Scheduled for recording",
      "sched_status": "scheduled",
      "duplicate": 0
    },
    {
      "uuid": "21bee7cce04e234724328b3494035d2c",
      "enabled": true,
      "start": 1535187416,
      "start_extra": 0,
      "start_real": 1535187386,
      "stop": 1535190718,
      "stop_extra": 0,
      "stop_real": 1535190718,
      "duration": 3302,
      "channel": "5c2dba59714ffaef32e6f007ca409483",
      "channel_icon": "",
      "channelname": "kabel eins",
      "title": {
        "ger": "Castle"
      },
      "disp_title": "Castle",
      "subtitle": {
        "ger": "Eine Rose für immer und ewig, Crime-Serie, USA 2009"
      },
      "disp_subtitle": "Eine Rose für immer und ewig, Crime-Serie, USA 2009",
      "description": {
        "ger": "Am Morgen einer Hochzeit wird die Brautjungfer tot aufgefunden. Castle muss feststellen, dass die Braut seine längst verflossene Liebe Kyra ist. Die Ermittler versuchen herauszufinden, warum die Brautjungfer die Hochzeit verhindern wollte. Unterdessen sieht sich Beckett mit der Tatsache konfrontiert, dass sie offenbar Gefühle für Castle hegt und eifersüchtig reagiert. Castle kommt unterdessen seine Objektivität abhanden - schon bald beschuldigt er den Verlobten des Mordes ...

Regie: Bryan Spicer
Drehbuch: Alexi Hawley, Terri Miller, Terence Winter
Komponist: Robert Duncan

Darsteller:
Nathan Fillion (Richard Castle)
Stana Katic (Kate Beckett)
Molly C. Quinn (Alexis Castle)
Seamus Dever (Kevin Ryan)
Susan Sullivan (Martha Rodgers)
Jon Huertas (Javier Esposito)
Alyssa Milano (Kyra Blaine)
Brady Smith (Greg Murphy)
Kimberly Estrada (Lisa Bloomfield)"
      },
      "disp_description": "Am Morgen einer Hochzeit wird die Brautjungfer tot aufgefunden. Castle muss feststellen, dass die Braut seine längst verflossene Liebe Kyra ist. Die Ermittler versuchen herauszufinden, warum die Brautjungfer die Hochzeit verhindern wollte. Unterdessen sieht sich Beckett mit der Tatsache konfrontiert, dass sie offenbar Gefühle für Castle hegt und eifersüchtig reagiert. Castle kommt unterdessen seine Objektivität abhanden - schon bald beschuldigt er den Verlobten des Mordes ...

Regie: Bryan Spicer
Drehbuch: Alexi Hawley, Terri Miller, Terence Winter
Komponist: Robert Duncan

Darsteller:
Nathan Fillion (Richard Castle)
Stana Katic (Kate Beckett)
Molly C. Quinn (Alexis Castle)
Seamus Dever (Kevin Ryan)
Susan Sullivan (Martha Rodgers)
Jon Huertas (Javier Esposito)
Alyssa Milano (Kyra Blaine)
Brady Smith (Greg Murphy)
Kimberly Estrada (Lisa Bloomfield)",
      "pri": 2,
      "retention": 0,
      "removal": 0,
      "config_name": "69c62c25fcd0bc8c4295721f0c2c4de2",
      "creator": "192.168.x.y",
      "filename": "",
      "errorcode": 0,
      "errors": 0,
      "data_errors": 0,
      "dvb_eid": 46596,
      "noresched": false,
      "norerecord": false,
      "autorec": "",
      "autorec_caption": "",
      "timerec": "",
      "timerec_caption": "",
      "parent": "",
      "child": "",
      "content_type": 0,
      "broadcast": 3155908,
      "url": "",
      "filesize": 0,
      "status": "Scheduled for recording",
      "sched_status": "scheduled",
      "duplicate": 0
    }
  ],
  "total": 2
}

Disclaimer: Die gezeigten Aufnahmen sind zufällige Testeinträge und lassen keinen Rückschluss auf meinen tatsächlichen und simplen TV Geschmack zu :smiley:

Mir ist noch eine Kleinigkeit aufgefallen.
Mit der aktuellsten IPS Version sehe ich alle 20 Sekunden (Update Intervall) folgenden Fehler im Logfile.

Also ab in den Code und schauen was in Zeile 90 passiert:

[ol]
[li]$this->SendDebug(FUNCTION." Recordings Count",count($recordings),0);
[/li][li]$recordings ==> $TVH->[b]getUpcomingRecordings/b
[/li][li]return $this->request(„api/dvr/entry/grid_upcoming?sort=start“);
[/li][/ol]

Die API liefert JSON zurück, welches aber offensichtlich nicht als zählbares Array gewertet wird.
Ich dachte erst, dass das passiert, wenn keine Aufnahme programmiert ist, weil das JSON dann so aussieht:

{"entries":[],"total":0}

Aber der Fehler tritt auch auf, wenn eine Aufnahme programmiert wurde.

Gruß
Thorsten