Temat: USB Relay - plugin do Gargoyle
Plugin pozwalający na sterowanie przekaźnikami na USB - wiele takich projektów można znaleźć na allegro, można zbudować samodzielnie, nawet tu na forum były już takie opisy publikowane. Ponieważ sposobów sterowania jest bardzo dużo, plugin został napisany przeze mnie w dość uniwersalny sposób, pozwalając na szybką modyfikację skryptów wykonawczych.
Sam plugin jest dość prosty:
Kolory ikon symbolizują stan przekaźnika; kliknięcie ikony powoduje przełączenie stanu na przeciwny (włącz/wyłącz). Ilość ikon jest automatycznie dostosowana do możliwości modułu, czyli informacji które zwraca skrypt wykonawczy.
Przekaźnikami steruje skrypt /usr/lib/gargoyle/usbrelay.sh - należy pamiętać że skrypt trzeba dostosować samodzielnie do posiadanego modułu przekaźników!
Domyślna konfiguracja w pakiecie została zrobiona dla projektu powerSwitch. Nie ma problemu z dostosowaniem go do innych używanych przekaźników - trzeba odpowiednio zmodyfikować wspomniany skrypt.
Do skryptu jest przekazywany jeden lub dwa parametry: akcja (off/on/status) i ew numer przekaźnika. Skrypt musi zaś na podstawie tych parametrów umieć wykonać trzy akcje:
- off ma za zadanie wyłączyć przekaźnik - dla powerSwitcha jest wywoływane powerSwitch off <nr>
- on ma za zadanie włączyć przekaźnik - dla powerSwitcha jest wywoływane powerSwitch on <nr>
- status ma za zadanie zebrać i wyświetlić status dostępnych przełączników, musi to być zwracane w formacie <nr>:<status>, dla każdego przekaźnika w oddzielnej linii, czyli np.
0:on
1:off
2:off
3:on
(cztery przekaźniki o numerach od 0 do 3, pierwszy i ostatni jest aktualnie włączony).
Jeżeli ktoś ma powerSwitcha to nic nie musi zmieniać. Jeżeli ktoś używa np. projektu usbRelay od Arteq (jeden przekaźnik) cały skrypt wygląda następująco:
#!/bin/sh
case "$1" in
off)
usbrelay off
;;
on)
usbrelay on
;;
status)
usbrelay status | awk '/Relay is/ {printf "1:%s\n", $3}'
;;
esac
exit 0
Polecenia zawarte w tym skrypcie (powerSwitch, usbrelay) muszą być na ścieżce (/usr/bin czy /bin) lub należy podać pełną ścieżkę do tego pliku. Uwaga na wielkość liter. Skrypty są dość czytelne, nie powinno być problemu z dostosowaniem ich do własnych potrzeb. Nie ma problemu żeby sterować tym przekaźnikami podpiętymi pod GPIO - całe moduły do arduino można kupić na ebay czy allegro. Przykładowy skrypt do sterownia 3 liniami gpio:
#!/bin/sh
GPIO1="/sys/class/gpio/gpio2/value"
GPIO2="/sys/class/gpio/gpio18/value"
GPIO3="/sys/class/gpio/gpio7/value"
case "$1" in
off)
case $2 in
1)
echo "0" > $GPIO1
;;
2)
echo "0" > $GPIO2
;;
3)
echo "0" > $GPIO3
;;
esac
;;
on)
case $2 in
1)
echo "1" > $GPIO1
;;
2)
echo "1" > $GPIO2
;;
3)
echo "1" > $GPIO3
;;
esac
;;
status)
echo -n "1:"
[ $(cat $GPIO1) -eq "0" ] && echo "off" || echo "on"
echo -n "2:"
[ $(cat $GPIO2) -eq "0" ] && echo "off" || echo "on"
echo -n "3:"
[ $(cat $GPIO3) -eq "0" ] && echo "off" || echo "on"
;;
esac
exit 0
W katalogu http://dl.eko.one.pl/projekty/usbrelay/RelayBoard/ można znaleźć gotowy skrypt do obsługi RelayBoard.
W katalogu http://dl.eko.one.pl/projekty/usbrelay/gpio/ można znaleźć gotowy skrypt do obsługi przekaźników przez GPIO.
W katalogu http://dl.eko.one.pl/projekty/usbrelay/usbRelay/ można znaleźć gotowy skrypt do obsługi usbRelay.
Może istnieć konieczność poprawy danych w skryptach (wykorzystywane GPIO czy port USB).
Scheduler został wykonany na podstawie pluginu wifi-schedule (a właściwie to plugin wifi-schedule został lekko przerobiony - nawet nazwy zmiennych zostały takie same, dodałem tylko niewielkie zmiany związane z zamianą up/down na on/off i dodaniem dodatkowych elementów). Obsługa tego jest identyczna, ze wszystkimi jego zaletami i wadami.
Aby dostać się do harmonogramu danego przekaźnika należy kliknąć na jego nazwę w głównym oknie. W harmonogramie można także zmienić opis przekaźnika, który w bieżącej wersji pluginu trzymany jest w /etc/config/usbrelay (można je także zmieniać "ręcznie" wykorzystując uci).
Cały pakiet jest dostępny w moim repo dla routerów z wielojęzycznym interfejsem.
Ponieważ czasami używanie strony www jest męczące to napisałem także małą aplikację na androida (4.x, aplikacja nie działa w nowszych wersjach androida) pozwalającą na sterowanie tym projektem:
Aplikację można pobierać z http://dl.eko.one.pl/projekty/usbrelay/ . Nie znajdziecie jej w sklepie Google Play, nie jest ona podpisana cyfrowo, na telefonie trzeba zezwolić na instalację pakietów z nieznanych źródeł.
Jest prosta aż do bólu - przy pierwszym uruchomieniu trzeba wejść w ustawienia i ustawić host/login/hasło/port do routera, bo aplikacja fizycznie wywołuje ssh i polecenie /usr/lib/gargoyle/usbrelay.sh do sterowania przekaźnikami. Więc jeżeli ktoś odblokuje sobie port ssh na wanie to może także nimi sterować przez internet.
Aktualizacja: w dalszej części wątku (http://eko.one.pl/forum/viewtopic.php?p … 70#p102270) można znaleźć przerobiony skrypt obsługujący tzw. "chwilówki".