Š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.1
Zoznam tried, objektov a metód
-
Objekt: cms
-
Objekt: io_channel
- in_air_quality
- in_current
- in_frequency
- in_humidity
- in_level
- in_power
- in_pressure
- in_rain_gauge
- in_speed
- in_temperature
- in_twilight
- in_voltage
- in_wind_direction
- in_binary
- in_consumption
- in_state
- out_switch
- out_dimmer
- out_level
- out_voltage
- out_shutter
- out_switch_exe()
- out_dimmer_exe()
- out_level_exe()
- out_voltage_exe()
- Callback: events
- Objekt: variable
- Objekt: controller_variables
- log_info(message)
- log_error(message)
- log_warning(message)
- setTimeout(callback,time,...parameters)
- clearTimeout(sn)
- setInterval(callback,time,...parameters)
- clearInterval(sn)
- Objekt: storage
-
Objekt: io_channel
- 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
|
||||||
| .clr(force) | metóda | Vyčistí kanál
|
||||||
| .toggle(force) | metóda | Prepne kanál
|
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
|
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
|
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
|
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.
|
|||||||||
| .stop() | metóda | Zastaví pohyb žalúie | |||||||||
| .calibration() | metóda | Kalibrácia kanála |
Metóda: cms.io_channel.out_switch_exe()
Metóda: cms.io_channel.out_dimmer_exe()
Metóda: cms.io_channel.out_level_exe()
Metóda: cms.io_channel.out_voltage_exe()
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 |
Metóda: cms.variable.set(name,value)
Nastavý hodnotu premennej.
| Názov | Popis |
|---|---|
| name | Presný názov globálnej premennej |
| value | Hodnota premennej |
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)=>{}
|
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 |
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)=>{}
|
||||
| time | Hodnota časovača v ms (Number) |
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)=>{}
|
||||
| time | Hodnota intervalu v ms (Number) |
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)=>{}
|
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í.
Š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:
|
||||||||||||
| callback |
Metóda udalosti: (data)=>{}
|
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)=>{}
|
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} |
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)=>{}
|
||||||
| 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)=>{}
|
||||||
| 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)=>{}
|
||||||
| 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)=>{}
|
||||||
| 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)=>{}
|
||||||
| 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");
})
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.