{"_id":"@ecopoesis/homebridge-dmx","_rev":"13-ef044e7d1b06ed5cf9a17fe51b08eee8","name":"@ecopoesis/homebridge-dmx","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@ecopoesis/homebridge-dmx","version":"0.1.0","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.1.0","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"466896e9eaef840195654a745876b63990b6cf42","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.1.0.tgz","fileCount":226,"integrity":"sha512-yyR6hkx0VhuYF4efFiDoK2KHr+KMm6aRKzsF28RooOlMrkpLM12WPQW+cw/2LSr1Wko/6AF1HnP+8YPDjg26cw==","signatures":[{"sig":"MEUCIQCQKUhGk9Mfc9iDUGq8Wf14fS+eipTkrzMo7+DBBEbewgIgVjRMHMtJ1nIIXkvgzNz3X0ncJe0R8mwcdFcB0sH/q6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958868},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"7e7081e98bcefc6d0994a99618291bcef9284423","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.1.0_1779633915415_0.7091589509393454","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ecopoesis/homebridge-dmx","version":"0.2.0","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.2.0","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"c2a75c08562991b51f83df6c490a2e441c7029c1","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.2.0.tgz","fileCount":231,"integrity":"sha512-Ff+l9MRxDbqurtWV56B99QSQPGVy/7x7xsKomqK7FejucUd0Fytffqfpx7z3Lm4/gG0xGz+0ekWa5u6r8lCSqA==","signatures":[{"sig":"MEUCIGGcb8V2eL00e/dHWJz7DQT2HNqvGvUInGQZYdJFtSQuAiEAxuIIkO+Thl8gZlGg5BfFuPqmYazvnWKF85dsZOsdOnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":983505},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"78eadca8d96e1f933a58af58c279ad2b3b840dea","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.2.0_1779637251125_0.7237279781951202","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ecopoesis/homebridge-dmx","version":"0.3.0","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.3.0","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"3f655554272a37e262329296e0427a343fe6eab9","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.3.0.tgz","fileCount":236,"integrity":"sha512-ikZ6Npoq/JxzKeMiexYs47ajAepdcJqeXPpaCLo/92aEIsETHxklI1tZB669aPtrSwXLDPrsKNv1fo0zpcT5mA==","signatures":[{"sig":"MEUCIBZEl4/cgndNHGAp4gzXXREKCliMqaEz9/GlFJim83WBAiEAiDkC5LgepN4XZGDNSeTfCA7ZAtATRfQ1KlNyeSLkpzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1007440},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"6d23810cd8b41a3f91d6c6b18ee064efcad3f4c9","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.3.0_1779637822041_0.052072881874587695","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ecopoesis/homebridge-dmx","version":"0.4.0","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.4.0","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"3d61ac6ecb2330855a9d7a2576cd143aa135ebd4","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.4.0.tgz","fileCount":239,"integrity":"sha512-NnFKuATweTLKF+Xr6qp2Qob1TRZTmtKZHCP5PqJxOmLr0fMwXUmPgSZGOzWp6ipoNC4op3rtimSBKqJUNN+tbQ==","signatures":[{"sig":"MEUCIQDT9DMQcV17WXHZxaCHnjHMvq7Vy6c0nKOf7LizgcwdcAIgaWrVeZKpJ2R66AKZaoKS+3J019Y2EaupcGSEPmn6kr0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1044208},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"8396646617d5f450c72700d0c5aaeafc76974b0a","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.4.0_1787704188399_0.8563936573221529","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ecopoesis/homebridge-dmx","version":"0.5.0","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.5.0","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"baf87f1433ee9b4e2a1527dbaa016c0b7e043e2b","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.5.0.tgz","fileCount":249,"integrity":"sha512-OgvygpXgm9/WvTb8pJTbwxzS/H1jIy/q5RQbGBkqtcuaf//6LkJasGgn+1rcxDoXylwO+sKjs8R13D5DsdH4rQ==","signatures":[{"sig":"MEYCIQDFQauNsFXSSILnp3aRa5xYhi4/PegEociakuJnBDTogQIhALmSjBNIvPFzQYZ8Tb0squXyI7ebgqSkkjcOpBAd/f8g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1073156},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"cdba23a4b33289cc3289d4c153662d1f0c69c655","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.5.0_1788128259623_0.7046860738155005","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@ecopoesis/homebridge-dmx","version":"0.5.1","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.5.1","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"4ead99f0d9e5db9f96e1f6819194a1b1ab10e60d","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.5.1.tgz","fileCount":254,"integrity":"sha512-x+fF41ILCZSvY7A+oq6D4bxu+W8plbzDXzRQE/12R2Bgu/bh+nkz6bOtMdjcZWR2Mo8MCcuPyZ5UzlBrD56aIg==","signatures":[{"sig":"MEUCIB3DH0rxFSLfl10TomojtV3bCksSmBKYecYz3Gi8WTTzAiEAlR8oPlxCkudKGjuZ7c/MAfHXjsnsZsIFtIjfGX0T7FU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1094995},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"cdba23a4b33289cc3289d4c153662d1f0c69c655","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.5.1_1788129372617_0.6881053547538094","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@ecopoesis/homebridge-dmx","version":"0.5.2","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.5.2","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"635485c5c518404c02fda8cd1e4959eee1a57f48","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.5.2.tgz","fileCount":254,"integrity":"sha512-HvwyhqeAA6T5omD/2FsUjrmwskF1BfHLNXptc2qr+CKmLK0jiuVhva5wbhHStqnjJNbxyGeFB8O6M4BM3aLP4A==","signatures":[{"sig":"MEQCIGKgicM1Q4nCkjn8YjlWL7UdiKpk2QW4J5zWGGRi7f1zAiAxhXlxuaTTAbXR0Lys9KKv17x2uzRP2jER2Y3jirgxew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1095450},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"c1e6e9a0855b5c7b9515c1c282ab82d5f25af11a","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.5.2_1788129490232_0.5535776238218766","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@ecopoesis/homebridge-dmx","version":"0.5.3","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.5.3","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"bb4a7da57d071eea33ed2e9df0cc060e421d3a43","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.5.3.tgz","fileCount":255,"integrity":"sha512-VFG1a+hpEzpK8F5d/MnEtHZOmTosljewdM4rEIiA2JVaEXHHtv8sF1Z5MjYsoKRFkthsIPqqbe5tFdULbCEIvQ==","signatures":[{"sig":"MEQCIGR2luLrH2wQFYjUNiW8wkso4qW9hNVyg64yVsK925DpAiAYneMIW30/sAdetBTdcjxu/Jbf9Vz2w+IHmigA8egHWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1109020},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"c1e6e9a0855b5c7b9515c1c282ab82d5f25af11a","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.5.3_1788393851226_0.17838290933156342","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@ecopoesis/homebridge-dmx","version":"0.5.4","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.5.4","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"bbbeecc74d94a8074ba8088a0a4724da854f6c22","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.5.4.tgz","fileCount":255,"integrity":"sha512-TE30rwtWmw7TRToidFA/wgR1g0LXi6LxSIat0mMvEmw4s3B+FBA0BZuxdJMwcyjQu4CyRmpjG3c4GhhV9Hrisw==","signatures":[{"sig":"MEUCIQCPUtExXRo1EPn9vClvpIetUAJfeNnAsCJL3RryCrdSPQIgVLPz1wm1QhY9sRkLG9Kyd69g3QnHuUSE+A4mRCBpgWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1110488},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"dffd9f4bdf9925228fae3d48ddcbe5905e485158","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.5.4_1788394273911_0.545379795201028","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@ecopoesis/homebridge-dmx","version":"0.5.5","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.5.5","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"df8f3cd2388ce2bee1950265365b0ceb2771a5f6","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.5.5.tgz","fileCount":255,"integrity":"sha512-2SlK//VKtKD2CB9gu0foqy72mCEsrRJvjDTkYbEdiQjH1KrMNWOAV86/j4IbLHymvpJUT96dBcbTAOsaiQp3Eg==","signatures":[{"sig":"MEUCIHi3SljWkN8pO3TcT/jJI89SCr3KsDwU2q0+KoTCmcfFAiEA2/7TDvqeXgVQwyGWsysSX+UZ2NKBadtmbNSmirqgeuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1123247},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"3d422348663e0f705b021d85381a827e18e30cd2","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.5.5_1788394823328_0.6952053241869209","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ecopoesis/homebridge-dmx","version":"0.6.0","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.6.0","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"6d44b3b798c9c64b59f1420b0f3936b182617eb8","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.6.0.tgz","fileCount":275,"integrity":"sha512-7Gj2KKJKAEBGCQjZ8i6Q3WvArvsC62oB0Yl9SRYxAwPktvssqEcaZzLSajnqDD6rJTaXUeW5iEksH8IgJgLjnA==","signatures":[{"sig":"MEQCIGiWmvShsXFHAKKtH2JcFWM5YQ68BDnqAEHqOFnQs6F8AiAcA2X++4Uqo1PH0TTHvmYU6piPvyNac1eVQ4FWxxDrdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1265384},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"1abdeddd06a9d43cf9bf7c7d7fa7e266e5dc36a1","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.6.0_1788483564405_0.8451055817539113","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@ecopoesis/homebridge-dmx","version":"0.6.1","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","_id":"@ecopoesis/homebridge-dmx@0.6.1","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"bin":{"stick":"dist/cli/stick.js"},"dist":{"shasum":"4064c4825debc784808960c5ed953329b5826afe","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.6.1.tgz","fileCount":275,"integrity":"sha512-0HvK1EqEPKjS2A2MgAy1TQzNhLVc7MQMg2GJ3LAfkb0u0PSkN0rawty9yn1jjANysoMP72WqEpt8C9hBwZ7UtQ==","signatures":[{"sig":"MEUCIFVu0ILBdl1Cnqh2uZuk4L0UMvhRoDlN3Rgw4Q/WRXoUAiEAtszbgU55IXlcM3/HiDYPHBBv5mnmm39mlu74mGthqcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1273538},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"0b3c571e7a3091f248a6979dab749fadc2788291","scripts":{"build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dmx_0.6.1_1788484209169_0.5194462107803783","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@ecopoesis/homebridge-dmx@0.7.0","bin":{"stick":"dist/cli/stick.js"},"bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"dist":{"shasum":"50463b39b743a10faeb89e589778170cc1831201","tarball":"https://registry.npmjs.org/@ecopoesis/homebridge-dmx/-/homebridge-dmx-0.7.0.tgz","fileCount":280,"integrity":"sha512-g2Mu/Nbo1Ld2+ntagKgla+jTYeaku9GwMufnjTdNsdGst4B+CdtE2FUxJ/fvemvA2VoAaCNXz6D6eJRE2RvANg==","signatures":[{"sig":"MEQCICTdIQBpxsbXB5o0lYpvyU5x7+hHCp5oI4dFZ3viU++8AiB+PANm+I3pU1R6hBLzS1I6m16Iqs51zd9O3Rghpx2HVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICfoeLrq6G0shMP/o9rEP8cPEXgqlLbfR70sHpLJI7+OAiEA69xGtfIS1xNjf9NhLbr9YFKofoO/S77G1oMr0QeaBRQ="}],"unpackedSize":1288104},"main":"dist/index.js","name":"@ecopoesis/homebridge-dmx","type":"module","types":"./dist/index.d.ts","author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"engines":{"node":">=18.15.0","homebridge":">=1.5.0"},"gitHead":"bbd4c68081ca756e648aab9162a2d690b28c0597","license":"Apache-2.0","scripts":{"test":"npm run build && node --test test/","build":"rimraf ./dist && tsc","stick":"npm run build && node dist/cli/stick.js","watch":"npm run build && npm link && nodemon"},"version":"0.7.0","_npmUser":{"name":"ecopoesis","email":"miker@miker.org"},"homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"_npmVersion":"10.2.4","description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","directories":{},"displayName":"DMX","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"_nodeVersion":"20.11.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","homebridge":"^1.5.0","typescript":"^5.0.0","@types/node":"^18.0.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/homebridge-dmx_0.7.0_1791071996612_0.9021144659848346"}}},"time":{"created":"2026-05-24T14:45:15.217Z","modified":"2026-10-03T23:59:56.853Z","0.1.0":"2026-05-24T14:45:15.569Z","0.2.0":"2026-05-24T15:40:51.298Z","0.3.0":"2026-05-24T15:50:22.243Z","0.4.0":"2026-08-26T00:29:48.556Z","0.5.0":"2026-08-30T22:17:39.801Z","0.5.1":"2026-08-30T22:36:12.803Z","0.5.2":"2026-08-30T22:38:10.396Z","0.5.3":"2026-09-03T00:04:11.369Z","0.5.4":"2026-09-03T00:11:14.120Z","0.5.5":"2026-09-03T00:20:23.489Z","0.6.0":"2026-09-04T00:59:24.548Z","0.6.1":"2026-09-04T01:10:09.308Z","0.7.0":"2026-10-03T23:59:56.718Z"},"bugs":{"url":"https://github.com/ecopoesis/homebridge-dmx/issues"},"author":{"url":"https://github.com/ecopoesis","name":"Mike Roberts","email":"miker@miker.org"},"license":"Apache-2.0","homepage":"https://github.com/ecopoesis/homebridge-dmx#readme","keywords":["homebridge-plugin","dmx","nicolaudie","stick-de3","wac"],"repository":{"url":"git+https://github.com/ecopoesis/homebridge-dmx.git","type":"git"},"description":"Homebridge platform for DMX controllers (currently Nicolaudie Stick-DE3)","maintainers":[{"name":"ecopoesis","email":"miker@miker.org"}],"readme":"# homebridge-dmx\n\nHomebridge platform plugin that exposes DMX fixtures as HomeKit Lightbulb\naccessories. The DMX controller is abstracted so additional controllers can be\nplugged in without rewriting your patch; the supported controller today is the\n**Nicolaudie Stick-DE3** (TCP/2431 + AES-256-CBC-encrypted 576-byte UDP DMX\nstream, reverse-engineered from the ESA2 Hardware Manager).\n\n[![npm](https://img.shields.io/npm/v/@ecopoesis/homebridge-dmx.svg)](https://www.npmjs.com/package/@ecopoesis/homebridge-dmx)\n\n## Nicolaudie Stick-DE3\n\nPlease, under no circumstances, should you buy a Nicolaudie Stick-DE3 because this plugin exists.\n\nThe Stick-DE3 hardware, and its accompanying software, are some of the worst I have had the misfortune to use.\n\nSome of the litany of problems with the Stick-DE3 ecosystem:\n* The Stick does not support power-over-ethernet. It takes power over an Ethernet (8P8C) shaped port, but it's non-standard.\n* The Stick touchscreen is very touchy. And not in a good way. Phantom clicks, slow responsiveness: all the problems from pre-iPhone touchscreens are here. I believe I've clicked buttons by looking at it too hard.\n* Every setting change also changes the MAC address. Hope you didn't want to give it a static address via DHCP.\n* HSV-style color spaces are not supported at all. Except: look at the color-wheel. It's in HSV. So they do support converting from HSV to RGB or various RGB+W derivatives, but can't pass the native values their controller's UI generates straight through to DMX channels.\n* The software suite is ancient and terrible. ESA Pro, ESA Pro 2, and Hardware Manager all only support x86 on MacOS. In 2026. Apple Silicon came out 6 years ago!\n* The software has a UI that would have looked dated in Windows 95.\n* Why is there so much encryption? This is my hardware. Nicolaudie sensibly ships a way to turn off IoT access, making this a pure NoT (\"Network of Things\") device. Let me talk to it.\n* Why do you make a DMX interface without simple channel control? It'd be great if I could use this as intended, but since it doesn't support HSV-style color, give me an easy escape hatch. You have a (poorly) documented API. Just add the ability for me to send a DMX packet. I shouldn't need to break AES to do that.\n\nThat said, this plugin does just that. Reusing the encryption scheme used by Hardware Manager (with keys extracted from the binary) lets us send the same type of per-channel control used there. We then cleanly disconnect; the Stick latches the last frame, with a brief wall-controller blink as a side effect.\n\n`send_dmx.mjs` is the pieces of the protocol needed to authenticate and start streaming, including the keys extracted from Hardware Manager. Other files in `tools` are the code developed to get to that point.\n\nIf you, like me, bought a Stick-DE3 based on the assumption that it was competently executed and are now stuck with it, hopefully this repo and the research it contains can help you actually make it useful.\n\n## Status\n\n| Piece | State |\n| --- | --- |\n| Stick-DE3 control (auth, ECDH, encrypted DMX stream) | ✅ working |\n| Color models: dimmer, cct, rgb, rgbw, rgbww, rgbaw, hsvcct, rgbcct | ✅ |\n| YAML and Homebridge-UI config | ✅ |\n| sACN (E1.31) gateways, e.g. ENTTEC DIN Ethergate Mk2 | ✅ (`sACN` type; unicast, A/B → sACN universes 1/2, 1 Hz keepalive stream) |\n| Multiple controllers in one patch | ✅ (`sACN` and `StickDE3` types) |\n| Universe B on the Stick | 🚧 plumbed but the wire encoding is unknown (works on `sACN`) |\n| Stick-DE3 password / \"Cloud Access\" auth | 🚧 not implemented |\n| State read-back | ✅ on sACN + Ethergate Mk2 (seeds HomeKit from the gateway's live buffers at startup; optional `statePollSeconds`); 🚧 elsewhere |\n| Zones (multi-fixture virtual Lightbulbs) | ✅ |\n| Shows (timed crossfades / chases as HomeKit switches) | ✅ 25 Hz on `sACN`; coarse (~3 s steps) on `StickDE3` |\n\n## How it works\n\nEach HomeKit change is rendered into DMX bytes by the fixture's color model\n(HSV → channel values for the appropriate model), written into a per-universe\nbuffer, and dispatched via a debounced controller. After 750 ms of quiet (or\nduring a slider drag, continuously), the controller spawns\n**`tools/send_dmx.mjs`** as a child process which runs the full Stick-DE3\nhandshake + 750 ms of 25 Hz encrypted UDP frames + a dirty close (RST → Stick\nlatches the last values).\n\nThe subprocess-per-transaction architecture is an empirical workaround:\nrunning the same protocol in-process in a long-lived plugin only worked for\nthe first transaction; sessions 2+ silently failed to drive output. Running\neach transaction in a fresh node process bypasses whatever in-process state\npoisons subsequent sessions. Each transaction costs ~1.5–2 s total.\n\n## Install\n\n```bash\nnpm install -g @ecopoesis/homebridge-dmx\n```\n\nOr, in the Homebridge UI: **Plugins** → search for \"DMX\" → install.\n\n## Config\n\nTwo flavours: inline JSON via the Homebridge UI, or external YAML pointed to by\n`yamlPath`. YAML is recommended for anything beyond a couple of fixtures.\n\nMinimal inline config:\n\n```json\n\"platforms\": [\n  {\n    \"platform\": \"DMX\",\n    \"name\": \"DMX\",\n    \"controllers\": [\n      { \"id\": \"main\", \"type\": \"StickDE3\", \"ip\": \"192.168.96.2\" }\n    ],\n    \"profiles\": [\n      {\n        \"name\": \"WAC\",\n        \"colormodel\": \"hsvcct\",\n        \"channel_order\": [\n          \"Intensity\", \"Intensity (Fine)\",\n          \"ColorTemp 1650-8000\",\n          \"Saturation\", \"Hue\"\n        ]\n      }\n    ],\n    \"patch\": [\n      { \"id\": \"a_down\", \"name\": \"A Down\", \"type\": \"WAC\", \"controller\": \"main\", \"start\": 6 }\n    ]\n  }\n]\n```\n\nExternal YAML form (recommended):\n\n```json\n\"platforms\": [\n  { \"platform\": \"DMX\", \"yamlPath\": \"/homebridge/dmx.yaml\" }\n]\n```\n\nSee [`examples/dmx.yaml`](examples/dmx.yaml) for a starting point.\n\n## Color models\n\n| Model | Channels | HomeKit characteristics |\n| --- | --- | --- |\n| `dimmer` | 1 (Intensity, +optional Fine) | On, Brightness |\n| `cct` | 2 (Intensity, ColorTemp `KMin-KMax`) | On, Brightness, ColorTemperature |\n| `rgb` | 3 (Red, Green, Blue — any order) | On, Brightness, Hue, Saturation |\n| `rgbw` | 4 (+ White; W = min(R,G,B)) | On, Brightness, Hue, Saturation |\n| `rgbww` | 5 (+ WarmWhite, CoolWhite — split by CCT) | On, Brightness, Hue, Saturation, ColorTemperature |\n| `rgbaw` | 5 (+ Amber, White) | On, Brightness, Hue, Saturation |\n| `hsvcct` | 5 (Intensity, Intensity (Fine), ColorTemp, Saturation, Hue) | All five characteristics; HomeKit-native (the WAC DC-WD05 layout) |\n| `rgbcct` | 5 (Brightness, ColorTemp `KMin-KMax`, Red, Green, Blue) | All five; saturation 0 = CCT white with RGB dark, otherwise full-value RGB dimmed by Brightness (the WAC Colorscaping transformer zone layout) |\n\nChannel-name syntax:\n\n- `(Fine)` appended → 16-bit companion to the preceding channel\n  (e.g. `Intensity (Fine)` is the low byte of a 16-bit intensity).\n- CCT channels carry a Kelvin range: `ColorTemp 1650-8000`,\n  `WarmWhite 2700`, `CoolWhite 6500`.\n- Names are case-insensitive and recognise common aliases (`R`/`Red`,\n  `WW`/`Warm White`/`WarmWhite`, etc.).\n\n## Shows\n\nA show is a timed sequence of looks — the classic DMX chaser model shared by\nQLC+, the Nicolaudie ESA/Sunlite scene editor and node-dmx's `Animation`:\na list of **steps**, each with a **look** (target → color), a **fade** time\nto crossfade into it, and a **hold** time to sit on it. Targets not named in\na step keep their previous value (cue-list tracking). Shows loop unless\n`loop: false`.\n\nEach runnable show is a HomeKit **Switch**. One show runs at a time — turning\none on stops whichever was running. Turning a switch off freezes the lights\nwhere they are by default; `onStop: off` sends them dark instead (so a\nbedtime automation can just turn the show off), and `onStop: restore` puts\nthem back to their pre-show state. Changing one of a show's lights from\nHomeKit stops the show and leaves the lights alone (the user is taking\nover). A one-shot show turns its switch off when it finishes, applying\n`onStop` too. The first fade starts from whatever the lights are doing, so\nshows fade in.\n\n```yaml\ngroups:                               # fixture sets for looks; no HomeKit tile\n  odd:  [bow-port-down, port-forward-up, starboard-aft-up]\n  even: [bow-port-up, port-forward-down, starboard-aft-down]\n\npalette:                              # optional color names\n  surprise pink: \"#f2a1ff\"\n\nshows:\n  - id: crossfade                     # template: `~` params are unbound → no switch\n    params: { a: ~, b: ~, secs: 10 }\n    steps:\n      - look: { odd: $a, even: $b }\n        fade: $secs\n      - look: { odd: $b, even: $a }\n        fade: $secs\n\n  - id: texture                       # instance → \"Texture\" switch\n    name: Texture\n    extends: crossfade\n    params: { a: indigo, b: surprise pink, secs: 20 }\n    onStop: off                       # switch off = lights off\n\n  - id: halloween\n    name: Halloween\n    extends: crossfade\n    params: { a: orange @ 100%, b: darkviolet, secs: 6 }\n```\n\nShow fields: `id`, `name`, `extends`, `params`, `steps`, `loop` (default\ntrue), `fade` / `hold` / `ease` (step defaults), `onStop` (`freeze`, `off`,\n`restore`), `switch: false` to hide a runnable show. Step fields: `look`, `fade`, `hold`, `ease` (`linear` or\n`sine`). Times are seconds, or `500ms` / `10s` / `2m`. `$name` / `${name}`\nreferences substitute params in step values (not in look target keys); a\nvalue that is exactly one reference keeps the param's type, so `fade: $secs`\nstays numeric.\n\nLook targets: a fixture id, a zone id, a group id, `all`, or several\nseparated by commas. Later keys override earlier ones. `groups` is a map of\ngroup id → fixture or zone ids; unlike zones, groups create no accessory.\n\nColor specs: any CSS color name (`indigo`, `hotpink`), a `palette` name,\n`#rrggbb`, `3000K` (white mode), `hsv(275, 100, 80)`, `off`, or an object\n(`{hue, saturation, brightness}` / `{kelvin, brightness}`). CSS colors carry\ntheir own value, so `indigo` lands at 51 % — append `@ 100%` to override\nbrightness. Fades interpolate brightness and saturation linearly, hue along\nthe shortest arc, and a white↔color fade is a clean (de)saturation.\n\nFrame rate follows the controller: 25 Hz on `sACN`; on `StickDE3` every frame\nis a ~2 s subprocess transaction, so fades there are a slow staircase.\n\n## CLI\n\nA `stick` CLI is included for hand-testing without Homebridge:\n\n```bash\n# Set channel 6 of universe A to 255 on a Stick at 192.168.96.2\nnpx -p @ecopoesis/homebridge-dmx stick 192.168.96.2 uA,6=255\n\n# Named fixture from your YAML\nstick --config ~/.config/dmx.yaml 192.168.96.2 a_down=#ff8800\n```\n\nValue forms: `#rrggbb`, `#rgb`, `hsl(120, 100%, 50%)`, `hwb(180 10% 20%)`,\n`rgb(255,128,0)`, `kelvin(2700)`, `0..255` (dimmer profiles), `on`, `off`,\n`50%`.\n\n## Required Stick-DE3 device setup\n\nBrand-new (or factory-reset) Stick-DE3 devices ship with pathological DMX\noutput timing. Symptom: every DMX change applies ~2–3 minutes late then snaps.\nFix via **USB-connected Hardware Manager** → DMX/fader screen → set\n**Standard/Recommended** (MBB 100 / Break 180 / MAB 20 / MBS 4). This screen\nis USB-only; a factory Reset does NOT fix it. See `CLAUDE.md` →\n\"Required device setup\" for the full landmine.\n\n## Single-session lock\n\nWhile the plugin is mid-transaction (~1.5 s per change), the Stick is unusable\nfrom Hardware Manager (single TCP/2431 session, mutually exclusive). For an\nidle Homebridge the Stick is free for HWM commissioning at all other times.\nThe latch model (clean disconnect leaves the last value lit) is what lets us\nbe polite about this.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}