Temat: Przycisk QSS do WiFi i do QoS

Witam,

Chciałbym prosić o pomoc w zaprogramowaniu przycisku QSS dostępnego w routerze WR1043ND v1 do dwóch funkcji.
Tak to sobie wymyśliłem:
- WiFi on/off przy pojedyńczym naciśnięciu przycisku
- QoS on/off przy dłuższym przytrzymaniu przycisku.
- Dodatkowo lampka QSS migająca (timer: 1000/1000) gdy QoS jest on i dioda wyłączona jest QoS jest off.

Czytałem trochę na ten temat jednak nie za bardzo wiem jak się za to zabrać. Prosiłbym o jakieś instrukcje i porady. Ewentualnie jeżeli ktoś ma podobne ustawienie to myślę, że by to wiele pomogło. Najważniejsza kwestia to jak oddzielić krótkie naciśnięcie od długiego.

2

Odp: Przycisk QSS do WiFi i do QoS

Zależy od wydania OpenWrt. Wszystko jest opisane: http://eko.one.pl/?p=openwrt-button nawet masz przykłady w zależności od czasu.

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

3

Odp: Przycisk QSS do WiFi i do QoS

Możesz mi pomóc z napisaniem tego skryptu do tego przycisku ?
Mam już coś takiego. Większość wziąłem z tego co już było w systemie. Teraz nie za bardzo wiem jak to zrobić z tym QoS. Używam SQM. Trzeba mi coś co sprawdzi czy sqm jest włączone, jeżeli jest to go wyłączy i zgasi diodę QSS. To samo w drugą stronę.

Tak czy siak skrypt nie działa.

#!/bin/sh

if [ "${ACTION}" = "released" ] || exit 0
then

. /lib/functions.sh

logger "$BUTTON pressed for $SEEN seconds"

    local rfkill_state=0

    wifi_rfkill_set() {
        uci set wireless.$1.disabled=$rfkill_state
    }

    wifi_rfkill_check() {
        local disabled
        config_get disabled $1 disabled
        [ "$disabled" = "1" ] || rfkill_state=1
    }

    config_load wireless
    case "${TYPE}" in
    "switch")
        [ "${ACTION}" = "released" ] && rfkill_state=1
        ;;
    *)
        config_foreach wifi_rfkill_check wifi-device
        ;;
    esac
    config_foreach wifi_rfkill_set wifi-device
    uci commit wireless
    wifi up
    
    
elif [ "$SEEN" -gt 3 ]
then
    /etc/init.d/sqm start
    echo 1 > /sys/class/leds/tl-wr1043nd:green:qss/brightness

4

Odp: Przycisk QSS do WiFi i do QoS

if [ "${ACTION}" = "released" ] || exit 0
then


to jest źle, to || exit jest błędem. Nie masz też zakończenia ifa. Uruchomiłeś to w ogóle? Bo na razie masz masę błędów składniowych.

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

5

Odp: Przycisk QSS do WiFi i do QoS

Nie udało mi się tego uruchomić niestety. Wiem, że moja umiejętność programowania jest wręcz żadna.
Środką część wziąłem z rfkill. Reszta to imporwizacja. Nie mam też pojęcia co z tym SQM zrobić. Jeżeli mógłbyś to jakoś ogarnąć to będę wdzięczny.

6

Odp: Przycisk QSS do WiFi i do QoS

fi na końcu, || exit 0 usuń. Jak będę pisał za was skrypty to się niczego nie nauczycie.

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

7

Odp: Przycisk QSS do WiFi i do QoS

To chociaż mi napisz ten fragment z SQM bo nie mam zielonego pojęcia jak to ugryźć a co dopiero napisać.

8

Odp: Przycisk QSS do WiFi i do QoS

echo "timer" > /sys/class/leds/tl-wr1043nd:green:qss/trigger
     echo "3000" > /sys/class/leds/tl-wr1043nd:green:qss/delay_on
     echo "1000" > /sys/class/leds/tl-wr1043nd:green:qss/delay_off
    /etc/init.d/sqm start

i

  /etc/init.d/sqm stop
  echo "none" > /sys/class/leds/tl-wr1043nd:green:qss/trigger
  echo 0 > /sys/class/leds/tl-wr1043nd:green:qss/brightness

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

9

Odp: Przycisk QSS do WiFi i do QoS

a to nie będzie się robiło tak, że się będzie włączało i od razu wyłączało ?

10

Odp: Przycisk QSS do WiFi i do QoS

To sobie to oprogramuj.  W pierwszym poście nic nie napisałeś że przycisk ma włączyć lub wyłączyć qos.

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

11

Odp: Przycisk QSS do WiFi i do QoS

To żeby było jasne, potrzebuje zrobić tak, żeby przy 1 naciśnięciu włączało lub wyłączało się wifi
Po przytrzymaniu przycisku QSS/WPS przez np: 3 sek. SQM się włączy albo wyłączy w zależności od tego czy już pracuje czy nie i tu jest problem, bo to co ty napisałeś to już sobie mniej więcej rozkminiłem, troszkę inaczej ale jednak. Nie wiem natomiast jak zrobić, żeby skrypt sprawdził czy sqm działa i zachował się odpowiednio: włączając lub go wyłączając.

12

Odp: Przycisk QSS do WiFi i do QoS

Mała podpowiedź: sprawdź co jest (i czego nie ma) w /var/run/SQM.

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

13

Odp: Przycisk QSS do WiFi i do QoS

Poprawiłem ten skypt i teoretycznie działa. Możesz zerknąć i ewentualnie jakieś poprawki dorzucić ? Druga sprawa jak by to wyglądało gdybym zamiast SQM używał wshapera ? Które z nich jest twoim zdaniem lepsze, bo mam taki problem. Gdy obciążam łączę po WiFi (głównie torrent) to na kompie podłączonym przez ethernet internetu prawie nie ma. Poniżej 1Mb z 60Mb ogółem. Osobiście tak sobie wyobrażam QoS. Gdy jestem sam to mam dla siebie całe łącze, gdy jestem ja + np: brat to się łączę dzieli według jakiegoś algorytmu czy coś tak żeby brat mógł faktycznie tego internetu korzystać.

#!/bin/sh

[ "${ACTION}" = "released" ] 

. /lib/functions.sh

logger "$BUTTON pressed for $SEEN seconds"

if [ "$SEEN" -lt 1 ]
then
    local rfkill_state=0

    wifi_rfkill_set() {
        uci set wireless.$1.disabled=$rfkill_state
    }

    wifi_rfkill_check() {
        local disabled
        config_get disabled $1 disabled
        [ "$disabled" = "1" ] || rfkill_state=1
    }

    config_load wireless
    case "${TYPE}" in
    "switch")
        [ "${ACTION}" = "released" ] && rfkill_state=1
        ;;
    *)
        config_foreach wifi_rfkill_check wifi-device
        ;;
    esac
    config_foreach wifi_rfkill_set wifi-device
    uci commit wireless
    wifi up
    
    
elif [ "$SEEN" -gt 2 ]
then
    if [ ! -f /var/run/SQM/SQM_active_on_* ]
    then
        /etc/init.d/sqm start
        echo "timer" > /sys/class/leds/tl-wr1043nd:green:qss/trigger
             echo "1000" > /sys/class/leds/tl-wr1043nd:green:qss/delay_on
             echo "1000" > /sys/class/leds/tl-wr1043nd:green:qss/delay_off
        logger 'SQM started after pressing WPS button'
                
    else
        /etc/init.d/sqm stop
          echo "none" > /sys/class/leds/tl-wr1043nd:green:qss/trigger
          echo 0 > /sys/class/leds/tl-wr1043nd:green:qss/brightness
        logger 'SQM stopped after pressing WPS button'
    fi
fi

14

Odp: Przycisk QSS do WiFi i do QoS

To musisz sobie taki qos napisać. Domyślne tylko nadają priorytet kolejkom.

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

15

Odp: Przycisk QSS do WiFi i do QoS

Mój skrypt niestety nie działa poprawnie. Wykonuje obie funkcje nie ważne ile razy przytrzymam czy nacisnę przycisk. Jakieś wskazówki

16

Odp: Przycisk QSS do WiFi i do QoS

W logach zapisuje się info o naciśnięciu przyciski i ile sekund to trwało? Akacja ma być na puszczenie przyciski, więc dopracuj tą pierwszą linię sprawdzającą warunek.

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