GSoC Project Proposal: Nodejs on embedded boards in Web of Things for Thingweb project
Nodejs on embedded boards in Web of Things
Description
The Web of Things (WoT) aims to enhance interoperability and usability across diverse Internet of Things (IoT) platforms by leveraging standard web technologies. Central to this is the Thing Description (TD), a standardized metadata model that describes the capabilities and interfaces of IoT devices, enabling seamless integration and interaction.
The Eclipse Thingweb project provides open-source tools and libraries for WoT development. In particular, the node-wot project is a powerful NodeJs-based Web of Things (WoT) runtime, allowing applications to consume (use) and expose (create) IoT devices using standardized Thing Descriptions (TDs). However, its current implementation is designed for regular server/edge devices and is not optimized for resource-constrained microcontrollers like the Raspberry Pi Pico.
This project aims to port node-wot to the Raspberry Pi Pico 2 by adapting its execution model to run efficiently on constrained hardware. The project will also explore performance optimizations and implement a UDP-based socket to enhance support for CoAP-based protocols, commonly used in low-power IoT scenarios.
Students will not need to re-write the whole runtime but they can use off-shelf solutions like: Kalumajs.
Practical goals
- Deploy a simple node-wot application to Pico 2
- Implement an IoT sensor in Javascript, expose a Thing Description using Node-wot
- Verify that everything works using a node-wot desktop application.
- Reduce node-wot bundle size by removing the dependency from AJV.
- Find innovative ways to support JSONSchema validation in the embedded board (pre-compile schemas or implement a lightweight validation library).
- Support CoAP:
- Introduce a UDP-based transport layer to support CoAP interactions
- Port node-wot to other JS-enabled boards:
- As an optional step students can decide to evaluate other boards
Expected Outcomes
- Updates to node-wot code base to make it more friendly for the embedded world.
- Documentation and tutorials about how to develop node-wot applications for Raspberry Pico and possibly other boards.
Possible Mentors
Links to Eclipse Project
Skills required/preferred
This project is ideal for embedded systems and IoT enthusiasts with experience in:
- JavaScript/TypeScript (Node.js)
- Microcontroller programming (C/C++ for RP2040, MicroPython, or Espruino)
- Networking (CoAP, UDP, MQTT, HTTP on embedded devices)
Project Size
90 to 175 hours (Depending on how many objectives the student wants to achieve).
Rating
Medium