MPC-HC in Home Assistant einbinden

Robert81

New member
Hallo und einen schönen Sonntag wünsch ich.

Ich bin relativ neu in der Materie und habe dennoch geschafft den MPC-HC Player auf meinem HTPC in HA einzubinden.
Das war nicht so einfach weil die Implementierung seit einem halben Jahr nicht mehr Bestandteil ist.
Nach der Anleitung auf Github habe ich es aber hinbekommen.

Jetzt aber zum Problem, die Statusübertragung dauert leider zwischen 5 und 15 Sekunden was viel zu lang und unstetig ist.
Ich möchte Licht an und ausschalten beim Filmstart/Pause etc.
Durch "scan_interval: 1" in der yaml konnte ich das Problem zumindest umständlich lösen, glücklich bin ich aber nicht damit.
Denn jetzt wird jede Sekunde eine Warnung ins LOG geschrieben das der Mediaplayer nicht erreichbar ist wenn er aus ist.

Hier mein yaml Eintrag:

Code:
media_player:
  - platform: mpc_hc
    name: MPC-HC
    host: http://192.168.178.61
    port: 13579
    scan_interval: 1

Das muss doch irgendwie zu lösen sein, in etwa das der Scan nur alle Sekunde läuft wenn der Mediaplayer aktiv ist.
Oder einen Timeout nach 1 Minute wenn der Mediaplayer nicht gefunden wird oder so.

Ich habe im Grunde keine Ahnung und kann nur kopieren oder nachbauen.
Vielleicht gibts bei euch einen der mir helfen kann?

Viele Grüsse
 

blurrrr

Well-known member
Mahlzeit!

Ich habe im Grunde keine Ahnung
Jut, simma schomma zwei... 😅

Jetzt aber zum Problem, die Statusübertragung dauert leider zwischen 5 und 15 Sekunden was viel zu lang und unstetig ist.
Ich möchte Licht an und ausschalten beim Filmstart/Pause etc.
Durch "scan_interval: 1" in der yaml konnte ich das Problem zumindest umständlich lösen, glücklich bin ich aber nicht damit.
Denn jetzt wird jede Sekunde eine Warnung ins LOG geschrieben das der Mediaplayer nicht erreichbar ist wenn er aus ist.
Nur mal so als "Idee": Könnte man das nicht einfach nur "dann" scharf schalten, wenn das Ding auch effektiv "an" ist (eben als Bedingung). Jou, mach das ruhig alle 1 Sekunde (oder 2 oder 3 oder was auch immer), aber NUR wenn der MediaPlayer auch "an" ist. Wobei "an" jetzt sicherlich auch wieder so eine Sache ist, woran machst Du das denn fest? Erreichbarkeit von "host: http://192.168.178.61"? Wobei das ja vermutlich auch erreichbar sein wird, wenn der Mediaplayer im Standby ist (und da ist sie schon die große Frage: Standby heisst nicht aus, woher soll HomeAssistant nun wissen, was genau "aus" ist?).

Da ich davon mal so gar keine Ahnung habe, wäre ggf. noch die Frage, was für Stati es für den Mediaplayer überhaupt gibt... vielleicht ist ja schon was passendes dabei (standby, sleep, offline, etc.). Dann könntest Du diesen Zustand wenigstens als Indikator nehmen, ob das oben genannte überhaupt laufen soll (oder eben nicht).
 

Robert81

New member
Hi und danke für die Antwort, das Problem ist ja das der Mediaplayer ausschließlich in der Yaml eingestellt wird.
Eine Entität ist nicht wirklich zu finden. Nur wenn ich in der Automation als Zustand suche bekomme ich den MPC-HC.

Bildschirmfoto 2022-08-21 um 12.53.54.png

Da kann ich dann unten reinschreiben: unavailable, playing, paused etc.
Als Auslöser zum scannen würde mir schon die Steckdose ein reichen oder der WOL Befehl.

Aber das kann ich nicht als Automatisierung einbauen, jedenfalls wüsste ich nicht wie?

Nach meiner Logik müsste man in der Yaml einen Auslöser fürs scannen einbauen aber auch da find ich keine Lösung.
 

blurrrr

Well-known member
Du sollst nicht "irgendwas" da reinschreiben, guck doch erstmal nach, was für Attribute/Stati Dir die Entität überhaupt anbietet 😁
Nach meiner Logik müsste man in der Yaml einen Auslöser fürs scannen einbauen aber auch da find ich keine Lösung.
Als Auslöser zum scannen würde mir schon die Steckdose ein reichen oder der WOL Befehl.
Mal in Kurzform: "WENN entität.steckdose.status = an DANN scannen"... so im groben... vielleicht?
 

blurrrr

Well-known member
Als Bedingung? Wenn Du sagst:

Das da... scannen... (Aktion), kannst Du noch eine Bedingung (Condition) dazwischen packen. Also "mach das da" WENN "bedingung xy erfüllt ist" Das geht sogar über das grafische Menü. Machste das nicht als "Auslöser" (was natürlich auch nicht so verkehrt wäre, aber wie hält es wieder an?), sondern als Bedingung. Also das wäre zumindestens mein laienhafter Ansatz - wie ich schon eingangs sagte: simma schomma zwei... 😅
 

Robert81

New member
Eine Bedingung oder Auslöser ist nicht das Problem, sondern wie ich das scan_interval zum Mediaplayer zu ordne.
so wie hier zu sehen geht es nicht, fehlt ja auch die Zuordnung.

Bildschirmfoto 2022-08-21 um 14.15.12.png
 

blurrrr

Well-known member
Schauen wir uns das nochmal an:
media_player:
- platform: mpc_hc
name: MPC-HC
host: http://192.168.178.61
port: 13579
scan_interval: 1
So, Da steht derzeit "1" (für die Sekunden), ich vermute mal, dass "0" wohl einfach "aus" wäre. Somit könnte man z.B. folgendes formulieren:

WENN Steckdose = an, DANN mpc_hc.scan_interval = 1, ANSONSTEN mpc_hc.scan_interval = 0

Ist jetzt nur recht beispielhaft ("mpc_hc.scan_interval" ist so bestimmt nicht richtig), aber ich denke, Du weisst, in welche Richtung das laufen könnte. Du gehst also hin und änderst den Wert beim Scan-Intervall, wenn die Steckdose eingeschaltet ist auf "1". Ist sie ausgeschaltet, sollte der Scan-Intervall auf "0" stehen (damit eben nicht gescannt wird - falls das so überhaupt richtig ist).
 

Robert81

New member
Wenn ich scan_interval weglasse in der yaml, dann gibt es dieses unstetige zwischen 5 und 15 Sekunden Update vom Status.

Ich weis nicht ob "mpc_hc.scan_interval: 1"überhaupt möglich ist. Ich denke eher das man in der yaml was eintragen muss. Aber unter dem Reiter Mediaplayer sind solch Variablen sicher nicht möglich.

Und da hört es auch schon aus bei mir.
 

blurrrr

Well-known member
Schau Dir mal die Entität in den Entwicker-Tools an (http://<homeassistant-ip>:8123/developer-tools/state). Da müsste auch stehen, was Dir diesbezüglich zur Verfügung steht.
 

blurrrr

Well-known member
Ich meinte das "darunter" 😁 Also die Spalten: Entität, Zustand, Attribute und dort den Eintrag von MPC-HC. Da müsste ja theoretisch irgendwas zu stehen bzgl. Scan-Intervall.
 

Nival

-
Moderator
Achtung, nur ganz wild durch die Gegend geraten ;) - wie wäre es, anstelle über den Schalter scan_interval über drei Automatisierungen zu gehen? Ich weiß nicht sicher ob es möglich ist, wäre aber so mein Ansatz.

Zuerst mal eine Automatisierung, die, so wie ich das verstehe, dafür sorgt, dass der Status einer Entität regelmäßig aktualisiert wird:
YAML:
- id: '1661087208718'
  alias: Scan MPC
  description: ''
  trigger:
  - platform: time_pattern
    seconds: '1'
  condition: []
  action:
  - service: homeassistant.update_entity
    data: {}
    target:
      entity_id:
      - input_boolean.i_am_home
  initial_state: 'off'
  mode: single
Hier müsstest Du mein input_boolean.i_am_home natürlich durch Deine Entität ersetzen, die genaue Bezeichnung sollte sich eigentlich in den Entwicklerwerkzeugen finden lassen. ggf. ist es auch nur das MPC-HC. Alternativ zum selber zusammenklicken: Auslöser Zeitraster, 1 Sekunde, Aktionstyp Dienst ausführen, Dienst Home Assistant Core Integration: Update entity, Ziel auswählen, Automatisierung deaktivieren.

Dann nächste Automatisierung, sieht bei mir so aus:
YAML:
- id: '1661087951977'
  alias: Activate Scan MPC
  description: ''
  trigger:
  - platform: sun
    event: sunrise
    offset: 0
  condition: []
  action:
  - service: automation.turn_on
    data: {}
    target:
      entity_id: automation.scan_mpc
  mode: single
Das müsstest Du dann umschreiben auf "Strom wurde angeschaltet", wo ich die Sache mit dem Sonnenaufgang stehen habe und sollte dann obige Automatisierung dazu bringen, sekündlich Updates zu forcieren.

Dann noch das ganze Spiel wieder rückwärts:
YAML:
- id: '1661088497861'
  alias: Deactivate Scan MPC
  description: ''
  trigger:
  - platform: sun
    event: sunset
    offset: 0
  condition: []
  action:
  - service: automation.turn_off
    data: {}
    target:
      entity_id: automation.scan_mpc
  mode: single
Hier "Sonne geht unter" auf "Strom geht aus" umschreiben, um keinen unnötigen Stress im Netzwerk zu haben.

Aber wie gesagt, nur ein möglicher Ansatz, von HA habe ich auch kaum Ahnung. Eventuell auch zuerst mal nur die oberste Automatisierung, eben statt dem scan_interval, und schauen, ob das überhaupt funktioniert wie gewünscht (dann natürlich nicht ausschalten).
 

Robert81

New member
Gibt es einen Grund dafür, daß du den MediaPlayerClassic verwendest, spricht etwas gegen VLC?

ich benutze den MPC in Kodi um auch MadVR laufen zu lassen, da weis ich nicht ob das mit dem VLC geht.

Achtung, nur ganz wild durch die Gegend geraten ;) - wie wäre es, anstelle über den Schalter scan_interval über drei Automatisierungen zu gehen? Ich weiß nicht sicher ob es möglich ist, wäre aber so mein Ansatz.

Das ist interessant, ich versuch das mal.
 

Robert81

New member
Ich habe jetzt die erste Automatisierung ausprobiert und laufen lassen, aber die States werden immer noch verzögert übertragen. Sieht bei mir dann so aus:

Code:
alias: Test
description: ""
trigger:
  - platform: time_pattern
    seconds: "1"
condition: []
action:
  - service: homeassistant.update_entity
    data: {}
    target:
      entity_id: media_player.mpc_hc
mode: single
 

Nival

-
Moderator
Ach und, ich weiß nicht ob es was ausmacht, aber ggf. seconds: "1" nochmal austauschen gegen seconds: '1' - der Anführungsstriche wegen.
 

Robert81

New member
Das scan_interval hattest Du für den Test rausgenommen und HA neugestartet?
ja

Ach und, ich weiß nicht ob es was ausmacht, aber ggf. seconds: "1" nochmal austauschen gegen seconds: '1' - der Anführungsstriche wegen.
Das mit den Anführungszeichen kommt aus der UI.

ich denk Zeitraster ist merkwürdig

Bildschirmfoto 2022-08-21 um 16.38.43.png

Als ob es nur jede Minute bei der ersten Sekunde auslöst und nicht jede Sekunde
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
968
Beiträge
14.035
Mitglieder
499
Neuestes Mitglied
John58
Oben