Strona zgodnie z Polityką plików cookies wykorzystuje pojedynczy plik cookie do poprawnego działania licznika odwiedzin.
Możesz określić warunki przechowywania lub dostępu do plików cookies w ustawieniach Twojej przeglądarki.

 Centrum Usług Sieciowych 
 
Komputerowy system sterowania urządzeniami
 
 
Ostatnia aktualizacja: 04.08.2015
Wstęp
Sprzęt
Oprogramowanie
Instalacja
AP i DHCP
ProFTPd
Firewall
Apache z PHP
MySQL
Dźwięk
Obsługa LPT
Moduł 230V
LPT przez WWW
Cron
Muzyka  NEW
Budzik WWW
Termometr
Automatyzacja
Kontrola dostępu
Co dalej?
Interfejs odtwarzający muzykę

Po długich zmaganiach interfejs jest gotowy. Źródła udostępnię w postaci plików .tgz, żeby nie zapychać strony. Archiwa .tgz najlepiej rozpakować poleceniem

tar -zxvf plik.tgz

Na początek cele:

- utworzenie użytkownika "muzyka"
- napisanie skryptu, który zajmie się odtwarzaniem playlist
- stworzenie interfejsu www, który korzystając ze skryptu będzie odtwarzał playlisty
- stworzenie interfejsu do regulacji głośności

Poruszanie się po danym utworze nie było możliwe we wcześniejszych wersjach myplay, ale w końcu się udało. Mamy właściwie pełną funkcjonalność. Sterowanie telefonem komórkowym przez WiFi będzie bardzo efektowne =). Lecimy:

Dodanie użytkownika - żadna filozofia:

useradd -m -s /bin/bash -g root muzyka
passwd muzyka

Logujemy się jako użytkownik muzyka i tworzymy w katalogu domowym (/home/muzyka) katalog mp3. Po wylogowaniu, będąc już root'em usuwamy dla porządku inne pliki z /home/muzyka.

Wszystkie playlisty będą przechowywane w bazie danych na serwerze MySQL. Musimy utworzyć odpowiednią bazę. Logujemy się do MySQL'a:

mysql -u root -p

Po podaniu hasła wykonujemy następującą sekwencję:

CREATE DATABASE `myplay` CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'muzyka'@'localhost' IDENTIFIED BY 'muzykahaslo';
GRANT ALL ON `myplay`.* TO 'muzyka'@'localhost';

Skrypt myplay znajdujący się w archiwum myplay.tgz umieszczamy w katalogu /bin. W skrypcie znajdują się polecenia "lpt setbit 0" i "lpt clrbit 0" odpowiedzialne za sterowanie zasilaniem głośników. W razie potrzeby wartość należy zmienić. Teraz możemy już wrzucić muzykę do katalogu mp3 użytkownika muzyka. Najlepiej zrobić to przez FTP, wówczas pliki będą miały odpowiednie prawa dostępu. Należy zwrócić uwagę by nazwy plików lub katalogów nie zawierały podwójnych spacji. Następnym krokiem jest uzupełnienie bazy danych:

myplay make

Polecenie sczytuje zawartość katalogu /home/muzyka/mp3 na obecność plików .mp3 i dodaje znalezione pliki do bazy danych. Jeśli istnieją w bazie jakieś playlisty, zostaną one przeczesane na obecność martwych wpisów. Polecenia myplay make używamy ZAWSZE po wprowadzeniu zmian (dodaniu, usunięciu lub przemieszczeniu plików). Po dodaniu plików do bazy możemy utworzyć playlistę. Pełna edycja playlist będzie dostępna przez WWW. Tu możemy jedynie wygenerować playlistę z zawartością danego katalogu, np:

myplay make [nazwa] /home/muzyka/mp3/katalog

Teraz najsmaczniejsze mięsko, odtwarzanie. Aby odtworzyć playlistę piszemy:

myplay list [nazwa] [opcja] >/dev/null 2>&1 &

W pole "[opcja]" możemy wpisać "once" (odtworzenie playlisty tylko raz), "rand" (odtwarzanie utworów losowo), lub nie wpisywać nic, wówczas playlista będzie odtwarzana w pętli. ">/dev/null 2>&1" powoduje, że na ekranie nie pojawią się żadne komunikaty. Znak "&" na końcu oznacza uruchomienie procesu w tle. Podczas odtwarzania możemy przeskoczyć do innego utworu wpisując:

myplay jump [numer_utworu_na_playliście]

lub skoczyć w określone miejsce utworu:

myplay seek [skok]  NEW

Tu parametr "[skok]" to liczba od 0 do 100 stanowiąca wartość procentową, np.

myplay seek 50

spowoduje skok do połowy aktualnego utworu. Zatrzymanie odtwarzania playlisty nastąpi po wykonaniu polecenia:

myplay stop

Dodatkowo w trakcie odtwarzania mamy do dyspozycji plik /tmp/myplay/myplay, w którym znajdują się następujące informacje:

- nazwa playlisty
- opcja odtwarzania (once, rand lub none)
- łączna ilość utworów na liście
- numer aktualnie odtwarzanego utworu
- nazwa utworu
- całkowita ilość ramek w danym utworze potrzebna dla instrukcji "seek"

Nasz skrypt będzie docelowo wykorzystywany przez użytkownika apache, więc do pliku /etc/sudoers dodajemy dla porządku linijki "apache Slack=/bin/chown" i "apache Slack=/bin/myplay", co umożliwi działanie interfejsowi WWW.

W sekcji dotyczącej Cron'a opisałem prosty budzik. Teraz można go wykonać prościej. Zamiast tworzyć skrypt /bin/budzik możemy stworzyć playlistę o nazwie "budzik", a w pliku konfiguracyjnym zamiast "sudo /bin/budzik >/dev/null" możemy wpisać "sudo myplay list budzik once>/dev/null 2>&1 &".

Muzyka w przeglądarce

Gotowy interfejs w PHP znajduje się w archiwum player.tgz. Nie zaimplementowałem jedynie instrukcji "seek", ale myślę, że wstawienie do tabelki 10 przycisków opisanych 0%, 10%, 20%, itd. nie będzie stanowiło problemu. Ekran główny wygląda tak:

image

Refresh to zwyczajne odświeżanie strony. Przydaje się podczas odtwarzania, ponieważ strona nie odświeża się gdy odtwarzany jest następny utwór z playlisty. Create playlist tworzy nową pustą playlistę o podanej nazwie. O tym później. Poniżej znajduje się lista playlist. Z pewnych względów nazwy wolałem zamazać =D. Aby odtworzyć daną playlistę klikamy loop, once lub rand. Delete usuwa playlistę, a Edit umożliwia edycję. Podczas odtwarzania ekran główny wygląda nieco inaczej:

image

Tu mamy nowe opcje: STOP zatrzymuje odtwarzanie i wyłącza głośniki. STOP ON zatrzymuje, ale głośniki pozostawia włączone. DELAYED STOP to przełącznik, dzięki któremu możemy nakazać komputerowi zakończenie odtwarzania playlisty po zakończeniu aktualnego utworu. Poniżej, obok numeru aktualnie odtwarzanego utworu mamy link jump. Powoduje on przesunięcie ekranu do danego utworu. Przydaje się to w przypadku, gdy nasza playlista jest pokaźnych rozmiarów. W tabeli poniżej mamy podświetloną aktualnie odtwarzaną playlistę. Tu opcje Delete i Edit są niedostępne. Na dole mamy kolejną tabelkę. Jest to zawartość odtwarzanej playlisty. Aktualny utwór jest podświetlony. Do innego utworu skaczemy klikając jego numer. Link top powoduje skok na samą górę strony. Jest przydatny z tych samych powodów co jump. Wróćmy do tworzenia playlisty. Klikamy Create playlist i widzimy to:

image

Link Player odeśle nas z powrotem do głównego okna. Po wpisaniu w okienko nazwy i kliknięciu Create również wrócimy do głównego okna ale zostanie utworzona pusta playlista o podanej nazwie. Teraz edycja. Klikamy Edit przy nazwie playlisty:

image

Utwory na playliście możemy przesunąć w górę, w dół lub usunąć. Po wpisaniu frazy w okienko i kliknięciu Add Nasza baza zostanie przeszukana, a efekt będzie wyglądał tak:

image

Link Editor odeśle nas na poprzednią stronę. Poniżej mamy listę pasujących do frazy utworów. Po kliknięciu Add dany plik zostanie dodany na koniec playlisty. Jak widać po numeracji moja baza muzyki jest już dość spora =). Pozostało nam jeszcze jedno okienko. Klikamy Delete przy wybranej playliście i widzimy:

image

Tu chyba nie trzeba tłumaczyć o co chodzi =).

Ufff... przebrnąłem. System działa u mnie już dość długo i nie było żadnych problemów.

Mikser

Sterowanie głośnością przez WWW to też ważna sprawa. Poniżej ekran przedstawiający mikser. Źródło do pobrania tutaj: mixer.tgz.

image

Ten konkretny mikser jest dostosowany do mojego Audigy. Zbudowanie innego na podstawie moich źródeł nie powinno stanowić problemu. Na każdy kanał przypada wartość od 0% do 100% ze skokiem co 5% lub 10%. Ustawienie zatwierdzamy klikając Set. Tone Off/Tone On to także funkcja mojej karty. Nie każda może ją mieć. Lepszego equalizera nie udało mi się zorganizować, ale to w zupełności wystarcza. Store i Restore to odpowiedniki polecenia alsactl opisanego w dziale Dźwięk. Jeśli mikser nie będzie działał należy dodać do /etc/sudoers linijki "apache Slack=/bin/amixer" i "apache Slack=/bin/alsactl".

Na górę
Autor:

image
int

Kontakt:
facebook.com/int84
int281184@gmail.com
GG 5317390

Licznik:
27000

Valid HTML 4.01 Strict Valid CSS

Strona stworzona przy użyciu PageBreeze, Notepad++, oraz pakietu XAMPP dla sustemu Windows, a także aplikacji KSWEB i DroidEdit Pro dla systemu Android.