1 (edytowany przez arek1194 2020-04-08 21:07:45)

Temat: WDR3600 i sterowanie GPIO

Witam, Gdzieś wyczytałem że WDR3600 są wolne GPIO na płycie w szpilkach JTAG. (ewentualnie GPIO diody usb)  Chciałbym narazie, chociaż jednym sterować - tzn aby zawsze włączało się o danej godzinie i wyłączało też o konkretnej godzinie.
Ze względu że pisanie skryptów, to dla mnie magia (nigdy nie pisałem itp) to pomyślałem, czy nie mógł bym pozmieniać troszkę w plikach konfiguracyjnych (tylko których i co zmienić?)    Aby wykorzystać w gargoyle plugin "Harmonogram WiFi"   tzn WiFi mieć włączone na stałe a przez ten plugin sterować którymś GPIO?

(ps mam też zainstalowany domoticz na tym routerze ale w obecnym projekcie chcę bezpośrednio sterować przekaźnikiem tzn bez esp itp.)

Pomożecie?

2

Odp: WDR3600 i sterowanie GPIO

Podłącz się pod led qss, ona nie jest wykorzystywana. O włączeniu/wyłączeniu diody masz tu: https://eko.one.pl/?p=openwrt-leds#wczeniediody (poćwicz to - tylko pamiętaj że dioda inaczej sie nazywa niż w poradniku!), zaś samo włączenie możesz zrealizować przez crona ( https://eko.one.pl/?p=openwrt-cron ). Harmonogramu wifi nie przerobisz do takich celów, ale możesz zastosować mój usb realy ( skrypty do sterowania przez gpio też były na forum).

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

3 (edytowany przez arek1194 2020-04-08 21:25:09)

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Podłącz się pod led qss, ona nie jest wykorzystywana. O włączeniu/wyłączeniu diody masz tu: https://eko.one.pl/?p=openwrt-leds#wczeniediody (poćwicz to - tylko pamiętaj że dioda inaczej sie nazywa niż w poradniku!), zaś samo włączenie możesz zrealizować przez crona ( https://eko.one.pl/?p=openwrt-cron ). Harmonogramu wifi nie przerobisz do takich celów, ale możesz zastosować mój usb realy ( skrypty do sterowania przez gpio też były na forum).

Okej z diodą z pewnością poćwiczę a powiedz te GPIO w tym JTAG to nie aktualna sprawa ? ( mam u-boot mod)
Pytam o te szpilki bo pewnie łatwiej było by mi się podlutować.. 
bo diody to rozumiem, że centralnie zamiast diody wyprowadzam przewody?    Mogę w ten sposób sterować masą ?

a druga sprawa - to Twój usb relay mógł bym wykorzystać do sterownia tych GPIO przez mnie zdefiniowanych ?   Bo swoje USB wszystkie mam zajęte.
Jeśli tak to domyślam się, najpierw zainstalować i potem zmienić w plikach konfiguracyjnych usb relay - ustawić żądane GPIO. Ale na zrzutach ekranu tego pluginu widziałem fajne sterownie ze strony, ale ustawień czasowych tam chyba niema ?

4 (edytowany przez Cezary 2020-04-08 21:35:28)

Odp: WDR3600 i sterowanie GPIO

Żeby wykorzystać gpio w jtagu musiał byś najpierw zamienić jtag na gpio, a to się wiąże z kompilacją całości.

Sterujesz linią gpio a nie masą. Tak, zamiast diody.

usbrelay to ogólna nazwa pluginu. On wykorzystywał dodatkowy skrypt, a czy skrypt steruje przekaźnikiem na usb czy liniami gpio to już zależy jaki skrypt zrobisz.

Nie wiem jak patrzyłeś, ale ustawienia czasowe tam są: https://eko.one.pl/forum/viewtopic.php?pid=99432#p99432

EDIT: to jest oczywiście plugin do gargoyle jak by coś.

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

5

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Żeby wykorzystać gpio w jtagu musiał byś najpierw zamienić jtag na gpio, a to się wiąże z kompilacją całości.

Sterujesz linią gpio a nie masą. Tak, zamiast diody.

usbrelay to ogólna nazwa pluginu. On wykorzystywał dodatkowy skrypt, a czy skrypt steruje przekaźnikiem na usb czy liniami gpio to już zależy jaki skrypt zrobisz.

Nie wiem jak patrzyłeś, ale ustawienia czasowe tam są: https://eko.one.pl/forum/viewtopic.php?pid=99432#p99432

EDIT: to jest oczywiście plugin do gargoyle jak by coś.


Jeśli chciałbym posłużyć się usb relay to wówczas  po instalacji musiałbym podmienić skrypt  czy też go edytować ?

Dziękuje Ci za cenne wskazówki. Pogłówkuje nad tym i spróbuje w wolnej chwili coś stworzyć..

6

Odp: WDR3600 i sterowanie GPIO

Podmienić skrypt. Nawet przykład masz w linku który podałem...

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

7

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Podmienić skrypt. Nawet przykład masz w linku który podałem...

Więc sterowanie diodą qss poprzez polecenia dają żądany efekt
echo "255" > /sys/class/leds/tp-link:blue:qss/brightness
echo "0" > /sys/class/leds/tp-link:blue:qss/brightness

w temacie  OpenWrt GPIO / Sterowanie przekaźnikiem   są podane linki do możliwych schematów, działa tylko ten http://fabrizio.zellini.org/wp-content/ … fonera.png

Jeśli ja chce sterować masą i wykorzystam to "moc3020m"  to wystarczy że na jego wyjściu podłącze masę, a drugi pin do przekaźnika gdzie podaje na wejsciu masę?  Czy diodę qss mogę zostawić do sygnalizownia stanu. czy lepiej ją wywalić?



No i teraz ten skrypt   (podmieniłem już na ten od sterowania GPIO)   

LED1="/sys/class/gpio/gpio2/value"
LED2="/sys/class/gpio/gpio18/value"
LED3="/sys/class/gpio/gpio7/value"

case "$1" in
    off)
        case $2 in
            1)
            echo "0" > $LED1
            ;;
            2)
            echo "0" > $LED2
            ;;
            3)
            echo "0" > $LED3
            ;;
        esac
        ;;
    on)
        case $2 in
            1)
            echo "1" > $LED1
            ;;
            2)
            echo "1" > $LED2
            ;;
            3)
            echo "1" > $LED3
            ;;
        esac
        ;;
    status)
        echo -n "1:"
        [ $(cat $LED1) -eq "0" ] && echo "off" || echo "on"
        echo -n "2:"
        [ $(cat $LED2) -eq "0" ] && echo "off" || echo "on"
        echo -n "3:"
        [ $(cat $LED3) -eq "0" ] && echo "off" || echo "on"
        ;;
esac

exit 0

Co trzeba zrobić aby sterować tą diodą poprzez usb relay?  wiem żę edytować skrypt, ale nie mam pojęcia jak?

pewnie nie wystarczy w którymś z tych wierszy zmienić nr GPIO odpowiedzialny za sterowanie diodą qss ?

LED1="/sys/class/gpio/gpio2/value"
LED2="/sys/class/gpio/gpio18/value"
LED3="/sys/class/gpio/gpio7/value"

8

Odp: WDR3600 i sterowanie GPIO

Co ty z tym "sterowaniu masą"? Bo stanowczo mylisz pojęcia lub używasz je w nieprawidłowym kontekście. Co właściwie chcesz osiągnąć?

Tak, zamiast /sys/class/gpio/gpioX/value podstaw ścieżkę do diody, /sys/class/leds/wrt160nl:blue:wps/brightness (wg przykładu, ty podstaw swoje).

PS. Za dolara lub mniej kupisz na aliexpresie lub allegro gotowe moduły przekaźników do arduno/esp8266 itp. Nawet nie opłaca ci się tego robić samemu.

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

9

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Co ty z tym "sterowaniu masą"? Bo stanowczo mylisz pojęcia lub używasz je w nieprawidłowym kontekście. Co właściwie chcesz osiągnąć?

Tak, zamiast /sys/class/gpio/gpioX/value podstaw ścieżkę do diody, /sys/class/leds/wrt160nl:blue:wps/brightness (wg przykładu, ty podstaw swoje).

PS. Za dolara lub mniej kupisz na aliexpresie lub allegro gotowe moduły przekaźników do arduno/esp8266 itp. Nawet nie opłaca ci się tego robić samemu.

właśnie chodzi o to że mam teki moduł 4 kanałowy i używam go już w alarmie przy sterowaniu GSM i tam sterowanie wyjściami odbywa się masą i w tym module też mam tak ustawione zworkami - bo ustawienie jest do wszystkich 4 kanałów.  Dlatego o tej masie gadam. To chodziło by pod wspólnym zasilaniem, więc teoretycznie włączając diodę qss podał bym masę przez ten optotriak na wolny kanał tego modułu i go załączył.

a odnośnie usb relay to widzę że są teraz  tam 3 przyciski - szkoda było by dwóch które pozostaną nie wykorzystać w przyszłości.
w WDR3600 prócz tego qss co bys polecił aby wykorzystać do pozostałych dwóch przycisków usb relay?

10

Odp: WDR3600 i sterowanie GPIO

Nie sterowanie masą tylko stanem aktywnym jest stan niski, zrobiłeś skrót myślowy.

Możesz podłączyć się pod te diody które nie są wykorzystywane przez system. qss nie jest, usb jak wywalisz z /etc/config/system definicje. Inne już wymagają rekompilacji systemu.

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

11 (edytowany przez arek1194 2020-04-09 09:30:02)

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Nie sterowanie masą tylko stanem aktywnym jest stan niski, zrobiłeś skrót myślowy.

Możesz podłączyć się pod te diody które nie są wykorzystywane przez system. qss nie jest, usb jak wywalisz z /etc/config/system definicje. Inne już wymagają rekompilacji systemu.

Czyli edytowałem plik system i usunałem całkiem te sekcje

config led 'led_usb1'
    option name 'USB1'
    option sysfs 'tp-link:green:usb1'
    option trigger 'usbdev'
    option interval '50'
    option dev '1-1.1'

config led 'led_usb2'
    option name 'USB2'
    option sysfs 'tp-link:green:usb2'
    option trigger 'usbdev'
    option interval '50'
    option dev '1-1.2'

czy teraz posiłkując się tym

root@Gargoyle:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-31, parent: platform/ath79-gpio, ath79-gpio:
 gpio-11  (                    |tp-link:green:usb1  ) out lo    
 gpio-12  (                    |tp-link:green:usb2  ) out lo    
 gpio-13  (                    |tp-link:blue:wlan2g ) out hi    
 gpio-14  (                    |tp-link:blue:system ) out lo    
 gpio-15  (                    |tp-link:blue:qss    ) out hi    
 gpio-16  (                    |QSS button          ) in  hi    
 gpio-17  (                    |RFKILL switch       ) in  lo    
 gpio-18  (                    |external LNA0       ) out hi    
 gpio-19  (                    |external LNA1       ) out hi    
 gpio-21  (                    |USB2 power          ) out hi    
 gpio-22  (                    |USB1 power          ) out hi    

gpiochip2: GPIOs 473-488, ath9k-phy1:
 gpio-473 (                    |ath9k-phy1          ) out lo    

gpiochip1: GPIOs 489-511, ath9k-phy0:
 gpio-490 (                    |ath9k-phy0          ) in  lo    
root@Gargoyle:~# 

uznaje ze za sterowanie diodami USB są odpowiedzialne GPIO-11 i GPIO-12
i wystarczy że zmienię w tych liniach
LED2="/sys/class/gpio/gpio18/value"   z 18na 11
LED3="/sys/class/gpio/gpio7/value"     z 7  na 12    i powinno grać??

---

mam jeszcze sprawę odnośnie resetu ( czy też wyłączania) urządzenia z extrootem. Czy można by dopisać gdzieś w
config button 'reboot_button'     zeby wykonał taką akcje "sync && poweroff"  np po naciśnięciu w specyficzny sposób przycisku?
bo doszedłem do wniosku  że wcześniejsze problemy z restartami wiązały się z wyłaczaniem urządzenia jak zwykle i wysypywał się system na extroocie. Po przywróceniu obrazu systemu na USB znowu jest stabilny.

12

Odp: WDR3600 i sterowanie GPIO

Nie. Napisałem w poprzednim poście - sterujesz ledami a nie bezpośrednio gpio, więc dajesz odpowiednią ścieżkę do ledów a nie do gpio.

Opis działania przycisków jest na eko.one.pl, możesz sobie podpiąć tam dowolną akcję, także poweroff. Czytaj: https://eko.one.pl/?p=openwrt-button#ba … ripniejsze

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

13 (edytowany przez arek1194 2020-04-09 11:36:32)

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Nie. Napisałem w poprzednim poście - sterujesz ledami a nie bezpośrednio gpio, więc dajesz odpowiednią ścieżkę do ledów a nie do gpio.

Opis działania przycisków jest na eko.one.pl, możesz sobie podpiąć tam dowolną akcję, także poweroff. Czytaj: https://eko.one.pl/?p=openwrt-button#ba … ripniejsze

sterowanie przez usb_relay trzema diodami w routerze działa wyśmienicie.

tylko nie rozumiem za bardzo tych obsługi przycisków

stworzyłem katalog button 
odczytałem po logread nazwę moich przycisków (jeden)

Thu Apr  9 11:59:26 2020 user.notice root: wps
Thu Apr  9 11:59:26 2020 user.notice root: pressed
Thu Apr  9 11:59:26 2020 user.notice root: reboot
Thu Apr  9 11:59:27 2020 user.notice root: wps
Thu Apr  9 11:59:27 2020 user.notice root: released

utworzyłem w katalogu  /etc/hotplug.d/button plik  00-button
i w tym pliku mam tak zrobić ?

    if [ "$ACTION" = "pressed" ]; then
        if [ "$BUTTON" = "wps" ]; then
         sync && poweroff
        fi
    fi

Tylko teraz czy to po  if [ "$BUTTON" =    ma być wps, czy reboot ?    no i jeśli miało by to zadziałać - to jak to się ma z działaniem dotychczasowym, tzn   jak nacisnąłem przycisk to wyłączyłem WiFi ,jak nacisnąłem jeszcze raz to WiFi się włączyło.


Czy wystarczy z uci

    # uci add system button
    # uci set system.@button[-1].button=wps
    # uci set system.@button[-1].action=pressed
    # uci set system.@button[-1].handler='sync && poweroff'
    # uci commit system

14

Odp: WDR3600 i sterowanie GPIO

Ma być nazwa przycisku, wps jeżeli jest wpis.

A wifi ci wyłącza bo pewnie masz /etc/rc.button/wps i tam masz kod od wifi. Więc nie rób tego w /etc/hotplug.d/button/00-button
tylko zobacz co masz w /etc/rc.button/wps, wywal to i wstaw swój kod.

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

15

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Ma być nazwa przycisku, wps jeżeli jest wpis.

A wifi ci wyłącza bo pewnie masz /etc/rc.button/wps i tam masz kod od wifi. Więc nie rób tego w /etc/hotplug.d/button/00-button
tylko zobacz co masz w /etc/rc.button/wps, wywal to i wstaw swój kod.

w /etc/rc.button/wps  mam

#!/bin/sh

. /lib/functions.sh
do_button () {
        local button
        local action
        local handler
        local min
        local max

        config_get button $1 button
        config_get action $1 action
        config_get handler $1 handler
        config_get min $1 min
        config_get max $1 max

        [ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && {
                [ -z "$min" -o -z "$max" ] && eval $handler
                [ -n "$min" -a -n "$max" ] && {
                        [ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
                }
        }
}

config_load system
config_foreach do_button button

ale przeglądając  wcześniej /etc/config   jest tam też coś takiego

config button 'wps_button'
        option button 'wps'
        option action 'released'
        option handler 'logger reboot ; /sbin/wifionoff ;'
        option min '0'
        option max '2'

   
więc zobaczyłem co jest w  /sbin/wifionoff
i tam też jest jakiś skrypt

#!/bin/sh

IFACE=$(uci -q get wireless.@wifi-iface[0])
[ -z $IFACE ] && exit

W=$(iwinfo)
if [ -z "$W" ]; then
        wifi up
else
        wifi down
fi

exit 0

pytałem o ten reset wczęsniej bo w logu też się to pojawiło pomimo że naciskałem jeden przycisk

Thu Apr  9 11:59:26 2020 user.notice root: wps
Thu Apr  9 11:59:26 2020 user.notice root: pressed
Thu Apr  9 11:59:26 2020 user.notice root: reboot
Thu Apr  9 11:59:27 2020 user.notice root: wps
Thu Apr  9 11:59:27 2020 user.notice root: released

Póki co zrobię jak karzesz, wywalam z  /etc/rc.button/wps i wstawię swój   może się uda..

16

Odp: WDR3600 i sterowanie GPIO

Nie, nie wywalaj. Po prostu zmień option handler 'logger reboot ; /sbin/wifionoff ;' na option handler 'sync; poweroff;' i to wszystko...

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

17 (edytowany przez arek1194 2020-04-09 13:18:07)

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Nie, nie wywalaj. Po prostu zmień option handler 'logger reboot ; /sbin/wifionoff ;' na option handler 'sync; poweroff;' i to wszystko...

Więc zmieniłem jak napisałeś ostatecznie , podłączyłem się jeszcze w międzyczasie pod serial aby widzieć co sie dzieje po przyciśnięciu wps

 Port /dev/ttyUSB0, 14:05:36

Wciśnij CTRL-A Z po po+-----------------------------------+
                      |                                   |
[  914.699241] br-lan:|  Nie mogę otworzyć /dev/ttyUSB0!  |
[  914.704870] br-lan:|                                   |
[  914.710357] br-lan:+-----------------------------------+e
[  914.753943] device eth0.1 left promiscuous mode
[  914.759540] device eth0 left promiscuous mode
[  914.765939] br-lan: port 1(eth0.1) entered disabled state
[  914.794823] IPv6: ADDRCONF(NETDEV_UP): eth0.1: link is not ready
[  914.814716] device wlan0 left promiscuous mode
[  914.820387] br-lan: port 3(wlan0) entered disabled state
[  914.876169] device wlan1 left promiscuous mode
[  914.882644] br-lan: port 2(wlan1) entered disabled state
[  915.145911] eth0: link down
[  919.878546] reboot: Power down

Z tym portem tak krzyczał już po fakcie jak wyciągłem wtykę usb

a tym pliku /etc/config/system   mam teraz tak   (mam nadzieję że literówki nie zrobiłem)   bo dygam aby napewno się poprawnie zamknął żeby extroot się nie wysypywał w przyszłości..

config button 'wps_button'
        option button 'wps'
        option action 'released'
        option handler 'sync; poweroff;'
        option min '0'
        option max '2'

i jeszcze apropo wysypywania sie extrota.   Zanim zrobiłem kopię pendraka poprzez DD kilka razy zdaje się wcześniej wyłaczyłem go na szybko   
     bez sync && poweroff    ale na tej kopi wstaje za każdym razem. Więc chyba powinienem być spokojny skoro działa i nic się nie sypie?

18

Odp: WDR3600 i sterowanie GPIO

Sobie jeszcze fsck ustaw na starce we flash jak nie masz.

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

19

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Sobie jeszcze fsck ustaw na starce we flash jak nie masz.

A co to takiego i jak to zrobić?

20

Odp: WDR3600 i sterowanie GPIO

https://eko.one.pl/?p=openwrt-externalr … szewydania opcja  check_fs='1'. Tylko pamiętaj że masz to zrobić we flash (czyli odłącz extroota, uruchom bez pendrive i we flash ustaw) a nie na samym extroocie.

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

21

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

https://eko.one.pl/?p=openwrt-externalr … szewydania opcja  check_fs='1'. Tylko pamiętaj że masz to zrobić we flash (czyli odłącz extroota, uruchom bez pendrive i we flash ustaw) a nie na samym extroocie.

Nie mogę zaskoczyć co miał bym zrobić ?   extroota już mam, w routerze siedzi kostka 16MB.  Czytając to wydaje mi się że to instrukcja jak zrobić extroota..

22

Odp: WDR3600 i sterowanie GPIO

Ustaw w fstabie opcję check_fs na 1. Przecież o to się pytałeś a nie o zrobienie extroota.

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

23 (edytowany przez arek1194 2020-04-09 17:10:23)

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Ustaw w fstabie opcję check_fs na 1. Przecież o to się pytałeś a nie o zrobienie extroota.

Szefie, ale ja tam mam ustawione check_fs na 1.   Nie wpadł bym że o to chodzi. Ja ciągle się uczę i chwała Ci za Twoją Cierpliwość :-)

tak mam bez pendraka włożonego.  Chociaż tu nie grzebałem wcześniej.   (etc/config/fstab)

config global
        option anon_swap '0'
        option anon_mount '0'
        option auto_swap '1'
        option auto_mount '1'
        option delay_root '5'
        option check_fs '1'

config mount
        option target '/overlay'
        option uuid 'b495985b-337a-xxxx-86a8-214259458817'
        option fstype 'ext4'
        option options 'rw,noatime'
        option enabled '1'

24

Odp: WDR3600 i sterowanie GPIO

Więc ok.

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

25

Odp: WDR3600 i sterowanie GPIO

Cezary napisał/a:

Więc ok.


Kupilem dziś kilka szt tych optotriaków MOC3020M   patrzę na ten schemat i znowu nie jestem pewny https://fabrizio.zellini.org/wp-content … fonera.png

do nóżki 2 optotriaka podłączam podłaczam linię GPIO gdzie wcześniej łączyła się z katodą  diody? (bo gpio  steruje tanem niskim?)
są tam jeszcze inne symbole/  jak 7407N czy ic1A ale to mnie nie dotyczy ?

a do nóżki 1 poprzez rezystor 470 ohm podłączam vcc - ale 3.3V ?    też je z diody  (anody) wziąć?