BBMagic Home – Programowanie w czasie bezwzględnym


Możliwość tworzenia harmonogramów dziennych czy tygodniowych to funkcjonalność zawarta chyba we wszystkich istniejących systemach inteligentnego domu.

Co to jest programowanie w czasie bezwzględnym

Sterowanie w czasie bezwzględnym oznacza zaprogramowanie zdarzenia, które będzie wykonywane cyklicznie w zdefiniowanej chwili.

Oto przykłady:

  • włączanie lampki nocnej na 100% jasności codziennie o 19.00, przyciemnianie do 50% jasności o 21.05 i całkowite wyłączanie o 22.45,
  • tylko w weekendy włączanie nastrojowego, dekoracyjnego oświetlenia o 18.00 i wyłączanie o 22.00,
  • włączanie na noc lampy przeciw komarom codziennie o 21.00 i wyłączanie codziennie o 5.00,
  • włączenie pompki podlewania w poniedziałek, środę i piątek o 21.15 i wyłączenie o 21.30,
  • zmienianie np. co 30 minut barwy nastrojowego, wielokolorowego oświetlenia RGB LED w godzinach od 19.30 do 21.30,

Zaprogramowanie sterowania w czasie bezwzględnym zrealizowano w przykładowym projekcie 'bbmagic_home_scheduler’, który teraz pobierzemy, rozpakujemy i szczegółowo opiszemy.

Pobieramy aplikację BBMagic Home

Aby pobrać i rozpakować projekt BBMagic Home zaloguj się do systemu i wpisz w linii poleceń:

wget http://bbmagic.net/download/proj/bbmagic_home_project.tar.gz
tar -zxvf bbmagic_home_project.tar.gz
cd bbmagic_home_project
cd bbmagic_home_scheduler

bbmagic_home_scheduler pobieranie
Pakiet można pobrać również z działu Download.

Dodajemy aktory do aplikacji BBMagic Home

Zanim możliwe będzie sterowanie aktorami BBMagic (DIMMER, RELAY, PWM) potrzebujemy najpierw dodać je do bazy aktorów aplikacji. W tym celu:
1. Odczytujemy adresy i klucze szyfrujące posiadanych aktorów: uruchom aplikację bbm_scanner_2, włącz zasilanie aktora, wciśnij guzik aż dioda przestannie mrugać i zacznie świecić, skopiuj wyświetlony przez bbm_scanner_2 adres i klucz aktora. (Szczegółowy opis tutaj).
2. Nadajemy nazwę każdemu aktorowi dodając kolejne linie w pliku 'bbmagic_home.c’. Może wyglądać to przykładowo tak:

//-dodaj AKTORY BBMagic do bazy aplikacji
//-------------------------------------------------------------------
//-add BBMagic ACTORs to app database
bbm_relay_add("relay_mosquito", "CB48A52CEA24", "25CE2B0DDCE1A30BF0748C38C64FAC17") ;
bbm_dimmer_add("dimmer_bedlamp", "C22689A7DB4C", "070C20BDC814CB7DDB76FC0121283144") ;
bbm_pwm_add("pwm_LED", "CE72E4C2490A", "2A859007735202117832497DC52A190D") ;

BBMagic RELAY nazwany 'relay_mosquito’ włącza i wyłącza lampę wyłapującą komary. BBMagic DIMMER o nazwie 'dimmer_bedlamp’ kontroluje lampkę nocną przy łóżku, a moduł PWM 'pwm_LED’ steruje nastrojowym, wielokolorowym światłem LED wykonanym według TEJ INSTRUKCJI.
Plik 'bbmagic_home.c’ możemy zamknąć ponieważ nie wymaga on już żadnych dodatkowych zmian. Oczywiście uprzednio zapisujemy jego zawartość.

Programujemy zdarzenia w czasie bezwzględnym

Otwórzmy teraz plik 'scheduled_action.c’ znajdujący się w katalogu o nazwie 'src_actions’ np. tak:

nano ./src_actions/scheduled_action.c

To w tym pliku kodujemy wszystkie działania wykonywane według zaplanowanego harmonogramu.

1. LAMPKA ŁAPIĄCA KOMARZYCE
Zajmijmy się najpierw wszędobylskimi komarzycami, które tylko czekają na to, aż wieczorem przyłożymy głowę do poduszki. Zaprogramujemy aktywność „lampy przeciwkomarowej” w następujący sposób:

if(bbm_time_is_now(MO|TU|WE|TH|FR|SA|SU, 21.00))
    bbm_relay_on("relay_mosquito", REL_CH0) ;
if(bbm_time_is_now(MO|TU|WE|TH|FR|SA|SU, 4.30))
    bbm_relay_off("relay_mosquito", REL_CH0) ;

Codziennie od 21.00 do 4.30 nasz sprzęt obrony przeciwkomarzycowej będzie włączony wykonując swoją dobrą robotę.

2. PRZYŁÓŻKOWA LAMPKA NOCNA
Zaprogramujmy teraz aktywność lampy, która stoi obok łóżka w następujący sposób:

if(bbm_time_is_now(SU|MO|TU|WE|TH, 19.00))
    bbm_dimmer_set("dimmer_bedlamp", 100) ;
if(bbm_time_is_now(SU|MO|TU|WE|TH, 22.00))
    bbm_dimmer_set("dimmer_bedlamp", 50) ;
if(bbm_time_is_now(SU|MO|TU|WE|TH, 22.55))
    bbm_dimmer_set("dimmer_bedlamp", 0) ;

Powyższy kod od niedzieli do czwartku włączy lampę o 19 na pełną moc, o 22 przyciemni żarówkę do połowy maksymalnej jasności, a o 22.55 wyłączy ją całkowicie.
Ponieważ żarówką tej lampy steruje moduł BBMagic DIMMER możemy dowolnie zmieniać natężenie światła w zakresie od 0 do 100%. W lampie zainstalowana powinna być tradycyjna żarówka włóknowa lub diodowa z opcją regulacji jasności.
Co natomiast z piątkiem i sobotą? Dodajmy kolejne linie do pliku 'scheduled_action.c’:

if(bbm_time_is_now(FR|SA, 19.00))
    bbm_dimmer_set("dimmer_bedlamp", 100) ;
if(bbm_time_is_now(FR|SA, 23.00))
    bbm_dimmer_set("dimmer_bedlamp", 50) ;
if(bbm_time_is_now(FR|SA, 23.55))
    bbm_dimmer_set("dimmer_bedlamp", 0) ;

I gotowe. W te dni można później położyć się spać bo w sobotę i niedzielę rankiem łatwiej odespać zarwane godziny :-).
Zamiast angielskich skrótowców dni tygodnia: MO,TU,WE,TH,FR,SA,SU można użyć polskich: PN,WT,SR,CZ,PT,SO,ND – wszystkie zdefiniowane są w pliku: 'bbmagic_lib.h’.

3. NASTROJOWE WIELOKOLOROWE ŚWIATŁO LED
W podobny sposób możemy zaprogramować aktywność modułu BBMagic PWM, który uprzednio nazwaliśmy 'pwm_LED’. Steruje on wielokolorowym źródłem nastrojowego światła. Zróbmy to tak:

if( bbm_time_is_now(FR|SA|SU, 19.00) )
    bbm_pwm_set("pwm_LED", 100, 100, 100) ;
if( bbm_time_is_now(FR|SA|SU, 20.00) )
    bbm_pwm_set("pwm_LED", 70, 90, 80) ;
if( bbm_time_is_now(FR|SA|SU, 21.00) )
    bbm_pwm_set("pwm_LED", 60, 70, 70) ;
if( bbm_time_is_now(FR|SA|SU, 22.00) )
    bbm_pwm_set("pwm_LED", 50, 30, 20) ;
if( bbm_time_is_now(FR|SA|SU, 23.00) )
    bbm_pwm_set("pwm_LED", 0, 0, 0) ;

To światło automatycznie będziemy włączać tylko w piątek, sobotę i niedzielę wieczorem, co godzinę zmieniając barwy i natężenie.
Komenda bbm_pwm_set(„pwm_LED”, 100, 100, 100) włącza wszystkie składowe: czerwoną, zieloną i niebieską na 100% jasności dając w rezultacie kolor biały.
Komenda bbm_pwm_set(„pwm_LED”, 0, 0, 0) jak łatwo zgadnąć wyłącza całkowicie diody.
Pozostałe kombinacje tworzą niesamowitą grę barw, którą każdy może zaprogramować sobie tak, jak tylko podpowie mu wyobraźnia.

Kompilujemy i uruchamiamy zaprogramowane funkcje

Po zapisaniu i zamknięciu pliku 'scheduled_action.c’ jesteśmy gotowi do skompilowania aplikacji. Wpisujemy poecenie make i za sekundę lub dwie wszystko jest gotowe do uruchomienia.
Aby uruchomić naszą aplikację sterującą wystarczy teraz wpisać: sudo ./run_bbm_home.

bbmagic_home_scheduler uruchamianie
I własnie od tej chwili wszystkie akcje będą wykonywane zgodnie z zaprogramowanym scenariuszem.

Tagi , , , , .Dodaj do zakładek Link.

Komentarze są wyłączone.