Pisanie skryptów Java Script

Aby nastawić temperaturę przegrzania należy uruchomić konfigurator w trybie Advanced co odbywa się poprzez Menu Start -> Deimic -> Configurator Advanced

Maksymalna długość skryptu Java script to 4095 znaków i nie można tego ograniczenia wydłużyć, jeśli skrypt ma być dłuższy trzeba go podzielić na więcej skryptów.

Testowanie skryptów
Przed zapisaniem skryptu do modułu Deimic One zawsze należy przetestować jego działanie i sprawdzić czy nie zawiera on błędów.

Deklaracja zmiennych
Aby zadeklarować zmienną należy użyć słowa var np. var zmienna deklaruje zmienną zmienna

Ustalenie adresu wyjścia
Aby pobrać adres wyjścia, rolety, dimmera, rekuperatora lub klimakonwektora  należy kliknąć przycisk pokaż nowe urządzenia

Wybrać poziom i pomieszczenie

A następnie wybrać docelowe urządzenie z listy, adres i nr wyjścia zostanie automatycznie dodany do skryptu

Ustalenie adresu wejścia
Aby poznać adres wejścia w module Deimic najpierw należy sprawdzić nr modułu na jakim jest to wejście na liście zaznaczonej jak poniżej np. moduł o nr seryjnym 3a0046 ma adres 41 na magistrali Deimic a moduł 440019 ma adres 11 na magistrali Deimic, przy czym moduł Master ma zawsze adres 1. Następnie należy sprawdzić nr wejścia na danym module do którego podłączone jest interesujące nas wejście, przy czym wejścia numerujemy od 0. Np jeśli chcemy znać adres wejścia i5 na module 3a0046 to będzie to adres 41,5

Funkcje dostępne na module Deimic ONE

Funkcje matematyczne 

  • Math.abs(value) - zwraca wartość absolutną z podanej wartości np. Math.abs(1.5)=1
  • Math.round(value) - zwraca najbliższą liczbę całkowitą z podanej wartości np. Math.round(1.3)=1 Math.round(11.8)=12
  • Math.min(a,b) - zwraca mniejszą wartość z dwóch podanych np. Math.min(1,2)=1
  • Math.max(a,b) - zwraca większą wartość z dwóch podanych np. Math.max(1,2)=2
  • Math.range(value,min,max) - zwraca wartość pomiędzy podanymi wartościami ??
  • Math.sign(value) - zwraca wartość znaku podanej wartości (-1=znak ujemny, 0=zero, 1=znak dodatni) np.  Math.sign(-11.2)=-1 Math.sign(0)=1 Math.sign(2.2)=1
  • Math.floor(value) - zwraca największą liczbę całkowitą mniejszą lub równą podanej wartości np. Math.floor(11.1)=11 Math.floor(2.9)=2
  • Math.ceil(value) - zwraca największą liczbę całkowitą większą lub równą podanej wartości np. Math.ceil(11.1)=12 Math.floor(2.9)=3
  • Math.PI() - zwraca wartość liczby Pi np. Math.PI()=3,141592
  • Math.toDegrees(a) - zwraca wartość kąta na podstawie wartości radianów
  • Math.toRadians(a) - zwraca wartość radianów na podstawie wartości kąta
  • Math.sin(a) - zwraca wartość sinusa podanego kąta w radianach
  • Math.asin(a) - zwraca wartość arcsinusa podanego kąta w radianach
  • Math.cos(a) - zwraca wartość cosinusa podanego kąta w radianach
  • Math.acos(a) - zwraca wartość acosinusa podanego kąta w radianach
  • Math.tan(a) - zwraca wartość tangensa podanego kąta w radianach
  • Math.atan(a) - zwraca wartość atangensa podanego kąta w radianach
  • Math.sinh(a) -  zwraca wartość sinh podanego kąta w radianach
  • Math.asinh(a) - zwraca wartość asinh podanego kąta w radianach
  • Math.cosh(a) - zwraca wartość cosh podanego kąta w radianach
  • Math.acosh(a) - zwraca wartość acosh podanego kąta w radianach
  • Math.tanh(a) - zwraca wartość tanh podanego kąta w radianach
  • Math.atan(a) - zwraca wartość atan podanego kąta w radianach
  • Math.E() - zwraca wartość liczny E np. Math.E()=2,71828182845904
  • Math.log(a) - zwraca wartość logarytmu naturalnego o bazie E z podanej wartości
  • Math.log10(a) - zwraca wartość logarytmu naturalnego o bazie 10 z podanej wartości np. Math.log10(100)=2
  • Math.exp(a) - zwraca wartość liczby e podniesionej do potęgi podanej liczby np Math.exp(3) =20,085536923187668
  • Math.pow(a,b) - zwraca wartość liczby a podniesionej do potęgi b Math.pow(2,3)=8
  • Math.sqr(a) - zwraca kwadrat podanej liczby np. Math.sqr(3)=9
  • Math.sqrt(a) - zwraca pierwiastek kwadratowy z podanej wartości np. Math.sqrt(9)=3
  • Math.rand() - zwraca losową liczbę z zakresu 0 do 2147483647
  • Math.randInt(min, max) - zwraca losową liczbę z zakresu od min do max

Funkcje na zmiennych

  • CharToInt(ch) – zamienia wartość tekstową ch na wartość liczbową całkowitą (chodzi o zmianę kodowania znaków, ta funkcja nie rozpoznaje pisma więc nie rozpozna słowa nine jako 9) np. CharToInt(‚9’)=9
  • String.indexOf(search) - return index of search in a string, returns -1 if not found String.substring(lo,hi) – creates substring lo is start, hi is stop
  • String.charAt(pos) – gets char at pos
  • String.charCodeAt(pos) – gets char code at pos
  • String.fromCharCode(char) – get string from char code
  • String.split(separator) – splits string in array of strings
  • Integer.parseInt(str) – funkcja parsuje podaną wartość string na liczbę integer
  • Integer.valueOf(str) – funkcja zamienia wartość string na integer
  • Array.contains(object) – funkcja sprawdza czy obiekt jest w tablicy
  • Array.remove(object) – funkcja usuwa obiekt z tablicy
  • Array.join(separator) – funkcja tworzy wartość string z tablicy z podanym separatorem

Opóźnienia

  • sleep(seconds) - zatrzymuje wykonywanie programu na określoną ilość sekund
  • msleep(msecons) - zatrzymuje wykonywanie programu na określoną ilość milisekund

Pobieranie wartości z systemu Deimic:

  • get_input(address, number) - pobiera stan wejścia gdzie address to adres modułu a number to nr wejścia na module (patrz opis Ustalenie adresu wejścia), wartości 0 i 1 to wartości przy krótkim kliknięciu a wartość 2 to długie przytrzymanie przycisku podłączonego do wejścia. Wartość -1 pojawi się gdy mamy błąd w adresie wejścia i wejście nie jest dostępne.
  • get_output(address, number) - pobiera stan wyjścia (przekaźnika) gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia), wartości 0 i 1 to wartości jakie przyjmuje ta funkcja, wartość -1 pojawi się gdy mamy błąd w adresie wyjścia i wyjście nie jest dostępne.
    Funkcja get_output(address, number) może również odpytywać o wartości wirtualnych wyjść przekaźnikowych, które możemy również użyć do wywoływania skryptów Java z poziomu aplikacji mobilnej, wtedy jako wyjście wybieramy wirtualne wyjście przekaźnikowe. Aktywacja tego wyjścia na telefonie lub tablecie może uruchomić skrypt Java.
  • get_dimmer(address, number) - pobiera stan wyjścia dimmera gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia), funkcja przyjmuje wartości z zakresu od 0 do 100, wartość -1 pojawi się gdy mamy błąd w adresie wyjścia i wyjście nie jest dostępne.
  • get_roller(address, numer) - pobiera stan rolety gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia), funkcja zwraca wartości z listy pokazanej poniżej oraz wartość -1 pojawi się gdy mamy błąd w adresie wyjścia i wyjście nie jest dostępne.
    return 0 - stan rolety nieznany (zazwyczaj po włączeniu zasilania)
    return 1 - roleta zatrzymana
    return 2 - roleta jedzie do góry
    return 3 - roleta jedzie na dół
    return 4 - roleta podniesiona
    return 5 - roleta opuszczona
    return 6 - roleta czeka (ten stan pojawia się przy zmianie kierunku jazdy rolety, wtedy roleta czeka ok 1s pomiędzy zmianą kierunku jazdy)
  • get_recuperator(address, numer) - pobiera wartość nastawionego biegu na rekuperatorze (podłączonego do wyjść przekaźnikowych) gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia), funkcja przyjmuje wartości 0,1,2,3,4, wartość -1 pojawi się gdy mamy błąd w adresie wyjścia i wyjście nie jest dostępne.
    Funkcja dostępna od oprogramowania z dnia 05.02.2018

    Jeśli rekuperator podłączony jest za pomocą przejściówki 0-10V należy użyć funkcji get_dimmer.

  • get_water(address, number) – pobiera stan sekcji podlewania (podłączonego do wyjść przekaźnikowych) gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia), przyjmuje wartości 1 sekcja aktualnie podlewa lub 0 jak sekcja aktualnie nie podlewa, wartość -1 pojawi się gdy mamy błąd w adresie wyjścia i wyjście nie jest dostępne.
Funkcja dostępna od oprogramowania z dnia 29.04.2019
  • get_heat(address, number) – pobiera stan sekcji grzania (podłączonego do wyjść przekaźnikowych) gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia), przyjmuje wartości 1 sekcja grzeje lub 0 jak sekcja nie grzeje, wartość -1 pojawi się gdy mamy błąd w adresie wyjścia i wyjście nie jest dostępna.
Funkcja dostępna od oprogramowania z dnia 29.04.2019

 

Sterowanie wyjściami on/off z systemu Deimic

  • set_output_on(address, number) - funkcja włącza dane wyjście gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia)
  • set_output_off(address, number) - funkcja wyłącza dane wyjście gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia)
  • set_output_toggle(address, number) - funkcja przełącza dane wyjście (z on na off z off na on) gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia)
  • set_output_set(address, number, time1, time2, future_use) - włącza wyjście na dany czas ale po wcześniej ustawionym czasie, time1 to czas po jakim od wywołania funkcji załączy się wyjście, time2 to czas na jaki ma załączyć się wyjście (UWAGA podstawa czasu dzielona jest przez 10 więc jeśli chcemy włączyć światło na 60s należy wpisać wartość 600), parametr future_use należy zostawić jako 0 nie jest on obecnie używany.
    Przykłady:
    set_output_set(1, 5, 0, 600, 0) – włącza od razu wyjście 5 na module o adresie 1 (Master) na 60s.
    set_output_set(1, 6, 300, 1200, 0) – włącza po 30s wyjście 6 na module o adresie 1 (Master) na 120s.

Sterowanie wyjściami PWM z systemu Deimic

  • set_dimmer_set(address, number, value, time) - funkcja ustawia wartość wyjścia gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia)  na określoną wartość value(0-100) wartość od 0 do Value osiągana jest w czasie time (wartość time jest dzielona przez 100 więc jeśli chcemy ustawić wartość od 0 do 100 w ciągu 1s to należy wpisać jako time 100)
  • set_dimmer_set3x(address, value_red, time_red, value_green, time_green, value_blue, time_blue) - funkcja ustawiająca wartość trzech kanałów PWM wyjścia RGB, działa analogicznie do funkcji set_dimmer_set
  • set_dimmer_settime(address, number, value, time, time2) - funkcja ustawia wartość wyjścia gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia)  na określoną wartość value(1-100) wartość od 0 do Value osiągana jest w czasie time (wartość time jest dzielona przez 100 więc jeśli chcemy ustawić wartość od 0 do 100 w ciągu 1s to należy wpisać jako time 100), wartość time2 określa po jakim czasie dimmer zostanie wyłączony (timer2 jest w jednostkach sekund i nie jest dzielony)
  • set_dimmer_toggle(address, number, value, time) - funkcja ustawia naprzemiennie wartość wyjścia gdzie address to adres modułu a number to nr wyjścia na module (patrz opis Ustalenie adresu wyjścia)  pomiędzy określoną wartość value(1-100) (wartość od 0 do Value osiągana jest w czasie time (wartość time jest dzielona przez 100 więc jeśli chcemy ustawić wartość od 0 do 100 w ciągu 1s to należy wpisać jako time 100)) a wartością 0
  • set_dimmer_wavergb(address, number, time) - funkcja na zmianę włącza i wyłącza funkcje fali (płynnej zmiany kolorów) na pasku RGB, przy czym wartość 1 dla time równe jest 760ms
  • set_dimmer_wave(address, number, time) - funkcja na zmianę włącza i wyłącza funkcje fali (płynnego rozjaśniania i ściemniania) na wyjściu dimmer, przy czym wartość 1 dla time równe jest 230ms 

 

Sterowanie wyjściami Roletowymi z systemu Deimic

  • set_roller_upstop(address, number) - funkcja podnosi roletę jeśli jest ona zatrzymana lub zatrzymuje jeśli roleta jest w ruchu (gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia))
  • set_roller_downstop(address, number) - funkcja opuszcza roletę jeśli jest ona zatrzymana lub zatrzymuje jeśli roleta jest w ruchu (gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia))
  • set_roller_up(address, number) - funkcja podnosi roletę (gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia))
  • set_roller_down(address, number) - funkcja opuszcza roletę (gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia))
  • set_roller_stop(address, number) - funkcja zatrzymuje roletę (gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia))
  • set_roller_step(address, number) -funkcja przy kolejnych wywołaniach odpowiednio podnosi/zatrzymuje/opuszcza/zatrzymuje roletę (gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia))

 

Sterowanie wyjściami Rekuperatora (w przypadku sterowania za pomocą 4 przekaźników NIE wyjścia PWM) z systemu Deimic

  • set_recuperatorset(address, number, value) - funkcja ustawia wartość rekuperatora na określoną wartość, która może przyjmować wartość 0,1,2,3,lub 4, gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia)
  • set_recuperatorstop(address, number) - funkcja ustawia wartość rekuperatora na wartość 0, gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia)

 

Sterowanie wyjściami Klimakonwektora z systemu Deimic

  • set_climaon(address, number) - funkcja włącza Klimakonwektor na poprzednio wybrany stan, gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia)
  • set_climaoff(address, number) - funkcja wyłącza Klimakonwektor, gdzie address to adres modułu a number to nr rolety na module (patrz opis Ustalenie adresu wyjścia)