Štruktúra skriptu
Úvod
Skripty modulu „sysnapse „ používajú syntax JavaScript. Kód je spustený v sandboxe node.sj a teda je izolovaný od prostredia CMS. Nižšie sú uvedené všetky objekty, triedy a metódy ktoré sú podporované a dostupné pre jednotlivé skripty.
Aktuálne od verzie 1.4.2
Zoznam tried, objektov a metód
-
Objekt: cms
-
Objekt: console
- get_url(url|options,callback)
-
Objekt: sp
-
Objekt: modbus
- modbus(i_sp)
- query(device_address,code,register_address,data,callback[,timeout])
- read_holding_UInt16LE(device_address,register_address,callback[,timeout])
- read_holding_UInt16BE(device_address,register_address,callback[,timeout])
- read_holding_FloatLE(device_address,register_address,callback[,timeout])
- read_holding_FloatBE(device_address,register_address,callback[,timeout])
Objekt: cms
V tomto objekte je zahrnutá štruktúra objektov a metód špecifické pre CMS systém
Objekt: cms.io_channel
Objekt “io_channel” združuje objekty typu vstupno-výstupných kanálov. Za týmto objektom je nutne definovať objekt príslušného modulu ktorý pozostáva s UID modulu a k nemu príslušný kľúč poľa, ktorý reprezentuje číslo IO kanála.
Príklad:
console.log(cms.io_channel.in_air_quality.io[1].value);
Zobrazí hodnotu IO kanála typu „in_air_quality“ v module „io“
Objekt: cms.io_channel.in_air_quality.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_current.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_frequency.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_humidity.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_level.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_power.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_pressure.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_rain_gauge.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_speed.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_temperature.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_twilight.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_voltage.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_wind_direction.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_binary.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_consumption.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.in_state.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.validty |
premenná GET/Bool |
Informácia o aktuálnej korektonosti hodnoty IO kanála |
Objekt: cms.io_channel.out_switch.uid_module[num]
Názov |
Typ |
Popis |
.is_on |
premenná GET/Bool |
Aktuálny stav |
.set(force) |
metóda |
Nastavý kanál
Názov |
Typ |
Popis |
force |
Bool |
Ak je TRUE zapíše zmenu ihneď do zaraidenia.Bez vyplnenia je FALSE. |
|
.clr(force) |
metóda |
Vyčistí kanál
Názov |
Typ |
Popis |
force |
Bool |
Ak je TRUE zapíše zmenu ihneď do zaraidenia.Bez vyplnenia je FALSE. |
|
.toggle(force) |
metóda |
Prepne kanál
Názov |
Typ |
Popis |
force |
Bool |
Ak je TRUE zapíše zmenu ihneď do zaraidenia.Bez vyplnenia je FALSE. |
|
Objekt: cms.io_channel.out_dimmer.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.set(value,speed,force) |
metóda |
Nastavý kanál
Názov |
Typ |
Popis |
value |
Number |
Hodnota stmievania v %. [0-100] |
speed |
Number |
Rýchlosť zmeny v %. [0-100] |
force |
Bool |
Ak je TRUE zapíše zmenu ihneď do zaraidenia.Bez vyplnenia je FALSE. |
|
Objekt: cms.io_channel.out_level.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.set(value,force) |
metóda |
Nastavý kanál
Názov |
Typ |
Popis |
value |
Number |
Hodnota úrovne v %. [0-100] |
force |
Bool |
Ak je TRUE zapíše zmenu ihneď do zaraidenia.Bez vyplnenia je FALSE. |
|
Objekt: cms.io_channel.out_voltage.uid_module[num]
Názov |
Typ |
Popis |
.value |
premenná GET/Number |
Hodnota IO kanála |
.set(value,force) |
metóda |
Nastavý kanál
Názov |
Typ |
Popis |
value |
Number |
Hodnota napätia [V] |
force |
Bool |
Ak je TRUE zapíše zmenu ihneď do zaraidenia.Bez vyplnenia je FALSE. |
|
Objekt: cms.io_channel.out_shutter.uid_module[num]
Názov |
Typ |
Popis |
.closing |
premenná GET/Number |
Hodnota pozície IO kanála |
.rotating |
premenná GET/Number |
Hodnota rotácie IO kanála |
.goto(closing,rotating) |
metóda |
Nastaví žalúziu do polohy. Ak je argument v stave „undefined“ ignoruje sa. Tento postupu sa používa ak potrebujete zmeniť iba rotáciu, alebo pozíciu kanála samostatne.
Názov |
Typ |
Popis |
closing |
Number |
Hodnota pozície v %. [0-100] |
rotating |
Number |
Hodnota rotacie v %. [0-100] |
|
.stop() |
metóda |
Zastaví pohyb žalúie |
.calibration() |
metóda |
Kalibrácia kanála |
Metóda: cms.io_channel.out_switch_exe()
Vráti: Bool
TRUE - Úspešný zápis do zariadení
FALSE - Nepodaril sa zápis do všetkých zariadení
Metóda: cms.io_channel.out_dimmer_exe()
Vráti: Bool
TRUE - Úspešný zápis do zariadení
FALSE - Nepodaril sa zápis do všetkých zariadení
Metóda: cms.io_channel.out_level_exe()
Vráti: Bool
TRUE - Úspešný zápis do zariadení
FALSE - Nepodaril sa zápis do všetkých zariadení
Metóda: cms.io_channel.out_voltage_exe()
Vráti: Bool
TRUE - Úspešný zápis do zariadení
FALSE - Nepodaril sa zápis do všetkých zariadení
Nasledovné metódy vykonávajú zápis IO kanálov do registrov zariadení. Používa sa po príkazoch pre zmenu stavu IO kanálu bez použitia argumentu „force“. Tento postup odľahčuje zaťaženie zbernice častými príkazmi na zmenu registrov tých istých zariadení.
Príklad:
cms.io_channel.out_switch.io[1].set();
cms.io_channel.out_switch.io[2].set();
cms.io_channel.out_switch.io[3].set();
let res=cms.io_channel.out_switch_exe();
Callback: cms.io_channel.events
Do premennej sa nastaví metóda „callback“ ktorá sa volá pri udalosti na IO kanáloch.
Zoznam argumentov metódy:
Názov |
Popis |
plugin_uid |
Identifikátor modulu |
type |
Typ IO kanálu |
num |
Číslo IO kanálu |
event |
Názov udalosti |
value |
Hodnota udalosti |
Príklad:
cms.io_channel.events=function(plugin_uid,type, num, event,value){
console.log(plugin_uid,type, num, event,value);
}
Objekt: cms.variable
Objekt pracuje s globálnymi premennými systému CMS
Metóda: cms.variable.get(name)
Vráti hodnotu premennej.
Názov |
Popis |
name |
Presný názov globálnej premennej |
Vráti: String
Metóda: cms.variable.set(name,value)
Nastavý hodnotu premennej.
Názov |
Popis |
name |
Presný názov globálnej premennej |
value |
Hodnota premennej |
Vráti: Bool
Metóda: cms.variable.is_true(name)
Vráti výsledok či je nastavená hodnota premennej typu boolean. Hodnoty globálnych premenných sú typ "String". Metóda overuje či je obsah premennej "true".
Názov |
Popis |
name |
Presný názov globálnej premennej |
Vráti: Bool
Metóda: cms.variable.on(name,callback)
Nastaví udalosť pre globálnu premennú. Pri zmene hodnoty bude volaná metóda „callback“.
Názov |
Popis |
name |
Presný názov globálnej premennej |
callback |
Metóda udalosti: (event,sn,value)=>{}
Názov |
Popis |
event |
Názov udalosti |
sn |
Sériové číslo globálnej premennej |
value |
Hodnota globálnej premennej |
|
Vráti: String
Sériové číslo udalosti
Metóda: cms.variable.clear_on(name,sn)
Odstráni metódu udalosti.
Názov |
Popis |
name |
Presný názov globálnej premennej |
sn |
Sériové číslo udalosti |
Vráti: Bool
Objekt: cms.controller_variables
Objekt pracuje s kontrolným prvkom skriptu.
Callback: cms.controller_variables.on
Do premennej sa nastaví metóda „callback“ ktorá sa volá pri udalosti kontrolného prvku.
Zoznam argumentov metódy:
Názov |
Popis |
variable_name |
Názov premennej kontrolného prvku |
value |
Hodnota kontrolného prvku |
Príklad:
cms.controller_variables.on=function(variable_name,value){
console.log(variable_name,value);
}
Metóda: cms.log_info(message)
Vytvorí log do záznamov CMS. Typ informácia.
Zoznam argumentov metódy:
Názov |
Popis |
message |
Text správy záznamu (String) |
Metóda: cms.log_error(message)
Vytvorí log do záznamov CMS. Typ chyba.
Zoznam argumentov metódy:
Názov |
Popis |
message |
Text správy záznamu (String) |
Metóda: cms.log_warning(message)
Vytvorí log do záznamov CMS. Typ varovanie.
Zoznam argumentov metódy:
Názov |
Popis |
message |
Text správy záznamu (String) |
Príklad:
log_info("Test záznamu do CMS");
Metóda: cms.setTimeout(callback,time,...parameters)
Vytvorí spätné volanie po uplynutí časovača.
Zoznam argumentov metódy:
Názov |
Popis |
callback |
Metóda spätného volania: (...parameters)=>{}
Názov |
Popis |
...parameters |
Zoznam argumentov "parameters" z deklarácie metódy |
|
time |
Hodnota časovača v ms (Number) |
Vráti: Sériové čislo vytvoreného časovača
Príklad:
let timer_sn=cms.setTimeout((arg1,arg2)=>{
console.log(arg1,arg2);
},1000,"argument1","argument2")
Metóda: cms.clearTimeout(sn)
Odstráni spätné volanie časovača.
Zoznam argumentov metódy:
Názov |
Popis |
sn |
Sériové číslo časovača |
Príklad:
let timer_sn=cms.setTimeout(()=>{},1000);
cms.clearTimeout(timer_sn);
Metóda: cms.setInterval(callback,time,...parameters)
Vytvorí spätné volanie po časovom intervale.
Zoznam argumentov metódy:
Názov |
Popis |
callback |
Metóda spätného volania: (...parameters)=>{}
Názov |
Popis |
...parameters |
Zoznam argumentov "parameters" z deklarácie metódy |
|
time |
Hodnota intervalu v ms (Number) |
Vráti: Sériové čislo vytvoreného intervalu
Príklad:
let interval_sn=cms.setInterval((arg1,arg2)=>{
console.log(arg1,arg2);
},1000,"argument1","argument2")
Metóda: cms.clearInterval(sn)
Odstráni spätné volanie intervalu.
Zoznam argumentov metódy:
Názov |
Popis |
sn |
Sériové číslo intervalu |
Príklad:
let interval_sn=cms.setInterval(()=>{},1000);
cms.clearTimeout(interval_sn);
Objekt: cms.controller_variables
Objekt pracuje s kontrolným prvkom skriptu.
Objekt: cms.storage
Obsah objektu uchovávaný v dlhodobej pamäti. Štruktúra objektu je v tvare JSON a pri priradení objektu sa obsah automaticky uloží.
Príklad:
//zápis do pamäte
cms.storage={pouzivatelia:[{meno:"Martin", vek:23},{meno:"Brano", vek:24}]};
//čitanie z pamäte
let meno=cms.storage.pouzivatelia[0].meno;
console.log(meno);
Objekt: console
Objekt pre vypísanie informácií do konzoly scriptu.
Metóda: console.log(...arg)
Vypíše argumenty typu log do konzoly
Metóda: console.info(...arg)
Vypíše argumenty typu info do konzoly
Metóda: console.warn(...arg)
Vypíše argumenty typu warn do konzoly
Metóda: console.error(...arg)
Vypíše argumenty typu error do konzoly
Príklad:
console.log("Test argumentu 1","Test argumentu 2");
Metóda: get_url(url|options,callback)
Odošle dopyt pre odoslanie a získanie dát z URL.
Názov |
Popis |
url |
url adresa (String) |
options |
{
protocol:"http|https"
}
Ostatné podľa dokumentácie http.request
|
callback |
Metóda udalosti: (data,error)=>{}
Názov |
Popis |
data |
Dáta z odpovedi |
error |
Chybové hlásenie (undefined=bez chyby) |
|
Príklad:
get_url({
hostname: 'www.google.com',
protocol: "http",
path: '/upload',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData),
}
},(data,err)=>{
console(data,err);
}
);
Objekt: sp
Objekt pre prácu so sériovým portom.
Metóda: sp.getdevices()
Vráti zoznam sériových zariadení.
Vráti: String
Štruktura: name_1;device_sn_1;state_1|name_2;device_sn_2;state_2...
Príklad:
let xdevices=sp.getdevices();
let adevices=xdevices.split("|");
for(let device of adevices){
let parameters=device.split(";");
let name=parameters[0];
let device_sn=parameters[1];
let state=parameters[2];
console.log("Device: ",name,"SN: ",device_sn,"SATE: ",state);
}
Metóda: sp.open(options,callback)
Otvorí príslušný port na prácu a vytvorí inštanciu objektu.
Zoznam argumentov metódy:
Názov |
Popis |
options |
Objekt parametrov:
Názov |
Popis |
device_sn |
Sériové číslo zariadenia |
baudRate |
Komunikačná rýchlosť [def. 9600] |
stopBits |
Stop bit ("one","two") [def. one] |
parity |
Parita ("none","odd","even") [def. none] |
dataBits |
Počet dátových bitov (5,6,7,8,9) [def. 8] |
|
callback |
Metóda udalosti: (data)=>{}
Názov |
Popis |
data |
Dáta z portu |
|
Vráti: Inštancia objektu {sp.open}
Príklad:
let xsp=sp.open({
device_sn:"a7a56bd92336995658b6b",
baudRate:115200
},(data)=>{
console.log("Prijaté dáta z portu: ",data);
}
);
xsp.send("Test");
Metóda: {sp.open}.send(data,callback)
Odošle dáta do sériového portu.
Zoznam argumentov metódy:
Názov |
Popis |
data |
Dáta na odoslanie (String|Buffer) |
callback |
Metóda udalosti: (res)=>{}
Názov |
Popis |
res |
Výsledok odoslania (Bool) |
|
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b"});
xsp.send("Test",(res)=>{
if(res===false)console.log("Chyba pri odosielaní!");
});
xsp.close();
Metóda: {sp.open}.close()
Zatvorí príslušný port
Objekt: modbus
Objekt pre prácu s modbusom.
Metóda: modbus(xsp)
Vytvorí inštanciu pre prácu s modbusom.
Zoznam argumentov metódy:
Názov |
Popis |
xsp |
Inštancia sérového portu {sp.open} |
Vráti: Inštancia objektu modbus
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b");
let xmodbus=modbus(xsp);
Metóda: {modbus}.query(device_address,code,register_address,data,callback[,timeout])
Odošle dáta do sériového portu.
Zoznam argumentov metódy:
Názov |
Popis |
device_address |
Adresa zariadenia MODBUS (Number) |
code |
Kód funkcie MODBUS (Number) |
register_address |
Adresa registra MODBUS (Number) |
data |
Dáta MODBUS (Buffer) |
callback |
Metóda spätného volania odpovede: (data,err)=>{}
Názov |
Popis |
data |
Dáta odpovede (Buffer) |
err |
Chybová sprava (String,undefined = bez chyby) |
|
timeout |
Časovač prerušenia v milisekundách (Number). Predvolené 500ms |
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b");
let xmodbus=modbus(sxp);
xmodbus.query(0x01,0x03,0x0001,Buffer.from([0x01,0x02,0x03]),(data,err)=>{
if(!err){
console.log(data);
}else console.error("Dopyt zlyhal");
})
Metóda: {modbus}.read_holding_UInt16LE(device_address,register_address,callback[,timeout])
Prečíta dáta z registra vo formáte UInt16LE
Zoznam argumentov metódy:
Názov |
Popis |
device_address |
Adresa zariadenia MODBUS (Number) |
register_address |
Adresa registra MODBUS (Number) |
callback |
Metóda spätného volania odpovede: (data,err)=>{}
Názov |
Popis |
data |
Dáta odpovede (Number) |
err |
Chybová sprava (String,undefined = bez chyby) |
|
timeout |
Časovač prerušenia v milisekundách (Number). Predvolené 500ms |
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b");
let xmodbus=modbus(sxp);
xmodbus.read_holding_UInt16LE(0x01,0x0001,(data,err)=>{
if(!err){
console.log("Hodnota registra: ",data);
}else console.error("Dopyt zlyhal");
})
Metóda: {modbus}.read_holding_UInt16BE(device_address,register_address,callback[,timeout])
Prečíta dáta z registra vo formáte UInt16BE
Zoznam argumentov metódy:
Názov |
Popis |
device_address |
Adresa zariadenia MODBUS (Number) |
register_address |
Adresa registra MODBUS (Number) |
callback |
Metóda spätného volania odpovede: (data,err)=>{}
Názov |
Popis |
data |
Dáta odpovede (Number) |
err |
Chybová sprava (String,undefined = bez chyby) |
|
timeout |
Časovač prerušenia v milisekundách (Number). Predvolené 500ms |
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b");
let xmodbus=modbus(sxp);
xmodbus.read_holding_UInt16BE(0x01,0x0001,(data,err)=>{
if(!err){
console.log("Hodnota registra: ",data);
}else console.error("Dopyt zlyhal");
})
Metóda: {modbus}.read_holding_FloatLE(device_address,register_address,callback[,timeout])
Prečíta dáta z registra vo formáte FloatLE
Zoznam argumentov metódy:
Názov |
Popis |
device_address |
Adresa zariadenia MODBUS (Number) |
register_address |
Adresa registra MODBUS (Number) |
callback |
Metóda spätného volania odpovede: (data,err)=>{}
Názov |
Popis |
data |
Dáta odpovede (Number) |
err |
Chybová sprava (String,undefined = bez chyby) |
|
timeout |
Časovač prerušenia v milisekundách (Number). Predvolené 500ms |
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b");
let xmodbus=modbus(sxp);
xmodbus.read_holding_FloatLE(0x01,0x0001,(data,err)=>{
if(!err){
console.log("Hodnota registra: ",data);
}else console.error("Dopyt zlyhal");
})
Metóda: {modbus}.read_holding_FloatBE(device_address,register_address,callback[,timeout])
Prečíta dáta z registra vo formáte FloatBE
Zoznam argumentov metódy:
Názov |
Popis |
device_address |
Adresa zariadenia MODBUS (Number) |
register_address |
Adresa registra MODBUS (Number) |
callback |
Metóda spätného volania odpovede: (data,err)=>{}
Názov |
Popis |
data |
Dáta odpovede (Number) |
err |
Chybová sprava (String,undefined = bez chyby) |
|
timeout |
Časovač prerušenia v milisekundách (Number). Predvolené 500ms |
Príklad:
let xsp=sp.open({device_sn:"a7a56bd92336995658b6b");
let xmodbus=modbus(sxp);
xmodbus.read_holding_FloatBE(0x01,0x0001,(data,err)=>{
if(!err){
console.log("Hodnota registra: ",data);
}else console.error("Dopyt zlyhal");
})
Posledná úprava: 13.09.2024
Nenašli ste čo ste hľadali?
Ak Vám v článku niečo chýba, alebo ste v ňom našli chybu, dajte nám o tom vedieť. Pomáhate nám tak zlepšovať naše produkty.