Zliczanie czasu oglądania danego kanału TV

Cześć , to mój pierwszy post (nowy) tutaj na forum , więc proszę o wyrozumiałość :slight_smile:
Mam sensor który w moim TV wyświetla mi historię oglądania TV tzn. jakie było źródło np " Live TV" , Netflix itd
oraz jeśli jest to Live TV to jaki dokładnie kanał np TVN HD , TVP 1 itd


tak to wygląda w configuration.yaml i tak to wygląda na wykresie HISTORY
jako że profesjonalistą nie jestem to już jestem MEGA zadowolony że doszedłem do tego punktu, ale dwoje się i troje żeby teraz osiągnąć finał zamysłu czyli :
chciałbym żeby było to gdzieś sumowane
np. ustawiam sobie w jakims filtrze od 10.04 - 15.04 i mi pokazuje że TVN był oglądany tyle i tyle , TVP 1 tyle i tyle
no i wiadomo analogicznie ile czasu LIVE TV / Netflix itd
Ktoś jest w stanie pomóc ? :slight_smile:

Nie robiłem jeszcze czegoś takiego, ale powinno się to dać zrobić przy pomocy history stats:

To znaczy musiałbyś zrobić osobny sensor dla każdego programu, który chcesz śledzić, dać mu typ “time” i okres jaki chcesz. Nie jestem pewien, jak to najlepiej zrobić, żeby mieć dynamiczne okresy, zastanów się, czy to jest Ci potrzebne, może wystarczy po prostu mu tam dać okres tygodnia do teraz. Ewentualnie dać od 0 do now i potem to się starać jakoś przefiltrować np. w jakiejś karcie wykresu (licząc change, zmianę).

Jedna istotna uwaga, z tego co wiem ten history stats liczy tylko na krótkich statystykach, więc standardowo ostatnie 10-11 dni. Tak przynajmniej gdzieś czytałem, w dokumentacji nie jest to dla mnie jasne.

Ale, jak wspomniałem na początku, nie używałem tego (jeszcze), piszę to tylko rzucając pomysł, dlatego że nikt tu jeszcze nic nie napisał, a temat wydaje mi się ciekawy.

1 polubienie

Generalnie temat zacząłem i zamierzony efekt osiągnąłem, to podzielę się z Wami, może komuś się przyda.
image
Widzimy tutaj Obecne źródło wybrane na TV oraz kanał jeśli jest to “LIVE TV”
image

Tutaj widzimy to na wykresie historycznym.

image

Tak prezentuje się rozpiska czasowa oglądanych źródeł.

Ranking kanałów TV oraz i jedno i drugie wrzucone w wykresy :

:slight_smile:
Wiadomo że w GRAFANIE można dopieścić i wgl wprowadzić cuda no ale już coś mam metodą prób i błędów doszedłem do w miare zadowalającego efektu :slight_smile:

Jak się chcesz z kimś podzielić to nie obrazkami tylko wklejeniem kodu i dokładnym jego opisaniu.

2 polubienia

Podbijam prośbę do autora

Tutaj dodaje 2 sensory które sprawdzają obecny kanał i obecne źródło

sensor:                     
  - platform: template
    sensors:
    # Tutaj dodajemy nazwe sensora - która później jest używana #
      obecny_kanal:
        friendly_name: "Obecny kanał TV"
        value_template: "{{ state_attr('media_player.lg_webos_tv_oled55c11lb', 'media_title') }}"
- platform: template
    sensors:
    # Tutaj dodajemy nazwe sensora - która później jest używana #
      obecne_zrodlo:
        friendly_name: "Obecne Zrodlo"
        value_template: "{{ state_attr('media_player.lg_webos_tv_oled55c11lb', 'source') }}"
# Historia oglądanych kanałów (TVN, TVP1, TVP2, Polsat, TTV, TVP Sport, Puls 2, ZOOM TV, Travel Channel, TVN 7)       
  - platform: history_stats
    name: TVN czas
    entity_id: sensor.obecny_kanal
    state: "TVN HD"
    type: time
    end: "{{ now() }}"
    duration:
      days: 7
      
  - platform: history_stats
    name: TVP1 czas
    entity_id: sensor.obecny_kanal
    state: "TVP 1 HD"
    type: time
    end: "{{ now() }}"
    duration:
      days: 7

Powyżej zliczanie czasu każdego kanału, finalnie porzuciłem projekt zrobienia dynamicznego odczytu nazwy kanału później wprowadzanie go do wykresów oraz historii, może jeszcze kiedyś do tego wróce :slight_smile:

Do tego 2 automatyzacje jedna aktualizująca obecne źródło inna obecny kanał.

i to wyciągnięte jest w ten sposób :

type: history-graph
entities:
  - entity: sensor.obecne_zrodlo
  - entity: sensor.obecny_kanal
hours_to_show: 12
logarithmic_scale: false

Tak wyciągam kanały TV do encji

type: custom:auto-entities
card:
  type: entities
  title: Ranking oglądanych kanałów
filter:
  include:
    - entity_id: sensor.tvn_czas
      options:
        name: TVN
    - entity_id: sensor.tvp1_czas
      options:
        name: TVP 1
    - entity_id: sensor.polsat_czas
      options:
        name: Polsat
    - entity_id: sensor.tvp2_czas
      options:
        name: TVP 2
    - entity_id: sensor.ttv_czas
      options:
        name: TTV
    - entity_id: sensor.tvp_sport_czas
      options:
        name: TVP Sport
    - entity_id: sensor.puls_czas
      options:
        name: Puls
    - entity_id: sensor.zoom_czas
      options:
        name: Zoom TV
    - entity_id: sensor.travel_channel_czas
      options:
        name: Travel Channel
    - entity_id: sensor.tvn7_czas
      options:
        name: TVN 7
    - entity_id: sensor.eurosport_1_czas
      options:
        name: EuroSport 1
show_empty: true
sort:
  method: last_updated
  reverse: true

Tutaj jeszcze zliczanie czasów do źródła :

# Historia statusów np. LIVE TV / YOUTUBE itd     
  - platform: history_stats
    name: Ile oglądania TV
    entity_id: sensor.obecne_zrodlo
    state: "Live TV"
    type: time
    end: '{{ now() }}'
    duration:
      days: 7
    
  - platform: history_stats
    name: Ile oglądania YouTuba
    entity_id: sensor.obecne_zrodlo
    state: "YouTube"
    type: time
    end: '{{ now() }}'
    duration:
      days: 7
3 polubienia

Takie pytanie techniczne, czy można zrobić aby nie pokazywało encji z zerowym czasem?

type: custom:auto-entities
card:
  type: entities
  title: TV Salon
  state_color: true
filter:
  include:
    - options:
      entity_id: sensor.ile_*_s
    - attributes:
        state: "< 0.0"
show_empty: true
sort:
  method: last_updated
  reverse: true

taka forma działa ale pokazuje wszystko.

EDIT:
taka forma działa

type: custom:auto-entities
card:
  type: entities
  title: TV Salon
  state_color: true
filter:
  include:
   - entity_id: sensor.ile_*_s
  exclude:
   - state: "0.0"
show_empty: false
sort:
  method: last_updated
  reverse: true
1 polubienie

Rozumiem, że zrobiłeś dynamicznie to tworzenie sensorów ? tzn że przełączysz na jakiś kanał i jeśli nie masz takiego sensora to Ci go tworzy ? bo widzę że masz * jakaś w sensorze ?

Gwiazdka w nazwie encji w tej niestandardowej karcie jest zwyczajnym wildcardem - umożliwia wyświetlenie wszystkich encji pasujących do wzorca (po to @g00pher odfiltrowuje zbędne kolejną regułą exclude), wcale nie muszą być tworzone dynamicznie.

A na sensor.ile_*_s załapią się wszyskie encje, których nazwa sie zaczyna od sensor.ile_ i równocześnie kończy na _s

1 polubienie