Ads_700x200

tme

czwartek, 18 lipca 2013

AVR do kontroli komputerów w SIECI

Witam,

Chciałbym przedstawić wam mój kolejny projekt, nad którym prace rozpocząłem wprawdzie już dosyć dawno temu, i szczerze powiedziawszy, do dzisiaj nie ukończyłem na tip-top, ale działa i to świetnie a wkrótce mam nadzieję go rewitalizować. Jako, że korzystam z oprogramowania Teamviewer do zdalnej kontroli komputerów w zarówno w swojej firmowej sieci jak i w sieciach klientów to pojawiła się ostatnio potrzeba, której nie oferuje żadne tego typu oprogramowanie. Chodzi o to aby np w nocy gdy nikogo już nie ma w firmie można było zdalnie przez internet po prostu włączyć wybrane komputery albo je powyłączać. O ile z wyłączaniem nie ma wielkiego problemu gdy jest aplikacja typu Teamviewer czy VNC to jednak nie zawsze jest taka sytuacja - za to można zainstalować mały własny programik, pracujący w tray'u czy jako usługa - który będzie umożliwiał zdalne wyłączenie komputera. 



Mam tu na myśli firmy w których na noc nie ma żadnego włączonego komputera i nikt by tego nie chciał z uwagi np na niepotrzebne zjadanie prądu. Dlatego zrobiłem kolejne małe urządzonko na przyjemnym procku AVR typu ATmega88/168 które spokojnie może być włączone do prądu bo w porównaniu do komputera pobiera tyle prądu co kot napłakał ;) więc może czuwać dzień i noc oraz pracować dla firmy i zdalnego serwisu na przykład czy też dla pracowników chcących mieć zdalny dostęp do swojego komputera bo akurat coś się zapomniało z pracy (sam tak często mam - więc to było głównym motorem powstania tegoż) 



Urządzenie składa się w zasadzie tylko z mikrokontrolerka ATmega88, kilku kondensatorów filtrujących zasilanie oraz stabilizatora LDO LM11175, a całość zasilana jest małym zasilaczem o ładowarki do telefonów. Mam takich ładowareczek sporo, są małe, impulsowe i dają super napięcie 6,8V więc idealne oraz maksymalny prądzik 750mA. Dzięki temu stabilizator się w ogóle nie grzeje , wszystko zużywa mało energii i jest super pod tym względem. Nie trzeba było długo przekonywać klienta że może sobie pozwolić na pozostawienie włączonego urządzenia na noc. 

Ok .... do procesora doczepiona jest standardowa atnelowska karta sieciowa. Sprawdza się idealnie: Link 



Dużą zaletą tej karty jest to, że można ją pięknie doczepiać i wyjmować z nieużywanych urządzeń, albo do testów, jednym słowem nigdy się scalak i gniazdko nie zmarnuje, gdy urządzenie ew kończy swój żywot. Procka zawsze można wyjąć z podstawki, kartę sieciową też wyjąć z podstawki i odkręcić wsporniczki więc elementy znowu się wykorzysta. 

jak to działa: 

do szczęścia potrzebny jest jeszcze mały program na PC szumnie zwany mkLANmanager a służy on tylko do wybrania i zapamiętania adresu IP urządzenia albo w sieci lokalnej albo adresu firewalla do firmy. Natomiast w firmie na firewallu zrobione jest tylko przeroutowanie dwóch używanych portów na wewn. numer IP urządzenia. Zatem kontakt przez internet bez najmniejszych problemów. Na razie aplikacja się rodzi i jest jeszcze w opracowaniu ale już fajnie działa i nawet na tym etapie bardzo się przydaje bo już potrafi pięknie WŁĄCZAĆ (budzić) komputery za pomocą mechanizmu WAKE ON LAN. Działa to IDEALNIE



Kontakt z urządzeniem odbywa się za pomocą komunikacji po UDP zatem może do niego zgłaszać się wielu klientów praktycznie naraz to nie jest wszędobylskie popularne ostatnio jak "boczek w masarni" rozwiązanie w którym stawia się jakiś serwer HTTP na AVR'ku (troszkę to bez sensu). 

Tutaj po UDP szybkość i niezawodność działania jest rewelacyjna nie mówiąc o tym, że zwykle już w niektórych przypadkach działa na tym po kilka nawet kilkanaście osób włączając swoje komputery w miarę potrzeb. Nigdy się nie zacięło, nigdy nie zawiodło - chociaż na razie krótko jeszcze działa. 

Włączenie komputera to zatem wysłanie tzw MAGIC PACKET'u ;) więc nie potrzeba się w ogóle wpinać w elektronikę czy słicze komputera. 

WYŁĄCZANIE - odbywa się na dwa sposoby: 

1. za pomocą aplikacji Teamviewer lub VNC - po prostu user sam zamyka kompa 
2. albo za pomocą tego samego programiku na PC - tyle że na swoim komputerze też ma ode mnie małą aplikacyjkę, maleńką - która tylko nasłuchuje na odpowiednim porcie w sieci w protokole UDP czy URZĄDZENIE nie wysyła rozkazu wyłączenia komputera. Można więc powiedzieć, że urządzenie pełni rolę pewnego rodzaju proxy serwerka dla wydawanych z zewnątrz poleceń. 

Na razie komunikacja nie jest szyfrowana bo nie ma takich potrzeb. Ale oczywiście jest planowana - to zresztą już tylko kosmetyka



program do procka napisany jest oczywiście w języku C, natomiast program na PC oczywiście w Delphi. 

----------------------------------------------------------------------- 

Dodaję nowe zrzuty ekranu z programu do obsługi i jednocześnie widać teraz już sporo więcej co było pierwotnie planowane jeśli chodzi o wdrożenie różnych funkcjonalności w tym urządzeniu. WOL - to był początek. Nie chciałem pisać na początku o kolejnych zanim nie zacząłem testować już konkretnych kolejnych funkcjonalności. 

1. sterowanie przekaźnikami - możliwość definiowania nazw i ilości podłączanych przekaźników do urządzenia 

2. włączanie (WOL) komputera ale także wyłączanie oraz sprawdzanie statusu czy jest włączony ! 

3. sterowanie urządzeń przez podczerwień na dwa sposoby: 

a. za pomocą znanych i wbudowanych w urządzenie standardów jak: RC5, SONY itd 

b. najważniejsza chyba funkcjonalność nad jaką jeszcze pracuję: IR OVER ETHERNET 

chyba nie muszę tłumaczyć do czego służy ta ostatnia opcja ????? służy do bezpośredniego przekazywania kodów dowolnego pilota podczerwieni do innego miejsca na ziemi poprzez sieć ethernet czyli taka jakby teleportacja podczerwieni (sorry za uproszczenie) .... wstępnie zaczyna mi to już działać dlatego pozwoliłem sobie o tym napisać już. 





;)

10 komentarzy:

  1. Świetne i użyteczne :) mam tylko drobne pytanko czy można dodać jakiś uśmieszek gifa albo coś za słowo :wink: bo trochę przeszkadza w czytaniu :)

    OdpowiedzUsuń
    Odpowiedzi
    1. eeeeś ;) przepraszam - oczywiście już poprawiłem. Masz rację, że to przeszkadza a że tekst kopiowałem z innego artykułu swojego to niestety wpadły mi te kocie winki ... i zapomniałem ich usunąć przed publikacją. Dzięki.

      Usuń
  2. alternatywne rozwiązanie to http://pl.wikipedia.org/wiki/Wake_on_LAN

    OdpowiedzUsuń
    Odpowiedzi
    1. WOL to ja mogę sobie wykonać i z procka AVR ;) .... a ty weź i spróbuj sobie bez procka włączyć/wyłączyć jakieś urządzenie za pomocą przekaźnika. Albo jakimś pilotem radiowym ...

      To jest alternatywny i tani sposób bo nie musi być komp włączony i nie muszę się bawić w przeprogramowywanie routerów, a nawet gdybym chciał do routera dodawać elektronikę żeby sterować przekaźnikiem czy przekaźnikami to dla mnie mniejszy problem jest - aby postawić to na małym 8-bitowcu....

      dla którego WOL - jest tylko JEDNĄ z wielu opcji jakie posiada.

      Reasumując pewnie nie do końca albo to przeczytałeś albo zrozumiałeś odnośnie przynajmniej elektronicznej części tego projektu.

      Usuń
    2. Projekt fajny jako doskonalenie sztuki programowania. Ale ja robię to inaczej. W Routerze, który i tak działa 24 godziny na dobę, przekierowuję port UDP 9 na adres xxx.xxx.xxx.255 w sieci wewnętrznej (xxx zależą od adresu sieci i maski). Instaluję jakiś darmowy programik do WOL i tyle. Dla wygody ustawiam sobie jeszcze jakiś serwis dynDNS i działa. Dlatego jak już się bawić w takie zabawki to koniecznie z przekaźnikiem, bo magiczny pakiet WOL nie zawsze działa. Mam taki jeden oporny komputer. 20 razy zadziała a 1 raz nie (NIC wbudowany w płytę główną). Oczywiście wtedy kiedy jest bardzo potrzebny. U mnie pomaga odłączenie na chwilę zasilania.
      I dalej już przy okazji...
      Jak ktoś ma hyzia na punkcie oszczędzania energii elektrycznej to rozwiązanie z przekaźnikiem jest idealne (a z programatorem byłoby perfekcyjne). Przetestowałem u siebie kilkanaście zasilaczy ATX od podłych za około 100 zł do trochę lepszych za około 400 zł. Kiedy komputer jest wyłączony to niektóre pobierają 8 W a inne nawet 13 W. Część zasilaczy miała certyfikat 80+. Taki przekaźnik zatem może oszczędzić ładnych pare KWh jeśli nie zapomnimy go użyć ;) U mnie w pracy komputery pracują jakieś 10-11h 5 dni w tygodniu. Przez pozostałą część czasu są "wyłączone" i pobierają około 13 W. Jest to prawie 170 Wh/dzien roboczy/komputer jak nie działa. Komputerów mam 10. Gdyby zrobić takie urządzenie z programatorem, który by z automatu wyłączał zasilanie w godzinach nocnych, to można by oszczędzić sporo energii. U mnie konkretnie 80 kWh na rok. Wyłączają jeszcze pozostałem sprzęty jak switche, kuchenkę mikrofalową, drukarki i skaner, aktywne głośniki komputerowe, itp. oszczędzamy kolejne kW. Dla wygody jednak marnuje się zwykle dużo energii.
      Ale jest całkiem możliwe, że się mylę bo nie nauczyłem się podstaw matematyki i fizyki.
      Pozdrawiam
      PS. Fajny blog ;)

      Usuń
    3. No ja wspominałem na początku, że jakieś podstawowe funkcjonalności tego projektu można i niektórzy robią sobie na routerach... więc się nie dziwię, ze wolisz i robisz tak jak piszesz skoro nie masz większych potrzeb.

      Ja mam większe, procesor u mnie realizuje jeszcze wiele innych funkcjonalności, których na routerze albo ciężko byłoby wdrożyć albo w ogóle byłoby to niemożliwe.

      Jeśli zaś chodzi o zasilanie to do procka nie trzeba żadnego zasilacza ATX ;) wystarczy maleńka wręcz ładowareczka i już - to wsio.

      Usuń
    4. Koledze chodzi zapewne o zasilacze ATX komputerów, które ciągle pobierają prąd niezależnie czy komputer jest włączony, czy wyłączony.
      Dodatkowy moduł z przekaźnikami wł/wył całkowicie zasilanie urządzeń było by dodatkowym atutem.

      Usuń
  3. hmm... pomysł fajny, ale wydaje mi się, że szybciej zrobiłoby się to przy użyciu raspberry, nie wiem czy nawet nie taniej.

    OdpowiedzUsuń
    Odpowiedzi
    1. Też myślę i zgadzam się z tobą, że ci się wydaje ;)

      A zrobić to można na MILION sposobów tak gwoli ścisłości - tylko jest jeden mały haczyk ;) wiesz jaki ?

      ... no trzeba to zrobić a nie tylko mówić że się coś wydaje, wtedy można dyskutować ok ?

      Bo zwróć uwagę, że ja tu się z nikim nie ścigam i nie mówię że to jedyne rozwiązanie na świecie.

      Usuń
  4. Zdaje się iż najnowsza wersja Team Viewera obsługuje WakeOnLan

    OdpowiedzUsuń