Skocz do zawartości

wykorzystać crontab


Gość s6s

Rekomendowane odpowiedzi

Jak z poziomu skryptu shell'a sprawdzić czy głowica nie działa aktualnie (czyli czy ktoś akurat nie ogląda tv w danej chwili albo nie nagrywa się planowa audycja tv)?

 

ok, coś takiego udało mi się wymodzić, żeby sprawdzić czy string zwracany przez:

strng=`wget -q -O - "http://127.0.0.1/web/about" |grep e2servicename\> | /usr/bin/cut -d '>' -f2 | /usr/bin/cut -d '<' -f1 )`

zawiera nazwę audycji/stacji (kiedy głowica włączona) czy nic nie zawiera kiedy tuner przełączy się w stan "sleep".

 

(Przy okazji wiemy jak otrzymać nazwę audycji (kiedy EPG podaje) lub stacji (kiedy nic nie ma w EPG))

 

Ale czy to nie za bardzo "karkołomna" metoda i nie da się prościej?

 

 

Scalono

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Działało, kiedy używałem:

 

#!/bin/bash

timers_file=/etc/enigma2/timers.xml
time_now=`date +%s`

timer_state=0

while read -r line; do
    line_start=`echo "$line" | awk '{ print $1 }'`
    if [ "$line_start" = "<timer" ]
    then
        timer_begin=`echo "$line" | awk '{ print $2 }' | sed 's/"/ /g' | awk '{print $2}'`
        timer_end=`echo "$line" | awk '{ print $3 }' | sed 's/"/ /g' | awk '{print $2}'`
        if [ "$time_now" -ge "$timer_begin" ] && [ "$time_now" -le "$timer_end" ]
        then
            timer_state=1
        fi
    fi
done < $timers_file

echo "$timer_state"

 

Zwraca 0 jeżeli aktualnie nic się nie nagrywa i 1 jeżeli coś się jednak nagrywa ... bazując na danych z timers.xml. Jeżeli włączymy nagranie w czasie oglądania, używając czerwonego R to niestety nie dopisuje się to do timers.xml :(

 

Wydaje się, że jeżeli coś się odtwarza lub nagrywa to powinny być ustawione parametry w /proc/stb/vmpeg ... ale mimo aktywnego nagrania są tam zera.

Odnośnik do komentarza
Udostępnij na innych stronach

cat /proc/stb/vmpeg/0/framerate

 

pokazuje zero kiedy tuner w 'sleep' a cztery "cyfry" szensnastkowe kiedy podczas oglądania...

 

Podczas stanu sleep kiedy nagrywa planowe zadanie rzeczywiście pokazuje niestety zero (tak samo zresztą i w stanie czuwania kiedy "nie ma wolnego tunera" i obraz ciemny)

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Właśnie wiem... Wydawało mi się, że tam powinno coś być jeżeli jeden z tunerów pracuje (coś dekoduje) a są wartości różne od 0 tylko kiedy obraz jest wyświetlany :(

 

odkopuje. na podstawie pliku LCD generowanego przez oscam, można wywnioskować czy coś się dekoduje. Po więcej (jak to ustawiać) odsyłam do: http://www.streamboard.tv/wiki/OSCam/en/Config/oscam.conf#enablelcd - po testach zobaczysz co oscam tam umieszcza :)

Odnośnik do komentarza
Udostępnij na innych stronach

Ale to oznacze, że musi męczyć dysk HDD ciągłym zapisywaniem bzdur, nie da się jakoś ominąć owej konieczności? Jakiś bufor w tmpfs albo co... jakby ograniczyć wielkość pliku do minimum żeby nie zapychać też pamięci?

 

 

 

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Ważna uwaga, w owym opisie z linku:

http://www.streamboard.tv/wiki/OSCam/en/Config/oscam.conf#enablelcd

 

występuje pewna niedbałość. Otóż żeby 'lcd' działało należy owe wpisy konfiguracyjne poprzedzić nagłówkiem [lcd] , czyli w sumie np.:

[lcd]
enablelcd          =  1  # NEU - NEW - NOUVEAU - NUOVO  svn:6285/01/23/2012 
lcd_outputpath     =  /tmp #wartość domyślna jeżeli nic nie wpiszesz - a poza tym trzeba wpisać ścieżkę FOLDERu! 
lcd_hideidle       = 0
lcd_writeinterval  = 10

(przy najmniej mnie jedynie pod powyższym warunkiem działa)

 

------------

Aha, jeszcze dodam, że mam oscam'a z ostatniej aktualizacji przez opkg,

i mówi on, że obsługuje lcd:

# cat /tmp/.oscam/oscam.version
Version:        oscam-1.20-unstable_svn-r9072
...
LCD support:                   yes
...

 

-------------------

 

Przy okazji, pojęcia nie ma do czego służy owa funkcja "lcd" w oscam'ie (czy mógłby ktoś jednym zdaniem oświecić pliiiz?)

 

a w szczególności, czy owe informacje zawarte w plikach oscam.lcd.* można wykorzystać jedynie aby określić czy tuner odbiera kanały kodowane - czy również FTA?

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

(Przy okazji, pojęcia nie ma do czego służy owa funkcja "lcd" w oscam'ie, czy mógłby ktoś jednym zdaniem oświecić pliiiz?)

 

Mama mia. W wątku o czym tu dyskutujemy? o sprawdzaniu czy coś się dekoduje, cytuję za innym guru oscamowym (Jej@n)

 

W pliku (lcd, dopisek mój) otrzymujemy sporo informacji takich jak:
- pełne dane o wersji OSCam'a
- uptime
- dane z tabelki "Totals" w zakładce USERS
- informacje o czytnikach i userach

 

przykładowe dane (także cytuję za Jej@n)

Version: 1.20-unstable_svn
Revision: 8829
up: 10:34:08
totals: 2728/0/6/0/1/0
uptime: 38048
Typ| Label      | Idle  | w | s | b | e | St
---+------------+--------------+---+---+---+---+----
R0 | alfa       |       00:00:38 | 0| 0| 0| 0| OK
R1 | beta       |       00:00:13 | 0| 0| 0| 0| OK
P0 | dcw        |       10:34:08 | 0| 0| 0| 0| CON
P1 | chi        |       00:00:00 | 0| 0| 0| 0| CON
P2 | phi        |       02:28:35 | 0| 0| 0| 0| CON
P3 | delta      |       00:00:01 | 2/213 cards | CON
P4 | kappa      |       00:00:53 | 1/ 1 card | CON
P5 | sigma      |       00:00:18 | 5/ 29 cards | CON
P6 | ex301      |       00:00:38 | 0| 0| 0| 0| CON
P7 | ex302      |       00:00:00 | 0| 0| 0| 0| CON
P8 | ex303      |       00:00:13 | 0| 0| 0| 0| CON
P9 | ex304      |       00:00:00 | 0| 0| 0| 0| CON
---+------------+--------------+---+---+---+--++----
Typ| Label      | Channel       | Time
---+------------+-----------------------------+-----
U0 | nbox       | nc+   :Polsat HD      | 227
U1 | dm500      | nc+   :Filmbox Action | 393
---+------------+-----------------------------+-----

 

Te dane można wykorzystać w skrypcie, choćby do sprawdzania czy odbiornik coś dekoduje, wtedy "będzie widać" że użytkownikowi dvbapi przyrasta ilość zapytań o ECM.

Odnośnik do komentarza
Udostępnij na innych stronach

czyli z tego ca napisałes wynikałoby, że tylko kodowane kanały...

 

A ja zauważam, że na kanale FTA - jak tuner włączony to tabelka pokazuje np.:

Typ| Label      | Idle         | w | s | b | e | St
---+------------+--------------+---+---+---+---+----
R0 | sci0       |     00:00:00 |  0|  0|  0|  0| OFF
---+------------+--------------+---+---+---+--++----
Typ| Label      | Channel                     | Time
---+------------+-----------------------------+-----
---+------------+-----------------------------+-----

a jak w standby (i bez nagrywania) to:

Typ| Label      | Idle         | w | s | b | e | St
---+------------+--------------+---+---+---+---+----
---+------------+--------------+---+---+---+--++----
Typ| Label      | Channel                     | Time
---+------------+-----------------------------+-----
---+------------+-----------------------------+-----

 

czyli wiersza z R0 wówczas brak - czy można więc oprzeć sie własnie na tym żeby po prostu sprawdzać czy w tabelce znajduje się wiersz z danymi czytnika karty?

 

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

czyli z tego ca napisałes wynikałoby, że tylko kodowane kanały...

 

A ja zauważam, że na kanale FTA - jak tuner włączony to tabelka pokazuje np.:

[ciach by abraham]

 

czyli wiersza z R0 wówczas brak - czy można więc oprzeć sie własnie na tym żeby po prostu sprawdzać czy w tabelce znajduje się wiersz z danymi czytnika karty?

 

Nie miałem potrzeb by to testować, więc pisałem o tym co wynikało z dokumentacji i/lub innych źródeł które znałem. Logicznie rzecz biorąc, Twoja uwaga jest słuszna, w wypadku odbiorników można by sprawdzać obecność czytnika R0. Co rozwiązuje kwestie Twojego pytania, od którego się ten wątek zaczął.

Odnośnik do komentarza
Udostępnij na innych stronach

A, czyli (w skrypcie) badać coś w rodzaju:

. /etc/oscam/oscam.conf

if [ -n "$lcd_outputpath" ]; then
   plik="$lcd_outputpath/oscam.lcd.tmp" 
else
  plik=/tmp/.oscam/oscam.lcd.tmp
fi

czytniki="R0 R1 P0 P1 U0 U1"

for szukany in $czytniki; do
   if [ -n "$( cat $plik | grep "$szukany | " )"  ]; then 
      # znaleziono więc nie wolno nic robić więc:
     return
   fi
done


sync && system.sh restart
#albo inna akcja do wykonania w przypadku niewykorzystanego tunera
...

 

Ale jednak trzeba uwzględnic fakt, że plik oscam.lcd.tmp aktualizuje się co kilkadziesiąt sekund więc jeżeli chcemy np. restartować tuner to trzeba by najpierw zliczyć kolejne po sobie stany niewykorzystania tunera przynajmniej przez pół mnuty (zeleżnie od parametru lcd_writeinterval z pliku konfiguracyjnego oscam.conf

 

Jak to zrobić...?

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...