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?
Automatyzacja sterowania

Nasz komputerek to całkiem niezła maszynka, a na chwilę obecną się nudzi. W tym dziale będę umieszczał pomysły na zajęcie naszej zabawki różnymi pożytecznymi zadaniami.

image
Co z tymi głośnikami?

Jak na razie zasilaniem głośników steruje skrypt myplay. Mój zestaw głośnikowy ma niezależne wejście liniowe, które postanowiłem wykorzystać podłączając do niego komputer stacjonarny,
na którym na co dzień pracuję. Oto przykładowy scenariusz:

Wchodzę do domu, włączam komputer, wchodzę na 10.0.0.1, załączam zasilanie głośników, oglądam film, nagle muszę wyjść, wyłączam komputer, po godzinie przypominam sobie,
że głośników nie wyłączyłem. No nie tak to miało wyglądać!

Postanowiłem napisać skrypt, który sam załączy głośniki jeśli w sieci lokalnej pojawi się mój komputer stacjonarny i wyłączy je gdy zniknie. Z pomocą przyjdzie polecenie ping,
które jednoznacznie odpowie, czy stacjonarka jest włączona czy nie. Schemat skryptu:

- jeśli aktualnie myplay odtwarza muzykę to się nie mieszamy
    (tu sprawdzamy czy istnieje katalog /tmp/myplay)
- jeśli nie, to puszczamy dwa szybkie pingi do stacjonarki,
    jeśli choć jeden wróci zakładamy, że komputer jest włączony
- jeśli komputer jest włączony, a głośniki nie - włączamy je
- jeśli komputer jest wyłączony, a głośniki włączone - wyłączamy
- skrypt ma działać w nieskończonej pętli opóźnionej o 3 sekundy

Do /etc/rc.d/rc.local dopisujemy linijkę "sentry >/dev/null 2>&1 &"
i tworzymy skrypt /bin/sentry, a w nim:

#!/bin/bash

while [[ true ]]; do
    png=`ping 10.0.0.4 -c2 -i0.2 -w1 | grep received |
          cut -d',' -f2 | cut -d' ' -f2`
    lpt=`lpt getbit 0`
    if ! [ -d /tmp/myplay ] && [[ $lpt == "0" ]] && [[ $png > "0" ]]; then
       lptready=0
       while ! [ -f /tmp/lptready ]; do sleep 0.1; done;
       rm -f /tmp/lptready
       lpt setbit 0
       touch /tmp/lptready
    elif ! [ -d /tmp/myplay ] && [[ $lpt == "1" ]] && [[ $png == "0" ]];
    then
       lptready=0
       while ! [ -f /tmp/lptready ]; do sleep 0.1; done;
       rm -f /tmp/lptready
       lpt clrbit 0
       touch /tmp/lptready
    fi
    sleep 3
done

Dzięki temu rozwiązaniu nie muszę się martwić tym, że moje głośniki pożerają niepotrzebnie prąd. Na tej samej zasadzie można sterować zasilaniem monitora, drukarki itp. Dodatkowe funkcjonalności w zakresie automatyzacji nie muszą się znajdować w osobnych plikach.
Można je bez problemu dodawać do pliku /bin/sentry.

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.