Skip to content

openlamp/engine-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenLamp Engine — JavaScript port

A faithful Node.js port of openlamp/engine (the Python reference implementation), for environments that prefer JS over Python — e.g. Stream Deck plugins packaged on the official Node SDK, or any npm-based stack.

Same contract, same behavior: OpenLamp State patches + legacy aliases, persistent per-lamp connections (tuyapi, protocol 3.5), acked multi-DP sets, groups, snapshots, animations (paced ≤4 cmd/s), connect-time sync, rainbow welcome sweep, and the identical local API on 127.0.0.1:8377 (/cmd, /status, /syntax, WLED-compat /json/state). Frontends cannot tell which engine is serving them — the two are interchangeable behind the API.

Status

  • ✅ Offline-validated: 25 assertions on mocked devices (npm test).
  • ✅ Live-validated on real Tuya lamps (2026-07-04): protocol 3.5 session negotiation, connect + rainbow greet + sync writes, color commands acked (ok:true), auto-deauth integration — both lamps held concurrently.
  • ◐ One fix pending live confirmation: state readback now uses a plain DPS query (get({})) — get({schema:true}) made the 3.5 firmware drop the session.

Run

npm install
node engine.js        # headless daemon; config = tuya-lamps.json next to engine.js
npm test              # offline mock test (port 18377)

One host at a time: never run this alongside the Python engine host (Stream Deck plugin or daemon.py) — every host binds port 8377 (and Tuya lamps additionally accept only one local connection).

Part of the OpenLamp family. Made by BenLab with the help of Claude.

About

Node.js port of the OpenLamp engine — same OLS contract, interchangeable behind the local API

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors