This is a collection of libraries, templates and code snippets to build PLC and PLC-related applications with Deno, TypeScript and Rust.
With the help of the projects within this organization you can build HTML5 HMI Panels, Home automation applications and everything else which introduces communication with hardware IO devices.
Most of the packages/crates are reuseable parts of a PLC project at LMGU-Technik we wanted to publish and use in other projects.
Since then we have added a few other similar projects to keep them grouped together.
After the original project has been mostly finished and is now in everyday use, development has been slowed down a bit, but there is still at least one active project depending on all these packages.
Most packages live inside the deno-plc monorepo.
The following projects are developed for and together with deno-plc, but they can be used independently:
rust-ndi-sdk (ndi-sdk-sys)Rust bindings for the NDI (ndi.video) SDKvite-plugin-denoUse Deno imports (jsr:, https://, ...) with Vite and dropnode_modules.signal-utilsSmall and easy to use utilities for Preact Signals that simplify usage in async code, with Sets, Maps and as timerssACN-DenoDeno port of k-yle/sACNslipTypeScript implmentation of SLIP (Serial Line Internet Protocol)adapter-tcpContains a simple reconnection / session management logic that simplifies building protocol state machines that automatically reconnectadapter-oscContains an implementation of OSC (Open Sound Control) andadapter-tcpwrappers forOSC-over-TCP
PS: Yes, the icon is AI-generated, we are engineers, not graphics designers.
Warning
Do NEVER use any part of this project in SAFETY CRITICAL systems. Software written in languages like JS/TS is not suitable for such applications, because code execution is highly undeterministic (especialy the V8 JIT) and therefore does not meet any hard timing requirements. Safety critical systems require special certified Hard- and Software
Nevertheless you can use TypeScript to communicate with such Safety-PLCs