English version
Łączymy wszystko razem:


W poprzednich "odcinkach" [connect41, connect 42 - lekko nie na czasie (Napisałem nowy firmware (źródło, defines) do karty - 50odczytów/sek, połączenie 9600bps), UWAGA: program w formie *.hex jest dla rezonatora kwarcowego 11.059MHz], zobaczyliśmy jak podłączyć kartę przekaźników na USB do routera.

[cóż, do PC z Linuxem(!) "po prostu" ją wtykamy.... i działa].
Pojawia się jako (kolejny) port /dev/ttyUSB*.

Simple connection

Schemat prostgo podłączenia

Czas na to, by jakoś nią sterować, ponieważ "zwykły człowiek" raczej NIE będzie wpisywał enigmatycznych:
"telnet xxx.x.x.t 3000
a b E D" itp...


I tu z pomocą przychodzi (zarówno na PC jak i na routerach - OpenWRT) program anyRemote [http://anyremote.sourceforge.net] autorstwa Mikhail'a Fedotov'a (anyremote@gmail.ru).

Dzieli się on na 2 części: "serwer" pracuje na PC (routerze) i "klient" na TELEFONIE z Javą / Androidem (o niebo lepsza opcja... :).

Kwestia bezpieczeństwa jest nadal ważna: protokół TELNET/(raw) wykorzystywany do udostępnienia sterowania kartą do sieci NIE jest bezpieczny, NIE ma też ŻADNEJ autoryzacji. (od wersji 6.2 anyRemote jest/ma być trochę bezpieczeństwa - dostęp tylko z określonych adresów IP).
Ale w *dobrze skonfigurowanej* sieci LAN (routery, switche, jeżeli mamy zarządzane), można przyjąć, że tylko "My" mamy dostęp do routera eksponującego kartę przekaźników do sieci.


Jeżeli chcemy mieć BEZPIECZNIE (ale niestety powoli... ca 1-1.5sek vs 0.1sek) to ZAMIAST uruchamiać program ser2net pozostaniemy przy możliwości wydawania zdalnych komend przez ssh.
Skrypty PRÓBUJĄ bezpośrednio, a jak się nie udaje, to po ssh.


  "SKŁADNIKI":

- anyRemote (4.7.1 na OpenWRT), (4.7.1 lub 6.0 / 6.1(git) na PC),
- BlueZ (-libs, -utils) i ich dependencje,
- skrypty,
- bash (jeżeli karta przekaźników jest podłączona zdalnie),

Do szybkiego (w sieci LAN, powinno to być "z palca", < 0.1sek) połączenia karty przekaźników z resztą instalacji, potrzebujemy wymienić na niej firmware (lub zamówić z już zaprogramowaną "szybką" wersją). Nie jest to trudne, ale wymaga posiadania programatora ISP dla procesorów AVR, choćby AVR910 ("kit" ok 65zł + przesyłka, był w Nowym(lub Nord) Elektroniku). Link do firmware u góry strony.

INSTALACJA:

na PC z Linuxem instalujemy pakiet anyRemote* (np 4.7.1) w sposób właściwy dla DANEJ dystrybucji.
Szukamy pliku anyRemote.cfg (~/.anyremote/anyRemote.cfg - PC, /etc/anyremote.cfg - OpenWRT) i edytujemy go do swoich potrzeb.

JA będę opisywał, jak skonfigurować sterowanie anyRemote na dosyć zaawansowanym (ale działającym u mnie) przykładzie:
- anyRemote na "serwerze" TP-LINK MR-3220 (router xDSL, z USB),
- karta podpięta do drugiego routera (Edimax BR-6104KP, xDSL, 2x USB 1.1) poprzez WiFi(WDS) i AP Edimax 7106Wg.
- sterowanie z telefonu z Androidem (SE Xperia X8).


Advanced installation schematic

Rozbudowany schemat instalacji


Program anyRemote uruchamiamy na PC jako "zwykły użytkownik" NIE root. Na *routerze*, ponieważ i tak nie ma tam raczej innych użytkowników, jako root.

INSTALACJA (router):

- dla routerów z OpenWRT, dla których (8M+ flasha) UDA SIĘ zainstalować anyRemote jako pakiet (np Asus WL-500GP), oraz ew (zdalny port USB) BASH, instalujemy je w taki sposób.

- dla MR-3220 przygotowałem firmware, pakiety, konfig, "ręcznie wydziergany" OpenWRT trunk 33310. Zmieścił się "na styk" z radiem internetowym w komplecie (wget + madplay + usbaudio) - nie ma WPA/WPA2, NIE ma *_tables, więc jako router niezbyt się nadaje. Jako AP prawie (modulo brak silnego szyfrowania).

Musimy połączenie ssh router "serwer" do routera "karta USB" skonfigurować z kluczami (BEZ haseł). Tak samo (+ sudo) jeżeli chcemy móc zdalnie (z telefonu) wyłączyć (lub włączyć, wymagana karta sieciowa/płyta z WOL i WOL na routerze - sorry "u mnie" się nie mieści) nasz PC. root(router) -> użytkownik który może wykonać shutdown (u mnie nut, bo i tak używam softu nut do UPS'a).


INSTALACJA (PC/router, skrypty):
 
- ściągamy i instalujemy w /usr/bin skrypty lights_*.sh. Dopasowując do SWOJEGO systemu (adresy, nazwy portów!). Jeżeli karta przekaźników będzie podpięta BEZPOŚREDNIO, to na "serwerze" instalujemy skrypty z Edimaxa. Jeżeli zdalnie, to z TP-LINK'a. (a na Edimaxie / innym routerze skrypty z Edimax'a).
Dla nieobeznanych z VI: możemy skrypty poddać edycji "naszym dowolnym edytorem" (byle mógł zapisać jako czysty tekst) na PC, a następnie skopiować je na router przez scp - po zmienieniu hasła root'a i skonfigurowaniu kluczy - robi się to przyjemnie.

ATTACH SCRIPTS lights*.sh from Edimax and TP-LINK!
"Edimax" scripts - control over LOCALLY connected USB relay card:

"TP-LINK" scripts - control over REMOTELY (using ser2net on remote device) connected relay card:


INSTALACJA (anyRemote.cfg):

- ściągamy i instalujemy plik anyRemote.cfg (lub edimax-usb.cfg, na PC). Dopasowujemy do SWOJEJ konfiguracji (zdalna/lokalna karta przekaźników).

INSTALACJA (ikony):

ponieważ (mi) nie działało ładowanie ikon na Androida, obejściem jest skopiowanie plików
lights_bulb_*.png do katalogu /sdcard/Android/data/anyremote.client.android/files/ na telefonie z Androidem.
[ma być poprawione w wersji 6.1, ale nie jest to priorytetem]

Modyfikujemy, o ile trzeba, skrypty startowe (/etc/init.d/anyremote na OpenWRT, /etc/rc.d/init.d/anyremote w Fedorze, itp),
aby startował z właściwą wersją pliku *.cfg, oraz "słuchał" na LAN lub Bluetooth. W szczególności dla "anyremote stop" zamieniamy service_stop na killall anyremote.

UWAGA - na MR3220 NIE używamy opcji -log : w wersji 4.7.1 i 6.0 loguje ZAWSZE do ~/.anyremote/anyRemote.log, które jest na (zapchanym do granic możliwości) flashu! - może uda mi się zrobić "4.7.2" z logowaniem do /tmp).


UWAGA: ponieważ na TP-LINKu nie działa mi prawidłowo Bluetooth (razem z radiem, dla mnie ważniejszym), powyższe dotyczy połączenia przez WiFi(!!). "Podejrzanym" jest tu tani hub USB, ale do sprawdzenia.


UŻYTKOWANIE:

Uruchamiamy anyRemote na telefonie, wpisujemy (przez "Podaj IP") adres naszego "serwera", + port :5000, i jeżeli uruchomiliśmy już serwer, powinna pokazać się klawiaturka z lampkami, w takich stanach w jakich są w chwili połączenia.
"Wciśnięcie" lampki powoduje zmianę jej stanu na przeciwny.
Ikonka ze strzałkami - restart radia (u mnie zaprogramowane na sztywno na RMF'80s).
Ikonka w dół: shutdown komputera (o ile zmieniliśmy adres w skrypcie i skonfigurowaliśmy [wspomniane] ssh z routera na PC).
Ikonka "stop" - rozłączenie z "serwerem".


Podsumowanie linków / plików
Firmware karty
demo.hex
Źródło firmware karty
demo.c
firmware do TP-LINKa
TP-LINK
plik .config do firware TP-LINKa
config
paczka ze zmienionymi klikami dla TP-LINKa
files.tgz
firmware do Edimax'a
EDIMAX
plik .config do firmware Edimax'a
config
paczka ze zmienionymi klikami dla Edimax'a
files.tgz
oprogramowanie Android'a
anyRemote client

E-mail

e-maile:
- oprogramowanie anyRemote (klient+serwer) - anyremote@gmail.ru (Mikhail Fedotov),
- inne zagadnienia - laurentp@wp.pl (Wawrzyniec Piotrzkowski).