Dowolny czas długiego przyciśnięcia

1. Wstęp

 

Korzystając ze możliwości pisania skryptów w systemie Deimic możemy tworzyć akcje o dowolnej konfiguracji. Poniżej pokażemy jak skonfigurować przycisk, który przełącza oświetlenie w zależności od długości przytrzymania.

Nasz skrypt najpierw sprawdzi, czy którakolwiek lampa jest włączona i przełączy się w tryb włączania, bądź wyłączania. Następnie sprawdzi jak długo użytkownik przytrzymuje klawisz i po 2 sekundach zapali lampę nr 1, jeśli użytkownik w dalszym ciągu będzie trzymać przycisk to po kolejnej sekundzie zapali lampę nr 2. Następnie znów sprawdzi, czy użytkownik dalej przytrzymuje przycisk i zapali lampę nr 3, jeśli będziemy go trzymać kolejną sekundę.

2. Pierwszym krokiem jest połączenie się z systemem Deimic korzystając z zaawansowanej wersji konfiguratora.

3. Aby mieć możliwość wykrycia musimy nasz przycisk przełączyć w tryb przycisku klasycznego.

4. Następnie przechodzimy do konfiguracji akcji tego przycisku. Możemy to zrobić klikając prawym przyciskiem na odpowiednim numerze wejścia w menu monitor.

5. W szóstej zakładce konfigurujemy akcję. Wybieramy “Typ wciśnięcia” jako “włączenie”, aby akcja wykonała się na wciśnięcie przycisku. Następnie ustawiamy akcje:

var value = Math.randInt(1, 999999999);
set_global(12, value);
var on = 1;

if(get_output(1 ,7) != 0 || get_output(1, 8) != 0 || get_output(1, 13) != 0)
    on = 0;

msleep(2000);
if(get_global(12) != value)
    return;
if(on == 1)
    set_output_on(1, 7);
else
    set_output_off(1, 7);

msleep(1000);
if(get_global(12) != value)
    return;
if(on == 1)
    set_output_on(1, 8);
else
    set_output_off(1, 8);

msleep(1000);
if(get_global(12) != value)
    return;
if(on == 1)
    set_output_on(1, 13);
else
    set_output_off(1, 13);

Na początku ustawiamy naszą zmienną globalną na losową liczbę, pomaga to nam wykryć puszczenie przycisku.

Zmienna “on” wybiera za nas rodzaj akcji, jeśli którakolwiek lampa była już włączona to będziemy je wyłączać:

var on = 1; 
if(get_output(1 ,7) != 0 || get_output(1, 8) != 0 || get_output(1, 13) != 0) 
    on = 0;

Następnie mamy 3 bloki, które się powtarzają, każdy z takich bloków ma za zadanie poczekać ustalony czas, sprawdzić, czy stan naszej zmiennej globalnie się nie zmienił(zmiana tego parametru oznacza, że przycisk został puszczony), a następnie odpowiednie ustawienie stanu oświetlenia:

msleep(2000); if(get_global(12) != value) return; if(on == 1) set_output_on(1, 7); else set_output_off(1, 7);


Edytując nasz skrypt pod własny system należy zmienić zmienną globalną, tutaj użyta został numer 12. Należy wybrać taki numer zmiennej, który nie został użyty w żadnym innym skrypcie. Oczywiste jest, że musimy wybrać nasze oświetlenie, tutaj wybrano (1, 7), (1, 8) oraz (1, 13). Ostatnią rzeczą do zmiany są czasu tutaj msleep(2000), msleep(1000) oraz msleep(1000). Czasy wybieramy według własnego uznania.

 

6. Ostatnim krokiem jest dodanie skryptu na 7 zakładce. W tym miejscu musimy ustalić “typ wciśnięcia” na “wyłączenie” oraz wpisać skrypt pozwalający wykrycie puszczenia przycisku:

set_global(12, 0);

Tutaj należy pamiętać, aby użyć tą samą zmienną globalną co w zakładce nr 6.