Linux podstawy
Raspberry Pi
DevKit8000
Get the Flash Player to see this player.
IQhome |
Nasz inteligentny dom, to projekt w którym wykorzystuje sporo informacji o stronach internetowych, przekazywaniu danych i programowaniu. Dlatego postanowiłem opisać najważniejsze elementy tego domu. Projekt zaczynamy od instalacji systemu operacyjnego i instalacji serwera www. Ja wykorzystałem tu Apacha2 + php5 + mod_cgi. Do tego zainstalowałem Joomle 3.3, żeby się nie męczyć z ładnym wyglądem strony. Nie będę się dużo rozpisywał na ten temat, bo w necie macie mnóstwo poradników jak to zainstalować. Polecam strony: http://rembiejewski.pl/blog/raspberry-pi-serwer-www-apache-php-mysql/ http://httpd.apache.org/docs/current/howto/cgi.html W dalszej części będę pokazywał najważniejsze elementy projektu. Tak jak to pokazałem na filmie. 1) Zacznijmy od strony HTML i PHP (kamery). Aby uruchomić ten moduł wystarczy zainstalować mjpg_streamer. To jak to zrobić opisałem tu: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=165&Itemid=189 Najważniejszym elementem jest użycie na naszej stronie znacznika HTML, który to będzie pobierał naszego streama w formie obrazku. Aby tego dokonać wystarczy wpisać znacznik img, gdzie 192.168.1.101 to adres naszego Raspberry Pi: Oczywiście takie rozwiązanie jest mało eleganckie, ponieważ jak zmieni się adres naszego Raspberry, to stream przestanie działać. Dlatego wygodnie jest użyć języka PHP, do przechwycenia IP serwera i wstawienie tego IP w znacznik IMG. Całość będzie wyglądała tak: 2) Strona Termometr.php Pobieranie z czujnika DS18B20 ogranicza się do uruchomienia na stałe czujnika i magistrali 1-wire, odnalezienie adresu termometru, wysłanie danych do przeglądarki, obrobienie ich i odświeżanie co jakiś czas. Ja jeszcze dodałem zapisywanie tych danych w pliku dane.txt w pamięci ram, która jest zamontowana w katalogu ramdisk. To jak zamontować 1-wire i ramdisk macie w artykułach: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=170&Itemid=194 http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=214&Itemid=242 Cały program to mieszanka php, JS i HTML. Najważniejszym elementem kodu jest pobieranie danych z czujnika za pomocą php: Następnie w JS trzeba wywoływać stronę co sekundę (lub odświeżyć jakiś element na stronie), aby aktualizowany był zegar, a przy okazji zapisywane dane. Opisane tego można znaleźć na blogu: http://blog.codebusters.pl/pl/odswiez-zawartosc-strony-automatycznie-co-okreslony-czas-jquery Oczywiście jest to metoda czołgowa i przy skomplikowanych projektach będziecie mieli dużo problemów, dlatego lepiej wykorzystać technologie AJAX i asynchronicznie pobierać coś z servera. Super opis tego jak to zrobić macie na stronie: http://software.dictum.com.pl/blog/php/ajax-czasowe-odswiezanie-elementu-na-stronie/ W tym projekcie jest to zrobione metodą czołgową, ale uczniom pokazuje AJAX'a. 3) Strona z PiFace oswietlenie.html Ta strona jest skryptem JS, który wybiera odpowiednie elementy za pomocą checkbox i w zależności od tego co było ustawione wysyła do programu napisanego w C. Ten program odbiera te dane i przykazuje dalej na diody itp. Wszystkie strony można pobrać tu: 4) Tera czas na Kody w C. Programy w C podzielone są na 2 typy, odbiorczy (pobiera dane z formularz jako skrypt CGI ) i wykonywalny (odpalony z uprawnieniami administratora, który ma dostęp do wszystkiego i jest gdzieś na komputerze z dala od katalogu cgi-bin). a) Pierwszy to program który wywoływany jest bezpośrednio przez stronę www jako skrypt CGI. Ten program możecie pobrać tu Jest to program, który przechwytuje formularz z HTML i zapisuje go do pamięci ram urządzenia w postaci pliku TXT. Oczywiście można pobawić się strumieniami danych i przekazywać te dane strumieniami, ale jest to projekt dla uczniów w technikum, więc obsługa plików jest wystarczająca i pasująca do Linuxa, gdzie wszystko jest plikiem. b) Drugi program odpalony jest z uprawnieniami administratora i może wszystko. Ten program pobiera dane z pliku TXT, uruchamia magistrale SPI i wysyła dane na poszczególne diody i przekaźniki. W ten sposób mamy rozdzielność skryptów CGI i programów wykonywalnych. Program który pobiera dane z pliku txt i zapala diody wygląda następująco: Jak widać w programie jest pętla nieskończona, która w kółko pobiera dane z pliku. Jest to mało eleganckie, ale na poziomie technikum wystarczające. Dodanie zdarzeń strasznie zaciemniłoby kod. Program jest modyfikacją programu na PiFace Digital ze strony: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=235&Itemid=263 Są to najważniejsze elementy tego domu. Aby to wszystko było w pełni zautomatyzowane, należałoby uruchomić to wszystko przy starcie systemu. Czyli wystarczy dodać odpowiednie komendy w pliku /etc/rc.local |