1 (edytowany przez jzef 2016-12-02 15:41:02)

Temat: Pilot i czujnik USB-IR od karty PCI SkyStar2

Posiadam taki zestaw:
http://savepic.net/8636732m.jpg
Pilot działa jako HID więc zainstalowałem pakiety kmod-usb-hid i triggerhappy
Następnie sprawdziłem nazwy przycisków za pomocą polecenia:

thd --dump /dev/input/event*

W /etc/triggerhappy/triggers.d/example.conf wpisałem tak:

KEY_1   1       /tmp/key1.sh

a plik key1.sh wygląda tak:

echo 1 > /sys/class/leds/HW553:blue:adsl/brightness

Jeszcze tylko:

chmod +x /tmp/key1.sh
/etc/init.d/triggerhappy enable
/etc/init.d/triggerhappy start

i działa - mogę włączać niebieską diodę LED ADSL wciskając przycisk 1 na pilocie.
Jak powinien wyglądać skrypt aby włączać i wyłączać diodę tym samym przyciskiem?

2

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

#!/bin/sh
LED=/sys/class/leds/HW553:blue:adsl/brightness
C=$(cat $LED)
if [ "$C" = "1" ]; then
 echo 0 > $LED
else
 echo 1 > $LED
fi
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez jzef 2016-12-02 16:29:10)

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Dzięki Cezary, działa luks! smile
Teraz mam w bardzo prosty sposób kilkadziesiąt nowych przycisków w routerze cool

Myślę iż dioda to dobry pomysł jako sposób informowania użytkownika, że wciśnięto jakiś przycisk. W przykładzie z diodą to tylko test przycisku pilota ale w praktyce lepszym pomysłem jest zapalenie diody na chwilę albo do momentu zwolnienia przycisku w trakcie wykonywania zadanej czynności. Powiedzmy, że przyciskiem 2 chcę wykonywać polecenie logread i aby w czasie wciskania zapaliła się na chwilę dioda aby było wiadomo iż przycisk został wciśnięty. Zdaje się iż w triggerhappy obsługiwane są trzy typy zdarzeń:

1 (pressed), 0 (released) or 2 (held)

Jak powinien wyglądać wtedy taki skrypt?

4

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

No to na 1 ją zapal, na 0 ją zgaś.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Zrobiłem dwa nowe skrypty:

1on.sh

#!/bin/sh
echo 1 > /sys/class/leds/HW553:blue:adsl/brightness
logread > /tmp/logread

1off.sh

#!/bin/sh
echo 0 > /sys/class/leds/HW553:blue:adsl/brightness

/etc/triggerhappy/triggers.d/example.conf

KEY_1   1       /tmp/1on.sh
KEY_1   0       /tmp/1off.sh

I działa ale dioda zostaje zapalona lub zgaszona na stałe. Jak usunę polecenie:
logread > /tmp/logread
to działa jak trzeba i wciśnięcie przycisku 1 zapala diodę tylko na chwilę.

6

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

#!/bin/sh
echo 1 > /sys/class/leds/HW553:blue:adsl/brightness
(logread > /tmp/logread) &

?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez jzef 2016-12-02 20:24:40)

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Dobra już sam poprawiłem skrypt 1on.sh. Trzeba dodać operator logiczny && między poleceniami a nie dawać następne polecenie w nowej linii:

#!/bin/sh
echo 1 > /sys/class/leds/HW553:blue:adsl/brightness && logread > /tmp/logread

Jeśli zastosujemy polecenia włączania i wyłączania diody w oddzielnych skryptach to przy szybkim wciskaniu przycisków na pilocie czasami dioda pozostaje zapalona.

Dlatego lepszym rozwiązaniem jest bezpośrednie polecenie włączania i wyłączania diody LED oraz stosowanie operatora && dla polecenia w pliku konfiguracyjnym triggerhappy np.:

KEY_0 1 echo 1 > /sys/class/leds/HW553:blue:adsl/brightness && logread > /tmp/logread
KEY_0 0 echo 0 > /sys/class/leds/HW553:blue:adsl/brightness

Poniżej plik konfiguracyjny triggerhappy dla każdego przycisku pilota po wciśnięciu którego czerwona dioda POWER zapala się tylko na chwilę (przyciski POWER i v nie działają albo nie są w trybie HID):

# This is an example configuration for the triggerhappy daemon (thd)
# please note that every file to be processed must end in ".conf"
#
# To view a list of supported event codes, use "thd --listevents" or
# "thd --dump /dev/input/event*"
#
# Format:
# <eventcode> <value> <command>
#
# values for key events are 1 (pressed), 0 (released) or 2 (held)
#
## control an mpd instance
# KEY_NEXTSONG        1    /usr/bin/mpc next
# KEY_PREVSONG        1    /usr/bin/mpc prev
#
KEY_0 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_0 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_1 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_1 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_2 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_2 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_3 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_3 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_4 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_4 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_5 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_5 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_6 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_6 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_7 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_7 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_8 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_8 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_9 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_9 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_M 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_M 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_V 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_V 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_S 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_S 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_R 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_R 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_I 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_I 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_E 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_E 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_T 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_T 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_P 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_P 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F2 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F2 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F5 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F5 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F6 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F6 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F7 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F7 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F8 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F8 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_F9 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_F9 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_UP 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_UP 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_DOWN 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_DOWN 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_LEFT 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_LEFT 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_RIGHT 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_RIGHT 0 echo 0 > /sys/class/leds/HW553:red:power/brightness
#
KEY_ENTER 1 echo 1 > /sys/class/leds/HW553:red:power/brightness
KEY_ENTER 0 echo 0 > /sys/class/leds/HW553:red:power/brightness

8

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Staram się znaleźć ciekawe lub jakiekolwiek zastosowania przycisków. Jednym z nich jest np. budzenie komputera za pomocą WOL (etherwake). Wiem iż dwa przyciski na routerze - RESET i WIFI są skonfigurowane domyślnie w /etc/rc.button/ - skrypty reset i rfkill.
Pytanie jest takie: Czy mogę wykorzystać te skrypty w triggerhappy i przypisać do przycisków pilota HID tak aby działały także przyciski na routerze, czy muszę napisać oddzielne skrypty do tego celu?

9

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Możesz, po prostu umieść taką samą zawartość pod nazwą przycisku. Lub zrób linka do skryptu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Przypisałem skrypt do klawisza E na pilocie ale nic nie działa sad

KEY_E 1 echo 1 > /sys/class/leds/HW553:red:power/brightness && /etc/rc.button/rfkill

11

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Standardowy skrypt sprawdza jeszcze kilka rzeczy - spójrz do niego i zobacz co trzeba przekazać (ACTION, TYPE)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Wiem tylko tyle iż te przyciski domyślnie nie działają za pomocą triggerhappy tylko jakoś inaczej chyba kernel je obsługuje. Mam skopiować skrypt rfkill do nowej lokalizacji i wstawić za ${ACTION} nazwę klawisza KEY_E - a co wstawić za ${TYPE} ?

13

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Nie. ACTION to słowo pressed/released TYPE w standardowym skrypcie to "switch" lub inne. Przecież ma to w skrypcie napisane.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

14

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Na przykładzie skryptu który podałeś dla diody zrobiłem taki skrypt dla Wifi ale coś nie działa:

#!/bin/sh
SW=$(uci get wireless.@wifi-device[0].disabled)
C=$(cat $SW)
if [ "$C" = "1" ]; then
 uci set wireless.@wifi-device[0].disabled=0
else
 uci set wireless.@wifi-device[0].disabled=1
fi

15

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

disabled może nie istnieć. Więc uci -q get wireless.@wifi-device[0].disabled i później wifi wywołaj.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

16 (edytowany przez jzef 2016-12-03 08:42:24)

Odp: Pilot i czujnik USB-IR od karty PCI SkyStar2

Wszystko to na nic.

Metoda prób i błędów jest jednak lepsza:
Po pierwsze - należy użyć wartości wifi-iface a nie wifi-device
Po drugie - należy usunąć linię C=$(cat $SW)
Po trzecie - należy dodać polecenia uci commit wireless i wifi używając operatora &&

Ostatecznie skrypt przełączający Wifi wygląda tak:

#!/bin/sh
SW=$(uci get wireless.@wifi-iface[0].disabled)
if [ "$SW" = "1" ]; then
 uci set wireless.@wifi-iface[0].disabled=0 && uci commit wireless && wifi
else
 uci set wireless.@wifi-iface[0].disabled=1 && uci commit wireless && wifi
fi

i podłączamy go w triggerhappy do przycisku pilota:

KEY_E 1 echo 1 > /sys/class/leds/HW553:red:power/brightness && /sbin/wifi.sh
KEY_E 0 echo 0 > /sys/class/leds/HW553:red:power/brightness

A restart routera wystarczy tak:

KEY_F 1 echo 1 > /sys/class/leds/HW553:red:power/brightness && reboot
KEY_F 0 echo 0 > /sys/class/leds/HW553:red:power/brightness