Definicja źródła danych (urządzenia) w Signomiksie umożliwia zdefiniowanie kodu dla procesora danych. W momencie odebrania nowych danych z tego źródła, procesor danych uruchamia interpreter języka JavaScript i wykonuje kod zdefiniowany dla tego źródła danych.
Tworząc kod dla procesora użytkownik może wykorzystać funkcje biblioteki sgx
wbudowanej w procesor danych. Poniżej dokumentacja tej biblioteki.
verify(received, receivedStatus)
Funkcja verify
służy do weryfikacji otrzymanych danych i aktualizacji stanu obiektu.
received
(Array): Tablica obiektów danych do weryfikacji.receivedStatus
(String): Status otrzymanych danych.void
: Funkcja nie zwraca żadnej wartości.var receivedData = [
{ name: "temperature", value: 22.5, timestamp: 1628765432 },
{ name: "humidity", value: 60, timestamp: 1628765432 }
];
var status = "ok";
sgx.verify(receivedData, status);
accept(name)
Funkcja accept
służy do zaakceptowania danych o podanej nazwie i zapisania ich w wynikach. Jej wywołanie może być konieczne w przypadku użycia w kodzie funkcji put
.
Patrz też: put
name
(String): Nazwa danych do zaakceptowania.void
: Funkcja nie zwraca żadnej wartości.sgx.accept("temperature");
addCommand(targetEUI, payload, overwrite)
Funkcja addCommand
służy do dodawania nowej komendy.
targetEUI
(String): Unikalny identyfikator docelowego urządzenia.payload
(Object): Dane (obiekt JavaScript), które mają być wysłane jako część komendy.overwrite
(Boolean): Flaga wskazująca, czy unieważnić wcześniejsze (jeszcze nie przekazane) komendy..void
: Funkcja nie zwraca żadnej wartości.var targetEUI = "00124B0004F12345";
var payload = { command: "activate", parameters: { duration: 10 } };
var overwrite = true;
sgx.addCommand(targetEUI, payload, overwrite);
addPlainCommand(targetEUI, payload, overwrite)
Funkcja addPlainCommand
służy do dodawania nowej komendy w formacie zwykłego tekstu.
targetEUI
(String): Unikalny identyfikator docelowego urządzenia.payload
(String): Tekst, który ma być wysłany jako część komendy.overwrite
(Boolean): Flaga wskazująca, czy unieważnić wcześniejsze (jeszcze nie przekazane) komendy..void
: Funkcja nie zwraca żadnej wartości.var targetEUI = "00124B0004F12345";
var payload = 'start'
var overwrite = false;
sgx.addPlainCommand(targetEUI, payload, overwrite);
addHexCommand(targetEUI, payload, overwrite)
Funkcja addHexCommand
służy do dodawania nowej komendy z ładunkiem w formacie szesnastkowym.
targetEUI
(String): Unikalny identyfikator docelowego urządzenia.payload
(String): Dane w formacie szesnastkowym, które mają być wysłane jako część komendy.overwrite
(Boolean): Flaga wskazująca, czy unieważnić wcześniejsze (jeszcze nie przekazane) komendy..void
: Funkcja nie zwraca żadnej wartości.var targetEUI = "00124B0004F12345";
var payload = "00FFAA01";
var overwrite = true;
sgx.addHexCommand(targetEUI, payload, overwrite);
addNotification(newType, newMessage)
Funkcja addNotification
służy do dodawania nowej notyfikacji.
newType
(String): Typ nowej notyfikacji. Akceptowane wartości: info
,warning
,alert
.newMessage
(String): Treść nowej notyfikacji.void
: Funkcja nie zwraca żadnej wartości.sgx.addNotification("info", "Device activated successfully.");
addVirtualData(newEUI, newName, newValue)
Funkcja addVirtualData
służy do dodawania nowych danych wirtualnych.
newEUI
(String): Unikalny identyfikator nowego urządzenia.newName
(String): Nazwa nowych danych.newValue
(Mixed): Wartość nowych danych.void
: Funkcja nie zwraca żadnej wartości.sgx.addVirtualData("00124B0004F67890", "virtualTemperature", 25);
getAverage(channelName, scope, newValue)
Funkcja getAverage
służy do uzyskiwania średniej wartości dla danego kanału.
channelName
(String): Nazwa kanału.scope
(Number): Zakres wartości.newValue
(Number, opcjonalnie): Nowa wartość do uwzględnienia w obliczeniach.Number
: Średnia wartość dla danego kanału.var average = sgx.getAverage("temperature", 10);
var newAverage = sgx.getAverage("temperature", 10, 23.0);
getMinimum(channelName, scope, newValue)
Funkcja getMinimum
służy do uzyskiwania minimalnej wartości dla danego kanału.
channelName
(String): Nazwa kanału.scope
(Number): Zakres wartości.newValue
(Number, opcjonalnie): Nowa wartość do uwzględnienia w obliczeniach.Number
: Minimalna wartość dla danego kanału.var minimum = sgx.getMinimum("temperature", 10);
var newMinimum = sgx.getMinimum("temperature", 10, 18);
getMaximum(channelName, scope, newValue)
Funkcja getMaximum
służy do uzyskiwania maksymalnej wartości dla danego kanału.
channelName
(String): Nazwa kanału.scope
(Number): Zakres wartości.newValue
(Number, opcjonalnie): Nowa wartość do uwzględnienia w obliczeniach.Number
: Maksymalna wartość dla danego kanału.var maximum = sgx.getMaximum("temperature", 10);
var newMaximum = sgx.getMaximum("temperature", 10, 27);
getSum(channelName, scope, newValue)
Funkcja getSum
służy do uzyskiwania sumy wartości dla danego kanału.
channelName
(String): Nazwa kanału.scope
(Number): Zakres wartości.newValue
(Number, opcjonalnie): Nowa wartość do uwzględnienia w obliczeniach.Number
: Suma wartości dla danego kanału.var sum = sgx.getSum("temperature", 10);
var newSum = sgx.getSum("temperature", 10, 22);
getLastValue(channelName, skipNull)
Funkcja getLastValue
służy do uzyskiwania ostatniej wartości dla danego kanału.
channelName
(String): Nazwa kanału.skipNull
(Boolean): Pomiń wartości null
. Parametr opcjonalny.Mixed
: Ostatnia wartość dla danego kanału lub null
, jeśli brak danych.var lastValue = sgx.getLastValue("temperature");
getLastData(channelName, skipNull)
Funkcja getLastData
służy do uzyskiwania ostatnich danych dla danego kanału.
channelName
(String): Nazwa kanału.skipNull
(Boolean): Pomiń wartości null
. Parametr opcjonalny. W przypadku jego braku skipNull==false
.Object
: Ostatnie dane dla danego kanału.var lastData = sgx.getLastData("temperature");
getModulo(value, divider)
Funkcja getModulo
służy do uzyskiwania reszty z dzielenia wartości przez dzielnik.
value
(Number): Wartość do podzielenia.divider
(Number): Dzielnik.Number
: Reszta z dzielenia.var modulo = sgx.getModulo(10, 3); // 1
getOutput()
Funkcja getOutput
służy do uzyskiwania wyników przetwarzania.
Mixed
: Wynik przetwarzania.var output = sgx.getOutput();
getTimestamp(channelName)
Funkcja getTimestamp
służy do uzyskiwania znacznika czasu dla danego kanału.
channelName
(String): Nazwa kanału.Number
: Znacznik czasu dla danego kanału.var timestamp = sgx.getTimestamp("temperature");
getTimestampUTC(y, m, d, h, min, s)
Funkcja getTimestampUTC
służy do uzyskiwania znacznika czasu UTC na podstawie podanych parametrów.
y
(Number): Rok.m
(Number): Miesiąc.d
(Number): Dzień.h
(Number): Godzina.min
(Number): Minuta.s
(Number): Sekunda.Number
: Znacznik czasu UTC.var timestampUTC = sgx.getTimestampUTC(2024, 6, 5, 12, 0, 0);
getValue(channelName)
Funkcja getValue
służy do uzyskiwania wartości dla danego kanału.
channelName
(String): Nazwa kanału.Mixed
: Wartość dla danego kanału lub null
, jeśli brak danych.var value = sgx.getValue("temperature");
getStringValue(channelName)
Funkcja getStringValue
służy do uzyskiwania wartości tekstowej dla danego kanału.
channelName
(String): Nazwa kanału.String
: Wartość tekstowa dla danego kanału lub null
, jeśli brak danych.var stringValue = sgx.getStringValue("temperature");
put(name, newValue, timestamp)
Funkcja put
służy do umieszczania nowych danych.
name
(String): Nazwa danych.newValue
(Mixed): Nowa wartość danych.timestamp
(Number, opcjonalnie): Znacznik czasu danych.void
: Funkcja nie zwraca żadnej wartości.sgx.put("temperature", 23.5);
sgx.put("temperature", 23.5, 1628765432);
Użycie funkcji put
wyłącza mechanizm automatycznego akceptowania i zapisywania w bazie odebranych danych. Jeśli w kodzie procesora danych zostanie użyta funkcja put
to w bazie
zostaną zarejestrowane jedynie dane przekazane w funkcjach put
oraz accept
.
// Signomix odebrał request z danymi o nazwach `temperature` i `humidity`, jednak w skrypcie
// procesora danych chcemy dodać jeszcze wartość danej `pressure`
sgx.put("pressure", 1000)
// bez poniższych linii w bazie zostaną zapisane wartości null dla `temperature` oraz `humidity`
sgx.accept("temperature")
sgx.accept("humidity")
Patrz też: accept
setState(newState)
Funkcja setState
służy do ustawiania nowego stanu urządzenia.
newState
(String): Nowy stan urządzenia.void
: Funkcja nie zwraca żadnej wartości.sgx.setState("active");
setStatus(newStatus)
Funkcja setStatus
służy do ustawiania nowego statusu urządzenia.
newStatus
(String): Nowy status urządzenia.void
: Funkcja nie zwraca żadnej wartości.sgx.setStatus("offline");
reverseHex(hexStr)
Funkcja reverseHex
służy do odwracania kolejności znaków w łańcuchu szesnastkowym.
hexStr
(String): Łańcuch szesnastkowy.String
: Odwrócony łańcuch szesnastkowy.var reversedHex = sgx.reverseHex("00FFAA01"); // "01AAFF00"
swap32(val)
Funkcja swap32
służy do zmiany kolejności bajtów w liczbie 32-bitowej.
val
(Number): Liczba 32-bitowa.Number
: Liczba z zmienioną kolejnością bajtów.var swapped = sgx.swap32(0x12345678); // 0x78563412
distance(latitude1, longitude1, latitude2, longitude2)
Funkcja distance
służy do obliczania odległości między dwoma punktami geograficznymi.
latitude1
(Number): Szerokość geograficzna punktu 1.longitude1
(Number): Długość geograficzna punktu 1.latitude2
(Number): Szerokość geograficzna punktu 2.longitude2
(Number): Długość geograficzna punktu 2.Number
: Odległość między dwoma punktami w metrach.// odległość pomiędzy dwoma punktami
var dist = sgx.distance(52.2296756, 21.0122287, 41.8919300, 12.5113300);
// odległość punktu od przesłanej lokalizacji
var dist = sgx.distance(2.2296756, 21.0122287, sgx.getValue("latitude"), sgx.getValue("longitude") );
homeDistance(latitude, longitude)
Funkcja homeDistance
służy do obliczania odległości między danym punktem geograficznym,
a punktem położenia urządzenia zapisanym w jego konfiguracji.
latitude
(Number): Szerokość geograficzna punktu.longitude
(Number): Długość geograficzna punktu.Number
: Odległość między dwoma punktami w metrach.// odległość podanego punktu od lokalizacji podanej w konfiguracji urządzenia
var dist = sgx.homeDistance(41.8919300, 12.5113300);
// odległość przesłanej lokalizacji od lokalizacji podanej w konfiguracji urządzenia
var dist = sgx.homeDistance( sgx.getValue("latitude"), sgx.getValue("longitude") );