JavaScript
Secondary Develop Elastel Gateways by JavaScript
Elastel gateways are built on an Open Linux system embedded computer, allowing users to create and run JavaScript applications by installing the Node.js runtime environment.
Typical use cases include:
- High-performance data processing and device control
- Serial, network, and protocol communication (e.g., Modbus RTU/TCP, MQTT, TCP/UDP)
- Real-time control and edge logic processing
- Integration with low-level device drivers or GPIO access
1. Node.js Installation
Due to different models using various types of ARM processors, corresponding Node.js version packages need to be downloaded.
Product | ARM Processor |
---|---|
EG500/EG410/ElastBox400/EG324L | ARM64 |
EG324/EC212/EC211 | ARM32 |
1.1. Node.js Download and Configuration
-
Node.js Download
Open the official download page:
https://nodejs.org/download/release/
. We will use version v23.9.0 as an example (since v24 no longer supports 32-bit ARM).
-
For EG500/EG410/ElastBox400/EG324L (64-bit systems), download
node-v23.9.0-linux-arm64.tar.gz
. -
For EG324 (32-bit systems), download
node-v23.9.0-linux-armv7l.tar.gz
.noteEC212 and EC211 do not support Node.js due to limited storage.
-
Decompress and Set Environment Variables on the Embedded Computer
Decompress the downloaded file on the Elastel embedded computer.
Here, we assume the decompression directory is/usr/local
. Taking an EG500 64-bit system as an example, set the system environment variables:export PATH=/usr/local/node-v23.9.0-linux-arm64/bin:$PATH
Then use
node -v
to check the Node.js version number.Note: Higher versions of Node.js may require higher versions of the
libc
library. If the current hardware does not support it, switch to a lower Node.js version or update the file system.
2. Programming Example: LED Control (ledtest)
The following program controls the system LED blinking via /dev/led
:
const fs = require('fs');
const deviceFilePath = '/dev/led';
let writeState = 0;
function writeToDevice() {
writeState = writeState === 0 ? 1 : 0;
const dataToWrite = writeState.toString();
fs.writeFile(deviceFilePath, dataToWrite, (err) => {
if (err) {
if (err.code === 'ENOENT') {
console.error(`Error: Device file ${deviceFilePath} not found. Please ensure the device is connected and the driver is loaded.`);
} else if (err.code === 'EACCES') {
console.error(`Error: Access to ${deviceFilePath} denied. Please ensure you have appropriate permissions (e.g., run as root).`);
} else {
console.error('Error writing to device file:', err);
}
}
setTimeout(writeToDevice, 500);
});
}
writeToDevice();
2.1. Running the Program (On the Embedded Computer)
-
Create JavaScript Source File
On the embedded computer, create a
ledtest.js
file and copy the code above into it, or by uploading theledtest.js
source file from your PC to a directory on the embedded computer (e.g., /home/admin/) via SFTP. -
Run the Program
node ledtest.js
The SYS LED will blink every 0.5 seconds. The program runs until you stop it manually (e.g.,
Ctrl+C
).
3. Recommended Practices
- Use built-in interfaces (e.g., serial ports, GPIO, LED) for development.
- Configure
/etc/init.d/rcS
for startup services or usecrontab
for scheduled runs.
4. Appendix Tables
EG324 Peripheral Resource | Device Interface Name |
---|---|
COM1 | /dev/ttyAMA0 |
COM2 | /dev/ttyAMA1 |
COM3 | /dev/ttyAMA2 |
COM4 | /dev/ttyAMA3 |
SYS LED Indicator | /dev/led |
SYS2 LED Indicator | /dev/led2 |
Buzzer | /dev/buzzer |
Ethernet Port 1 | eth0 |
Ethernet Port 2 | eth1 |
For other models, please contact Elastel support or refer to models hardware manuals for Peripheral Interface tables.
- Official Website:
https://www.elastel.com
- Support Email:
support@elastel.com