301

Odp: USB Relay - plugin do Gargoyle

Ok masz racje z czasami tylko jeśli chodzi o nie robienie bałaganu to skrypt zrobić  w /usr/lib/gargoyle/ i jako oddzielny plik czy w samym /usr/lib/gargoyle/usbrelay.sh

w oddzielnym pliku na pewno będzie to mniej zasobożerne, dlatego wolę znać Twoje zdanie

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

302

Odp: USB Relay - plugin do Gargoyle

Też nie IMO. Najprościej po prostu zlecić włączenie, sleep, wyłączenie a całość niech się w tle wykonuje.

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

303 (edytowany przez tyg 2014-03-13 15:25:11)

Odp: USB Relay - plugin do Gargoyle

Witam .
Poniżej skrypty do obsługi kontrolera I2C tiny USB + ekspander PCF8574/PCF8574A.
Za wyborem I2C tiny przemawia fakt prostoty rozbudowy systemu o kolejne wejścia-wyjścia, niski koszt takiego takiego rozwiązania w przypadku dużej ilości linii, obsługa do 128 wejść-wyjść na pojedynczym kontrolerze oraz to, że każda linia może być traktowana zarówno jako wejście jaki i wyjście.
Minusem jest to, że sterowanie jest całkowicie oparte na programie umieszczonym na routerze, czyli np po restarcie zasilania linie nie wrócą do poprzednich stanów bez wykonania odpowiedniego skryptu na routerze, oczywiście o ile stan taki został wcześniej zapisany
Nie ma również sprzętowego wsparcia "chwilówek" tak jak jest to zrealizowane np w powerSwitch-u, czyli np restart linii zasilania samego routera jest utrudniony
Oczywiście są inne ekspandery niż PCF8574/PCF8574A, np 16 bitowe i nic nie stoi na przeszkodzie aby ich używać, ale te są łatwo dostępne, proste w obsłudze i tanie nawet w postaci gotowych modułów

Wersja podstawowa skryptu (jeden PCF8574):
w zmiennej EXP podajemy parametry takie jak szyna i adres ekspandera

#!/bin/sh
EXP="-y 0 0x20"
OUT="0 7" 

# usbrelay.sh polecenie [numer_portu]

# polecenie, pierwszy argument:
# off - wylacza przekaznik
#   usbrelay.sh off 0
# on - wlacza przekaznik
#   usbrelay.sh on 0
# status - podaje status wszystkich przekazników w postaci numer_przekaznika:on lub numer_portu:off, kazdy w osobnej linii
#   usbrelay.sh status
#   0:on
#   1:on
#   2:off
#   3:off
#   4:off
#   5:off
#   6:off
#   7:off

# numer_portu, drugi argument

case "$1" in
        off)
                i2cset $EXP $(($(i2cget $EXP)&~(2**$2)))
                ;;
        on)
                i2cset $EXP $(($(i2cget $EXP)|(2**$2)))
                ;;
        status)
                for i in seq($OUT); do echo $i:$((($(i2cget $EXP)>>i)%2))| sed 's/:1/:on/;s/:0/:off/'; done
                ;;
esac

exit 0

Wersja rozbudowana dwa ekspandery PCF8574 + PCF8574A + pamięć eeprom 24CXX do przechowywania stanu portów
zmienna MEM określa adres pamięci eeprom, EXP... to adresy ekspanderów, FIR... nr do jakiego będzie przypisany w usbrealy pierwszy port ekspandera, NUM... ilość linii ekspandera, skrypt łatwo można zmodyfikować do obsługi kolejnych portów

#!/bin/sh
MEM="-y 0 0x50"

FIR1=0
NUM1=8
EXP1="-y 0 0x20"

FIR2=8
NUM2=8
EXP2="-y 0 0x38"

# usbrelay.sh polecenie [numer_portu]

# polecenie, pierwszy argument:
# off - wylacza przekaznik
#   usbrelay.sh off 0
# on - wlacza przekaznik
#   usbrelay.sh on 0
# status - podaje status wszystkich przekazników w postaci numer_przekaznika:on lub numer_portu:off, kazdy w osobnej linii
#   usbrelay.sh status
#   0:on
#   1:on
#   2:off
#   3:off
#   4:off
#   5:off
#   6:off
#   7:off

# numer_portu, drugi argument

case "$1" in
        off)
                [ $2 -ge $FIR1 ] && [ $2 -lt $(($FIR1+$NUM1)) ] && i2cset $EXP1 $(($(i2cget $EXP1)&~(2**($2-$FIR1)))) && i2cset $MEM 1 $(i2cget $EXP1)
                [ $2 -ge $FIR2 ] && [ $2 -lt $(($FIR2+$NUM2)) ] && i2cset $EXP2 $(($(i2cget $EXP2)&~(2**($2-$FIR2)))) && i2cset $MEM 2 $(i2cget $EXP2)
                ;;
        on)
                [ $2 -ge $FIR1 ] && [ $2 -lt $(($FIR1+$NUM1)) ] && i2cset $EXP1 $(($(i2cget $EXP1)|(2**($2-$FIR1)))) && i2cset $MEM 1 $(i2cget $EXP1)
                [ $2 -ge $FIR2 ] && [ $2 -lt $(($FIR2+$NUM2)) ] && i2cset $EXP2 $(($(i2cget $EXP2)|(2**($2-$FIR2)))) && i2cset $MEM 2 $(i2cget $EXP2)
                ;;
        status)
                (for i in $(seq 0 $(($NUM1-1))); do echo $(($i+$FIR1)):$((($(i2cget $EXP1)>>i)%2))| sed 's/:1/:on/;s/:0/:off/'; done) 2>/dev/null
                (for i in $(seq 0 $(($NUM2-1))); do echo $(($i+$FIR2)):$((($(i2cget $EXP2)>>i)%2))| sed 's/:1/:on/;s/:0/:off/'; done) 2>/dev/null
                ;;
esac

exit 0

warto dodać wpisy np do /etc/rc.local przywracające stan wyjść zapisany w pamięci eeprom przy starcie routera

i2cset -y 0 0x20 $(i2cget -y 0 0x50 1)
i2cset -y 0 0x38 $(i2cget -y 0 0x50 2)

304

Odp: USB Relay - plugin do Gargoyle

Hej Cezary, gratuluję aplikacji bardzo użyteczna. Napisana przez Ciebie apka jest na androida 4.x niestety w moim samsungu mam androida 2..3.6 a mój operator nie przewiduje aktualizacji do wyższej wersji. Czy mógłbyś zmodyfikować aplikacje aby działała także na starszych androidach?
Pozdrawiam

305

Odp: USB Relay - plugin do Gargoyle

W obecnej postaci nie, bo używa komponentów których nie ma w starszej wersji androida.

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

306

Odp: USB Relay - plugin do Gargoyle

@andkow zainstaluj sobie jakiegoś customrom-a.

307

Odp: USB Relay - plugin do Gargoyle

myślałem o tym ale jeszcze kilka miesięcy mam gwarancję na telefon i nie chcę jej stracić.

308

Odp: USB Relay - plugin do Gargoyle

Gdybys musiał oddać na gwarancję to wgrasz soft fabryczny.

309

Odp: USB Relay - plugin do Gargoyle

Cezary, wygląda na to że plugin przestał się instalować w nowym wydaniu Gargoyle sad


root@WD My Net N750:~# opkg update
Downloading package list for attitude_adjustment source...
Package list for attitude_adjustment downloaded successfully.

Downloading package list for tpa source...
Package list for tpa downloaded successfully.

Downloading package list for eko1 source...
Package list for eko1 downloaded successfully.

Downloading package list for gargoylepl_plugins source...
Package list for gargoylepl_plugins downloaded successfully.

Downloading package list for gargoylepl_packages source...
Package list for gargoylepl_packages downloaded successfully.

root@WD My Net N750:~# opkg install plugin-gagroyle-usbrelay
ERROR: No package named plugin-gagroyle-usbrelay found, try updating your package lists
poprzez GUI też nie idzie.

310

Odp: USB Relay - plugin do Gargoyle

Pakiet nazywa się plugin-gargoyle-usbrelay, nie plugin-gagroyle-usbrelay

Z gui się normalnie instaluje.

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

311 (edytowany przez m80 2014-05-04 11:39:38)

Odp: USB Relay - plugin do Gargoyle

Cześć

Mam kontroler AVT mod04, posiada dwa przekaźniki (max 8A, 230V), połączenie USB-serial obsługuje układ FTDI. Poszczególne funkcje (włączenie/wyłączenie/sprawdzenie stanu przekaźnika) realizuje się przez wysłanie do portu /dev/ttyUSB* odpowiednich kodów numerycznych i ewentualne odczytanie kodu zwrotnego. Kody są następujące:

0 - wyłączenie przekaźnika nr 1
1 - włączenie przekaźnika nr 1
2 - odczyt stanu przekaźnika nr 1 (kod zwrotny: 0 - wyłączony, 1 - włączony)
3 - wyłączenie przekaźnika nr 2
4 - włączenie przekaźnika nr 2
5 - odczyt stanu przekaźnika nr 2 (kod zwrotny: 0 - wyłączony, 1 - włączony)

Stworzyłem skrypt avtRelay.sh włączający i wyłączający poszczególne przekaźniki:

#!/bin/sh

PORT=/dev/ttyUSB0

case "$1" in
    off)
        case "$2" in
            1)
                echo "0" > $PORT
                ;;
            2)
                echo "3" > $PORT
                ;;
        esac
        ;;
    on)
        case "$2" in
            1)
                echo "1" > $PORT
                ;;
            2)
                echo "4" > $PORT
                ;;
        esac
        ;;
    status)
        echo "1:off"
        echo "2:off"
        ;;
esac

exit 0

Po drobnej modyfikacji usbrelay.sh przekaźniki są nawet widoczne pod Gargoyle:

case "$1" in
    off)
        avtRelay.sh off $2
        ;;
    on)
        avtRelay.sh on $2
        ;;
    status)
        avtRelay.sh status
        ;;
esac

exit 0

Niestety mam problem z odczytaniem stanu przekaźników (dlatego w avtRelay.sh status przekaźników jest ustawiony na sztywno - oba wyłączone), pod Debianem udało mi się to zrobić za pomocą:

echo "2" > /dev/ttyUSB0 && echo `dd if=/dev/ttyUSB0 count=1`
echo "5" > /dev/ttyUSB0 && echo `dd if=/dev/ttyUSB0 count=1`

... pod Gargulcem niestety to nie działa:( próbowałem też za pomocą microcom'a ale również bez sukcesu.
Czy można odczytać status z portu za pomocą ogólnodostępnych narzędzi w OpenWRT czy trzeba pisać program w C do obsługi tego ustrojstwa.

Pozdrawiam
Michał

312

Odp: USB Relay - plugin do Gargoyle

Niepotrzebnie rozbiłeś to na dwa skrypty, zrób w jednym.

Co zwracane jest na porcie szeregowy jak zrobisz echo "2" > /dev/ttyUSB0 && cat /dev/ttyUSB?

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

313 (edytowany przez m80 2014-04-30 16:05:40)

Odp: USB Relay - plugin do Gargoyle

Ok, zrobię jak będzie działać:)

echo "2" > /dev/ttyUSB0 && cat /dev/ttyUSB0

nic nie zwraca właśnie, muszę przerywać Ctrl-C.

PS. odczyt przez cat nawet pod Debianem nie działał, dlatego drugą część musiałem obsłużyć przez dd

314

Odp: USB Relay - plugin do Gargoyle

echo "2" > /dev/ttyUSB0 && cat /dev/ttyUSB0 oczywiście

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

315 (edytowany przez m80 2014-04-30 16:44:42)

Odp: USB Relay - plugin do Gargoyle

Zapomniałem poprawić w cytacie, było USB0 i nic

PS. Mogę odczytać stan za pomocą dwóch sesji ssh.
W pierwszej "nasłuchuję" poleceniem:

cat /dev/ttyUSB0

jeżeli w drugiej sesji zapytam o stan:

echo "2" > /dev/ttyUSB0
echo "5" > /dev/ttyUSB0
echo "1" > /dev/ttyUSB0 <- włącz przekaźnik nr 1
echo "4" > /dev/ttyUSB0 <- włącz przekaźnik nr 2
echo "2" > /dev/ttyUSB0
echo "5" > /dev/ttyUSB0

to w pierwszej sesji pojawiają się stany przekaźników:

cat /dev/ttyUSB0
0011

316

Odp: USB Relay - plugin do Gargoyle

Jest to zakończone znakiem nowej linii czy nie?

cat /dev/ttyUSB0 > /tmp/plik &
echo "2" > /dev/ttyUSB0
killall cat
cat /tmp/plik

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

317

Odp: USB Relay - plugin do Gargoyle

Cezary napisał/a:

Jest to zakończone znakiem nowej linii czy nie?

Nie

Doszedłem do takiego polecenia:

echo "2" > /dev/ttyUSB0 | cat /dev/ttyUSB0

wyświetla stan ale cat czeka na dalsze dane:/

318 (edytowany przez wabikboy 2014-04-30 18:08:23)

Odp: USB Relay - plugin do Gargoyle

to dodaj na koncu jeszcze killall cat to ubije cat'a

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

319

Odp: USB Relay - plugin do Gargoyle

Nie ubije bo wcześniejszy cat się nie zakończył. W tło to trzeba posłać.

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

320 (edytowany przez m80 2014-05-10 14:36:06)

Odp: USB Relay - plugin do Gargoyle

Uff, uporałem się z tym skryptem, cały dzień zeszło ale działa:)
Do działania wymagany jest pakiet coreutils-stty ponieważ za pomocą stty ustawiane są parametry portu szeregowego oraz czas (w dziesiątych sekundy) jaki skrypt oczekuje na odpowiedź o stan przekaźników.

Instalacja kmod-usb-serial-ftdi oraz coreutils-stty:

opkg update
opkg install kmod-usb-serial-ftdi coreutils-stty

Mając już zainstalowany plugin usbrelay pod Gargoyle'a, skrypt umieszczamy w/zamiast pliku /usr/lib/gargoyle/usbrelay.sh (proszę pamiętać o ustawieniu w skrypcie odpowiedniego portu oraz prawidłowym formacie zakończenia linii)

#!/bin/sh
# 
# Skrypt sterujacy dla AVT mod04 (Gargoyle, OpenWRT)
#
# Wymagania: kmod-usb-serial-ftdi, coreutils-stty, plugin "USB Relay" pod Gargoyle
#
# Sciezka do skryptu: /usr/lib/gargoyle/usbrelay.sh
# 
#
# Kody numeryczne wysylane do portu /dev/ttyUSBx:
#
# 0 - wylaczenie przekaznika nr 1
# 1 - wlaczenie przekaznika nr 1
# 2 - odczyt stanu przekaznika nr 1
# 3 - wylaczenie przekaznika nr 2
# 4 - wlaczenie przekaznika nr 2
# 5 - odczyt stanu przekaznika nr 2
#
# Manualne wlaczenie przekaznika nr 1:
# echo 1 > /dev/ttyUSB0
#
# Manualne wylaczenie przekaznika nr 2:
# echo 3 > /dev/ttyUSB0
#
# Sposob uzycia skryptu:
# Wlaczenie/wylaczenie przekaznika
# usbrelay.sh on/off [nr_przekaznika]
#
# Odczyt stanu przekaznikow:
# usbrelay.sh status

# Port pod ktorym widoczny jest sterownik
PORT=/dev/ttyUSB0

# Szybkosc portu 
SPEED=9600

# Limit czasu (w 1/10 sek.) jaki skrypt czeka na odpowiedz od sterownika 
TIMEOUT=1


case "$1" in
        off)
                case "$2" in
                        1)
                                echo "0" > $PORT
                                ;;
                        2)
                                echo "3" > $PORT
                                ;;
                esac
                ;;
        on)
                case "$2" in
                        1)
                                echo "1" > $PORT
                                ;;
                        2)
                                echo "4" > $PORT
                                ;;
                esac
                ;;
        status)
                stty -F $PORT $SPEED -echo raw min 0 time $TIMEOUT
                echo "1:$(echo "2" > $PORT | cat < $PORT | sed -e 's/1/on/g; s/0/off/g')"
                echo "2:$(echo "5" > $PORT | cat < $PORT | sed -e 's/1/on/g; s/0/off/g')"
                ;;
esac

exit 0

Sugestie i poprawki mile widziane:)

Pozdrawiam
Michał

321

Odp: USB Relay - plugin do Gargoyle

problem z instalacją pluginu.
/etc/config$ opkg install plugin-gargoyle-usbrelay
Preparing to install the following packages, which will require 23805 bytes:
    plugin-gargoyle-usbrelay

Preparing to install package plugin-gargoyle-usbrelay...
    Downloading...
    Downloaded plugin-gargoyle-usbrelay successfully.
    Installing plugin-gargoyle-usbrelay...
ERROR: file '/etc/config/usbrelay'
       from package plugin-gargoyle-usbrelay already exists.

An error occurred during Installation, removing partially installed packages.
uci: Entry not found
uci: Entry not found
uci: Entry not found
Removing package plugin-gargoyle-usbrelay...
Finished removing plugin-gargoyle-usbrelay.

Finished removing partially installed packages.

niestety  nie  widze  go w  panelu   cos  robie nie tak ?


opkg update
opkg install plugin-gargoyle-usbrelay

322

Odp: USB Relay - plugin do Gargoyle

rm /etc/config/usbrelay

Wcześniej już miałeś zainstalowany i został konfig. gpkg się bardzo buntuje jak są pliki o takich samych nazwach jak te w pakietach, patrz na eko.one.pl problemy z gpkg.

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

323

Odp: USB Relay - plugin do Gargoyle

dziekuje  juz  działa

324

Odp: USB Relay - plugin do Gargoyle

Witam wszystkich ,
zainteresowany tematem przekaźnika i checia nauki zakupiłem na allegro taki podobny do tego wynalazek:

http://www.ebay.com/itm/USB-8-RELAY-CAR … 1379094559

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

po podpieciu do 1043nd i doinstalowaniu  kmod-usb-serial-ftdi

i wydanu polecenie usbrelay status

dostaje takie info

usbrelay status
Could not find USB device "usbRelay" with vid=0x16c0 pid=0x5df

co gdzie pozmieniac?? moze doinstalowac ?

325

Odp: USB Relay - plugin do Gargoyle

Masz mieć w openwrt program do obsługi tego przekaźnika. Masz taki? (bo to nie jest żaden standard i każda płyta inaczej jest obsługiwana).

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