enip-ts
TypeScript icon, indicating that this package has built-in type declarations

1.2.2 • Public • Published

ts-enip – TypeScript EtherNet/IP™

🚀 Build package and publish to npm npm

TypeScript implementation of the Ethernet/IP™ protocol. This implementation is less complete.

Based on the work of cmseaton42/node-ethernet-ip and SerafinTech/ST-node-ethernet-ip.

Contributions

Contributions will be highly appreciated 👍. This package use changesets for its versioning. Create a Changeset using

npx changeset
pnpm exec changeset

Sepcify what have changed, commit to your branch and create a pull request on this repo 📝. Changeset bot will detect changesets.

Building

Run PNPM to build this package.

npm run build
pnpm run build

Installing

Install this package with

npm install enip-ts
pnpm install enip-ts

Using the library

Client Side

import { ENIP } from "ts-enip";

const enip = new ENIP.SocketController();

const sessionID = await enip.connect("127.0.0.1");

if(sessionID)
{
    /**
     * Define your ethernet ip packet here
     * You can used bundled tools like Encapsulation.CPF
     */ 

    //Path for ethernet ip protocol
    const idPath = Buffer.from([0x20, 0x04, 0x24, 0x96, 0x30, 0x03]);
    
    //Message router packet
    const MR = MessageRouter.build(0x0E, idPath, Buffer.alloc(0));

    enip.write(MR, false, 10);
}

Server side

For server side, only services 0x0E & 0x10 are supported.

    const actualData = Buffer.alloc(4, 0xF0);
    
    const vector: ENIPDataVector = {
        0x0E: (data) => {
            if(data.path.class == 4 && data.path.instance == 150 && data.path.attribute == 3)
                return actualData;
            else
                return;
        },
        0x10: (data) => {
            if(data.path.class == 4 && data.path.instance == 150 && data.path.attribute == 3 && data.data)
            {
                data.data.copy(actualData);
                return actualData;
            }
            else
                return;
        }
    }
    
    const server = new ENIPServer(vector);
    
    // Server will listen on Default enip port 44818
    server.listen();

Package Sidebar

Install

npm i enip-ts

Weekly Downloads

2

Version

1.2.2

License

MIT

Unpacked Size

84.5 kB

Total Files

43

Last publish

Collaborators

  • kworz