{"_id":"homebridge-dyson-solarcycle-morph","_rev":"35-06d1d38ae9ad1a79f336eddf27d8e31c","name":"homebridge-dyson-solarcycle-morph","dist-tags":{"latest":"1.7.6"},"versions":{"0.1.0":{"name":"homebridge-dyson-solarcycle-morph","version":"0.1.0","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@0.1.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"9190757754b5dd8c02c0d78c5f21cbc3b44445e8","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-0.1.0.tgz","fileCount":57,"integrity":"sha512-u3c6MmVkxEdDubG8cjRgkKFNaXVuGSD6vj7iWb07dVSl6S4lmZsYv1TZxL1+PxxcVG5bqWEutCHzLRUxivFqXg==","signatures":[{"sig":"MEQCIB9tmYIuPzZxju6ByUATS38htgcz/oSVr2ULyHgxIHZ8AiAC5Bkb0pa7t4Oh9J6k0m6QsL0coFIUKIH9bJ74BMADfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220359},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"ecb221daa7acb5c178af0d7b7cde1bde30f4bb09","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"rummeyer","email":"oliver@rummeyer.com"},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"11.19.1","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"26.8.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_0.1.0_1789644651282_0.600196496350089","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"homebridge-dyson-solarcycle-morph","version":"0.2.0","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@0.2.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"7950cf17ca247d2daed16fd4ec10345995a878ec","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-0.2.0.tgz","fileCount":57,"integrity":"sha512-dsWn3+RYFdm3a3ptpyMTZlMfpnBxRsRU8NaPg/+WO20MK0azGT874ODnoiIXsvD2Wwnr1coEnLPRJIQ4m8jzrQ==","signatures":[{"sig":"MEYCIQD1Y7nfl3JBI94LNZtdX6SMeqAMj0oNJdnzFnz74VYhtAIhALUGelj7y3Z3TAJG+WgeHq+2+0fnjtCkDMk94yTpY8Fz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFmUd+R5THKgHTN2Hr/4BNb0jsN7Tp0pf2mgOoVcEquoAiEAlDtKdap+mh6amTRYnycavjCcK7HXvhPZU3EcvcakPoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":220613},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"84d1adf42766597c2ce53ddb5a18f904a06db023","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_0.2.0_1789645138653_0.7099087792876384","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"homebridge-dyson-solarcycle-morph","version":"0.2.1","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@0.2.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"015161070a3faaa40499eb0f8f4597ae548a621c","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-0.2.1.tgz","fileCount":57,"integrity":"sha512-uApvK9AdZ21TvGd1MgsVAvEEu+Mtxvh61FTKzxJtrS3R2d9I8Y2uP2QbWx0Q67KML/C4ThSmEz8BwE9+WsBxTg==","signatures":[{"sig":"MEQCIHXrg8NGEcGWHmXjHexmA9iLp3MtrJ4k7NTz2w2em/e3AiBPL4TXBagcnfq0ONZIWOtarWdhoNIqzixYduoBdmtwgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDzXdDOr9XuAUN0VoVuXtwiIVqN0IhOdM5OnzrIxrKxUgIhAM4Uk2P0lRqUsJrlUT7p/SBAyILGNVm9bXnh2ZscHgUM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":221249},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"419bdaa2174a7cd58bfe246bf20b80899c1f906d","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_0.2.1_1789647331808_0.27773456069829705","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"homebridge-dyson-solarcycle-morph","version":"0.2.2","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@0.2.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"26ce06730b3bcd8910738c48926d05a97fa43ad6","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-0.2.2.tgz","fileCount":57,"integrity":"sha512-vr80DE3aOcyJCzVG0hYyF7guP5dXTj29zGAA8v+Cj/QIyNGigfRNYs2kivFaGbbscOD9ibwKkFimS453qLMGPA==","signatures":[{"sig":"MEUCIEC+1STnoU83KNAi7ArPlBpx3tnwwXX6RGwPYBJJ6+AYAiEA4Ctb/QYTXKHen1zYWmeuzmPr9OsLzSIzqeqfh8VPHi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDN4VVhzwROCpDBk41ueRkjj+oeXWDN+m9rj57xF8NGwwIhALZBVL94+QvrH8Bz5RfjtGz17p4ipLnGSJ2dqQkvDFiD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233852},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"775460fa482974fdd65b5dff9d45006aa69f50da","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_0.2.2_1789650776236_0.7554263427110017","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"homebridge-dyson-solarcycle-morph","version":"0.3.0","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@0.3.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"80ae6727ef05d92f68be9472a8221aa46bab9d9a","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-0.3.0.tgz","fileCount":61,"integrity":"sha512-DTK4NqDS9lbQ68STyA9T8NF16byAlFy6+VhsQ3tVgSD9qwP/HZhRssN62rFx/NnIS7PE+M+1XeQfroF+s99ZOg==","signatures":[{"sig":"MEYCIQDaitCxwJ2u9JNt2bdpekjSqeWaBY1QTdv+5S6/Ldta0AIhAPI8M7R1QkC2Xj1S6X85UDHAlXqGeQRLU3qZApa2vKkP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQ7Kx2kuHGonJb+zwXJ9oehERKZ1Rp6WwJP6YBZGJLZQIgJ2NalM3qrG44nas4XbjpP7M3dyGAAofknGK/rk7J5fI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286773},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"8efeaa85189ff4a9782ecec29ccb5c71ca65809d","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_0.3.0_1789718624754_0.5878530432073481","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"homebridge-dyson-solarcycle-morph","version":"0.4.0","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@0.4.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"dacb2a4ef44e3b9d0c2b1dfea15c3de44253d7bb","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-0.4.0.tgz","fileCount":61,"integrity":"sha512-UaTQRcoLnxZPYYX9AvtBSeCI8hsbyGGf47J1mWLTswCVYeifgDwpL8jlfOP6C6ZCHqyn+znO799m3M3iyHx67w==","signatures":[{"sig":"MEUCIAFKyUVtFKgAcTnwyWaVbvM3S8/6sGV2rpdOfoNDgqT5AiEA1IV+5+q16U9fQWsteijwllLCD5deFPibeU7AbZpcybA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCFA1d6rCy5ar/QINSl36ubB+hmmGDoMd4fYbF/yq0gdwIgHATkqnQl6sJK0ID5otzqwejj/Qp4izceeu/hEj5jTro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":302553},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"6769845ef3de8df29a333e70eed3972c255c915b","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_0.4.0_1789722507778_0.67862892467043","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.0.0","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.0.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"6ebfa8411585b70ac6e54faf4967150cb6ef32a7","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.0.0.tgz","fileCount":61,"integrity":"sha512-l+d5vRFe+fG8H9PUX3vjyoFSAwfddJDXlVEi7hc/aPPOP1z37FDxQbz8NMqIv7iH3r51Xw57rfR1HZ+n6KWRZg==","signatures":[{"sig":"MEUCIQCAMDBJSm6s/cnWKW6I8UAhgF73RhTXSseiJrHwX6hlOAIgH6YpgwHu0ekbRwJyFDPOreJ/6GYF4MxjVulKhj21TEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC4wWnlVjL++wj/kotFzltax0A+N8LgwMAltqTRS/TGJwIhAKVErspZPH+i3IEz4FWrXeyurVucO4xQIWV9qxbHS5b5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":319072},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"2013b4028c24e955a4ed0406602552da241b451c","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.0.0_1789725660980_0.5754405263759772","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.0.1","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.0.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"2e2b82dfbcab21d60d1bbb82f6b6d367a53cd8b1","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.0.1.tgz","fileCount":61,"integrity":"sha512-2FL0e92G5f50h9MgcFQdx/w0LBGF14hSDP60+JwL0m9yWT/MZW9SacyiSt0iC+w+gIP6IrvEkVzkfoRFnbRaRA==","signatures":[{"sig":"MEQCIGO0RQdqYjxuYiXDdfMQq76cRob1MmniqF1NM6Oe+8gFAiBbALTvMNmeOvoCfsQdnJXOLEZbQeDllOsPv6GsawEZlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC1Ef5Xu1Ghlj0Z8rjHZzoIrC3mjB5hXPFIC+NtYAN8NQIhAPcnGcs2lKnJbWmyeXX9P903/ZQ881JXpMwQ6rzyQS9/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":320239},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"0a3a44a61f0fd1ba04df4b6c7945eff6d4dee5fc","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph task light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.0.1_1789725903402_0.03158442965743791","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"homebridge-dyson-solarcycle-morph","version":"1.0.2","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.0.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"4821be8285ef2529aaa3b1eef9fbe68f12ae7ee1","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.0.2.tgz","fileCount":62,"integrity":"sha512-adIybuF8WUKcXMhcY5DpGOI5Ci/G4d6NnsGojuoxu9s3y3/pkDpeT/UgtiZKKkxA2oq4bbTC5KHJM5pBkFSD3g==","signatures":[{"sig":"MEYCIQCljLvTQoP9yiTqEdqERwnCqkZjnZxRXMgg0QBZNYEjoQIhAPvRAi/Zm+eKdT0omROXIwjvfjc+zTcO1B4Np1KjNO+k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIF1xrCCSuEFtv66pyBX0qpEtOquMOg+fyfeBTvoTZOOzAiA3tLpJ+JmGf/StA8rV0hXVrfd76O3Di4SedmWlQQNzbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":332300},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"38b8cbac041db20343887c91bf5b098a208484fa","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.0.2_1789726434972_0.6542678850023136","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.1.0","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.1.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"b459dd6896e64a62d554a9f84e7caa0e4bbf3724","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.1.0.tgz","fileCount":62,"integrity":"sha512-OBvEnrIJFx9ptFv3+bwIdOinX8dEOqk1u1LLU8FtBPf1Lc5kpvg4w1+Fmh3HEqZ8Ba0rmkS4v0Qmcc3GwS+LOA==","signatures":[{"sig":"MEYCIQC2YAE3AU201GCUs8zyq79SwtO3cvrayhIZYMQcirGRvgIhAKZTn4YBr3PTa5Um1eo/ayGzTu9rSGgPznGakK0nLg5w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCIviTOOzBSu2/b1694fVdZel2o5q89H3fApWZDRU6kJAIhAIBb20Cds0ImGq9x2/WlTCHz2MX5sTFZgT6TXY5WPznT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":342573},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"95458672df687a29ae2a31e3ee469f0da4bb17c4","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.1.0_1789826320866_0.13421876994320048","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.1.1","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.1.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"9e96b54ab5a523140dd33ea7f2b285571a31a4c2","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.1.1.tgz","fileCount":62,"integrity":"sha512-Pfc1CsbyzeRzcVTmh3qvvn6LfnRttijF7U/UBsxfb0QceiPt8pWoBEgAQJVPGiWZ6QtcxAEw+41XiazwkK16OA==","signatures":[{"sig":"MEUCIQCzCEhXWSjHV/Unz4VbtkOZVhONZBX7gQ9LMciKmrGGPAIgW+n8lte/yhtA1lXMw+5KSchS0uZXHbL+CL+wirNE2Bg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH7PN9pXVEYX4/F9btpd5pZfP05t/+S+nTDSgRjPVpZyAiEA7JhoJS84Nyx1TQvSXzeHFuXFQO3IuSFaqTA+bwFWfX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":343974},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"4e99668ce044e268272a4dac8a8bb30b8f2fa113","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.1.1_1789827606038_0.9445907500327775","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"homebridge-dyson-solarcycle-morph","version":"1.1.2","keywords":["homebridge-plugin","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.1.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"c23d93b2cd5967b7ca4052fef6ac2a06557c6bed","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.1.2.tgz","fileCount":62,"integrity":"sha512-RnrfNf3JItY91BI7uHCrb6s4TS4U/NawwoEP8bbJWCtlmyukNZckR8bSrDtoJEJn9oj9V4YEuBo5I6lRf9k50Q==","signatures":[{"sig":"MEYCIQDLQXAX6aWarF7gXJSEVsaLeO9C9RLW72rL3mVCcxD1cwIhAPg+TjVgOgzqLpeF+2M2Cyip5ZAkTKxDDVtXM/6P9epy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCID+K0yJH5bsdHfdA27W28RE8lQHH9cFHT85Pdmti4yurAiEA5Q2QipiHUg6bPyyYIpM+mxqjcp6i8v/T9JJbLjy4CVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":344571},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"31b2194af0b5de0062764e791ba2c4a02126b175","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.1.2_1789973586308_0.8141485639080404","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.2.0","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.2.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"2762558c0508b09c07fe5d32b0a7e38dd0663519","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.2.0.tgz","fileCount":62,"integrity":"sha512-Aq+UKQanTGRWam/JdGf8viTQf1PXbvsaGyENkpCDBpN1L7kHj28P92y5vw7CqSP7G/PDSuDKy7T4hSCjl8zv2w==","signatures":[{"sig":"MEUCIQCB1EoWeB4wwh371FuZ99AFHGJ+Yf5Wmpuo0zt9bx77twIgB2Eaq1OeU91iesrh/uAH2pDS1va61aFdCYcLP+WKBlA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFHv6JFQBbq3Nor/y8XiHn5CQyt1cOjF4jp2GW5hi5syAiADwz/MUL92HNXavscE8loYjXOAsDrEkUZtGcx8tAsKkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345313},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"c05bb316497f6b1bc896654172a95aab62014136","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.2.0_1789974025635_0.3343683227150329","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.2.1","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.2.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"1c12a74422839f080d072b3763544d4dd7ff18e0","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.2.1.tgz","fileCount":60,"integrity":"sha512-7l4EeKVT032wWGt2yckAHQq8LwboZwT4jZ8cls83JB4c8r/t3+0Fe9SU9EBKRcofqIo7Xo7NKCDW10vcXlkT4A==","signatures":[{"sig":"MEYCIQDPpFlH2DEs9UVpJD5Tz1hpxsJU2uDygTDXwntxlE/JDQIhAI4mdNOz/f8AKrrIVEYbufHxw2Nn97y52YXdsA39itrc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCe2bWYWhIFNxN8gdu/i9YB/2V+R/BQmFqciVZYREzUkgIgD5mxmcCyRWe6+L5U+D1A3Yhjv572gL/3qrOHjrgVABI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318783},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"f95eeb80d28e5ff79714a95a10efdffc163302f7","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.2.1_1789974728106_0.9475713232343821","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"homebridge-dyson-solarcycle-morph","version":"1.2.2","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.2.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"3e1f761b615396a45a6b9d3f09ff76519f9d0362","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.2.2.tgz","fileCount":60,"integrity":"sha512-xnOCQv/TRl1WUYHY2Q5vxx/A4ur5mFDCOwR1RKK+Y1OGs58VNT1AcTPMtx9WYQsXl1iRpGrfxN5FWS/A54Lejg==","signatures":[{"sig":"MEUCIQCrbxvxbY32OZ+Mrg8k6fD0Gss+lCRBFb8uRNq1MO36QAIgRPm+AUX/Pgs+Wi4pBakXDi9ijvMRzuCu7be3ydYM628=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFtzH7G+nYM5LRjH0gE24OUu+XGY8JWzYgPbe4hPsoFCAiEAjuq2BZ0Fu7TAD84GLns0s7Mfsarv5OGwX6QXDSYjqe8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":319246},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"3e9d2a940a1d1c8168597c2e738652c02fa077b3","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.2.2_1789974913302_0.5814070684120622","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.3.0","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.3.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"252ca4c2e586a2f9b889245cb6efbbe50d72c1b2","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.3.0.tgz","fileCount":60,"integrity":"sha512-bUXHQS5n9FOZcbYWvKGllQkWskfgm4aS28nAFccMt1/ox03TYS8C2mdDOR3s+ufIuBlhW5gdYPPEC1GyR62vGA==","signatures":[{"sig":"MEUCIGloQR8JGS88vNoGliz4imnTfzFc2jPBQGBZIf922qn4AiEApUrhz0GTOOXkfq01z/Ymany2450pyNXE6V1uaCkbQ54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCopAdNzfr8z80iEq1S4UMKo1TJ2GFYEte4AnP1q6SSXAIgO5E7gQBxcsFkRN6IvCHEd7CR4r1rc2ESFWMiW9gLWs4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":326617},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":"https://github.com/sponsors/rummeyer","gitHead":"839eb706be754ca4e8830e3cc37231b716622cfb","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.3.0_1789983551344_0.7251946187361253","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.3.1","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.3.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"44ba623c034ac528eed20cfddb19168f5c2fd311","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.3.1.tgz","fileCount":60,"integrity":"sha512-NecqBjcTak9BilxYiecEIICCd2bYQB/QEmkCMnvDIXNWg8GOcJ76cVz+W4Nj3J2ZFG23/HN2bUYkXDQ3bhtA0Q==","signatures":[{"sig":"MEUCIQDJlg/Ob4fLNqI98zoSh07k/nbMea0aBegaykaiBJzt8AIgZtt6LC5/GOyVnaXx6xOpzKi1F+f9ewXjjODKzQTxXyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDa7z5UgSJh+m3qY0PUIGnp8lQTddY0lfIagm3u+eGw6wIgb3srRSKfP/AKUsv4ElEMrPjx2Oj2920CcCnlnksPpMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":327008},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"024aae8b82265d203a23aa2f04a461ee0881f7a3","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.3.1_1790001331007_0.3122005540435797","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.4.0","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.4.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"83956ea02dcae1dc2df4c3e3c43f908738a9022a","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.4.0.tgz","fileCount":60,"integrity":"sha512-ilIvnQ9ecIb268ZDlmim6qHMp6cumiwrMgYh6H28j3vDJHj5bvETfo/q76RRjx6ShpDCcFbMUi4e1FnV0Bz4Mw==","signatures":[{"sig":"MEUCIQDPn58DTuNJACj6tib2a8ZdgtpHDmHlmP0vWKk7dOq3gAIgPMNvoerJjTeBPdpCUNgIOhQma+Ok7KmCfFiW+UUtf8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCsdIDc1E6b46PnXCftvFTsMN0brAu/Sl3OtDbSSZTblQIhAPm1DnX0zM/65E3dsdK47dLE7O+B5BOzZLH1Yv3BHTt8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":401651},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"8e92f93f115e1c6a586009421363f17726d9ad32","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.4.0_1790013147846_0.4324216153553415","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.4.1","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.4.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"1c3a355d4b285a80f594c1ba90464e05c5d1058d","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.4.1.tgz","fileCount":60,"integrity":"sha512-cdLYKAZP/6Fqczr3uCzXli6FakUEaaa/0KWJmn0d9lJh1nBcRfu5Oxb8n7t2TiZOHy64CGJ2ol/GDL0yHvS80w==","signatures":[{"sig":"MEYCIQC68AW8k9f+m8SQHBBT3T+FVzvXl2zZ3COcv00hzLFeYQIhALHds6MwtiDAf1Bh2zYmwV2KIu6UYHqSkDfGnqZv59Q5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEiQ9IIeqmLPcRWEBRRNJmpxzUYkLjE2Lu2ec5d2tqu8AiEA0K8+5jtXsvYXq6xDvqgrsuUak1etCFHXnYyiZyoyKgs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":400140},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"f20e35d7e87361fd4b604bae57a3cb6436de2e04","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.4.1_1790014742509_0.9211812334089393","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"homebridge-dyson-solarcycle-morph","version":"1.4.2","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.4.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"012374c1fda8b13e00967f872e93967b992afe90","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.4.2.tgz","fileCount":63,"integrity":"sha512-9HRTHnFLWa86otdf1E/GRVvGkfYPtwYb/sywucAa51m0m/zqeXxCqj0isVDy+3mhrsXtqRg5q3TAdwciw8bPKA==","signatures":[{"sig":"MEQCIFtdWlyjCTR2Mc1/iVnnQV76MItVHaBzgtzGMSt3zjJcAiB+6kMaw/TcIao/x4qSxapatcW2sFl6775SFaj56RDpzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC8H8pq2NNwg/WMm6o7Xo8l937zjAU1bEfCWmjiNdEZOgIhAKuM58DOJdYrmv9O/1YWtY+eV2/CfbetYT469L2g9web","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":414502},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"e032f3de12d51f4691ffea3d66f9fba7a7b4a6fb","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.4.2_1790067924234_0.2949131189962979","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"homebridge-dyson-solarcycle-morph","version":"1.4.3","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.4.3","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"d36f3a10156524816532f30835c816c1bef922d4","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.4.3.tgz","fileCount":66,"integrity":"sha512-+DnOafI+rVoBgwyfN3lBxUEDBGyI4XMuEv95hdaQ+TfWNLHlDZith+E2WjGDmL/CyMobxi7CDck5br0lNrSBaQ==","signatures":[{"sig":"MEUCIQDXDJdnJprLKoT+26T1L2BMtx2Kvl+lpJEN7llsIGfpugIgBBWkhVaV+k/DyeIlt0QIu13B3Tda7GYvaZGRwvp8Su0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEVoVBM7GkWJFH0VZZit77eH5Cw303jfITpcgxXmzdw+AiAznByhptXT/DKJhEeE+iU2ZUzGAjQUFdw3ZUhaWTWtMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":458189},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"d74feaa747c29c9e182d346ba16916f7dbbad039","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.4.3_1790078574316_0.3822470526413684","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"homebridge-dyson-solarcycle-morph","version":"1.4.4","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.4.4","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"04b1fd74188442706440614da9c6eb830700db42","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.4.4.tgz","fileCount":66,"integrity":"sha512-YVJ0EsW/hzlFa1WUHg2vrXVSZ03b6ZAQF57JKSCGMq+G3pV5aIYpILTAeKr8z4o3LsXTSgFy5HZsCtwNGnf/vg==","signatures":[{"sig":"MEUCIC+xBBWIByov/NrdPFXEmk3m5Q5zNn/ySgK7xouiKN+aAiEA1EafIzVmRhVRFRVlV9hNILou0R5f5fhO118WjAUQNO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDVmz5wProHvix/zFLTyOTNUHPSFi2wWTOPy758glYtpwIhAOPWy8RuBoCWmt/EUUCELO/MhQsWeO0YRF1D9gCVPVP4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":459380},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"0ea2c13a2ef6b413fac67df3db752510b978cf7a","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.4.4_1790079310945_0.1624365854426968","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.5.0","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.5.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"9f2c5c40362d391f40e4695ea4c9314659fead79","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.5.0.tgz","fileCount":66,"integrity":"sha512-uDClBJe7NWbyejl0mJh/WLwnNezDwg7f+6qeoFzBlMkfdsh9seuCyraD6U+rHSs/fld9hH8FWP1GPow6v9Wtag==","signatures":[{"sig":"MEUCIC2XDJd9BWZxCfTLixyCq0n8wie5+IX4y/EhWQFz66XUAiEAl1uqfiFVgt4oy6IwC8uc6t4U0L2qYO2hS04qsIhO9Wk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC8E4KSFHCqvBhDqUn36ygg3N5PWo2M0srdQ+2Y28YdAQIgGhLnKcTuCqYvNNJN6Q2JlpSZEW8Bx8Ep6zxoDPffkBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":471250},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"920a6adf4459eb5c24062aaec08c93f4bd08d352","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"deprecated":"dayStart/dayEnd write to the wrong attributes and have no effect on daylight tracking; use 1.5.1 or later","repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.5.0_1790079878196_0.08176102524498874","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.5.1","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.5.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"3cade95d451a2bcd0fc26a2fd5a4da40347c21d1","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.5.1.tgz","fileCount":66,"integrity":"sha512-Vo4yz6qT3Fb5gOLl9hZaQAg4mfhJTiu9q2vMXuF1Uuy7JLy+DJ0bstemj8VCpc6FYGWbqkYnXaRE5dQBgEhPBQ==","signatures":[{"sig":"MEYCIQCPvp6TZKchWUiFyjOw2Rc88t9kJ+fj42SEYvDRwbi9PQIhAKoyq1qj/661rvw92tzKOHma047AYR6efd6sd3wuQn7H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF+pmKV3auKjiRIe96+JLcCPPvmWTen2Ng9+lacE4iQXAiEAhbpG69pqpkXV8zi8g4hObTxxI9EcIE0HTCgosTj2wR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478244},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"df6ca8a60457abdd36f492ba3935771e3103133b","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.5.1_1790081378140_0.43734706783426613","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"homebridge-dyson-solarcycle-morph","version":"1.5.2","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.5.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"c8452c03c8076634faedd77c82a575e577a7d9e6","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.5.2.tgz","fileCount":66,"integrity":"sha512-KtRv3blsf9yDFlJUv1p64Eb8JJGg1X0IZuec5mjFtecsZm7WnMG/NF0bOH7uC1li1JrqVVjAbn5S/r5fhF8Bhg==","signatures":[{"sig":"MEUCIBv2ukXM2s8IO2AyC81wZoLh7VUw679P0FkWAdPjQZU0AiEA/vg8WKpn713pYnLjcexPfLZQgQOdZX8VlVSF97I9k0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCKAaIILKRrvrlUgODWiuz7HHKdWPMTTeffzqWn8KpaDQIhAOlo5HsltlVT2RXMCluin5Us27s+kt9cOH3NCmk+qiP6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478847},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"f4f8a4ca1ee83274f72916fbdd1efc08c4b06db4","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.5.2_1790083306527_0.6394771376529884","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"homebridge-dyson-solarcycle-morph","version":"1.5.3","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.5.3","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"66452a195670237b3eeb2a9eef2d29f09f663be2","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.5.3.tgz","fileCount":66,"integrity":"sha512-OiMf1GF/6K+vxSSpMcjPetN/mEGKMFTPuHNOtfZwyOMZCn85D2f5FrZjEecYKgeNWKP6QN82Uc3HEzOmlnNw4w==","signatures":[{"sig":"MEUCIQC7sL0gYT/t/ybDttprY0Nu3mtZ1w5WjatBFi3wtj+9OwIge/q03M/sXPaN42Gl3JzhKGWI5CwqGXrmgwiRZXcFRk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC7rwkOFSAmAxZ+LjaBw9xFz/rnvEtL8GhQgPFiMUOY2wIhANr6ShpOSnbdtP7mtKLGdQZ0J8wEymqU45/urLfaXB3+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":487486},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"52f7825e5005834fd0d100597e9f3e3f98f4a400","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.5.3_1790086282502_0.2562039538053955","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.6.0","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.6.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"0189183384b8db445bb1843e64bc71658f7bcde9","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.6.0.tgz","fileCount":66,"integrity":"sha512-VaNC5AYSvLu9rbopNPNeAvE45TIdPccm7WW9OfyeolA4Yk3gIqAbdXCsiX4i0+9qBfeX9nRchRw25/vV1BLRVg==","signatures":[{"sig":"MEQCICufHApfgG55LHHBXEAUbOKWZmsc23Sn7kodvsTG2sU3AiB0mPSRZCAc0+10dQX9aP9VAjtOQXETNYs/ANXJq9dbpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDznI5E9TFPEqE7EBMRQjHoV+8QhaVZvBpPfvt5STJtJgIgcGvv0JlFFRMTXLKTwooDTd/r7Mj3DhgUnAuDCLAp0Bo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":502725},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"df7f86d26cba5ffb5a0097f3d0557631fbfad7ae","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.0.2","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.6.0_1790094766466_0.9622359040219812","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"homebridge-dyson-solarcycle-morph","version":"1.7.0","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.7.0","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"d723c39de49516e35e11ce5c17fd4e6af4e53200","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.0.tgz","fileCount":66,"integrity":"sha512-LYs75E9E31eZU1EnhI++rZv9hF08gMhCmLAQgARkFMenran4rnCnhkyCarUFQsYM7yIKIgMHKkx0fucrVFbEKQ==","signatures":[{"sig":"MEYCIQCMD8SKsMr9vOsJY5rHuw/z/yLhLtbo/Xo+E84bQ0kAWAIhANUMEJfM5IUVKigRKdH/wfPK6j+dh5UMKVb91s+oeute","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCiMA4VO85X9VGPuoDe6MoE9Nb/srmQUVb2vDMUcicTYwIgJUsI/NOzJUhabPkWJE6xujfLE7lurNkHuwIPK0kj/8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":509045},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"e0fa30bfa7334c7c3edfb6dbac1c65eaf87e925d","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.1.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.0_1790144259591_0.8272160091329777","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"homebridge-dyson-solarcycle-morph","version":"1.7.1","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.7.1","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"6765fc120ed11d32a8ca2d42acf7a5c87a101ed5","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.1.tgz","fileCount":66,"integrity":"sha512-69RFvUsyc7pUUUnB2Tt6MKWn7z3BQUhB+bvevZPU13zbLf9IXkCKbk5mciFnQOWUauYYJhqXxfQ2IuU1MfyntQ==","signatures":[{"sig":"MEUCIFmO1Q96I41YAdgQbFWRmUNakm3WezB07OA4ugDfj5bCAiEA9PDRu7rpO0ZSqiSeGuNzT8Wt+bN8Mm4Ee2Nw6cq56EI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEqJIHp6DnseEc6oq8cwjcu9nC5zhmq0IavSp7JbR928AiBFxGQu3H+D4L5d4i1yH2kpC6tUa8PfxkkYnyzBe46jTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":512632},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"}],"gitHead":"726b4108b1758540afdde07272e4bb7e5b0f163f","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.1.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.1_1790145585735_0.7195722739438604","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"homebridge-dyson-solarcycle-morph","version":"1.7.2","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.7.2","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"e910b256f2f5d8490e30e1dfedffbeaf4047af36","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.2.tgz","fileCount":66,"integrity":"sha512-0fCO5LhTtPDbnGJHm31BpvMZoDYEZ6n+WnsvzufUv86ke4mtp58wRPXY4fry9Wz1gIeDyKodCqmrOGbZfqZgiQ==","signatures":[{"sig":"MEUCIQDiol2YEhCFiRXrXnhmDoWSbSHYHDH89zWxiVZspHgDogIgK40Yi0ZCAczfyp63bQ1MIsxBMkuSjTjtXtHtrasxPZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD1DCcX7DTKLeADOkcpTlcp/zfNd+5KpkvCauDaeOc/FQIhAJ6HNyt+zQliFNR3chwPk8ZGEjkv8pdUV1drqUcLp2EW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":512935},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"},{"url":"https://buymeacoffee.com/rummeyer","type":"buymeacoffee"}],"gitHead":"cc5f7875da8d8832f8bab63e722e6570f7a08673","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.1.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.2_1790158622187_0.24196528638638481","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"homebridge-dyson-solarcycle-morph","version":"1.7.3","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.7.3","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"8917167a670559b9389a7286f2f5b0f2bd9409df","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.3.tgz","fileCount":66,"integrity":"sha512-GyfLBUzcvUeRrPo8kU42yMOsM52ZUaiiX7DKkQt/tUH3kOJe7jR274oZ0BpBaVgaL5G1ufvlL9wifPtJgXhD9w==","signatures":[{"sig":"MEUCIF20zSXFPCM86+XGD1IbD2m7ImU4casYCD4HX4zxkjCQAiEA7S2rrs2h/aSkTByE5iBZzRQ7FUcRn6a4LQo+d9aH3nY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAmilofsqr2FdwDW/8qJ9K6y+NJd3OiHS/XGqhAyDkabAiEA8LBQEQ1RasjE/xR4CiD7hs+UCNjc8JMSaExK97rCH78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":513553},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"},{"url":"https://buymeacoffee.com/rummeyer","type":"buymeacoffee"}],"gitHead":"83ed79a069a4a425ec9f4b03c76c3830b0fff504","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.1.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.3_1790163760976_0.5310975588683937","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"homebridge-dyson-solarcycle-morph","version":"1.7.4","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.7.4","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"77dc2dfb5c27eb06e75870cd7526c6905a8d5b01","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.4.tgz","fileCount":66,"integrity":"sha512-vaaFB+8S2dD/n7laC1yuxDgvU2u+rOnGTT2qWMTTv7iIFnEsTdW/XYi/s11eP71nx/NEWkKkTG9KcmQbeZSgtA==","signatures":[{"sig":"MEYCIQDsgCDJiu1PF6pLG1TM4th/irsKMzWtyepjWBXIzfzStwIhAM93YHiEivVckMfH9r3PEItKJur6y3eMM0itHLHRfeHh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAtmPK/+vtGdJRRZ2RbBpLFdlYRrOkR3Kw51V+6jveIVAiEAns8u7u+ucPaJJZoyi/cVhKt3cpyE08s+FmUJA+CCO54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":513919},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"},{"url":"https://buymeacoffee.com/rummeyer","type":"buymeacoffee"}],"gitHead":"a1d32c9801a7c4ee0310ad5b9130b5d3c9b4d120","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.1.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.4_1790341287609_0.44853171334695885","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"homebridge-dyson-solarcycle-morph","version":"1.7.5","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"author":{"name":"Oliver Rummeyer"},"license":"MIT","_id":"homebridge-dyson-solarcycle-morph@1.7.5","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"bin":{"dyson-morph-pair":"dist/cli/pair.js"},"dist":{"shasum":"f980d5c3d57e37e4c8302f65a09fa915649337b2","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.5.tgz","fileCount":66,"integrity":"sha512-sa++Cl3/W2xkZBmrjpcopQG6Yg+NOQ+qVLo8Cf/85aTw7ut9GusGV0bD5OsIwVDKFAeYi3RLzqGGYfR+f5A9qA==","signatures":[{"sig":"MEUCIQC1mEH2UxkzIa/Krgha2nf5QKh1qefswSY/OUCyklYrVAIgHk2cc3tV8JpQw9z97bZe5Cwk7eWFWDgb/6BTB3554ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH47iZGO7X4AfzmBxiDxceZf8O0gx3nFzhji/HdCqrktAiEA4RM+JTSU3S4wjfyoUv8q2zgw2GBRM8uhR0h8VBkEnuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":514332},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"},{"url":"https://buymeacoffee.com/rummeyer","type":"buymeacoffee"}],"gitHead":"8a3da7bca76b0ad93324c5f0e4670183a1a6e144","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.1.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","_nodeVersion":"22.23.2","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.5_1790358543263_0.49533655208573024","host":"s3://npm-registry-packages-npm-production"}},"1.7.6":{"_id":"homebridge-dyson-solarcycle-morph@1.7.6","bin":{"dyson-morph-pair":"dist/cli/pair.js"},"bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"dist":{"shasum":"43f69b9737df2ad78d9ad9c88a8b8702b37a15be","tarball":"https://registry.npmjs.org/homebridge-dyson-solarcycle-morph/-/homebridge-dyson-solarcycle-morph-1.7.6.tgz","fileCount":66,"integrity":"sha512-EqUACXqciwtZ50XOehcTjX/FPVgRCjqpRhIppGU7xEVII7eeKPjQ05Fz9l8yusZOKY5zE05D7VO43QCYfPW5gA==","signatures":[{"sig":"MEUCIQD/XiOMyjGdKoZ7whirzBDQyh5KxvfW83dk/gOMBbRgdQIgLnf8Izh1Y4PapaRpKnWUQcBMtw3n6nI4AYWYH2iay74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC4cTrikhS6IvcnfD2QnIvnH/y6T/M88A1XK8V3bVV78gIgTJZSmaa24xCsxY1987GJf89/PlR7MCqZ4cu33KM2ZUU="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-dyson-solarcycle-morph@1.7.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":514845},"main":"dist/index.js","name":"homebridge-dyson-solarcycle-morph","type":"module","types":"./dist/index.d.ts","author":{"name":"Oliver Rummeyer"},"engines":{"node":"^22.18.0 || ^24.0.0 || ^26.0.0","homebridge":"^1.8.0 || ^2.0.0"},"funding":[{"url":"https://github.com/sponsors/rummeyer","type":"github"},{"url":"https://paypal.me/rummeyer","type":"paypal"},{"url":"https://buymeacoffee.com/rummeyer","type":"buymeacoffee"}],"gitHead":"213a49e8267332e27b29ce745f2d6b301b0504ee","license":"MIT","scripts":{"test":"npm run build && node --test test/*.test.ts","build":"tsc && chmod +x dist/cli/pair.js","clean":"rm -rf dist","watch":"tsc --watch","prepare":"npm run build","prepublishOnly":"npm run clean && npm test"},"version":"1.7.6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"438d11f4-11ac-4f73-9a82-acb6795af2fb"}},"homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"_npmVersion":"12.2.0","description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","directories":{},"displayName":"Dyson Solarcycle Morph","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"_nodeVersion":"22.23.3","dependencies":{"node-ble":"^1.13.0","dbus-next":"^0.10.2","node-persist":"^4.0.4","@homebridge/plugin-ui-utils":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"homebridge":"^2.4.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/node-persist":"^3.1.8"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/homebridge-dyson-solarcycle-morph_1.7.6_1790861272934_0.16393726721680313"}}},"time":{"created":"2026-09-17T11:30:51.236Z","modified":"2026-10-01T13:27:53.472Z","0.1.0":"2026-09-17T11:30:51.427Z","0.2.0":"2026-09-17T11:38:58.732Z","0.2.1":"2026-09-17T12:15:31.897Z","0.2.2":"2026-09-17T13:12:56.318Z","0.3.0":"2026-09-18T08:03:44.869Z","0.4.0":"2026-09-18T09:08:27.889Z","1.0.0":"2026-09-18T10:01:01.068Z","1.0.1":"2026-09-18T10:05:03.516Z","1.0.2":"2026-09-18T10:13:55.073Z","1.1.0":"2026-09-19T13:58:40.993Z","1.1.1":"2026-09-19T14:20:06.174Z","1.1.2":"2026-09-21T06:53:06.393Z","1.2.0":"2026-09-21T07:00:25.752Z","1.2.1":"2026-09-21T07:12:08.187Z","1.2.2":"2026-09-21T07:15:13.376Z","1.3.0":"2026-09-21T09:39:11.423Z","1.3.1":"2026-09-21T14:35:31.108Z","1.4.0":"2026-09-21T17:52:27.940Z","1.4.1":"2026-09-21T18:19:02.704Z","1.4.2":"2026-09-22T09:05:24.330Z","1.4.3":"2026-09-22T12:02:54.569Z","1.4.4":"2026-09-22T12:15:11.283Z","1.5.0":"2026-09-22T12:24:38.300Z","1.5.1":"2026-09-22T12:49:38.464Z","1.5.2":"2026-09-22T13:21:46.620Z","1.5.3":"2026-09-22T14:11:22.584Z","1.6.0":"2026-09-22T16:32:46.573Z","1.7.0":"2026-09-23T06:17:39.786Z","1.7.1":"2026-09-23T06:39:45.826Z","1.7.2":"2026-09-23T10:17:02.287Z","1.7.3":"2026-09-23T11:42:41.065Z","1.7.4":"2026-09-25T13:01:27.732Z","1.7.5":"2026-09-25T17:49:03.382Z","1.7.6":"2026-10-01T13:27:53.037Z"},"bugs":{"url":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/issues"},"author":{"name":"Oliver Rummeyer"},"license":"MIT","homepage":"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph#readme","keywords":["homebridge-plugin","supports-hap","dyson","solarcycle","lightcycle","morph","cd06","bluetooth","ble","light","homekit"],"repository":{"url":"git+https://github.com/rummeyer/homebridge-dyson-solarcycle-morph.git","type":"git"},"description":"Homebridge plugin for the Bluetooth LE controlled Dyson Solarcycle/Lightcycle Morph desk light","maintainers":[{"name":"rummeyer","email":"oliver@rummeyer.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/rummeyer/homebridge-dyson-solarcycle-morph/main/docs/icon.png\" width=\"100\" height=\"100\" alt=\"\">\n</p>\n\n<h1 align=\"center\">homebridge-dyson-solarcycle-morph</h1>\n\n<p align=\"center\">\n  Control your <b>Dyson Solarcycle Morph</b> from the Apple Home app &mdash; over Bluetooth, with no cloud in the loop.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/releases\"><img src=\"https://img.shields.io/github/v/release/rummeyer/homebridge-dyson-solarcycle-morph?label=release\" alt=\"Release\"></a>\n  <a href=\"https://www.npmjs.com/package/homebridge-dyson-solarcycle-morph\"><img src=\"https://img.shields.io/npm/dt/homebridge-dyson-solarcycle-morph\" alt=\"Downloads\"></a>\n  <a href=\"https://github.com/rummeyer/homebridge-dyson-solarcycle-morph/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/licence-MIT-blue\" alt=\"Licence\"></a>\n  <img src=\"https://img.shields.io/badge/homebridge-1.8%20%7C%202.x-purple\" alt=\"Homebridge 1.8 or 2.x\">\n  <img src=\"https://img.shields.io/badge/node-22%20%7C%2024%20%7C%2026-green\" alt=\"Node 22, 24 or 26\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://buymeacoffee.com/rummeyer\"><img src=\"https://img.shields.io/badge/donate-Buy%20Me%20a%20Coffee-yellow\" alt=\"Buy Me a Coffee\"></a>\n</p>\n\n---\n\n## What you get\n\nYour lamp appears in the Home app as a **light**, with the controls Apple\nprovides for one and nothing else on it — so the tile turns the lamp on when you\ntap it, the way a light should:\n\n- **On and off**\n- **Brightness**\n- **Colour temperature**, across the lamp's full 2700–6500 K range\n- **Siri**: *\"Hey Siri, turn on the desk light\"*, *\"Hey Siri, set the desk light to 50%\"*\n\n**Beside it sits a second accessory, `<name> Switches`,** holding everything\nthat is a switch. The three modes that otherwise live only on the lamp's base or\nin the MyDyson app — each one automatable, and each showing what the lamp is\nreally doing rather than what was last asked of it:\n\n| switch | what it does |\n| --- | --- |\n| **Daylight** | shifts colour temperature through the day, warm in the evening and cool at midday |\n| **Auto Brightness** | trims the level to suit the room as the light around it changes |\n| **Movement** | lights when it sees movement, goes out once the room has been still |\n\nOn the same accessory, the lamp's three preset modes — **Study**, **Relax** and\n**Precision** — as switches that apply a set of values and spring back, the way a\nscene does. They are what the buttons in the MyDyson app do, and the lamp allows\nonly one at a time.\n\n| preset | where it puts the lamp |\n| --- | --- |\n| Study | 4741 K, fairly bright |\n| Relax | 2900 K, dim and warm |\n| Precision | 4600 K, full output |\n\n**It follows the lamp, not just the other way round.** Press a button on the\nbase, change something in the MyDyson app, or let the lamp end daylight tracking\nby itself, and the Home app keeps up — usually within a second. A lamp that is\nout of range says so, rather than showing you the last thing it knew.\n\n**After setup nothing leaves your home.** The lamp has no Wi-Fi at all: the\nplugin talks to it over Bluetooth, and the one cloud request — fetching the\nlamp's key — happens once, during pairing.\n\n## Before you start\n\n| | |\n|---|---|\n| **Lamp** | Dyson Solarcycle Morph or Lightcycle Morph, added to your MyDyson account |\n| **Homebridge** | 2.0.0 or newer, on Linux |\n| **Node.js** | 22.18, 24 or 26 |\n| **Range** | The Homebridge host must be within Bluetooth range of the lamp, and stay there — these lamps have no Wi-Fi, so there is no cloud fallback |\n\n**The lamp must already be in the MyDyson app.** This is not a formality. The\nlamp ignores every command until it is handed a key that only Dyson can issue,\nagainst the account the lamp is registered to — there is no way to read it from\nthe device. If the lamp is not on your account, pairing returns a 404 and there\nis nothing the plugin can do about it.\n\n**Linux only.** macOS and Windows will not work, for Bluetooth reasons that are\nnot worth going into here. A Raspberry Pi running Homebridge is the usual home\nfor it.\n\n## Step 1 — Install the plugin\n\nIn the Homebridge UI, go to **Plugins**, search for\n`homebridge-dyson-solarcycle-morph` and choose **Install**.\n\n## Step 2 — Give it a child bridge\n\nIn the plugin's **⋮** menu, choose **Bridge Settings** and turn the child bridge\non.\n\nThis is worth doing. Bluetooth links drop and reconnect; in a child bridge that\nchurn stays in its own process instead of unsettling your other accessories.\n\n## Step 3 — Connect your MyDyson account\n\nOpen the plugin's **Settings**. The page walks through it:\n\n1. **Enter your MyDyson email, password and country.** The country picks the\n   Dyson server and the language its requests use.\n2. **Request code**, then type the code Dyson emails you and press **Submit**.\n   The page then shows *✓ Authorised*, with when and how many devices your\n   account holds.\n3. **Find my lights.** This lists the lights on your account and scans for their\n   Bluetooth addresses. Press **Add and pair** next to yours.\n4. **Forget password** once you are done, then **Save**.\n\nRestart Homebridge when the page says so.\n\n## Step 4 — Add the lamp to the Home app\n\nThe child bridge has its own QR code, under **Bridge Settings**. Scan it in the\nHome app the same way you paired Homebridge itself. Two accessories turn up: the\nlamp, and `<name> Switches` beside it. Put them in whichever rooms suit you —\nthey are independent as far as the Home app is concerned.\n\n## Using it\n\n**Turning it on, dimming it, changing the colour** — all the usual Home app\ncontrols, and Siri.\n\n**The three switches can be automated like anything else.** A few that people\ntend to want:\n\n- Movement on when you leave for work, off when you get home\n- Daylight on in the morning, so the lamp cools towards midday and warms again by evening on its own\n- Auto Brightness off when you sit down to watch a film\n\n**Brightness will not always land exactly where you put it.** The lamp eases\ntowards a new level rather than jumping, and with Auto Brightness on it keeps\nadjusting to suit the room. Asking for 100% and seeing 88% is the lamp doing its\njob — turn Auto Brightness off if you would rather it stayed put.\n\n**Setting a brightness or a colour temperature ends daylight tracking**, and\nthe Daylight switch turns itself off when you do. That is the lamp's own\nbehaviour, not something the plugin decides. Flip the switch back on to resume.\n\n**The three mode switches work while the lamp is off**, though the lamp itself\nwill not have them until it is lit — it takes none of the three while it is off.\nSo a switch flipped on a dark lamp stays where you put it and is written the\nmoment the lamp comes on, whether you switch it on from the Home app, from the\nMyDyson app or at the lamp. Turning Movement on last thing at night therefore\ndoes what you meant by it. Nothing is kept over a restart: a plugin starting up\ntakes all three from the lamp, which is the only thing that knows what it is\nreally doing.\n\n**Changes made at the lamp appear in the Home app**, usually straight away.\n\n**Out of range, the lamp shows as *No Response*** rather than the last thing it\nknew, and commands fail rather than being quietly dropped. It comes back on its\nown once the link does.\n\n## Settings\n\nEverything except the lights is optional.\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/rummeyer/homebridge-dyson-solarcycle-morph/main/assets/screenshots/settings.png\" width=\"520\" alt=\"The settings page in the Homebridge UI: the MyDyson account, finding the lights, where they are, and one lamp's settings: address, serial, location, daytime, age adjustment and switches\">\n</p>\n\n| Setting | |\n|---|---|\n| **Name** | What the plugin is called in the Homebridge log |\n| **Lights → Name** | What the lamp is called in the Home app |\n| **Lights → BLE MAC address** | Filled in by the scan |\n| **Lights → Serial number** | Filled in by the scan. Identifies the accessory, so changing it creates a new one |\n| **Lights → Latitude**, **Longitude** | Where the lamp stands, in decimal degrees. Optional; set both or neither |\n| **Lights → Use custom daytime** | Puts the two times below in the lamp. Off by default, and off they are ignored |\n| **Lights → Daytime start** | Optional. Replaces the real sunrise, as `HH:MM` |\n| **Lights → Daytime end** | Optional. Replaces the real sunset |\n| **Lights → Apply the age adjustment** | The lamp's own switch for it. On by default; only used with a year of birth |\n| **Lights → Year of birth** | Turns on the lamp's age adjustment. Optional |\n| **Lights → Expose daylight tracking** | The Daylight switch. On by default |\n| **Lights → Expose auto brightness** | The Auto Brightness switch. On by default |\n| **Lights → Expose movement mode** | The Movement switch. On by default |\n| **Lights → Expose the preset modes** | The Study, Relax and Precision switches. On by default |\n| **Bluetooth adapter** | Only needed if the host has more than one, e.g. `hci1` |\n\nTurning all four switches off leaves the lamp on its own: there is then nothing\nfor the second accessory to hold, so it is not created, and an existing one is\nremoved.\n\n### The config block\n\nThe settings page writes this for you. It is worth knowing the shape anyway, for\nediting `config.json` by hand and for reading what the UI produced:\n\n```json\n{\n  \"platform\": \"DysonSolarcycleMorph\",\n  \"name\": \"Dyson Solarcycle Morph\",\n  \"lights\": [\n    {\n      \"name\": \"Desk\",\n      \"mac\": \"AA:BB:CC:DD:EE:FF\",\n      \"serial\": \"E5T-EU-6DYYJX5E\",\n      \"latitude\": 48.7784,\n      \"longitude\": 9.18,\n      \"yearOfBirth\": 1985,\n      \"ageAdjust\": true,\n      \"daylightSwitch\": true,\n      \"autoBrightnessSwitch\": true,\n      \"movementSwitch\": true,\n      \"presetSwitches\": true\n    }\n  ],\n  \"dysonAccount\": { \"email\": \"you@example.com\", \"country\": \"DE\" },\n  \"adapter\": \"hci0\"\n}\n```\n\n`platform` is how Homebridge finds the plugin, and each light needs a `name`, a\n`mac` and a `serial`. Everything else can be left out; the switches then take\nthe defaults below, and the location and year of birth are simply not touched on\nthe lamp. The example above shows every key at once, which no real config needs.\n\n| Key | Type | Default | |\n|---|---|---|---|\n| `platform` | string | — | Must be `DysonSolarcycleMorph` |\n| `name` | string | `Dyson Solarcycle Morph` | The log prefix. The settings page insists on it |\n| `lights[].name` | string | — | The name in the Home app |\n| `lights[].mac` | string | — | `AA:BB:CC:DD:EE:FF` |\n| `lights[].serial` | string | — | The accessory's identity; changing it makes a new accessory |\n| `lights[].latitude` | number | unset | Decimal degrees, -90 to 90 |\n| `lights[].longitude` | number | unset | Decimal degrees, -180 to 180 |\n| `lights[].yearOfBirth` | integer | unset | 1900 to this year |\n| `lights[].ageAdjust` | boolean | `true` | Only read when `yearOfBirth` is set |\n| `lights[].dayStart` | string | | `HH:MM`, end after start. Only read when `customDay` is on |\n| `lights[].dayEnd` | string | | |\n| `lights[].customDay` | boolean | `false` | Puts `dayStart`/`dayEnd` in the lamp; off, they are ignored |\n| `lights[].daylightSwitch` | boolean | `true` | |\n| `lights[].autoBrightnessSwitch` | boolean | `true` | |\n| `lights[].movementSwitch` | boolean | `true` | |\n| `lights[].presetSwitches` | boolean | `true` | Adds three switches, not one |\n| `dysonAccount.email` | string | unset | Used by the settings page, never by the plugin |\n| `dysonAccount.country` | string | `GB` | Two letters |\n| `dysonAccount.password` | string | unset | Only while authorising; **Forget password** clears it |\n| `adapter` | string | system default | e.g. `hci1` |\n\n**A light with something wrong with it is skipped, and the rest still load** —\nthe message names the entry and the key. Two combinations are refused rather\nthan half-applied, because half of either would quietly do the wrong thing:\n\n- `latitude` without `longitude`, or the other way round. A lamp told only its\n  latitude would put itself on the Greenwich meridian and track the wrong sunset\n  all year.\n- `customDay` on without both `dayStart` and `dayEnd`. With it off, the times are\n  not checked at all, since they are not used.\n\n**No key for the lamp appears here.** Pairing puts it in the plugin's storage\ndirectory instead — see [What is stored, and where](#what-is-stored-and-where).\nA `lights[].ltk` and `lights[].accountId` pair is accepted to override what is\nstored, which exists for migrating an older setup; supply both or neither.\n\n### Where the lamp is\n\nDaylight tracking follows sunrise and sunset, and the lamp works those out from\nits coordinates. The MyDyson app sets them once, from the GPS of the phone the\nlamp was set up on, and never asks again — so a lamp added through the app\nalready knows, and one that has moved house still believes it is at the old\naddress.\n\n> **A lamp that does not know what time it is will not keep a location.** It\n> answers the write with a success status and keeps the factory coordinates,\n> and daylight tracking cannot run — the lamp says so only through a small LED\n> at its daylight button. The lamp loses its clock whenever it loses power, so\n> one switched off at the wall overnight wakes up in that state every morning.\n>\n> **The plugin sets the lamp's clock on every connection, so this is handled.**\n> A lamp fresh off the mains takes its coordinates and starts tracking daylight\n> without the MyDyson app being involved.\n>\n> This took two days to find, and for most of it the evidence pointed at a\n> set-up gate that had to be lifted in the app — a lamp only ever accepted a\n> location *after* the app had been near it. The app was not unlocking\n> anything. It sets the clock at the start of every session, so everything that\n> happened afterwards worked. `0x2005` and the daylight-saving rules, which\n> this plugin had been writing all along, describe a *time zone* and never say\n> what time it is; without the time, a latitude cannot be turned into a\n> sunrise, and the lamp has no use for one.\n\nThe two fields exist to set the coordinates without the app, and to correct them\nafterwards. Leave them empty and the plugin does not touch what the lamp holds —\nit still reads them on connecting and puts them in the debug log, which is the\nway to find out what the app put there:\n\n```\nLamp AA:BB:CC:DD:EE:FF places itself at 48.77840, 9.18000\n```\n\nFill them in and it writes yours whenever the lamp disagrees, and says so:\n\n```\nLocation of AA:BB:CC:DD:EE:FF set to 48.77840, 9.18000 (was 50.11090, 8.68210)\n```\n\n**Use my current location** on the settings page fills both fields in for every\nlight. It asks your browser first, which only answers on a page served over\nHTTPS — the Homebridge UI is usually plain HTTP, and then the coordinates are\nlooked up instead from the address this machine reaches the internet from,\nthrough [ipwho.is](https://ipwho.is) or [geojs.io](https://geojs.io). That is\naccurate to the nearest town, which is all a sunrise needs, and wrong if the\nconnection goes out through a VPN. Nothing is sent to either service: they read\nthe public address the request arrives from, which is what every site this\nmachine contacts already sees. Check what it filled in before saving.\n\n### A custom daytime\n\nDaylight tracking follows the real sunrise and sunset by default. Two optional\nfields replace that with a day you choose, and a switch decides whether they\nare used:\n\n```json\n\"dayStart\": \"07:30\",\n\"dayEnd\": \"22:00\",\n\"customDay\": true\n```\n\nWith `customDay` off, which is the default, the times are ignored and can stay\nfilled in for later. On the settings page the switch is **Use custom daytime**, just\nabove the two times.\n\nThe lamp keeps its warm-to-cool-to-warm shape and fits it between those two\ntimes instead of the sun's, and falls back to a softer, warmer baseline once the\nday is over. It is the same pair the MyDyson app offers as *Sunrise* and\n*Sunset*. With the switch on, both are needed and the end has to come after the\nstart — the lamp stores two plain minute counts and has no way to express a day\nthat runs past midnight. Leave the switch off and the sun decides.\n\nThe effect is immediate and visible: setting the end to a time already past\ndrops the lamp to its baseline within a second, and putting the real one back\nbrings it straight up again.\n\n**There is no way back to automatic from here.** Turning the switch off stops\nthe plugin correcting the lamp, but whatever day was last written stays in it. The\nlamp may recompute the times from its location on its own — that is untested —\nand the MyDyson app certainly can. Until that is settled, treat setting a day as\nsomething the app has to undo.\n\n### And what time it is there\n\nCoordinates alone are not enough: turning a place into an hour needs a clock, so\nthe lamp holds an offset from UTC and the rules for when the local clock jumps.\nThe MyDyson app writes both on every connection, and so does this plugin, only\nwhen the lamp disagrees:\n\n```\nUTC offset of AA:BB:CC:DD:EE:FF set to 2 (was 1)\n```\n\n**There is nothing to configure.** Both come from the time zone of the machine\nHomebridge runs on, which knows them exactly and knows them without asking the\nnetwork — worth having, since they go in while reconnecting. A time zone whose\nclock changes on a pattern the lamp has no way of being told is left alone\nrather than guessed at; the common European and British rules are exact.\n\nA lamp that will not take the offset says so in the log and keeps its own, the\nsame way it does with the location.\n\n### Is it actually tracking?\n\nThe Daylight switch does not answer that. The lamp accepts the mode, never\nreports it back off, and then does nothing at all if it has no location to work\nfrom. What answers it is the day the lamp has worked out, which appears on every\nconnection:\n\n```\nAA:BB:CC:DD:EE:FF puts today's daylight between 07:04 and 19:30\n```\n\nA lamp with no location has no day, and says so:\n\n```\nAA:BB:CC:DD:EE:FF has worked out no sunrise or sunset, which means it holds no\nlocation. Daylight tracking cannot run until one is set\n```\n\n### Age adjustment\n\nThe lamp can trim the brightness of its **Study and Relax modes** to suit the\neyes of whoever mainly uses it, which it works out from a birth year. In the\nMyDyson app's words: *\"Light requirements change as a person ages. You can add a\nbirth year for the main intended user, and the brightness of Study mode and\nRelax mode will automatically adjust.\"*\n\nTwo things have to be true for it to do anything, and the plugin handles both:\nthe lamp has to hold the year, and its age-adjustment switch has to be on. Set\n**Year of birth** and the plugin writes it and turns the switch on; turn **Apply\nthe age adjustment** off to leave the year in place and stop the lamp acting on\nit. Leave the year empty and neither setting is touched.\n\nThe lamp stores a year and nothing else — no day, no month — and it is the one\nsetting on this lamp kept encrypted, under a key derived from your lamp's own\nlong-term key. It also keeps it to the Dyson account that set it, which the app\nexplains as *\"for privacy reasons, age adjust is only available to this light's\nowner\"*. If a different account got there first the plugin says so and changes\nnothing:\n\n```\nThe age adjustment on AA:BB:CC:DD:EE:FF was set by a different Dyson account\nand only that account can change it.\n```\n\nClearing the year altogether is not something the plugin does; the MyDyson app's\nown age-adjustment screen has a remove option for that.\n\n\n## If something goes wrong\n\n**The lamp shows as *No Response*.** There is no Bluetooth link at that moment.\nThe plugin keeps trying; it usually sorts itself out.\n\n**It never connects at all, however long you leave it.** Unplug the lamp for ten\nseconds. Its Bluetooth can get into a state where it looks perfectly healthy but\nrefuses every connection, and a power cycle is the only thing that clears it.\nThe plugin will pick the lamp up again by itself afterwards.\n\n**It connects, drops, reconnects, over and over.** Usually either the lamp is too\nfar from the Homebridge host, or something nearby is using the same airwaves —\nWi-Fi especially. [Reading the signal](#reading-the-signal) below shows which.\n\n**It says the lamp is not paired yet.** No key is stored for that serial. Open\nthe plugin's settings and authorise your account again, and check the serial\nmatches the lamp exactly — that is what the key is filed under.\n\n**Pairing returns a 404.** The lamp is not on that Dyson account. It has to be\nadded in the MyDyson app first; there is no way round this.\n\n**A few failed attempts at startup are normal.** Connecting to this lamp works\nabout two times in three whatever anyone does, so the plugin simply tries again.\nOnly a cycle that never succeeds is worth looking at.\n\n## Under the hood\n\nNot needed to use the plugin, but useful when something looks odd.\n\n### Reading the signal\n\nOnce a minute the log carries a line like:\n\n```\nSignal from F0:… : -73 dBm average, -80 to -67\n```\n\nThe **average** answers one question: is the lamp too far away. Around −60 dBm is\ncomfortable, −75 workable, −85 will not hold.\n\nThe **spread** answers a different one. A lamp that is not moving cannot swing by\n20 dB on its own, so a wide spread means something else is using the band. So do\nfrequent `Lost connection` lines, and `Connected … on attempt 3 of 4`, which\nmeans collisions where connections are established.\n\nOn a Raspberry Pi, Wi-Fi and Bluetooth share one chip and often one antenna, so\nan active Wi-Fi link is the first thing to rule out — particularly on channel 1,\nwhich sits directly on a Bluetooth advertising channel. If the host is on\nEthernet anyway, `sudo nmcli radio wifi off` settles it. Zigbee is worth checking\nnext: channels 15, 20 and 25 sit in the gaps between Wi-Fi 1, 6 and 11.\n\nMoving the host closer is worth more than any of it. One measured move took a\nlink from −76 dBm with two drops an hour to −50 dBm with none.\n\n### Why switching off is double-checked\n\nCommands to this lamp are unacknowledged: the plugin sends one and the lamp says\nnothing back, so a command can be lost with nothing to show for it. Power is\ntherefore read back shortly after and resent if it did not take — a lamp still\nlit after being switched off is the one failure nobody can work around.\n\nBrightness and colour temperature are deliberately *not* checked, because the\nlamp moves them itself and a correction would fight it.\n\n### What is stored, and where\n\nThe lamp's key and your account session go into the plugin's own storage\ndirectory, not into `config.json`. The file you can open in the Homebridge UI —\nand paste into a support thread — holds nothing sensitive.\n\nYour password is only needed to exchange a code for a session. **Forget\npassword** removes it afterwards; the lamp keeps working, because its key does\nnot expire.\n\n### Setting up without the Homebridge UI\n\n`dyson-morph-pair` does the same pairing from a terminal. See\n[CONTRIBUTING.md](CONTRIBUTING.md).\n\n### Rarer errors\n\n**`PayloadB failed HMAC verification`.** The stored key is wrong or corrupted.\nPair the lamp again.\n\n**`Not authorized` from D-Bus.** Only on distributions that restrict BlueZ\naccess — Debian and Raspberry Pi OS already allow it. If yours does not, create\n`/etc/dbus-1/system.d/node-ble.conf` with a policy for the user Homebridge runs\nas, then restart `dbus`. There is an example in\n[the node-ble documentation](https://github.com/chrvadala/node-ble#provide-permissions).\n\n## For developers\n\nThe protocol, including where a real lamp disagreed with the published notes, is\nwritten up in [docs/PROTOCOL.md](docs/PROTOCOL.md). Building, testing and\nreleasing are in [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## How this was worked out\n\nDyson publishes nothing about this lamp, and the published notes this plugin\nstarted from turned out to be the beginning rather than the answer. Most of\nwhat the plugin does had to be found out, and much of it the slow way:\n\n- **The MyDyson Android app was decompiled and read**, class by obfuscated\n  class. Its identifiers change from one class to the next, and it builds its\n  Bluetooth UUIDs at runtime from four-digit fragments, so searching it for a\n  UUID finds nothing. Its routing table for messages looks complete and is not:\n  the message that sets the lamp's clock is built elsewhere, and missing it cost\n  two days.\n- **The iOS app's Bluetooth traffic was captured and analysed.** An iPhone\n  records it in a sysdiagnose once Apple's Bluetooth logging profile is\n  installed. Its packet log was parsed directly, message by message, and put\n  side by side with what this plugin sends. That is where the clock message\n  (`0x80`) and attribute subscriptions (`0x96`) came from. Neither appears in\n  the notes this started from.\n- **Everything was measured against a real lamp**, from a Raspberry Pi, with\n  test builds put onto it as prereleases. Connection reliability was measured\n  over repeated runs, which is why the plugin makes four quick attempts rather\n  than one clever one: one succeeds about two times in three, four together\n  above 98%. The 150 ms gap between writes has a 100 ms measurement behind\n  it. The whole attribute range `0x2000`–`0x2040` was read one attribute at a\n  time. Daylight tracking was checked against a NOAA sunrise calculation,\n  across deliberate power cuts and overnight, and by watching a sunrise from\n  the lamp's log.\n- **Where the lamp and the published notes disagreed, the lamp won.** They\n  place everything under one Bluetooth service where this lamp uses three,\n  call the encryption AES-GCM where it is AES-CBC with an HMAC, require\n  acknowledged writes the lamp does not even offer, and describe a motion\n  sensor that never reports motion.\n- **The lamp does not always tell the truth.** For some settings it confirms a\n  write and throws the value away, so the plugin reads those settings back\n  rather than trusting the reply. Why the lamp would not keep a location took\n  two days, dozens of refused writes, and eight theories that were tested and\n  dropped: write order, the app's timing, a beacon exchange, a hidden set-up\n  flag. It turned out that nobody had told it the time.\n\nThe findings, including the wrong turns, are in\n[docs/PROTOCOL.md](docs/PROTOCOL.md), so nobody has to take the same wrong\nturns again.\n\n## Credits\n\nThe starting point was the BLE notes by **S-Termi**, reverse-engineered from the\nMyDyson Android app and published in\n[cmgrayb/hass-dyson](https://github.com/cmgrayb/hass-dyson): the handshake, the\nmessage framing and the main control characteristics, enough to get a\nconnection going and the light switching. Most of the rest — the clock, the\nlocation and the day, the attribute channel and its acknowledgements,\nsubscriptions, the presets, age adjustment, and every correction to those\nnotes — came from reading the decompiled Android app again, analysing the iOS\napp's Bluetooth traffic, and measuring a real lamp; see\n[How this was worked out](#how-this-was-worked-out). This plugin is an\nindependent TypeScript implementation.\n\nNot affiliated with or endorsed by Dyson.\n\n## Licence\n\nMIT — see [LICENSE](LICENSE).\n","readmeFilename":"README.md"}