Neues Modul für Tvheadend [70_Tvheadend.pm]

Begonnen von Quantum, 18 März 2018, 22:38:01

Vorheriges Thema - Nächstes Thema

Quantum

Hallo FHEM-Gemeinde,

schon seit Jahren verwendet ich als TV den Tvheadend Server in Verbindung mit Kodi -> https://github.com/tvheadend/tvheadend
Tvheadend bietet eine wenig bekannte und eher mager dokumentierte JSON Schnittstelle, über die so ziemlich alles manipuliert werden kann.
Das habe ich zum Anlass genommen hierfür ein Modul zu schreiben, das ich nun als ersten Wurf veröffentliche.

Siehe hierzu: https://github.com/Quantum1337/70_Tvheadend.pm und die commandref.

Was kann das Modul zu diesem Zeitpunkt ?

Intelligente Abfrage des EPGs. Was läuft gerade und als nächstes im TV?. Hierfür werden verschiedene readings angelegt. Titel,Beschreibung,Sendername,Start,Stop ...
Erneute Abfrage des EPG bei Ende einer Sendung.

Abfragen des EPGs mithilfe einer get Methode.

Anlegen eines DVR(Digital Video Recorder) Eintrags mithilfe einer EventId.

Mögliches Anwendungszenario: Abfrage von EPG Informationen aus der Ferne mithilfe eines Endgeräts bspw. Smartphone (Messenger), Email etc..
Daraufhin setzen enes DVR Eintrags mithilfe dieser Information aus der Ferne. Ohne zuhause zu sein, bzw. Kodi starten zu müssen.

Frühe Entwicklerversion. Fehlverhalten nicht ausgeschlossen !

Freundliche Grüße
Quantum

eldrik

Hi,

interessant!

Ich betreibe zu Hause auch schon seit längerem einen Tvheadend Server in Verbindung mit einem 4 Fach SAT IP Receiver und Kodi zur Wiedergabe, der SAT IP Receiver wird in Abhängigkeit der tatsächlichen Nutzung (10 min. vor anstehendem Recording oder bei angemeldeten Clients) mit einem Homematic Aktor eingeschaltet.

Bisher hole ich mir die Informationen zum nächsten Recording und angemeldeten Clients aus der status.xml von tvheadend, mit dem Modul httpmod (30Sek Frequenz) zusätzlich läuft auf dem tvheadend Server ein Shell Skript (5Sek Frequenz), welches einen FHEM Dummy schaltet insofern auf dem Tvheadend Server eine Clientverbindung festgestellt wird, woraufhin der SAT IP Receiver eingeschaltet wird.

Werde das Modul mal die Tage testen und würde mich freuen, wenn der JSON Schnittstelle weitere Informationen zum Client entlockt werden könnten und das Modul um weitere Readings angereichert werden könnte, dann könnte ich die diversen Abfragequellen, über das Modul konsolidieren.

Greetz
Eldrik

MadMax-FHEM

Hi, super!

Suche schon lange danach...

Betreibe auch TVHeadend Server mit TVHeadend-App (Smartphone und FireTV-Stick) bzw. KODI...

Vielen Dank!

Werd ich mal ausprobieren...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

So angelegt und läuft! :)

Danke!

Habe folgendes beim laden (reaload 70_Tvheadend.pm):


2018.03.19 23:15:31 1: PERL WARNING: Scalar value @entriesNow[0] better written as $entriesNow[0] at ./FHEM/70_Tvheadend.pm line 227.
2018.03.19 23:15:31 1: PERL WARNING: Scalar value @entriesNow[...] better written as $entriesNow[...] at ./FHEM/70_Tvheadend.pm line 228.
2018.03.19 23:15:31 1: PERL WARNING: Scalar value @args[0] better written as $args[0] at ./FHEM/70_Tvheadend.pm line 383.


Allerdings konnte ich in der Commandref nichts finden... ;)
Muss wohl erst "angelegt" bzw. "integriert" werden (also aus dem Modul "extrahiert")...

Daher habe ich im Modul selbst "gespickt" wie das Anlegen geht:

define myTVHeadend Tvheadend IP[:Port] [username passwort]

Was nicht so schön ist und vermutlich/hoffentlich nicht so bleibt: die Anmeldedaten sind in Klarschrift in der DEF...

Ansonsten werde ich mal testen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

eldrik

Hi,

bei mir stürzt FHEM kurz nach der Definition

define tvheadend Tvheadend 10.0.81.72:9981 user passwort

mit der Meldung

Can't use an undefined value as a HASH reference at ./FHEM/70_Tvheadend.pm line 215.

ab  :(

Greetz
Eldrik

Quantum

@eldrik Es lassen sich über die JSON Schnittstelle Infrormationen über upcoming/finished und failed recordings des DVRs entlocken.
Des Weiteren ist es auch möglich abzufragen, wieviele und wer sich genau mit dem Server zum Abfragezeitpunkt verbunden hat. Gepollt werden muss aber weiterhin.

Zu dem Fehler: Es sieht so aus, wie wenn er keine Informationen bekommt. Werde hier noch eine Abfrage implementieren, so dass er nicht mehr abstürzt.
Welche Tvheadend Version hast du ? Ich betreibe selbst kein IP-Gerät an Tvheadend und weis deshalb nicht wie die konfiguriert sind.
Geh mal ins Webinterace. Werden im EPG-Reiter Programminformationen angezeigt? Und sind im Reiter Configuration/Channel Kanalinformationen hinterlegt ?

@MadMax Schön das es funktioniert :). Die Warnungen sind nichts schlimmes. Werde das beim nächsten commit beheben.  Die define Information schreibe ich noch in die Readme.
Ich kann anbieten, dass das passwort base64 encodiert angegeben werden muss, dann ist es zumindest vor flüchtigen blicken geschützt. Welche Tvheadend Version hast du ?

@all Die JSON Schnittstelle befindet sich noch unter heavy development. Ich teste das ganze mit Tvheadend v4.0 mit 4.2 wurde die Schnittstelle erweitert. Ich weis allerdings nicht in wie weit diese abwärtskompatibel ist.

Freundliche Grüße
Quantum

eldrik

#6
Zitat von: Quantum am 20 März 2018, 10:13:06
@eldrik Es lassen sich über die JSON Schnittstelle Infrormationen über upcoming/finished und failed recordings des DVRs entlocken.
Des Weiteren ist es auch möglich abzufragen, wieviele und wer sich genau mit dem Server zum Abfragezeitpunkt verbunden hat. Gepollt werden muss aber weiterhin.

Zu dem Fehler: Es sieht so aus, wie wenn er keine Informationen bekommt. Werde hier noch eine Abfrage implementieren, so dass er nicht mehr abstürzt.
Welche Tvheadend Version hast du ? Ich betreibe selbst kein IP-Gerät an Tvheadend und weis deshalb nicht wie die konfiguriert sind.
Geh mal ins Webinterace. Werden im EPG-Reiter Programminformationen angezeigt? Und sind im Reiter Configuration/Channel Kanalinformationen hinterlegt ?


Hallo Quantum,

das weiterhin gepollt werden muss, damit hab ich gerechnet und dagegen spricht auch nichts solange dies nonblocking passiert und ich meine eigenen Konstrukte peu à peu abgelöst bekäme.

Ich nutze Tvheadend 4.3-1152, in der Tvheadend Web Oberfläche ist alles tuti, der EPG ist zugreifbar und es gibt auch passende Detailinformationen, mit dem angeschlossenen DVB Input Adapter hat dies wahrscheinilch weniger zu tun.

Sobald der Absturz abgefangen wird, kann ich in die Details gehen (falscher User, mangelnde Berechtigungen etc.) woran es liegen könnte.

Danke für deine Arbeit.

Edit:

Habe nun direkt deine letzte Version mit dem Bugfix zur Abfrage genommen und Fhem stürzt nicht mehr ab :) wenn ich einfach nur die Abfrage get Tvheadend EPGQuery absende erhalte ich auch einen Eintrag sowie eine Meldung im Fhem Log

arte HD
20.03 [10:35:00 - 11:25:00]
Superhelden
Keine Informationen verfügbar
EventId: 67112891


2018.03.20 11:20:19.804 1: PERL WARNING: Use of uninitialized value $args[1] in concatenation (.) or string at ./FHEM/70_Tvheadend.pm line 355.

Eine Abfrage auf get Tvheadend EPGQuery 10:Sat liefert

ro7 MAXX
20.03 [10:46:18 - 11:41:22]
Polizeieinsatz Alaska
Keine Informationen verfügbar
EventId: 67124867
Pro7 MAXX
20.03 [11:41:36 - 12:37:05]
Polizeieinsatz Alaska
Keine Informationen verfügbar
EventId: 67124868
SAT.1
20.03 [11:58:13 - 12:59:38]
Anwälte im Einsatz
Keine Informationen verfügbar
EventId: 67124848
Pro7 MAXX
20.03 [12:37:19 - 13:32:20]
Polizeieinsatz Alaska
Keine Informationen verfügbar
EventId: 67124869
SAT.1
20.03 [12:59:38 - 13:59:55]
Anwälte im Einsatz
Keine Informationen verfügbar
EventId: 67124849
PHOENIX HD
20.03 [16:45:00 - 17:30:00]
Wie werden wir morgen alle satt?
Keine Informationen verfügbar
EventId: 67116684
SAT.1
20.03 [17:30:00 - 17:59:33]
Schicksale / oder SAT.1 Regional-Magazine
Keine Informationen verfügbar
EventId: 67121561
SAT.1 Gold
20.03 [19:23:55 - 19:46:28]
K 11 - Kommissare im Einsatz
Keine Informationen verfügbar
EventId: 67123591
SAT.1 Gold
20.03 [19:46:28 - 20:14:24]
K 11 - Kommissare im Einsatz
Keine Informationen verfügbar
EventId: 67123592
SAT.1
20.03 [19:55:43 - 20:14:33]
SAT.1 Nachrichten
Keine Informationen verfügbar
EventId: 67124876


Das wäre doch erst einmal das erwartete Ergebnis oder?

Greetz
Eldrik

MadMax-FHEM

Zitat von: Quantum am 20 März 2018, 10:13:06
@MadMax Schön das es funktioniert :). Die Warnungen sind nichts schlimmes. Werde das beim nächsten commit beheben.  Die define Information schreibe ich noch in die Readme.
Ich kann anbieten, dass das passwort base64 encodiert angegeben werden muss, dann ist es zumindest vor flüchtigen blicken geschützt. Welche Tvheadend Version hast du ?

Freundliche Grüße
Quantum

Hmmm, macht es für den Anwender komplizierter und führt gegebenenfalls zu neuen "Fehlern"/Problemen...

Aktuell stört es mich nicht, da ich das Modul erst mal auf meinem Testsystem laufen habe und mit meinem Test-TVHeadend-Server verbunden habe ;)

Denke aber, wenn es ein offizielles Modul werden soll (und das wäre schön), dann sollte es evtl. wie bei anderen Modulen sein:

- Ablage verschlüsselt (echodevice.pm). Aber auch da wird bereits nach anderer "Ablage" und anderem "Anlegen" gefragt/hingewiesen...

- set-Befehl zur Übergabe von User/Passwort und dann verschlüsselte Ablage (z.B. Fritzbox-Modul)


TVHeadend: HTS Tvheadend 4.2.5-49~g8973d48e5 auf einem PI3 mit Raspbian Stretch lite (frisch vor einigen Tagen installiert)


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Quantum

ok. Werde mir das mit der Verschlüsselung mal genauer anschauen. Vielen Dank für die Info!

@eldrik Habe dir eine PM geschrieben. Ist besser wenn wir das Detail Problem über diesen Weg lösen, ansonsten explodiert der Thread :)

Freundliche Grüße
Quantum

CoolTux

Hallo Quantum,

Ich habe mir erlaubt für Dein Modul einen Patch zu schreiben. In erster Linie werden ein paar FHEM Eigenheiten hier korrigiert.
$hash->{helper}{http} statt $hash->{helper}->{http}

Eventuell ist es ja hilfreich für Dich. Das Problem mit Username und Passwort in der DEF kannst Du ganz einfach erschlagen in dem Du die DEF neu erstellst nachdem Du Dir die Daten gezogen hast.
Ich musste aber feststellen das Du vieles an Code doppelt hast und da wo es besser wäre mehr zu machen hast Du kurze Formen gewählt. eingebettete Subroutinen und so. Das macht es sehr schwer Deinen Code zu folgen und zu interpretieren was da genau passieren soll.
Zum Beispiel das angehängte return an den Logausgaben, fast hätte ich nicht verstanden was da genau gemacht werden soll.


Solltest Du Fragen haben oder Hilfe brauchen einfach melden.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Quantum

Hallo CoolTux,

hab mir deinen Patch angeschaut. Hab ein paar Sachen übernommen. Allerdings nicht alles.
Werd dir bei Zeit mal ne PM schreiben, dann können wir darüber reden.

Das noch einiges wiederholt wird, ist mir bewusst und ist auf der Agenda. Ich wollte erstmal schauen ob überhaupt Interesse an einem solchen Modul besteht,
bevor ich "ünnötige" Arbeit in Codeoptimierung investiere. Das Modul ist alles, aber noch längst nicht perfekt :).

Freundliche Grüße
Quantum

CoolTux

Können wir gerne machen.
Jetzt verstehe ich auch Deinen Code nachdem ich gerade noch mal in Deinem git geschaut habe.

$entries = decode_json($data)->{entries};

Ich würde hier dennoch über einen eval Aufruf nachdenken.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Quantum

freut mich, dass du dich in den Code einliest :).
Eval-Umgebung wird noch reinkommen. One step after the other :).

Freundliche Grüße
Quantum

Quantum

#13
ich möchte euch meine Arbeit der letzten Tage nicht vorenthalten. So habe ich gerade die Commits gepushed.

Neue Features:
-> GET Funktion zur Abfrage von Kanälen, die Tvheadend kennt
-> GET Funktion um aktuelle Verbindungen abzufragen.

-> Neues Attribut um die EPG readings zu filtern.
-> Neues Attribut um bestimmte GET Funktionen zu pollen.
-> Neues Attribut um den polling Intervall festzulegen.

Bekannte Probleme:
-> Wenn Verbindung zum Server verloren geht, wird das polling und das updaten des EPG abgebrochen. Kann zZ nur durch ein redefine wieder gestartet werden. Arbeite aber an einer Lösung

Ich bitte ausgiebig zu testen. Danke !

Freundliche Grüße
Quantum


eldrik

Hi,

danke für die neue Version, ich hab mit den neuen Möglichkeiten gespielt und konnte erst einmal keine Probleme feststellen :)

Der Attribut EPGChannelList fehlt scheinbar noch in der Commandref.

Greetz
Eldrik

Quantum

#15
Ja das Attribut  hat auch noch keine Funktion. War ein Test meinerseits. Hab vergessen dieses wieder zu löschen.
Zukünftige hab ich evtl mit diesem Attribut vor, Kanäle zu filtern, die als epg reading angezeigt werden.

Aber erstmal gut, dass es funktioniert :)

Freundliche Grüße
Quantum


MadMax-FHEM

Hi,

ich mache ja noch nicht viel mit dem Modul aber wirklich gut, dass es endlich eines gibt...

Leider hatte ich jetzt bereits 2 Abstürze mit folgenden Meldungen im Log:


2018.04.20 09:33:16 3: Tvheadend DVR - Next update: 09:35:00
2018.04.20 09:35:01 3: Tvheadend DVR - Next update: 09:39:00
2018.04.20 09:39:01 3: Tvheadend DVR - Next update: 09:39:59
invalid character encountered while parsing JSON string, at character offset 982 (before "\x{1a}Bryan (Ron Don...") at ./FHEM/70_Tvheadend.pm line 327.


Aktuell läuft es nur auf meinem Testsystem daher nich tragisch aber unschön... ;)

Version sollte aktuell sein 25.03. (wobei git auch letztes mal meinte ich wäre schon aktuell aber da war es definitiv nicht so, daher habe ich es "damals" noch mal komplett geholt)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

AET_FHEM

Hey,

danke für das Modul
--> kann man ein Reading erstellen mit den ConnectionsQuery und evtl. connections trennen?

AET

Quantum

Hallo AET_FHEM,

leider verstehe ich dein Anliegen nicht ganz. Kannst du mir das etwas ausführlicher erläutern?


@MadMax-FHEM
Trat das Problem in letzer Zeit nocheinmal auf? Meiner Meinung nach hat das etwas mit einem Zeichen zu tun, das im Titel einer TV-Sendung vorhanden ist und nicht richtig abgefangen wird. Hab das Modul ebenfall seit einigen Wochen im Einsatz - ohne jegliche Probleme. Deshalb bräuchte ich hier nähre Infos, sollte es wieder auftreten. Vorallem bei welcher Sendung, mit welchem Titel, auf welchem Kanal.

Freundliche Grüße
Quantum


AET_FHEM

Hey,

also ich konnte das Gerät tvheadend erfolgreich anlegen, nur leider habe ich nur das Gerät
und das füllt sich nicht automatisch mit Infos zB.: sind Clients angemeldet usw...
--> weiss ja nicht wie das gedacht ist aber ich hab nur diese Readings:


CFGFN
CHANGED
DEF  192.168.0.5:9981 user password
NAME TvHeadend
NR 1894
NTFY_ORDER 50-TvHeadend
STATE Initialized
TYPE Tvheadend


hier hätte ich noch gerne ein Readings:
User
Uptime
recording

oder so ...
:-)
--> wenn ich get ConnectionQuery mache bekomme ich Informationen über die Clients --> kann man diese als redings hinterlegen?
--> und noch sehr schön wäre wenn man Clients rausschmeißen könnte ... --> aber das bekomm ich auch anders hin ...



Quantum

#20
des Rätsels Lösung ist das Attribut PollingQueries. Auszug aus der Commandref:


PollingQueries
Selectable list of queries, that can be polled.
When enabled the polling of the specific query starts immediately with an intervall given with the attribute PollingIntervall.
When a query is in polling mode, readings will be created. When the polling will be disabled, the readings will be deleted.


Freundliche Grüße
Quantum

AET_FHEM

Super Danke,
sind weitere Sachen geplant?
wie nächste geplante Aufnahme?
kleines EPG ...
was läuft?
welche Karte ist belegt ...
usw..
:-)

Quantum

Zitat
sind weitere Sachen geplant?
[...]
kleines EPG ...
was läuft?

Ein EPG gibt es schon, das sich automatisch aktualisiert, wenn eine Sendung vorbei ist. Auszug aus der Commandref
Zitat
If the definition is successfull, the module will automatically query the EPG for tv shows playing now and next.
The query is based on Channels mapped in Configuration/Channel.
The module will automatically query again, when a tv show ends.

Um readings hierraus zu erzeugen, gibt es das Attribut EPGVisibleItems:
Zitat
Selectable list of epg items. Items selected will generate readings.
The readings will be generated, next time the EPG is triggered.
When an item becomes unselected, the specific readings will be deleted.

Voraussetzung ist natürlich, dass die EPG Informationen auf dem TVheadend Server gepflegt sind.

Zu den weiteren Punkten, die du genannt hast. Klar kann das implementiert werden :). Der Code und die JSON-API stehen frei zur Verfügung.
Hier eine schöne Dokumentation der API https://github.com/dave-p/TVH-API-docs/wiki. Ich warte auf deinen Pull-Request ;).

Freundliche Grüße
Quantum

AlexGfX

hallo an alle :)

hab mal PlugIn ausprobiert
aber sobald ich definiere stürzt fhem komplett ab :(
einzige Meldung ist:
malformed UTF-8 character in JSON string, at character offset 295 (before "\x{fc}r Darrell und ...") at ./FHEM/70_Tvheadend.pm line 256.

jemand eine Idee ?

Grüße und schönes Wochenende :)

RoBra81

Zitat von: AlexGfX am 04 November 2018, 11:17:05
hallo an alle :)

hab mal PlugIn ausprobiert
aber sobald ich definiere stürzt fhem komplett ab :(
einzige Meldung ist:
malformed UTF-8 character in JSON string, at character offset 295 (before "\x{fc}r Darrell und ...") at ./FHEM/70_Tvheadend.pm line 256.

jemand eine Idee ?

Grüße und schönes Wochenende :)
Hatte ich auch sporadisch - vermutlich Sonderzeichen im EPG. Daher hatte ich das Modul wieder deaktiviert...


Gesendet von iPhone mit Tapatalk

CoolTux

Zeile 590

my $jasonData = encode_json(\%record);


Ändern in

my $jasonData = eval { decode_json(\%record) };
if ($@) {
        Log3 $hash->{NAME}, 3,
"JSON error while request: $@";
    }

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

AlexGfX

Zitat von: CoolTux am 04 November 2018, 12:37:35
Zeile 590

my $jasonData = encode_json(\%record);


Ändern in

my $jasonData = eval { decode_json(\%record) };
if ($@) {
        Log3 $hash->{NAME}, 3,
"JSON error while request: $@";
    }



leider immer noch error

malformed UTF-8 character in JSON string, at character offset 328 (before "\x{e9}partement Avey...") at ./FHEM/70_Tvheadend.pm line 256.

jetzt nur andere zeilen
also problem liegt an UTF-8 aber sowas hab ich zum ersten mal  :o

C0mmanda

Ich gehe davon aus dass dieses Projekt tot ist?

Ein define des Moduls lässt FHEM unvermittelt abstürzen.. :(

Gruß
Cmda

CoolTux

Sieht tot aus. Der Entwickler scheint schon seit mehreren Monaten nicht mehr aktiv am Modul zu arbeiten.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

C0mmanda

Sehr schade.
Muss ich mich wohl doch mit JSON und der TVHeadend-API auseinander setzen ;))

Grtz

CoolTux

Zitat von: C0mmanda am 23 Juni 2019, 18:48:04
Sehr schade.
Muss ich mich wohl doch mit JSON und der TVHeadend-API auseinander setzen ;))

Grtz

Ruf an wenn Du Hilfe brauchst  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

C0mmanda

Zitat von: CoolTux am 23 Juni 2019, 19:05:01
Ruf an wenn Du Hilfe brauchst  ;D

Danke!
Wenn es überhaupt nicht klappt melde ich mich bestimmt!
Setzte mich jetzt erstmal mit HTTPMOD auseinander...  :o

Hast du schon was umgesetzt mit TVHeadend?

Gruss

CoolTux

Zitat von: C0mmanda am 23 Juni 2019, 19:56:13
Danke!
Wenn es überhaupt nicht klappt melde ich mich bestimmt!
Setzte mich jetzt erstmal mit HTTPMOD auseinander...  :o

Hast du schon was umgesetzt mit TVHeadend?

Gruss

Nein. Kein bisschen. Weiß nicht mal was das genau ist.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

fheminist

Hallo,
bin auf dieses Thema gestoßen und habe mich nach all den Jahren als stiller Leser, doch mal hier im Forum angemeldet.  :)

TVHeadend inkl. Triax-SatIP läuft bei mir nun seit mehr als 7 Jahren extrem stabil auf einer Synology. Aktuell möchte ich dem Triax eine Gosund SP1 verpassen. Die Aus- und Einschaltbedingungen verfolge ich derzeit in FHEM, bevor alles 'live' geht.
So erzeuge ich derzeit die Bedingungen:
1.) 'AddHoc EIN/AUS' = Wenn alle TV-Scenen aus sind, schaut keiner TV, oder hört Radio.
2.) 'EPG sync' = 05 & 15Uhr EIN. Nach 30min wieder AUS, wenn Bedingung 1&3 = false.
3.) In der TVH Aufnahmekonfi. habe ich diese CMDs eingebaut:
             PRE-cmd --> curl 192.168.179.41:8083/fhem?cmd=setreading%20State_TVH_SatIPrec%20recording%20start
             Nachbehandlung --> curl 192.168.179.41:8083/fhem?cmd=setreading%20State_TVH_SatIPrec%20recording%20stop
         zusätzlich musste ein Counter her.... Es können ja z.B. mehrere Serien gestartet werden.

Ein TVH Modul wäre hier schon von Vorteil, da für die oben genannten CMDs die FHEM-WEB-Security ja geöffnet werden muss...
Mit der derzeitigen Lösung bin ich allerdings, allem in allem sehr zufrieden und auch zuversichtlich, dass meine Gosund bald zuverlässig schaltet.

Ein Thema beschäftigt mich allerdings noch, wo ich mir viel 'gebastel' durch ein Modul erhoffen würde.

Meine IP-CAMS habe ich in TVH integriert. Per TV sind somit alle CAMS als 'TV-Program' zu empfangen.
Ich möchte allerdings per FHEM zusätzlich auch Aufnahmen starten und stoppen können. So wäre mit den vorhandenen Mitteln/Systemen eine extrem einfache Überwachung möglich. Über TVHeadend kann dann auch der Speicher und 'Aufnahmen-TimeToLive' einfach verwaltet werden.

So meine aktuelle Idee:
1.) wenn x-Bewegungen in y-Zeit erkannt, dann Aufnahme an, Alarmsound abspielen, Licht_Garten an etc.. (letzteres ist bereits vorhanden)
2.) Wenn Scene_Frühstück an (durch Bewegung im WoZi gestartet), dann spiele Aufnahmen der Nacht auf TV ab ;-)

Kann mir hier jemand Tipps geben, wie ich die Programme starten & stoppen kann?

Hoffe, dass hier noch jemand im Thema lauscht ;-)

Viele Grüße
3*FB-Mesh ,FHEM+MariaDB+TVH+TriaxSatIPGrafana@Docker/DS220+, 6*Kodi-RPis, EpsonTW650+DIY-Lift, 3*IPCam@TVH, 2*AI@EspCAM, Robo.S6
6*Maxcio bulbs, 15*Nodemcu&WemosD1, 20*GosundSP1, 25*Shelly, 8*MC400A, 7*CometDect, abgelöst: diyCurls, 433Mhz, JeeLink, DenonAVR, FS20, HM ...

MadMax-FHEM

Zitat
Ein TVH Modul wäre hier schon von Vorteil, da für die oben genannten CMDs die FHEM-WEB-Security ja geöffnet werden muss...

WARUM!?

Wenn man es "richtig" macht, dann MUSS man da gar nichts "öffnen"...

Und was meinst du mit "öffnen"!?

Kein User/PW und csrfToken!?

Wenn das "öffnen" heißt: dann noch mal nachlesen was mit allowed möglich ist UND wie csrfToken funktoniert!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

fheminist

Hallo und Danke für die schnelle Antwort.

mit 'öffnen' meinte ich, dass ich hierfür 'attr WEB csrfToken none' setzen musste.

In der Anleitung war dies als unsicher und eher als temporäre Lösung beschrieben. Daher hab ich es dann auch eher als Provisorium behalten.

Ist das denn deiner Meinung nach nicht so wild, oder kann ich hier etwas besser machen?
3*FB-Mesh ,FHEM+MariaDB+TVH+TriaxSatIPGrafana@Docker/DS220+, 6*Kodi-RPis, EpsonTW650+DIY-Lift, 3*IPCam@TVH, 2*AI@EspCAM, Robo.S6
6*Maxcio bulbs, 15*Nodemcu&WemosD1, 20*GosundSP1, 25*Shelly, 8*MC400A, 7*CometDect, abgelöst: diyCurls, 433Mhz, JeeLink, DenonAVR, FS20, HM ...

MadMax-FHEM

DOCH! IST WILD!

Wenn du es einfach so auf "none" gesetzt hast: nicht verstanden wofür/wogegen es hilft!

Wenn schon, dann mindestens auf einen fixen Token setzen!!

Und den dann beim Aufruf mitgeben...

Wenn "normal", wird bei jedem fhem Neustart ein neuer Token generiert (je nach dem wie oft das ist, ist auch das ein "quasi fixer Token")...

Wenn auf einen fixen Wert gesetzt: so als würdest du fhem NIE neu starten

Wenn auf none: ganzer Schutzmechanismus DEAKTIVIERT!!

Steht aber alles im zugehörigen Wiki und verm. auch commandref!

Und: man darf auch das Internet benutzen, um herauszufinden was csrf ist ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

fheminist

Hallo,

Danke für den Hinweis. Der Token ist nun festgesetzt und aktiv.

Hoffe jemandem hat noch Tipps für mich, wie ich TVH-Aufnahmen extern Starten & Stoppen kann.

Besten Dank und Gruß
3*FB-Mesh ,FHEM+MariaDB+TVH+TriaxSatIPGrafana@Docker/DS220+, 6*Kodi-RPis, EpsonTW650+DIY-Lift, 3*IPCam@TVH, 2*AI@EspCAM, Robo.S6
6*Maxcio bulbs, 15*Nodemcu&WemosD1, 20*GosundSP1, 25*Shelly, 8*MC400A, 7*CometDect, abgelöst: diyCurls, 433Mhz, JeeLink, DenonAVR, FS20, HM ...

Beta-User

Zitat von: C0mmanda am 23 Juni 2019, 09:06:52
Ich gehe davon aus dass dieses Projekt tot ist?

Ein define des Moduls lässt FHEM unvermittelt abstürzen.. :(

Gruß
Cmda
Nachdem meine Versuche mit MQTT bzgl. TvHeadend nicht sooo befriedigend waren, bin ich am Überlegen, ob es sinnvoll ist, das Projekt hier wieder aufzunehmen.

Nach ein "paar kleineren Umbauten" hatte ich gestern auf dem Testsystem auch Readings, ohne dass FHEM abgeschmiert wäre. Daher die Fragen:
a) besteht Interesse? (Ich habe zwar einen TvHeadend-Server (aktuelle Version@Ubuntu) am laufen, aber keine vertiefte Idee, was und wie man das von FHEM aus eigentlich nutzen will...)
b) hat jemand eine Implementierung mit MQTT am Laufen, die ein gesondertes Modul als "overdone" erscheinen lassen?

Falls a) und nicht b) würde ich ggf. einen neuen Thread aufmachen, sobald die Basics funktionieren (dazu gehört dann auch das "Wegsperren" des Passworts aus der DEF).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

a) ja aber nicht "unbedingt" ;) käme halt drauf an was man da von fhem aus so machen kann/könnte. Habe 2 (evtl. bald 3) TVHeadend-Server laufen. Alle auf einem PI@Buster aber nicht aus dem Buster-repo (die ist immer noch zu alt/älter?). Ich habe: HTS Tvheadend 4.3-1857~g221c29b40

b) nein

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Ui, das ging aber "zackig"...

Wie geschrieben: bis dato habe ich nur ein paar Readings, ein paar Log-Einträge, wenn das decode_json() schiefgegangen ist (keine crashes...) und benutze den Server selbst um hin und wieder
- was aufzuzeichnen
- Radio via SAT zu hören*.

Hier war noch "starte eine Aufnahme von einer Live-Cam" aufgerufen?

Ad *: Das Optimum dazu wäre für mich, wenn man da direkt eine Soundausgabe manipulieren könnte; allerdings ist das wohl eher was, das in der Liga MPD oder VLC anzusiedeln wäre. Das hat nach meinem bisherigen Verständnis eher nichts mit dem zu tun, was auf der Server-Seite abläuft.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

#41
Zitat von: Beta-User am 24 September 2021, 13:28:13
Ui, das ging aber "zackig"...

:)

So sind wir halt hier im Forum ;)

Bzw. es gibt halt Threads/Module die ich so "semi-interessant" finde und mitlese/"beobachte"...
Hatte auch schon mal überlegt mir das anzuschauen aber mangels Zeit und wirklicher Anwendung: naja... ;)


Zitat von: Beta-User am 24 September 2021, 13:28:13
... und benutze den Server selbst um hin und wieder
- was aufzuzeichnen
- Radio via SAT zu hören*.

Ich auch wegen Aufzeichnen und für die Tocher zum TV-Kucken: im Zimmer ist kein TV-Anschluss...

Zitat von: Beta-User am 24 September 2021, 13:28:13
Hier war noch "starte eine Aufnahme von einer Live-Cam" aufgerufen?

Hmm, bei mir eher starten von Aufzeichnungen TV-Programm...
Übersicht TV-Programm...
Übersicht Aufnahmen...

Aber wie angedeutet: ich bin/werde bestimmt nicht der allerintensivste Anwender...
(zu viele andere [wichtigere] "Baustellen")

Aber mal so zum Testen etc. gerne... :)

Bin gespannt, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

geiercasi

Interesse besteht :)
Das Modul lässt mein fhem übrigens nicht abstürzen.

Grüße

Beta-User

...here you are: https://forum.fhem.de/index.php/topic,123117.msg1176443.html#msg1176443

Ich hatte das mit dem Absturz hier nur gelesen und kann auch an den (neuen) Logs nachvollziehen, wann das passiert. Ich gehe davon aus, dass es dann nicht passiert ist, wenn der User administrative Rechte auf dem TvHeadend-Server hat (innerhalb TVH).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

fheminist

Hallo zusammen,

habe in Zeiten des teuren Stroms eine Lösung für mich gefunden, die echt stabil läuft und zuverlässig den SatIP Server ab & anschaltet.

Ich lese die RestAPI von TVH aus und hole mir den Start-End-Timestamp der nächsten Aufnahmen. 15min vorab wird ein Dummy dann auf "on" gesetzt.

Wenn dieser Dummy auf on steht, oder eine unserer TV-Szenen gestartet wird, oder der EPG-Sync zu den gegebenen Uhrzeiten aktiv ist, so wird der SatIP-Server mit Strom versorgt.
Seit ca 6Monaten läuft das ohne eine Störung echt top.

Hier zu meiner Implementierung:

In diesem HTTPMOD werden die Daten der nächsten Aufnahmen abgerufen:


define tvh_next_rec HTTPMOD http://user:passwort@192.168.179.007:9981/api/dvr/entry/grid_upcoming?sort=start_real&dir=asc&limit=1
attr tvh_next_rec extractAllJSON 1
attr tvh_next_rec group Multimedia
attr tvh_next_rec icon it_satellite_dish_heating
attr tvh_next_rec room 10_EG
attr tvh_next_rec Interval 300



Diese werden dann in dem DOIF verarbeitet und in ein den dummy "State_TVHrec" geschrieben (ist on wenn gerade min. eine Aufnahme läuft):



define TSK_TVH_NextREC DOIF ( [tvh_next_rec:entries_01_start_real] or [State_TVHrec:recording] eq "start" )\
## wenn aufnahme startet wird endzeit +15min extra als Off-Time weggeschrieben... \
##\
(setreading $SELF ts_next_on [tvh_next_rec:entries_01_start_real] )\
\
(setreading $SELF ts_now {(time())} )\
(setreading $SELF ts_diffON_Min {( ([$SELF:ts_next_on]-[$SELF:ts_now])/60 )} )\
\
( IF ([$SELF:ts_diffON_Min] <= 15 )\
(set State_TVHrec on, setreading $SELF ts_next_off {([tvh_next_rec:entries_01_stop_real]+15*60)})\
ELSE\
()\
)\
( IF ( [State_TVHrec:recording] eq "start" )\
(set State_TVHrec on, setreading $SELF ts_next_off {([$SELF:ts_now]+15*60)}, \
setreading State_TVHrec recording none)\
ELSE\
()\
)\
( IF ([State_TVHrec:state] eq "on" and [$SELF:ts_next_off] <= [$SELF:ts_now] )\
(set State_TVHrec off)\
ELSE\
()\
)\

attr TSK_TVH_NextREC do always
attr TSK_TVH_NextREC room TSKs




Hier ist dann die Logik, um die Zwischensteckdose ON / Off zu setzen (EPG / Szenen und Aufnahmen check):



define TSK_State_TVH_SatIP DOIF ( ( [05:00] or [15:00] ) \
or ( [Szene_TV:state] eq "on" or [Szene_Garten:state] eq "on" or [Szene_EZ_TV:state] eq "on" )\
or ( [Szene_TV_MuKu:state] eq "on" or [State_TVHrec:state] eq "on")\
\
)\
## an wenn 1.) spez.Uhrzeiten >>epg syncZeiten auf tvh anpassen 5&15 Uhr<<  2.) TV_Szenen an 3.) Aufnahme läuft\
(set SatIP_Server on)\
\
DOELSEIF ( ( ( [05:15] or [15:15] ) or ( [05:15-14:59] or [15:15-04:59] ) )\
and ( [Szene_TV:state] eq "off" and [Szene_Garten:state] eq "off" and [Szene_EZ_TV:state] eq "off" )\
and ( [Szene_TV_MuKu:state] eq "off" and [State_TVHrec:state] eq "off" )\
)\
## 2. gleiche wie 1 nur halt TVH AUS\
(set SatIP_Server off)\

attr TSK_State_TVH_SatIP do always
attr TSK_State_TVH_SatIP group IFTTT (IfThisThenThat)
attr TSK_State_TVH_SatIP room TSKs




Da ich lange selber nach einer guten, robusten Lösung gesucht habe, dachte ich evtl. hilft es ja einem.

Viele Grüße
3*FB-Mesh ,FHEM+MariaDB+TVH+TriaxSatIPGrafana@Docker/DS220+, 6*Kodi-RPis, EpsonTW650+DIY-Lift, 3*IPCam@TVH, 2*AI@EspCAM, Robo.S6
6*Maxcio bulbs, 15*Nodemcu&WemosD1, 20*GosundSP1, 25*Shelly, 8*MC400A, 7*CometDect, abgelöst: diyCurls, 433Mhz, JeeLink, DenonAVR, FS20, HM ...