{"_id":"node-hue-api","_rev":"136-21f4c508083ba0d426086537d903f43e","name":"node-hue-api","description":"Philips Hue API Library for Node.js","dist-tags":{"latest":"5.0.0-beta.16","next":"5.0.0-beta.1","v4-next":"4.0.9-rc1"},"versions":{"0.1.0":{"name":"node-hue-api","version":"0.1.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"}],"scripts":{"test":"make test"},"dependencies":{"xml2js":"0.2.2","q":"0.8.12","q-io":"1.5.1","parseUri":"1.2.3-2","MD5":"1.0.3"},"devDependencies":{"mocha":"*","chai":"1.4.2"},"engines":{"nodejs":">= 0.8.0"},"keywords":["philips","hue","api","living","color"],"_id":"node-hue-api@0.1.0","description":"An API for NodeJS that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and \tPhilips Living Color Lamps.","dist":{"shasum":"e7703cc1eee0d170f0e0f3b4c52bebe1fe43a9bd","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.1.0.tgz","integrity":"sha512-sy8aiv0JykkvhKAIus+XwrGTpWoAvd7l+cKXgiKH4hU7/G6lFaKx2vkL0vWFr24rxHDkJuE+XuesLKFbDnMd+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHK0b9k2qji6f1LcNoZFykgKbqBmcrnB6E3wf4nlqgJ/AiEAmWzSdNCFwjqnb9LcIlWIeOissgPdZ0DRnzczIOLbfck="}]},"_npmVersion":"1.1.69","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.1.1":{"name":"node-hue-api","version":"0.1.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"}],"scripts":{"test":"make test"},"dependencies":{"xml2js":"0.2.2","q":"0.8.12","q-io":"1.5.1","parseUri":"1.2.3-2","MD5":"1.0.3"},"devDependencies":{"mocha":"*","chai":"1.4.2"},"engines":{"nodejs":">= 0.8.0"},"keywords":["philips","hue","api","living","color"],"_id":"node-hue-api@0.1.1","description":"An API for NodeJS that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","dist":{"shasum":"021ebf0e1cb8cca3d1a132cce37d3e4c0348948c","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.1.1.tgz","integrity":"sha512-IXorlbKHIqvIhc2h+UXtUsA0ESzlAVxdwWW7toKopObHiblvY990KRHm2kFl3J63Qv34cbEDnHAWqa4toRE/Fg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE3cCsShxE8AxhyiP90m+G9/lEMsp47R31DAq6az90J0AiBLMuSe63gBMVp82iW/U1lFrlocYtw5O/GUph9rJvvVYA=="}]},"_npmVersion":"1.1.69","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.1.2":{"name":"node-hue-api","version":"0.1.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"}],"scripts":{"test":"make test"},"dependencies":{"xml2js":"0.2.2","q":"0.8.12","q-io":"1.5.1","parseUri":"1.2.3-2","MD5":"1.0.3"},"devDependencies":{"mocha":"*","chai":"1.4.2"},"engines":{"nodejs":">= 0.8.0"},"keywords":["philips","hue","api","living","color"],"_id":"node-hue-api@0.1.2","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","dist":{"shasum":"1d3b86b33e40699060aeac31024370b51a6d99e7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.1.2.tgz","integrity":"sha512-GDsnmmuQKDxDAf3Jk+WPl0HivLgsq+nVN3+mLVQqNZO59hqYwBbRRHxGuH1y2P82tnFDIVgDxXznp8OSljtAWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcJRlir+dxKwcXoU+aMk3ai2ZKsQeWkbKOS5lxZyJyzQIhAPQRvU0coreY6h73jN/u+Fo8+vv0oDxrvQdSJeShyJMM"}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.1.3":{"name":"node-hue-api","version":"0.1.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"}],"scripts":{"test":"make test"},"dependencies":{"xml2js":"0.2.2","q":"0.8.12","q-io":"1.5.1","parseUri":"1.2.3-2","MD5":"1.0.3"},"devDependencies":{"mocha":"*","chai":"1.4.2"},"engines":{"nodejs":">= 0.8.0"},"keywords":["philips","hue","api","living","color","colour"],"_id":"node-hue-api@0.1.3","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","dist":{"shasum":"a14a931354172f4063732e882628d0a18bc32e08","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.1.3.tgz","integrity":"sha512-PQ8ZNRrZHU4Zs0R+BO9TqsCyk8T5+4OOO2Xn43C1AlxrxShLXkUNKtaTnBQmlxCXTM7RECNk24P5rp3qKOPIVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrMBSmR1iXp12iZCePsRwbCv4nDJOx9237LLuCgXdYTAIgcVOqO7B+CpKOpmSTpZ9keOPIJjJ0S420EQ6zSeiE1Ns="}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.1.4":{"name":"node-hue-api","version":"0.1.4","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"scripts":{"test":"make test"},"dependencies":{"xml2js":"0.2.2","q":"0.9.3","q-io":"1.6.5","parseUri":"1.2.3-2","MD5":"1.0.3"},"devDependencies":{"mocha":"1.9.0","chai":"1.6.0"},"engines":{"nodejs":">= 0.8.0"},"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"_id":"node-hue-api@0.1.4","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","dist":{"shasum":"07320caaa66df4337c9a525f9b4fe1c347192b11","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.1.4.tgz","integrity":"sha512-U+SMw28uOC+tJ/c/8jgT7ltGrdjiafFiDvYhEPRCm9aqUR0MQW64N3caE6z4BxD7M+/G8fOuAU3OuVMAnONgUg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkOYjhS+VyvHkb1k5cOzR/FXLm4OtSrOSupscWpT5B2AIhAKj/tJR4m17Jm3QM9Pk6tO9iOurlwMNGSMHkVh52mt+e"}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.2.0":{"name":"node-hue-api","version":"0.2.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"0.2.2","q":"0.9.3","q-io":"1.6.5","parseUri":"1.2.3-2","traits":"0.4.0"},"devDependencies":{"mocha":"1.9.0","chai":"1.6.0"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","_id":"node-hue-api@0.2.0","dist":{"shasum":"548b02820947021c9a42d1fb88c481afd0e825e7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.0.tgz","integrity":"sha512-3qtJOw8K5fLGxksm1qoCJduDycdB87hcRraXTcjq2LerfSd6DV98BL0FHt99krK2I0mzKnthDrEWSTmBNQZOKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDalw6nWOC7tq+8/oBXZgbXAw8BT250FIPVErDaOGPhxAIhAO0YXsjtScFr8BCRp3HJlX8O8WLoLZ/d/PSt+o+s6cFV"}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.2.1":{"name":"node-hue-api","version":"0.2.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~0.9.3","q-io":"~1.6.5","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.9.0","chai":"~1.6.0"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","_id":"node-hue-api@0.2.1","dist":{"shasum":"5cd4062d4cdd5fee5f6127f1c6cf9264ce40872a","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.1.tgz","integrity":"sha512-Fb8bStdm8YDptR7Y9tFYQlvjbh/2XzcTXZxA20NizPbghvv43qftf/15l8ZfJ4SLuvmVFELMoW1WHhdnUqY9ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFysCC5C0vcxVo2G96HtaR2WeNFSQ0NERPGdieJDwCe7AiEAsG50JPjqIxVLOFPjzsmVr0YVMbNT/JSi+BVLwusyWJw="}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.2.2":{"name":"node-hue-api","version":"0.2.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~0.9.3","q-io":"~1.6.5","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.9.0","chai":"~1.6.0"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","_id":"node-hue-api@0.2.2","dist":{"shasum":"c246ee92876bc7d35347f9bf32ddcaa18c99361c","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.2.tgz","integrity":"sha512-LpY0ROB9cPwtta748v8tXol8vcpdswqtL0ZOjeAUltGJATlb9hoddRm4sMnV2nW0VLJ/NYbT7JV+nZjVPzoojQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDIPnmheOtQDvRzL9TKvwRb/levcbVrmoxcGCmLz2aIfAiA12VmQVHjy9U6ralOUmhlzKaOHuDicXtMMKsiK5VXg1Q=="}]},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.2.3":{"name":"node-hue-api","version":"0.2.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.0.1","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@0.2.3","dist":{"shasum":"ace70821a6e1ca49083f70c7dd84dbd6fef1e9ca","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.3.tgz","integrity":"sha512-PGikaTygKL1NeeFyQ6bhYay77HvgIK1cOfWgataVqW72PoZ7oN7IinXiduS2BkykZaZr2m8PEjcg+Mhxu+pqWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBG4TkBylzy+N194ah9eCQ53SojOrrx7J+VTaOS3L6EAIgGp/nUHzZw4BXoWa/D1X4jo8RGoznITGtMc5dPbrLC5c="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"0.2.4":{"name":"node-hue-api","version":"0.2.4","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.0.1","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"04bb156ee7084e6c06055b4f7a2d4ceb3b11f9f6","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@0.2.4","_shasum":"be35d7f43647049fa825a2b7c165a145237fe13e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"be35d7f43647049fa825a2b7c165a145237fe13e","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.4.tgz","integrity":"sha512-rDjXw6V+kqEMthImVCvTTcDPRt8p/MHQavmQ6eBbavkH4Xy+A/RZqtGzhMuDhu1talVWQtSZRrvfxPrPr19Ssw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD05Yq0GnVwz3auWQCmWHYc4lczd9k21Qk4vC4CamKMjAIgARM9jWK8FTJIrGXqHsu/O4Wt7VnP0XZzxz/oyPN2YMs="}]},"directories":{}},"0.2.5":{"name":"node-hue-api","version":"0.2.5","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.0.1","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e3bbd82ee7869a30bdb0a133bd8807d72a3d8dc3","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@0.2.5","_shasum":"3f94fd5b92e677338655c6e3112e334effe79739","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"3f94fd5b92e677338655c6e3112e334effe79739","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.5.tgz","integrity":"sha512-hTVj4pkmyegW7f5FhLzxh6PZa6wUIQ7999PJ/pWLqb68HTS+Db1SHm250xHE8Qfm6W2LbFNDmdyTYJsFMAuzAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaBKwS1aHkZ5X/7Z0T7NMrI7Ia5hxg9cBUd7Kmd8TbqgIgJ9KD2Tm0Drs/ZPam23DT9SLg/T5XARPNk4d/sMD8yMA="}]},"directories":{}},"0.2.6":{"name":"node-hue-api","version":"0.2.6","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.0.1","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"691f939e0d71224684179fb8879419f8844826d2","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@0.2.6","_shasum":"cce03379a003121f340907f699e009931c38ada4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"cce03379a003121f340907f699e009931c38ada4","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.6.tgz","integrity":"sha512-/wqjsVyXbOpTDQk+k+bb2NkzWCVLdj8n7gJfkySutMPgI4Pj2wxIG8J8Q8zhKjdS/eo9hkZ2NIFHz51EStXDOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZtKI/1Rs29g6A1NDcs1Y7+qyEiG/GymcbWWhzGvdmCAiEAnLkRuE826WY1Y4qiC3fJnEG1/K7Hgb/7xlBjr7x2zKk="}]},"directories":{}},"0.2.7":{"name":"node-hue-api","version":"0.2.7","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.0.1","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"03d229b3a3b79836c9a9571cda90cfaf027c9924","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@0.2.7","_shasum":"d4a589da9581418313e7819b874d45934d5b2c4c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"d4a589da9581418313e7819b874d45934d5b2c4c","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-0.2.7.tgz","integrity":"sha512-GNkk7VJo/ej5Uql3LWiIRZDsCj/zXSNIVroSIyVFamGbz9+N4NvdU+uFzRY7Gey41qqtNhGNSGuxhQ8Q2V64vA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDs8INvnDEVCfPPT6qsJQ/es1ASl+FUek2ukIF6b9czaAiEAmIi3Fr3o1PvfvaFroYzifWlrpeiwtUdvIJTFLWRDgOw="}]},"directories":{}},"1.0.0":{"name":"node-hue-api","version":"1.0.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"9dc85ba16eec5ef44d31e6bad55a9a3032465887","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.0.0","_shasum":"d3ca4e7d2125ac0b1d50836c859cbb56c8c35741","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"d3ca4e7d2125ac0b1d50836c859cbb56c8c35741","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.0.0.tgz","integrity":"sha512-3gwBiK7TMYr3cwwVBPEm2CBc4ygHvWtdv56H43JqhGi4M//FL1i9LBvI4cIneBTekM9mXptIVYgrbGE5zoHuyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlZagJZlOUpHNTRaoV2A4fEJeADGmGnSxVHuUpz4cebwIhANnMWTkEYJbj3RhOCxMCn/llwElBmOyv6pDSVH8no3He"}]},"directories":{}},"1.0.1":{"name":"node-hue-api","version":"1.0.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"8597a6712c033b0c1793986b3f6ce16a78ba6a97","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.0.1","_shasum":"0d4c03a28b314da4d69b376231147289e19fbbc5","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"0d4c03a28b314da4d69b376231147289e19fbbc5","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.0.1.tgz","integrity":"sha512-bVWAHExXXjCdyz4qe8Akbye/O2bWdgWrbHJgpTmmHuzzIbDqtjJTAFXCfZC5eyDcotR8vQ4jJYwN3eRXQXfy/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlRx8KIJ7mIBp6hC/hsgbQ7OtgBokIEAa+hYG4wUSZwwIgZMM0Gh4ikXjgrftyyLyNTKGw3warwLzPGqBpN8vkqns="}]},"directories":{}},"1.0.2":{"name":"node-hue-api","version":"1.0.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"fc2fae53f70497cdd04c7058c150c61f2c759869","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.0.2","_shasum":"5e945fcf5b76f5fe3fa48cf022f44f1594d40357","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"5e945fcf5b76f5fe3fa48cf022f44f1594d40357","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.0.2.tgz","integrity":"sha512-n/CLqOdN14KfcVOPmHuP+cdyAxLcIyLiV/G5mrXCZLhB+0QtIkphahe/GmiU0EwTzo85mNh8T9PVC+cLfydK5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+3wygPmOSIi3z6QhF3YLNn7JhOG6sUQOIWRvkTaqfqwIhAO1dYBQBxctYAQZRYr1oRAGA1RTD3rVpjqi6V4SsBObv"}]},"directories":{}},"1.0.3":{"name":"node-hue-api","version":"1.0.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e2aef52e303b0747e5f6134f534f89f29ccc5a15","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.0.3","_shasum":"e7b7f9fd773fdc8024fc2ef2fd00e10286fdc047","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"e7b7f9fd773fdc8024fc2ef2fd00e10286fdc047","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.0.3.tgz","integrity":"sha512-8dBj1R+pLo6JtLe6XJQ/U8VTxpxyj7g9fTgn9RO+KTPfOhEzuqUOpoYdIQVxQR5yzIhjN2Wusx/UgAxF/yO6nw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/TiqEaGQMhiaMbMW/xzcqzjVh9VBWNfdxghY7gE4oowIgaL1fyH2eMhtrfhVvAJomOXxuRpeHDHySLeMaIN9gi4A="}]},"directories":{}},"1.0.4":{"name":"node-hue-api","version":"1.0.4","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"4a51ffd276ee7a825c5dc6ab41a38069662ba368","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.0.4","_shasum":"3aa3a7635bbc4a2f36234f29473378dd46a32dcf","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"3aa3a7635bbc4a2f36234f29473378dd46a32dcf","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.0.4.tgz","integrity":"sha512-glW8x/ojxIvn6KzY8ql6/wFI48+UKInJ4tJBUlRNGgrHH7hJYB+cH6lnDkh1v3NmnlK4o3tEhkFUmqkRzw9jpw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiqFf3s52AGMOuPOv1wAuTVDpebNXheGrZWsJaSeouAAiAwcBr9L4TZRKCHGLt6OG4VgALfQjB9tUx1DEOMPOnPgw=="}]},"directories":{}},"1.0.5":{"name":"node-hue-api","version":"1.0.5","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"9557420983078443357ec12899b84386d38c1f3d","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.0.5","_shasum":"2ea1b70b3c3a098cced499f299b77355342dc035","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"2ea1b70b3c3a098cced499f299b77355342dc035","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.0.5.tgz","integrity":"sha512-20Dl6U7xDWI2IZhzZm6gqWFneCA2t2y/YO1JGqzoQJu+UjZveEIFVsby3Ywr/owMvrlcT+Lmxdri6794zn/G1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAepD0qxsdcDq+tjdZ1cWDSU16pxDUxYxRKsYaNwfthnAiEAjWOg3KfaVzqUmpjOKML54s8/MzotQ2nALiezR5SLz08="}]},"directories":{}},"1.1.0":{"name":"node-hue-api","version":"1.1.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"https://github.com/peter-murray/node-hue-api"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1","semver":"~4.3.3"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"3b2be7ba7764cb4a1b9e784fba8fd1b2189bb02c","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api","_id":"node-hue-api@1.1.0","_shasum":"5dde832988ef2e2f7135ed883ed040c2913274b7","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"dist":{"shasum":"5dde832988ef2e2f7135ed883ed040c2913274b7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.1.0.tgz","integrity":"sha512-5nqIpFMTUEjz3lwrjFvgTtGBBqCljCxdmCL5C3mv4IDMUL3hlW7e/PQV5PTnB15j3ksbEOtPaDG7vtnlODabtA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH3bAsN+JJ+e/7F8TW+h+CoN/R+Fu4OO2h83c+VcsE5ZAiB6+bDHKEorpQsWNwTuOnsZYpHLmFC4dfNhwmeg0yTrwA=="}]},"directories":{}},"1.1.1":{"name":"node-hue-api","version":"1.1.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1","semver":"~4.3.3"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"59c4d1de2de4e612647e9a02e9a3b89abb5c83fa","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@1.1.1","_shasum":"be0d644b3a3d37acd1155507cccb9f141e147c56","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"be0d644b3a3d37acd1155507cccb9f141e147c56","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.1.1.tgz","integrity":"sha512-kTXvIyDmPq22DlKzL6G2k7C87iVAMEMLbxzSFsxsIHuguPFcKwUGaOACXg0V2OcJSL1hJNjyqHSNXOls9G+qoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChTDDZbzR/HJNGw9PlH86o3/Ru1ohgyOxKvl/1MEexGgIhAJLGbXw3KIKFUjCe3GejBjH7gAfYggO9XQheL51a/cfp"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"1.1.2":{"name":"node-hue-api","version":"1.1.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","parseUri":"~1.2.3-2","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1","semver":"~4.3.3"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"886ef4073d93dd94483b18e1f1c78e77f062fbb9","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@1.1.2","_shasum":"48a16698018bc4113144e463bfa79077cb70d2e6","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"48a16698018bc4113144e463bfa79077cb70d2e6","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.1.2.tgz","integrity":"sha512-kcKFYIBaJIackMVBPaEQvZ8LmiAWutVfsyjPV3LmYDdVGDS5pYSjP0DYCuAXPpjiigM/7oeruv7VDimbpUgXTw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbbf3yWjRPG8CP23/4yKjpqLbIUM61cIWp0AWMfcT8kAiA15cGAycxsWdnXc2C934dm5HzY8wsnROxPQahqXQQTNA=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"1.2.0":{"name":"node-hue-api","version":"1.2.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1","semver":"~4.3.3"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"3f2045f59ca326f6850ab22c74facbd508268e8e","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@1.2.0","_shasum":"5be79de21950dc5367ecd485bc1e0d259c708cc4","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.1","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"5be79de21950dc5367ecd485bc1e0d259c708cc4","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.2.0.tgz","integrity":"sha512-4Clgeor754aQIXSPCwTs1vf3wpG6TpZ76sugJx+FCxZ3jCWSxYI+RZ8WAJwirVecn0R9KUMATZ4lx3QXAo1dag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7F18DuOpkEPGNjSgCqC0+HGj58AWpofUbL0vbUlnM8AiEAz0P//W05zPQ27K2HFQlU6C8HXX1LCw9b19sG3GHuocY="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"1.2.1":{"name":"node-hue-api","version":"1.2.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.2.2","q":"~1.0.0","request-util":"~0.1.0","traits":"~0.4.0"},"devDependencies":{"mocha":"~1.20.1","chai":"~1.9.1","semver":"~4.3.3"},"engines":{"nodejs":">= 0.8.0"},"licenses":[{"type":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}],"keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"714fbec4d9c834f2a57add5b0b67e558cbab04a8","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@1.2.1","_shasum":"76cee22d445746b13a1901f57ee98656244f55b6","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.1","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"76cee22d445746b13a1901f57ee98656244f55b6","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-1.2.1.tgz","integrity":"sha512-ylv4a/4ltcFwjM1OV1USWKGLnFWIokoruggnchaJfz2nYjav4pOyJ5HPg66rWFAjF2Cy9PLQKYb5GreQ6icqjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHp5Zooy97QXYmrDUsVq5Fje++ISwP0I0/JtnpZoit8TAiEAugWV5roGFCxHOZG1DP4KMeCTE91oHlwwI/s0v5nfLZg="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"2.0.0-RC1":{"name":"node-hue-api","version":"2.0.0-RC1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"3ee5d0dadc9c15617f4377bda73f5e9e454a1842","description":"An API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and Philips Living Color Lamps.","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.0.0-RC1","_shasum":"8a58eed7bd45b3c492350b60eda625adae420da1","_from":".","_npmVersion":"3.4.1","_nodeVersion":"4.2.2","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"8a58eed7bd45b3c492350b60eda625adae420da1","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.0.0-RC1.tgz","integrity":"sha512-rZyyuIwwuSmCh05B/tOgD0jTiSBoZ+ZndgUjtR3DpDXgPbqdAKvpJrAVZwKSH2nBjAL4Q04tYKhfG88YPOel9Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG36XlaZKve1CETt0gwCTbOmEFYX7OOxcVKSp6NjrQb6AiA9Umcwz6bNN+AM00p++b/dT6kZ0WKG8UlDzewNSKV8JA=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"2.0.0":{"name":"node-hue-api","version":"2.0.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"f3963a8f0aea97aac4b9d43ae381f4421f24b590","description":"[![npm version](https://badge.fury.io/js/node-hue-api.svg)](https://badge.fury.io/js/node-hue-api)","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.0.0","_shasum":"2f762bd695f8df2cbe48ff64ef203dff0ab80e86","_from":".","_npmVersion":"3.4.1","_nodeVersion":"4.2.2","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"2f762bd695f8df2cbe48ff64ef203dff0ab80e86","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.0.0.tgz","integrity":"sha512-ZoRyiR/1wMtk7MNAZUdj2iGYFrHnUeGsV/xw/w0wX/S6UVK3lL+hIrEcSBWLUzxhGasNYGBJRu1IqlBnxokBtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeH6L3fIjI0nkHRJ9ZFTWSW3XZQR2AE1QUTdZDZnrqIAiAeJjnd485g0nKNo/AnLTGmPG/PYnZzWzmXpkadEzxylA=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"2.0.1":{"name":"node-hue-api","version":"2.0.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e6c602d96223ceceac0ab632c3b49e392b0a39de","description":"[![npm version](https://badge.fury.io/js/node-hue-api.svg)](https://badge.fury.io/js/node-hue-api)","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.0.1","_shasum":"09a07c235fc4948e33bb958b49d1bfdb9f72ccd9","_from":".","_npmVersion":"3.4.1","_nodeVersion":"4.2.2","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"09a07c235fc4948e33bb958b49d1bfdb9f72ccd9","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.0.1.tgz","integrity":"sha512-gqFNNZGkGgiOWAruCx/vr2dooOEJuewJjNf3zvyW/JCHWo9nyoKrVWb+EU0QrUWs0uTrAojXvTvqYrUmHJThTg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCve+cdHX5bv99o4mch2rQnq13c2f28Oc4f6Cx/iSVuHwIhAN3oVyPKlq+727w2iU4C6ko4Iavf7oLSVwam2YoeqNwc"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{}},"2.1.0":{"name":"node-hue-api","version":"2.1.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"9380b824a382bc8e409ed244214bcdfdc38e30ea","description":"[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.1.0","_shasum":"016767e534f2f1093747659bbae4c839a3d5eeaf","_from":".","_npmVersion":"3.4.1","_nodeVersion":"4.2.2","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"016767e534f2f1093747659bbae4c839a3d5eeaf","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.1.0.tgz","integrity":"sha512-A43bVuVbG5RwYK4cpvucxeqZr0lL1SPXIxxCRQJMfYYCNdVXtUClT7l8fFp0LNyHXDSEWjC4sIasyh0SxsGnig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRguSz6EWjT07C34qONQkoX1kLk2cvy8S2z+DVMcqefQIhAOCzDQ4DcyuPnBGd+NILa/7tZ8v23X8Bb9FW79qTpGu8"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/node-hue-api-2.1.0.tgz_1454867799459_0.417270126985386"},"directories":{}},"2.1.1":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.1.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"43ec59c7edc715e6100f8310dbcbed32de3d1b31","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.1.1","_shasum":"5fb3c0fdf7f2a56ef8d7569a5c997001964c74d1","_from":".","_npmVersion":"3.4.1","_nodeVersion":"4.2.2","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"5fb3c0fdf7f2a56ef8d7569a5c997001964c74d1","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.1.1.tgz","integrity":"sha512-+MmqwPr/ZdWd79QsbO9EbAHTKRbQlyxBtxh4ChHwa/HL2hkbNVSWDY8mgP0SA6TO4xelfkuZg1C2OyT1lCqjoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAu29btU0DDKmC53ZeF/wbE/5qdWR/hYLt+J/cYz4cahAiBCsHjx1HhKEK6sq7+HxEoW9M2o41H2uRuvVArAb8RKjQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/node-hue-api-2.1.1.tgz_1454867978573_0.8076796850655228"},"directories":{}},"2.2.0":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.2.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"dba7d897bcca5b24e0cf2c788d399e03236826ef","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.2.0","_shasum":"992abd46f503e55ce0dad14549d8b4011fe24894","_from":".","_npmVersion":"3.4.1","_nodeVersion":"4.2.2","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"992abd46f503e55ce0dad14549d8b4011fe24894","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.2.0.tgz","integrity":"sha512-Aa6OhkjD6Z3xoREAiSH1C2KkAkw8eVNKHuZbqaEB4D62yULHUVFSx2Kcd/tnRI7NIn613R8/wB1T16ww+CBDMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBarEOi9kke89QG/qlf3akhDaJlKzsoGk1ek/gTudKKQIgXTBrkWmwEXZmZo31zGz+G8kKAG4k+IZJITApPrRxN2o="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/node-hue-api-2.2.0.tgz_1456599218808_0.6050997730344534"},"directories":{}},"2.3.0":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.3.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.8.1","traits":"~0.4.0"},"devDependencies":{"mocha":"~2.3","chai":"~3.4","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"529bb02dfef5bd83a30720e72f3e07292d04b3f8","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.3.0","_shasum":"a2d99c46746c34eff42d16e6347c488d866e6698","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"a2d99c46746c34eff42d16e6347c488d866e6698","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.3.0.tgz","integrity":"sha512-DjS/8vXuZ2KzWz1m15hdb6yJsHlmdlJR3gLKSFrCJeRp43TqaKFjj/M8MQA9+0JqUwvFu/kFR8dVaA9NrTPlPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDYZhd4cE4olQZfWx9jHC4Aw7paiWXr6GVuMbnnL6auxAiACxnTaHhRe73ol+RkkvRsKAIC3tZ0hHUnl7px0EwmfLg=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-hue-api-2.3.0.tgz_1476131411769_0.43738315789960325"},"directories":{}},"2.4.0":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.15.3","traits":"~0.4.0"},"devDependencies":{"mocha":"~3.2","chai":"~3.5","semver":"~5.0"},"engines":{"nodejs":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"6206bb1fc8b3cb802ad5fa2852a3c6f250f9dddb","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.0","_shasum":"ea1d968181cb101bc1235e83902a2ed3bf67a2e5","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"ea1d968181cb101bc1235e83902a2ed3bf67a2e5","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.0.tgz","integrity":"sha512-Z6ZIAFUG8Re3p/k0Gqod8vxMtH7WRvzGcM7jn5cBDTG6dSqWe5uVBboRh14Jdu8atlVdDGG3SlXVTrsl4U46yg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxBOPB9LkmOmKRHoqXYyz9Qeq/JfSfbdvoVm1g9Kdu9wIhAKiqzOMNSzDks6SeUPzvkZJjvpC4GESMA0CKluMSXpnx"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/node-hue-api-2.4.0.tgz_1483561094318_0.2614324844907969"},"directories":{}},"2.4.1":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.15.3","traits":"~0.4.0"},"devDependencies":{"mocha":"~3.2","chai":"~3.5","semver":"~5.0"},"engines":{"node":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"b8c65c863fc1e15c179a8b83519174c7ee428ad5","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.1","_shasum":"2b5ec1fe817b12b22f524f09dc94ec5c0baeb3a7","_from":".","_npmVersion":"2.15.8","_nodeVersion":"4.4.7","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"2b5ec1fe817b12b22f524f09dc94ec5c0baeb3a7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.1.tgz","integrity":"sha512-nUMcJAzjEJNGGRjc/x5WVgrydsMh+l0O1G8IuL3M7Vzd4hLZAiOjHpdLfQBTrwPZxHThQF/vrbICUNRIpT119g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFQ0itgmp62lYaxuy1bv/vGGNKosMN+LHvHv8jUiAro4AiBL0uiVu+yM7HRj2uzQLjWFmkqVtcdXJ7xQkpiPBi61cg=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-hue-api-2.4.1.tgz_1484855579377_0.6476261913776398"},"directories":{}},"2.4.2":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.15.3","traits":"~0.4.0"},"devDependencies":{"mocha":"~3.2","chai":"~3.5","semver":"~5.0"},"engines":{"node":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"96dba498c9cca3e818bef5af31969349993be841","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.2","_shasum":"f721aba415a6c4a8d0b4c2af0ab36939f0ab5cb7","_from":".","_npmVersion":"4.3.0","_nodeVersion":"6.10.0","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"shasum":"f721aba415a6c4a8d0b4c2af0ab36939f0ab5cb7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.2.tgz","integrity":"sha512-56O3ETBOXas4s/Sg5lPby/N/3LarpvCFNs5jyjbKfP0or9L96W8fEN3UY5Jqjc1HumfqCg6aOzyGsPGGJTzeFA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhwF/A30WLKRblF4BshygweEfxTpZpNhLCNbrj4fhBeAiEA+cZX+03tnd5bBq2wFbnsh7xr3p4DyxmIJexIkbmAtSI="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/node-hue-api-2.4.2.tgz_1489527885601_0.2553543117828667"},"directories":{}},"2.4.3":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"xml2js":"~0.4","q":"~1.4","deep-extend":"~0.4.0","axios":"~0.15.3","traits":"~0.4.0"},"devDependencies":{"mocha":"~3.2","chai":"~3.5","semver":"~5.0"},"engines":{"node":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"5a5cc7df0582f43b6f09bd2d96cdaee6b56fedba","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.3","_npmVersion":"5.8.0","_nodeVersion":"9.4.0","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"integrity":"sha512-4nwacVRzEf2+4jBGlQVIXH6CtfPzzFbB11CmxHF7c9MECta7nNlBPaESedAI+n+iGLqmtdWtjOxqgguHiO6DXg==","shasum":"cfb39619d005018ff8ca77b58b1d3af8755afe9b","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.3.tgz","fileCount":52,"unpackedSize":362394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbecdTCRA9TVsSAnZWagAAfbEQAJ1sT8sf3B7fYMEdTQUS\nTQx6VK1FSgNvnXn61Mby0hTVp6iportLWvE91JZhndMyfM7utQOhhlNCoGaw\ng/86/+isVsBfR5TuOo1pZ/kW97RmIeN0cbDiDRNnvfYNdkLD4O92BmIZNA+Y\nWuReWUE2cVv4zCGYsXTf0eedTJyQUtU7uQgUMvG23VnSWSHppBG4Zomind/N\nKIuOLzOcFFNgdPkD8U8FnTmeI/t5PyWjP1dUW/YrwqdK0T0l2ctrzt/PqUt5\n/QzMxr9FH7imtYCybmzHyduHoAVsnNbjp4VKBaKj/Nn+5MKn/KnNxLYGtSyb\nMdfh1A4xEwjc/6FH4e/MVdZmMJd1cJpv3fbaHvxrWpcoQ6b3ZDMCxQllKi5B\nk//ugYKQcwkfpuMV5Tc45X2JZBn3sNhqudCOxZKcPNKFOuPHJXfspVqThZ8b\nUN9Plx5DxTwuT0j8Fvs4dmAvaRWi1qqWZuezQIJ1t3knEP3UJvFWIWSq+ahV\nWw7PocPd7DGzJZBkKaHjJwRQZ3E+yQ40A2pnVlCFK8WGk6tCEIB2OXTrQ1X8\nHOwX5XLYlys5oXDAJdzycOytGdbz/2rBDZZ6iFV1yXPWXeVHMy9QGkID6GP0\nZOlnwn1c4wmCW32Hdiox2xLfNvfwgQGrNxq1rtSEM8BplF/wVMlS8WRbitEr\nXyq6\r\n=eAW7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFnXFhe/pJVTWnE3+TbWHtQgoNOQNxXf//LMjr9l5Qf6AiA+OR972jeD2kjkHfx4I0UN1HEgi/9aXCh/cOlvBO4d2w=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_2.4.3_1534707538060_0.6180296032079122"},"_hasShrinkwrap":false},"2.4.4":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.4","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"~0.15.3","deep-extend":"^0.6.0","q":"~1.4","traits":"~0.4.0","xml2js":"~0.4"},"devDependencies":{"chai":"~3.5","mocha":"^5.2.0","semver":"~5.0"},"engines":{"node":">= 4.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"3e5d410347fbdd14577a0301c1791937546e0aaf","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.4","_npmVersion":"6.4.1","_nodeVersion":"9.4.0","_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"dist":{"integrity":"sha512-526lV8pK2x4HW2JufXHVcFHj8Z9mOuPR37Gu+/w9Vw/CAPvzKXY5BkG8KmOLbpzjiWljN3s+JMO3n4xDra3l9Q==","shasum":"661e27ccf448223a1e68f5786d426e9ea0811c25","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.4.tgz","fileCount":52,"unpackedSize":362396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbulMJCRA9TVsSAnZWagAAt1sP/2LKMiPKSK22bCc8Rfny\nIYgjkzT2GMQbi7bl5aoCgLPzCWUa/gwwLsBCSB0JA8ZCYDHGupDVjKOwCN1+\nYwjBzmtKeIIfp03ccxHee30VpjfDSNRjPenQyHj8/U18bHNtX1pSIUKy7EBz\nQyq90hlQrX8cZFGG1bOW/Ip9PebEKFnAukwRXUvgMMNCqcfWHqoUc0QcFmcm\nLPyU643Q83jAzczO9JWwx7iWJ1TBxjA6nDdpgkyMXazg5M8bVAITvE0lwzI/\nKI+kBnUK6H5cF2bWiILKxCA6X9HcYYbdPlbcZNxTM8/+R0zc1M/T2C0NFIWC\nDtXDxA97GLylmNweG9mHp2OsxCtiheqnEgbSTIJlFXv2EITyD16mEJ9yUaUg\nR+1DUy5qwYg5l1xYgUsaXQ0JAeNa3EL61O3sjXbtMs30SAtR7svoVmFn2p67\n/7lygHL2rHMQlgE0OoMSNtDZqLcsHNlz1qMoGCa/Wd5ZuQOf7u5PS2cNmWN8\ntIKqWwitDt4GozPRzBwAt0iLGZqy8C2MRNfEZECDmBIdjNUrX9zfOaKfuNbA\np/q6DPDYIkfGQ2SgDRpiPHX7ZkGzTIIwtVcz2bOcolmMqnkuB6fEHq4IyCn2\n2PD6qJEpJk0hipv56QjORLgkGWcGnfoZzAWBUUugO/vMN6ZyuLv47wJg47R/\nOSV0\r\n=HX6+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDOep43+X5XDsCI9Ka05LGBgU78C859/SzuW9KTpSaGdAiEA+DQW4SScXxqhmVbwdXh7AXARG8xDVIPkKbKsmK/t0Kw="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_2.4.4_1538937608306_0.32979872408548916"},"_hasShrinkwrap":false},"2.4.5":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.5","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.18.0","deep-extend":"^0.6.0","q":"~1.4","traits":"~0.4.0","xml2js":"~0.4"},"devDependencies":{"chai":"^4.2.0","mocha":"^6.1.4","semver":"~5.0"},"engines":{"node":">= 8.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"f3221cbcad7eaccf64012bf1bcb0efc7aeaf4f5a","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.5","_nodeVersion":"12.2.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-JmT9Ljueiki8ZJ/jEg7vP8PMYwaBGbaSXUbgu1wL1Q0RKB06PNjm2ql4NZnMBSUdR8Oy1/c7/gOPoyyY7JEv3g==","shasum":"fb7ab206bc08040d57cb405c7e87e6dd31cce7aa","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.5.tgz","fileCount":52,"unpackedSize":362822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc4YS3CRA9TVsSAnZWagAA9tIP/iQ/BTbxW5av9H8MJKmA\n9vjAjQR0upPC69zfVUv+3MtlIjQVSV79SxleOc3FsrORI/PjWahAT7OHqBaY\n14Qv1jFeacO9Yp0jUNpi1ZdGdZXHF9INxHEhaxaTRKHNJlCYsmj9aMRCmajf\nXVh9PYSpVv4uaPtmrjPMIdKdOmL0pMq2kMLJw/k4mbEk/pbAZdMLeOv1AQy6\n91yNIN+orjeY9uHj2abtOHFyoyYOK8aVIWlz0IzJffa8SjBWOTBIo36OhrLs\ny+wqKF+Br7Gf3beWMKkaG73TBnicxcr/P8fY0ReLaogVRHfNeiUfiW8ZLKwD\nfnjngI+LNxB4ADJJ+9E3T1+e6JfIFgELgn36ngGQ9hhqtTP+WDpAPxQ7UjmF\nOaWPDLY4aCKe59fDhDqKZOLiRWQNBS64hlcwIkfaVTyH2s+vqhfyLHDeM3jA\nNXKVPmn2ShCac9hNxW0YKrmVb4RfAVs5L4d4no07tPEhwL/ly0jmErqX47sQ\neSLZPxOhpkfoPiqi3cji0kWUGik4czv+k1LRY6e0ZNRQ4ho8G0bxeAjTnF25\nSuFmA7Qfg/P0eq1AKNdTirGmnBWpQzKmHKX2AAb2IMb11KnWM3igzd1Z6sDP\n9FdsR46DBEiZCoBSlD2X6tqvA6bVyJSYF20d9QAB1MK2oIKPT+mE93Utpid1\nkkrZ\r\n=/FpX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGKzXMnOtslYsDZv80MHEEWwmcBWhmRZ2vBKqo8HcVYPAiBrQIea80KKdbR0dmxoC7LniUSkfRTBok1bTj7f6YZnoQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"pmurray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_2.4.5_1558283445817_0.17060537146549604"},"_hasShrinkwrap":false},"2.4.6":{"name":"node-hue-api","description":"Phillips Hue API Library for Node.js","version":"2.4.6","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},{"name":"Ilari Mäkimattila","email":"ilari.makimattila@gmail.com"},{"name":"Bryan Schlief"},{"name":"Sebastian B","url":"SBejga"},{"email":"jon@linesandwaves.com"},{"name":"Knut Sveidqvist"}],"main":"index.js","scripts":{"test":"mocha test"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","deep-extend":"^0.6.0","q":"~1.4","traits":"~0.4.0","xml2js":"~0.4"},"devDependencies":{"chai":"^4.2.0","mocha":"^6.1.4","semver":"~5.0"},"engines":{"node":">= 8.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"fe720b684d7805d78c26a55aa79da188217e7448","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@2.4.6","_npmVersion":"6.5.0","_nodeVersion":"10.15.3","_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"dist":{"integrity":"sha512-XeIejo9zJuyBo0c/0SjLz6yOqUEuUohEoiSEcwaXStzFVa/F001MeGg5idYK4gT3MBlXQ1tgdc/AfQB59djtVA==","shasum":"e5dea617a806de5be76bb0037b30866e2cda2182","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-2.4.6.tgz","fileCount":53,"unpackedSize":381412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdBj7+CRA9TVsSAnZWagAANfIP/1XgszP68H8Up5w44Hzz\n3dWnnQC2trLc72oIjFY/BgsGRfZi0xKcIeS5qWnxQxwjjsOcIz+07yg1rfHI\nwl57lA+ZNqet4H6n7zm4kp/SgaRSmt3hraZyDfhExEUqP2aotVFiF9GPhnQT\nEUyK3YLt+zc9ZOHU6///Qr5V79wq6uaqnT0020BsLSBYgnhxzy3M6xAhXUMW\n0PGQxX1lJD5GFMbSlHC8TNsWwuyxhq0PnAIWn5w6JnYRuqprf3/d55PPU2j7\n6n05g8Nc4gw38oLHZXUWwRp3wC9ePpbAQypFOqwtiLQVoCkAPYgRNlkFWBEi\njHRi9Olyw1iLTsEMF6fJH43jMFdHNj9j1sRBnNDZ1rQk4svODrx/ip7VA9Gl\nvG5nvo/p8dNPbctu4aXihP54nZe+Zq6vIXRHEK0LHG1de+PGU92RUqshYXPd\n6HBf+bXWMviCjpl9drsGCSQ6dIMCtULf31K4WGGHNM51at3tGsA6otKY0ub/\nUuNyDAhzZ41DgplyOKMNuDbmJmcw2gvjM8DscbQaPYy75Unlc6snQRKSXTbR\n/GceHlorIQu1xFS1vN60LnZi7RLOdh0NS6gmtaVV7wPCNdH1haeWeGDgeiwT\nBoEy8eS+8PoUeLsisPJ25LX2jvtjNH7vTQwXJ/CWcYdwgnAdvh0aAcEk/G5b\n2Bg8\r\n=xDCQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCu/31q30uPwPb+M8dagDMmn0XHxOglGr25cfhcfWp9UwIgOh0/PI3Mg7CEHkCltfuAAMryZkS3MWelUDyLeFVAVOk="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_2.4.6_1560690429433_0.16144180861474688"},"_hasShrinkwrap":false},"3.0.0-alpha.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.0.0-alpha.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"4442ffeea196526620811816bd93f84f7c2310fd","readme":"# Node Hue API\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Philips Hue Light Bulbs and\r\nPhilips Living Color Lamps.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Phillips API and\r\na number of useful functions to control the lights and bridge remotely.\r\n\r\nThe library supports both function ``callbacks`` and Q ``promises`` for all the functions of the API.\r\nSo for each function in the API, if a callback is provided, then a callback will be used to return any results\r\nor notification of success, in a true Node.js fashion. If the callback is omitted then a promise will be returned for\r\nuse in chaining or in most cases simpler handling of the results.\r\n\r\nWhen using Q ``promises``, it is necessary to call ``done()`` on any promises that are returned, otherwise errors can be\r\nswallowed silently.\r\n\r\n## Table of Contents\r\n- [Change Log](#change-log)\r\n- [Work In Progress](#work-in-progress)\r\n- [Breaking Changes in 2.0.x](#breaking-changes-in-20x)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [Installation](#installation)\r\n- [Examples](#examples)\r\n- [Finding the Lights Attached to the Bridge](#finding-the-lights-attached-to-the-bridge)\r\n- [Interacting with a Hue Light or Living Color Lamp](#interacting-with-a-hue-light-or-living-color-lamp)\r\n- [Using LightState to Build States](#using-lightstate-to-build-states)\r\n- [Turning a Light On/Off using LightState](#turning-a-light-onoff-using-lightstate)\r\n- [Setting Light States using custom JSON Object](#setting-light-states-using-custom-json-object)\r\n- [Getting the Current Status/State for a Light](#getting-the-current-statusstate-for-a-light)\r\n- [Working with Groups](#working-with-groups)\r\n- [Working with Schedules](#working-with-schedules)\r\n- [Working with scenes](#working-with-scenes)\r\n- [Advanced Options](#advanced-options)\r\n- [License](#license)\r\n\r\n## Change Log\r\nFor a list of changes, please refer to the change log;\r\n[Changes](Changelog.md)\r\n\r\n\r\n## Work In Progress\r\nThere are still some missing pieces to the library which includes;\r\n* Rules API\r\n* Improved handling of settings/commands for Schedules\r\n\r\n\r\n## Breaking Changes in 2.0.x\r\nIn version `2.0.x` breaking changes were made to the API so that the library could better integrate with the `1.11`\r\nversion of Hue Bridge's software. This involved a number of new API endpoints and changes to types of activities that\r\nhad been wrapped by this library, which the bridge endpoints now offer.\r\n\r\nThe majority of the changes in the API were with respect to the scenes, as these were stored inside the bridge, instead\r\nof in the lights. As such the scene APIs have been modified to expose this new functionality.\r\n\r\n### Node.js 0.10.x and Early 0.12.x Issues\r\nIn version `2.0.x` the HTTP library was swapped out with a new one `axios`. This library requires that there is a\r\n`promise` present in Node.js.\r\nVersions 0.10.x and some early versions of 0.12.x will require a shim to work with the node-hue-api library now.\r\n\r\nIf you get an error stack trace like the following, you will need the promise shim;\r\n\r\n```\r\nnode_modules/axios/lib/axios.js:45\r\nvar promise = Promise.resolve(config);\r\n^\r\nReferenceError: Promise is not defined\r\n```\r\n\r\nThe shim dependency is available at [https://github.com/stefanpenner/es6-promise] and can be installed via npm using\r\n``npm install es6-promise``\r\n\r\nOnce you have the dependency, you will need to add the following into your code to apply the polyfill:\r\n\r\n```js\r\nrequire('es6-promise').polyfill();\r\n```\r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Unofficial Hue Documentation: <http://burgestrand.github.com/hue-api/>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## Installation\r\n\r\nNodeJS application using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\n## Examples\r\n\r\n### Locating a Philips Hue Bridge\r\nThere are two functions available to find the Phillips Hue Bridges on the network ``nupnpSearch()`` and ``upnpSearch()``.\r\nBoth of these methods are useful if you do not know the IP Address of the bridge already.\r\n\r\nThe official Hue documentation recommends an approach to finding bridges by using both UPnP and N-UPnP in parallel\r\nto find your bridges on the network. This API library provided you with both options, but leaves it\r\nto the developer to decide on the approach to be used, i.e. fallback, parallel, or just one type.\r\n\r\n\r\n#### nupnpSearch() or locateBridges()\r\nThis API function makes use of the official API endpoint that reveals the bridges on a network. It is a call through to\r\n``http://meethue.com/api/nupnp`` which may not work in all circumstances (your bridge must have signed into the methue portal),\r\n in which case you can fall back to the slower\r\n``upnpSearch()`` function.\r\n\r\nThis function is considerably faster to resolve the bridges < 500ms compared to 5 seconds to perform a full search on my\r\nown network.\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\");\r\n\r\nvar displayBridges = function(bridge) {\r\n\tconsole.log(\"Hue Bridges Found: \" + JSON.stringify(bridge));\r\n};\r\n\r\n// --------------------------\r\n// Using a promise\r\nhue.nupnpSearch().then(displayBridges).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\nhue.nupnpSearch(function(err, result) {\r\n\tif (err) throw err;\r\n\tdisplayBridges(result);\r\n});\r\n```\r\n\r\nThe results from this call will be of the form;\r\n```\r\nHue Bridges Found: [{\"id\":\"001788fffe096103\",\"ipaddress\":\"192.168.2.129\",\"name\":\"Philips Hue\",\"mac\":\"00:00:00:00:00\"}]\r\n```\r\n\r\n\r\n#### upnpSearch or searchForBridges()\r\nThis API function utilizes a network scan for the SSDP responses of devices on a network. It is the only method that does not\r\nsupport callbacks, and is only in the API as a fallback since Phillips provided a quicker discovery method once the API was\r\nofficially released.\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n\ttimeout = 2000; // 2 seconds\r\n\r\nvar displayBridges = function(bridge) {\r\n\tconsole.log(\"Hue Bridges Found: \" + JSON.stringify(bridge));\r\n};\r\n\r\nhue.upnpSearch(timeout).then(displayBridges).done();\r\n```\r\nA timeout can be provided to the function to increase/decrease the amount of time that it waits for responses from the\r\nsearch request, by default this is set to 5 seconds (the above example sets this to 2 seconds).\r\n\r\nThe results from this function call will be of the form;\r\n```\r\nHue Bridges Found: [{\"id\":\"001788096103\",\"ipaddress\":\"192.168.2.129\"}]\r\n```\r\n\r\n\r\n### Registering a new Device/User with the Bridge\r\nOnce you have discovered the IP Address for your bridge (either from the UPnP/N-UPnP function, or looking it up on the\r\nPhilips Hue website), then you will need to register your application with the Hue Bridge.\r\n\r\nRegistration requires you to issue a request to the Bridge after pressing the Link Button on the Bridge (although you can\r\nnow do this via the API too if you already have an existing user account on the Bridge).\r\n\r\nThis library offer two functions to register new devices/users with the Hue Bridge. These are detailed below.\r\n\r\n\r\n### Bridge Configuration\r\nYou can obtain a summary of the configuration of the Bridge using the ``config()`` or ``getConfig()`` functions;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.config().then(displayResult).done();\r\n// using getConfig() alias\r\napi.getConfig().then(displayResult).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.config(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n// using getConfig() alias\r\napi.getConfig(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n```\r\n\r\nThis will provide results detailing the configuration of the bridge (IP Address, Name, Link Button Status, Defined Users, etc...);\r\n```\r\n{\r\n  \"name\": \"Philips hue\",\r\n  \"zigbeechannel\": 11,\r\n  \"bridgeid\": \"xxxxxxx\",\r\n  \"mac\": \"00:xx:88:xx:f3:xx\",\r\n  \"dhcp\": false,\r\n  \"ipaddress\": \"192.168.2.245\",\r\n  \"netmask\": \"255.255.255.0\",\r\n  \"gateway\": \"192.168.2.1\",\r\n  \"proxyaddress\": \"none\",\r\n  \"proxyport\": 0,\r\n  \"UTC\": \"2017-01-04T20:01:21\",\r\n  \"localtime\": \"2017-01-04T20:01:21\",\r\n  \"timezone\": \"Europe/London\",\r\n  \"modelid\": \"BSB002\",\r\n  \"datastoreversion\": \"59\",\r\n  \"swversion\": \"01036659\",\r\n  \"apiversion\": \"1.16.0\",\r\n  \"swupdate\": {\r\n    \"updatestate\": 0,\r\n    \"checkforupdate\": false,\r\n    \"devicetypes\": {\r\n      \"bridge\": false,\r\n      \"lights\": [],\r\n      \"sensors\": []\r\n    },\r\n    \"url\": \"\",\r\n    \"text\": \"\",\r\n    \"notify\": false\r\n  },\r\n  \"linkbutton\": false,\r\n  \"portalservices\": true,\r\n  \"portalconnection\": \"connected\",\r\n  \"portalstate\": {\r\n    \"signedon\": true,\r\n    \"incoming\": true,\r\n    \"outgoing\": true,\r\n    \"communication\": \"disconnected\"\r\n  },\r\n  \"factorynew\": false,\r\n  \"replacesbridgeid\": \"xxxxxxxxxxx\",\r\n  \"backup\": {\r\n    \"status\": \"idle\",\r\n    \"errorcode\": 0\r\n  },\r\n  \"whitelist\": {\r\n    ...\r\n  }\r\n}\r\n```\r\n\r\nIf you invoke the ``config()`` or ``connect()`` functions with an invalid user account (i.e. one that is not valid) then\r\nresults of the name and software version will be returned from the bridge with no other information;\r\n```\r\n\r\n  \"apiversion\": \"1.16.0\"\r\n  \"bridgeid\": \"xxxxxxxxxxx\"\r\n  \"datastoreversion\": \"59\"\r\n  \"factorynew\": false\r\n  \"mac\": \"00:xx:88:xx:f3:xx\"\r\n  \"modelid\": \"BSB002\"\r\n  \"name\": \"Philips hue\"\r\n  \"replacesbridgeid\": \"xxxxxxxxxxx\"\r\n  \"swversion\": \"01036659\"\r\n}\r\n```\r\nFor this reason, if you want to validate that the user account used to connect to the bridge is correct, you will have to\r\nlook for a field that is not present in the above result, like the ``zigbeechannel``, ``ipaddress`` or ``linkbutton`` would be good\r\nproperties to check.\r\n\r\n//TODO Need to document setting config value and timezones\r\n\r\n### Timezones\r\nTo obtain the valid timezones for the bridge, you can use the ``getTimezones()`` or ``timezones()`` function.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.getTimezones().then(displayResult).done();\r\n// or using 'timezones' alias\r\napi.timezones().then(displayResult).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.getTimezones(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n// or using 'timezones' alias\r\napi.timezones(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n```\r\n\r\n//TODO setting a time zone\r\n\r\n\r\n### Software and API Version\r\nThe version of the software and API for the bridge is available from the `config` function, but out of convenience there\r\nis also a `getVersion` and `version` function which filters the `config` return data to just give you the version details.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.getVersion().then(displayResult).done();\r\n// or using 'version' alias\r\napi.version().then(displayResult).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.getVersion(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n// or using 'version' alias\r\napi.version(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n```\r\n\r\nThis will result in data output as follows;\r\n```\r\n{\r\n    \"name\": \"Philips hue\",\r\n    \"version\": {\r\n        \"api\": \"1.5.0\",\r\n        \"software\": \"01018228\"\r\n    }\r\n}\r\n```\r\n\r\n### Registering without an existing Device/User ID\r\nA user can be registered on the Bridge using ``registerUser()`` or ``createUser()`` functions. This is useful when you have not got\r\nan existing user account on the Bridge to use to access its protected functions.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar host = \"192.168.2.129\",\r\n    userDescription = \"device description goes here\";\r\n\r\nvar displayUserResult = function(result) {\r\n    console.log(\"Created user: \" + JSON.stringify(result));\r\n};\r\n\r\nvar displayError = function(err) {\r\n    console.log(err);\r\n};\r\n\r\nvar hue = new HueApi();\r\n\r\n// --------------------------\r\n// Using a promise\r\nhue.registerUser(host, userDescription)\r\n    .then(displayUserResult)\r\n    .fail(displayError)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback (with default description and auto generated username)\r\nhue.createUser(host, function(err, user) {\r\n\tif (err) throw err;\r\n\tdisplayUserResult(user);\r\n});\r\n```\r\n\r\nThe description for the user account is optional, if you do nto provide one, then the default of \"Node.js API\" will be set.\r\n\r\nThere is a convenience method, if you have a existing user account when you register a new user, that will programmatically\r\npress the link button for you. See the details for the function ``pressLinkButton()`` for more details.\r\n\r\n\r\n#### Registration Output/Error\r\nWhen registering a new user you will get the username created, or an error that will likely be due to not pressing the\r\nlink button on the Bridge.\r\n\r\nIf the link button was NOT pressed on the bridge, then you will get an ``ApiError`` thrown, which will be captured by the displayError function in the above examples.\r\n```\r\nApi Error: link button not pressed\r\n```\r\n\r\nIf the link button was pressed you should get a response that will provide you with a hash to use as the username for connecting with the Hue Bridge, e.g.\r\n```\r\n033a6feb77750dc770ec4a4487a9e8db\r\n```\r\n\r\n\r\n### Bridge Description\r\nYou can obtain the UPnP/Discovery description details of the Bridge using the function ``description()`` or\r\n``getDescription()``. The result of this will be the contents of the `/description.xml` converted into a JSON object.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.description().then(displayResult).done();\r\n// using alias getDescription()\r\napi.getDescription().then(displayResult).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.description(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n// using alias getDescription()\r\napi.getDescription(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n```\r\n\r\n\r\n### Validating a Connection to a Philips Hue Bridge\r\nTo connect to a Philips Hue Bridge and obtain some basic details about it you can use the any\r\nof the following functions;\r\n* ``config()`` or ``getConfig()``\r\n* ``version()`` or ``getVersion()``\r\n\r\nThe details of the results of these functions are provided above.\r\n\r\n\r\n### Obtaining the Complete State of the Bridge\r\nIf you have a valid user account in the Bridge, then you can obtain the complete status of the bridge using\r\n``fullState()`` or ``getFullState()``.\r\nThis function is computationally expensive on the bridge and should not be invoked frequently.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.getFullState().then(displayResult).done();\r\n// or alias fullState()\r\napi.fullState().then(displayResult).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.getFullState(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n// or alias fullState()\r\napi.fullState(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n```\r\n\r\nThis will produce a JSON response similar to the following (large parts have been removed from the result below);\r\n```\r\n{\r\n  \"lights\": {\r\n    \"5\": {\r\n      \"state\": {\r\n        \"on\": false,\r\n        \"bri\": 0,\r\n        \"hue\": 6144,\r\n        \"sat\": 254,\r\n        \"xy\": [\r\n          0.6376,\r\n          0.3563\r\n        ],\r\n        \"alert\": \"none\",\r\n        \"effect\": \"none\",\r\n        \"colormode\": \"hs\",\r\n        \"reachable\": true\r\n      },\r\n      \"type\": \"Color light\",\r\n      \"name\": \"Living Color TV\",\r\n      \"modelid\": \"LLC007\",\r\n      \"swversion\": \"4.6.0.8274\",\r\n      \"pointsymbol\": {\r\n        \"1\": \"none\",\r\n        \"2\": \"none\",\r\n        \"3\": \"none\",\r\n        \"4\": \"none\",\r\n        \"5\": \"none\",\r\n        \"6\": \"none\",\r\n        \"7\": \"none\",\r\n        \"8\": \"none\"\r\n      }\r\n    }\r\n  },\r\n  \"groups\": {\r\n    \"1\": {\r\n      \"action\": {\r\n        \"on\": false,\r\n        \"bri\": 63,\r\n        \"hue\": 65527,\r\n        \"sat\": 253,\r\n        \"xy\": [\r\n          0.6736,\r\n          0.3221\r\n        ],\r\n        \"ct\": 500,\r\n        \"effect\": \"none\",\r\n        \"colormode\": \"ct\"\r\n      },\r\n      \"lights\": [\r\n        \"1\",\r\n        \"2\",\r\n        \"3\"\r\n      ],\r\n      \"name\": \"NodejsApiTest\"\r\n    }\r\n  },\r\n  \"config\": {\r\n  \t...\r\n  \t\"whitelist\": {\r\n          \"51780342fd7746f2fb4e65c30b91d7\": {\r\n            \"last use date\": \"2013-05-29T20:29:51\",\r\n            \"create date\": \"2013-05-29T20:29:51\",\r\n            \"name\": \"Node.js API\"\r\n          },\r\n          \"08a902b95915cdd9b75547cb50892dc4\": {\r\n            \"last use date\": \"1987-01-06T22:53:37\",\r\n            \"create date\": \"2013-04-02T13:39:18\",\r\n            \"name\": \"Node Hue Api Tests User\"\r\n          }\r\n        },\r\n\t\"swversion\": \"01005825\"\r\n\t...\r\n  },\r\n  \"schedules\": {\r\n    \"1\": {\r\n      \"name\": \"Updated Name\",\r\n      \"description\": \"Like anyone really needs a wake up on Xmas day...\",\r\n      \"command\": {\r\n        \"address\": \"/api/08a902b95915cdd9b75547cb50892dc4/lights/5/state\",\r\n        \"body\": {\r\n          \"on\": true\r\n        },\r\n        \"method\": \"PUT\"\r\n      },\r\n      \"time\": \"2014-01-01T07:00:30\",\r\n      \"created\": \"1970-01-01T00:00:00\"\r\n    }\r\n  },\r\n  \"scenes\": {}\r\n```\r\n\r\n### Obtaining Registered Users/Devices\r\nTo obtain the details for all the registered users/devices for a Hue Bridge you can use the ``registeredUsers()`` function.\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\";\r\nvar username = \"08a902b95915cdd9b75547cb50892dc4\";\r\nvar api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.registeredUsers().then(displayResult).done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.registeredUsers(function(err, config) {\r\n    if (err) throw err;\r\n    displayResult(config);\r\n});\r\n```\r\nThis will produce a JSON response that has a root key of \"devices\" that has an array of registered devices/users for the Bridge. An example of the result is shown below\r\n```\r\n{\r\n  \"devices\": [\r\n    {\r\n      \"name\": \"Node API\",\r\n      \"username\": \"083b2f780c78555d532b78544f135798\",\r\n      \"created\": \"2013-01-02T19:17:02\",\r\n      \"accessed\": \"2012-12-24T20:18:55\"\r\n    },\r\n    {\r\n      \"name\": \"iPad\",\r\n      \"username\": \"279c26146e3318997d69a8a66330b5f5\",\r\n      \"created\": \"2012-12-24T14:05:25\",\r\n      \"accessed\": \"2013-01-04T21:37:29\"\r\n    },\r\n    {\r\n      \"name\": \"iPhone\",\r\n      \"username\": \"fcb0a47cd664f0cbaa34d36def54577d\",\r\n      \"created\": \"2012-12-24T17:13:54\",\r\n      \"accessed\": \"2013-01-03T20:50:40\"\r\n    }\r\n  ]\r\n}\r\n````\r\n\r\n### Deleting a User/Device\r\nTo delete a user or device from the Bridge, you will need an existing user account to authenticate as, and then you can call\r\n``deleteUser()`` or ``unregisterUser()`` to remove a user from the Bridge Whitelist;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\";\r\n\r\nvar displayUserResult = function(result) {\r\n    console.log(\"Deleted user: \" + JSON.stringify(result));\r\n};\r\n\r\nvar displayError = function(err) {\r\n    console.log(err);\r\n};\r\n\r\nvar hue = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\nhue.deleteUser(\"2b997aae306f15a734d8d1c2315d47cb\")\r\n    .then(displayUserResult)\r\n    .fail(displayError)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\nhue.unregisterUser(\"1ab7d44219e64c373b4b915e34494443\", function(err, user) {\r\n    if (err) throw err;\r\n    displayUserResult(user);\r\n});\r\n```\r\nWhich will result in a ``true`` result if the user was removed, or an error if any other result occurs (i.e. the user does not exist) as shown below;\r\n```\r\n{\r\n\tmessage: 'resource, /config/whitelist/2b997aae306f15a734d8d1c2315d47cb, not available',\r\n\ttype: 3,\r\n\taddress: '/config/whitelist/2b997aae306f15a734d8d1c2315d47cb'\r\n}\r\n```\r\n\r\n\r\n## Finding the Lights Attached to the Bridge\r\nTo find all the lights that are registered with the Hue Bridge, so that you might be able to interact with them, you can use the ``lights()`` function.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.lights()\r\n    .then(displayResult)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.lights(function(err, lights) {\r\n    if (err) throw err;\r\n    displayResult(lights);\r\n});\r\n```\r\n\r\nThis will output a JSON object that will provide details of the lights that the Hue Bridge knows about;\r\n```\r\n{\r\n  \"lights\": [\r\n    {\r\n      \"id\": \"1\",\r\n      \"name\": \"Lounge Living Color\",\r\n      \"type\": \"Extended color light\",\r\n      \"modelid\": \"LCT001\",\r\n      \"manufacturername\": \"Phillips\",\r\n      \"uniqueid\": \"00:17:88:01:xx:xx:xx:xx-xx\",\r\n      \"swversion\": \"66013452\",\r\n      \"state\": {\r\n          \"on\": true,\r\n          \"bri\": 202,\r\n          \"hue\": 11315,\r\n          \"sat\": 237,\r\n          \"effect\": \"none\",\r\n          \"xy\": [\r\n            0.5534,\r\n            0.4239\r\n          ],\r\n          \"alert\": \"none\",\r\n          \"colormode\": \"xy\",\r\n          \"reachable\": true\r\n        }\r\n    },\r\n    {\r\n      \"id\": \"2\",\r\n      \"name\": \"Right Bedside\",\r\n      \"type\": \"Extended color light\",\r\n      \"modelid\": \"LCT001\",\r\n      \"manufacturername\": \"Phillips\",\r\n      \"uniqueid\": \"00:17:88:01:xx:xx:xx:xx-xx\",\r\n      \"swversion\": \"66013452\",\r\n      \"state\": {\r\n          \"on\": true,\r\n          \"bri\": 202,\r\n          \"hue\": 11315,\r\n          \"sat\": 237,\r\n          \"effect\": \"none\",\r\n          \"xy\": [\r\n            0.5534,\r\n            0.4239\r\n          ],\r\n          \"alert\": \"none\",\r\n          \"colormode\": \"xy\",\r\n          \"reachable\": true\r\n        }\r\n    },\r\n    {\r\n      \"id\": \"3\",\r\n      \"name\": \"Left Bedside\",\r\n      \"type\": \"Extended color light\",\r\n      \"modelid\": \"LCT001\",\r\n      \"manufacturername\": \"Phillips\",\r\n      \"uniqueid\": \"00:17:88:01:xx:xx:xx:xx-xx\",\r\n      \"swversion\": \"66013452\",\r\n      \"state\": {\r\n          \"on\": true,\r\n          \"bri\": 202,\r\n          \"hue\": 11315,\r\n          \"sat\": 237,\r\n          \"effect\": \"none\",\r\n          \"xy\": [\r\n            0.5534,\r\n            0.4239\r\n          ],\r\n          \"alert\": \"none\",\r\n          \"colormode\": \"xy\",\r\n          \"reachable\": true\r\n        }\r\n    }\r\n  ]\r\n}\r\n```\r\nThe `id` values are what you will need to use to interact with the light directly and set the states on it (like on/off, color, etc...).\r\n\r\n## Interacting with a Hue Light or Living Color Lamp\r\nThe library provides a function, __setLightState()__, that allows you to set the various states on a light connected to the Hue Bridge.\r\nYou can either provide a JSON object that contains the values to set the various state values, or you can use the provided __lightState__ object in the library to build the state object ot pass to the function. See below for examples.\r\n\r\n## Using LightState to Build States\r\nThe __lightState__ object provides a fluent way to build up a simple or complex light states that you can pass to a light.\r\n\r\nThe majority of the various states that you can set on a Hue Light or Living Color lamp are available from this object.\r\n\r\n### LightState Options\r\nThe __lightState__ object provides the following methods that can be used to build various states (all of which can be combined);\r\n\r\nThe LightState object, provides functions with the same name of the underlying Hue Bridge API properties for lights,\r\nwhich take values documented in the official Phillips Hue Lights API:\r\n\r\n| Function | Details |\r\n|:-------------|:---------------------|\r\n| `on(value)`   | Sets the `on` state, where the value is `true` or `false`|\r\n| `bri(value)`   | Sets the brightness, where value from 0 to 255 |\r\n| `hue(value)` | Sets the hue, where value from 0 to 65535 |\r\n| `sat(value)`  | Sets the saturation value from 0 to 255  |\r\n| `xy(x, y)`      | Sets the xy value where x and y is from 0 to 1 in the Philips Color co-ordinate system |\r\n| `ct(colorTemperature)` | Set the color temperature to a value between 153 and 500 |\r\n| `alert(value)` | Sets the alert state to value `none`, `select` or `lselect`. If no parameter is passed will default to `none`. |\r\n| `effect(effectName)` | Sets the effect on the light(s) where `effectName` is either `none` or `colorloop`. |\r\n| `transitiontime(int)` | Sets a transition time to a multiple of 100 milliseconds, e.g. 4 means 400ms |\r\n| `bri_inc(value)`| Increments/Decrements the brightness by the value specified. Accepts values -254 to 254. |\r\n| `sat_inc(value)`| Increments/Decrements the saturation by the value specified. Accepts values -254 to 254. |\r\n| `hue_inc(value)`| Increments/Decrements the hue by the value specified. Accepts values -65534 to 65534. |\r\n| `ct_inc(value)` | Increments/Decrements the color temperature by the value specified. Accepts values -65534 to 65534. |\r\n| `xy_inc(value)` | Increments/Decrements the xy co-ordinate by the value specified. Accepts values -0.5 to 0.5. |\r\n\r\nThere are also a number of convenience functions to provide extra functionality or a more natural language for building\r\nup a desired Light State:\r\n\r\n| Function | Details |\r\n|:---------|:--------|\r\n| `turnOn()` | Turn the lights on |\r\n| `turnOff()` |Turn the lights off |\r\n| `off()` |Turn the lights off |\r\n| `brightness(percentage)` |Set the brightness from 0% to 100% (0% is not off)|\r\n| `incrementBrightness(value)` |Alias for the `bri_inc()` function above |\r\n| `colorTemperature(ct)` |Alias for the `ct()` function above|\r\n| `colourTemperature(ct)` |Alias for the `ct()` function above|\r\n| `colorTemp(ct)`| Alias for the `ct()` function above|\r\n| `colourTemp(ct)` |Alias for the `ct()` function above|\r\n| `incrementColorTemp(value)` |Alias for the `ct_inc()` function above |\r\n| `incrementColorTemperature(value)` |Alias for the `ct_inc()` function above |\r\n| `incrementColourTemp(value)` |Alias for the `ct_inc()` function above |\r\n| `incrementColourTemperature(value)` |Alias for the `ct_inc()` function above |\r\n| `saturation(percentage)`| Set the saturation as a percentage value between 0 and 100|\r\n| `incrementSaturation(value)` |Alias for the `sat_inc()` function above |\r\n| `incrementXY(value)` |Alias for the `xy_inc()` function above |\r\n| `incrementHue(value)` |Alias for the `hue_inc()` function above |\r\n| `shortAlert()` |Flashes the light(s) once|\r\n| `alertShort()` |Flashes the light(s) once|\r\n| `longAlert()` |Flashes the light(s) 10 times|\r\n| `alertLong()` |Flashes the light(s) 10 times|\r\n| `transitionTime(int)` |Sets a transition time to a multiple of 100 milliseconds, e.g. 4 means 400ms |\r\n| `transition(milliseconds)` |Specify a specific transition time|\r\n| `transitiontime_milliseconds(milliseconds)` | Sets a transition time in milliseconds (will be rounded to the closest 100ms |\r\n| `transitionSlow()` |A slow transition of 800ms|\r\n| `transitionFast()` | A fast transition of 200ms|\r\n| `transitionInstant()` |A transition of 0ms|\r\n| `transitionDefault()` |A transition time of the bridge default (400ms)|\r\n| `white(colorTemp, briPercent)` | where colorTemp is a value between 154 (cool) and 500 (warm) and briPercent is 0 to 100|\r\n| `hsl(hue, sat, luminosity)` | Where hue is a value from 0 to 359, sat is a saturation percent value from 0 to 100, and luminosity is from 0 to 100|\r\n| `hsb(hue, sat, brightness)` | Where hue is a value from 0 to 359, sat is a saturation percent value from 0 to 100, and brightness is from 0 to 100|\r\n| `rgb(r, g, b)` | Sets an RGB value from integers 0-255|\r\n| `rgb([r, g, b])` | Sets an RGB value from an array of integer values 0-255|\r\n| `colorLoop()` | Starts a color loop effect (rotates through all available hues at the current saturation level)|\r\n| `colourLoop()` | Starts a color loop effect (rotates through all available hues at the current saturation level)|\r\n| `effectColorLoop()` | Starts a color loop effect (rotates through all available hues at the current saturation level)|\r\n| `effectColourLoop()` | Starts a color loop effect (rotates through all available hues at the current saturation level)|\r\n| `copy()`| Allows you to create an independent copy of the LightState|\r\n| `reset()` | Will completely reset/remove all provided values|\r\n\r\n\r\n### Creating Complex States\r\nThe LightState object provides a simple way to build up JSON object to set multiple values on a Hue Light.\r\n\r\nTo turn on a light and set it to a warm white color;\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi,\r\n    lightState = hue.lightState;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    state;\r\n\r\n// Set light state to 'on' with warm white value of 500 and brightness set to 100%\r\nstate = lightState.create().on().white(500, 100);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.setLightState(5, state)\r\n    .then(displayResult)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.setLightState(5, state, function(err, lights) {\r\n    if (err) throw err;\r\n    displayResult(lights);\r\n});\r\n```\r\n\r\nThe __lightState__ object will ensure that the values passed into the various state functions are correctly bounded to avoid\r\nerrors when setting them. For example the color temperature value (which determines the white value) must be between 154 and 500. If you pass in a value outside of this range then the lightState function call will set it to the closest valid value.\r\n\r\nCurrently the __lightState__ object will combine together all the various state values that get set by the various function calls. This means that if you do create a combination of conflicting values, like __on__ and __off__ the last one set will be the actual value provided in the corresponding JSON object;\r\n\r\n```js\r\n// This will result in a JSON object for the state that sets the brightness to 100% but turn the light \"off\"\r\nstate = lightState.create().on().brightness(100).off();\r\n```\r\n\r\nWhen using __lightState__ it is currently recommended to create a new state object each time you want to build a new state, otherwise you will get a combination of all the previous settings as well as the new values.\r\n\r\n\r\n## Turning a Light On/Off using LightState\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi,\r\n    lightState = hue.lightState;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(result);\r\n};\r\n\r\nvar displayError = function(err) {\r\n    console.error(err);\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"033a6feb77750dc770ec4a4487a9e8db\",\r\n    api = new HueApi(host, username),\r\n    state = lightState.create();\r\n\r\n// --------------------------\r\n// Using a promise\r\n\r\n// Set the lamp with id '2' to on\r\napi.setLightState(2, state.on())\r\n    .then(displayResult)\r\n    .fail(displayError)\r\n    .done();\r\n\r\n// Now turn off the lamp\r\napi.setLightState(2, state.off())\r\n\t.then(displayResult)\r\n    .fail(displayError)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\n// Set the lamp with id '2' to on\r\napi.setLightState(2, state.on(), function(err, result) {\r\n\tif (err) throw err;\r\n\tdisplayResult(result);\r\n});\r\n\r\n// Now turn off the lamp\r\napi.setLightState(2, state.off(), function(err, result) {\r\n\tif (err) throw err;\r\n\tdisplayResult(result);\r\n});\r\n```\r\n\r\nIf the function call is successful, then you should get a response of ``true``. If the call fails then an ``ApiError``\r\nwill be generated with the failure details.\r\n\r\n\r\n## Setting Light States using custom JSON Object\r\nYou can pass in your own JSON object that contain the setting(s) that you wish to pass to the light via the bridge. If\r\nyou do this, then a LightState object will be created from the passed in object, so that it can be properly validated\r\nand only valid values are passed to the bridge.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(result);\r\n};\r\n\r\nvar displayError = function(err) {\r\n    console.error(err);\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\napi.setLightState(2, {\"on\": true}) // provide a value of false to turn off\r\n    .then(displayResult)\r\n    .fail(displayError)\r\n    .done();\r\n```\r\n\r\nIf the function call is successful, then you should get a response of true. If the call fails then an ``ApiError`` will be generated with the failure details.\r\n\r\n\r\n## Getting the Current Status/State for a Light\r\nTo obtain the current state of a light from the Hue Bridge you can use the `lightStatus()` or `getLightStatus()` function;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayStatus = function(status) {\r\n    console.log(JSON.stringify(status, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Obtain the Status of Light '5'\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.lightStatus(5)\r\n    .then(displayStatus)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.lightStatus(5, function(err, result) {\r\n    if (err) throw err;\r\n    displayStatus(result);\r\n});\r\n```\r\n\r\nThis will produce a JSON object detailing the status of the lamp;\r\n```\r\n{\r\n  \"state\": {\r\n    \"on\": true,\r\n    \"bri\": 254,\r\n    \"hue\": 34515,\r\n    \"sat\": 236,\r\n    \"xy\": [\r\n      0.3138,\r\n      0.3239\r\n    ],\r\n    \"ct\": 153,\r\n    \"alert\": \"none\",\r\n    \"effect\": \"none\",\r\n    \"colormode\": \"ct\",\r\n    \"reachable\": true\r\n  },\r\n  \"type\": \"Extended color light\",\r\n  \"name\": \"Left Bedside\",\r\n  \"modelid\": \"LCT001\",\r\n  \"swversion\": \"65003148\",\r\n  \"pointsymbol\": {\r\n    \"1\": \"none\",\r\n    \"2\": \"none\",\r\n    \"3\": \"none\",\r\n    \"4\": \"none\",\r\n    \"5\": \"none\",\r\n    \"6\": \"none\",\r\n    \"7\": \"none\",\r\n    \"8\": \"none\"\r\n  }\r\n}\r\n```\r\n\r\n### Obtaining the RGB Value for a Light\r\nThere is a function to provide the complete light status along with an approximated RGB value (which is a rough conversion\r\nof the xy state of a light into an RGB value). This is not a perfect conversion but does get close to the current color\r\nof the lamp.\r\n\r\nTo obtain the status with the RGB approximation of a lamp use `lightStatusWithRGB()` or `getLightStatusWithRGB()`.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResult = function(result) {\r\n    console.log(result);\r\n};\r\n\r\nvar displayError = function(err) {\r\n    console.error(err);\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api;\r\n\r\napi = new HueApi(host, username);\r\napi.lightStatusWithRGB(1)\r\n    .then(displayResult)\r\n    .fail(displayError)\r\n    .done();\r\n```\r\n\r\n```js\r\n{\r\n  state: {\r\n    rgb: [ 255, 249, 221 ],\r\n     on: true,\r\n     bri: 254,\r\n     hue: 38265,\r\n     sat: 92,\r\n     effect: 'none',\r\n     xy: [ 0.3362, 0.3604 ],\r\n     alert: 'none',\r\n     colormode: 'xy',\r\n     reachable: true\r\n  },\r\n  type: 'Color light',\r\n  name: 'Living Color Floor',\r\n  modelid: 'LLC007',\r\n  manufacturername: 'Philips',\r\n  uniqueid: '00:17:88:01:00:1b:21:a3-0b',\r\n  swversion: '4.6.0.8274'\r\n}\r\n```\r\n\r\n\r\n### Searching for New Lights\r\nWhen you have added new lights to the system, you need to invoke a search to discover these new lights to allow the Bridge\r\nto interact with them. The ``searchForNewLights()`` function will invoke a search for any new lights to be added to the\r\nsystem.\r\n\r\nWhen you invoke a scan for any new lights in the system, the previous search results are destroyed.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.searchForNewLights()\r\n\t.then(displayResults)\r\n\t.done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.searchForNewLights(function(err, result) {\r\n\tif (err) throw err;\r\n\tdisplayResults(result);\r\n});\r\n```\r\nThe result from this call should be ``true`` if a search was successfully triggered. It can take some time for the search\r\nto complete.\r\n\r\n### Obtaining Newly Discovered Lights\r\nOnce a search has been completed, then the newly discovered lights can be obtained using the ``newLights()`` call.\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.newLights()\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.newLights(function(err, result) {\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\nThe results from this call should be the new lights that were found during the previous search, and a ``lastscan`` value\r\nthat will be the date that the last scan was performed, which could be ``none`` if a search has never been performed.\r\n```\r\n{\r\n  \"lastscan\": \"2013-06-15T14:45:23\"\r\n}\r\n```\r\n\r\n### Naming Lights\r\nIt is possible to name a light using the ``setLightName()`` function;\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.setLightName(5, \"A new Name\")\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.setLightName(5, \"Living Color TV\", function(err, result) {\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\nIf the call is successful, then ``true`` will be returned by the function call, otherwise a ``ApiError`` will result.\r\n\r\n\r\n## Working with Groups\r\nThe Hue Bridge can support groups of lights so that you can do things like setting a colour and status to a group\r\nof lights instead of just a single light.\r\n\r\nThere is a special \"All Lights\" Group with an id of `0` that is defined in the bridge that a user cannot modify.\r\n\r\n### Obtaining all Groups from the Bridge\r\nTo obtain all the groups defined in the bridge use the __groups()__ function;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Obtain all the defined groups in the Bridge\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.groups()\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.groups(function(err, result) {\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nThis will produce an array of values detailing the id and names of the groups;\r\n```\r\n[\r\n  {\r\n    \"id\": \"0\",\r\n    \"name\": \"Lightset 0\",\r\n    \"type\": \"LightGroup\"\r\n  },\r\n  {\r\n    \"id\": \"1\",\r\n    \"name\": \"VRC 1\",\r\n    \"lights\": [\r\n      \"1\",\r\n      \"2\",\r\n      \"3\",\r\n      \"4\",\r\n      \"5\",\r\n      \"6\",\r\n      \"7\",\r\n      \"8\"\r\n    ],\r\n    \"type\": \"LightGroup\",\r\n    \"action\": {\r\n      \"on\": false,\r\n      \"bri\": 162,\r\n      \"hue\": 13088,\r\n      \"sat\": 213,\r\n      \"effect\": \"none\",\r\n      \"xy\": [\r\n        0.5134,\r\n        0.4149\r\n      ],\r\n      \"ct\": 467,\r\n      \"alert\": \"none\",\r\n      \"colormode\": \"xy\"\r\n    }\r\n  }\r\n]\r\n```\r\nPlease note, the __Lightset 0__ group, is a special instance and will always exist and have the id of \"0\" as specified\r\nin the Hue Api documentation. Due to this internal group being maintained by the bridge internally, it will not return\r\nan array of light ids like the other groups in the results returned from a call to `groups()`.\r\n\r\nIf you need to get the full details of the __Lightset 0__ groups, then you can obtain that by using the `getGroup()`\r\nfunction, using an id argument of `0`.\r\n\r\nThe `groups` function will return all types of Groups in the bridge, these include new types of groups that support the\r\nnew [Hue Beyond|http://www2.meethue.com/en-us/the-range/hue-beyond].\r\n\r\nTo support the addition of these new types of groups, and the fact that most users will only want a subset of the types\r\nthere are now three new functions that will filter the types of groups for you;\r\n* `luminaires` Will obtain only the *Luminaire* groups (i.e. a collection of lights that make up a single device). These are not user modifiable.\r\n* `lightSources` Will obtain the *Lightsource* groups (i.e. a subset of the lights in a Luminarie). These are not user modifiable.\r\n* `lightGroups` Will obtain the defined groups in the bridge\r\n\r\n\r\n### Obtaining the Details of a Group Definition\r\nTo get the specific details of the lights that make up a group (and some extra information like the last action that was performed)\r\nuse the __getGroup(id)__ function.\r\n\r\nIn Hue Bridge API version 1.4+ the full data for the group will be returned when obtaining all groups via the `groups`\r\nor `lightGroups` functions. The only exception to this is the special All Lights Group, id 0, which requires the use of\r\na specific lookup to obtain the full details.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.getGroup(0)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.getGroup(0, function(err, result) {\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nWhich will return produce a result like;\r\n```\r\n{\r\n  \"id\": \"0\",\r\n  \"name\": \"Lightset 0\",\r\n  \"lights\": [\r\n    \"1\",\r\n    \"2\",\r\n    \"3\",\r\n    \"4\",\r\n    \"5\"\r\n  ],\r\n  \"type\": \"LightGroup\",\r\n  \"lastAction\": {\r\n    \"on\": true,\r\n    \"bri\": 128,\r\n    \"hue\": 6144,\r\n    \"sat\": 254,\r\n    \"xy\": [\r\n      0.6376,\r\n      0.3563\r\n    ],\r\n    \"ct\": 500,\r\n    \"effect\": \"none\",\r\n    \"colormode\": \"ct\"\r\n  }\r\n}\r\n```\r\n\r\n### Setting the Light State for a Group\r\nA function ``setGroupLightState()`` exists for interacting with a group of lights to be able to set all the lights to a\r\nparticular state. This function is identical to that of the ``setLightState()`` function above, except that it works on\r\ngroups instead of a single light.\r\n\r\n\r\n### Create a New Group\r\nTo create a new group use the __createGroup(name, lightIds)__ function;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Create a new Group on the bridge\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.createGroup(\"a new group\", [4, 5])\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.createGroup(\"group name\", [1, 4, 5], function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nThe function will return a promise with a result that contains the id of the newly created group;\r\n```\r\n{\r\n  \"id\": \"2\"\r\n}\r\n```\r\n\r\n\r\n### Updating a Group\r\nIt is possible to update the associated lights and the name of a group after it has been created on the bridge. The function\r\n``updateGroup()`` allows you to do this.\r\n\r\nYou can set the name, the lightIds or both with this function, just omit what you do not want to set, it will work out which\r\nparameter was passed based on type, a String for the name and an array for the light ids.\r\n\r\nWhen invoking this function ``true`` will be returned if the Bridge accepts the requested change.\r\nIt can take take a short period of time before the bridge will actually reflect the change requested, in experience 1.5\r\nseconds has always covered the necessary time to effect the change, but it could be quicker than that.\r\n\r\nChanging the name of an existing group;\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Update the name of the group\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.updateGroup(1, \"new group name\")\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.updateGroup(1, \"new group name\", function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nChanging the lights associated with an existing group;\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Update the lights in the group to ids 1, 2, and 3.\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.updateGroup(1, [1, 2, 3])\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.updateGroup(1, [1, 2, 3], function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nChanging both the name and the lights for an existing group;\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Update both the name and the lights in the group to ids 4, 5.\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.updateGroup(1, \"group name\", [4, 5])\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.updateGroup(1, \"group name\", [4, 5], function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\n\r\n### Deleting a Group\r\nThe deletion of groups is not officially supported in the released Hue API from Phillips (version 1.0), but it is still\r\npossible to delete groups, but use at your own risk *(you may have to reset the bridge to factory defaults if something\r\ngoes wrong)*.\r\n\r\nTo delete a group use the ``deleteGroup()`` function;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// Create a new Group on the bridge\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.deleteGroup(3)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.deleteGroup(4, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\nThis function call will return a ``true`` result in the promise chain if successful, otherwise an error will be thrown.\r\n\r\n\r\n## Working with Schedules\r\n\r\n### Obtaining all the Defined Schedules\r\nTo obtain all the defined schedules on the Hue Bridge use the ``schedules()`` function.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.schedules()\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.schedules(function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nThe function will return a promise that will provide an array of objects, each containing the complete details fo the schedule;\r\n```\r\n[\r\n  {\r\n    \"id\": \"9067578731131353\",\r\n    \"name\": \"Alarm\",\r\n    \"description\": \"Peter Wakeup\",\r\n    \"command\": {\r\n      \"address\": \"/api/yeM5QamRRFNXfv13/groups/0/action\",\r\n      \"body\": {\r\n        \"scene\": \"f0f7c51a6-on-7\"\r\n      },\r\n      \"method\": \"PUT\"\r\n    },\r\n    \"localtime\": \"W124/T06:10:00\",\r\n    \"time\": \"W124/T06:10:00\",\r\n    \"created\": \"2015-11-18T22:19:16\",\r\n    \"status\": \"disabled\"\r\n  },\r\n  ...\r\n]\r\n```\r\n\r\n### Obtaining the details of a Schedule\r\nTo obtain the details of a schedule use the ``getSchedule(id)`` function;\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    scheduleId = 1;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.getSchedule(scheduleId)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.getSchedule(scheduleId, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nThe promise returned by the function will return the details of the schedule in the following format;\r\n```\r\n{\r\n  \"id\": \"9067578731131353\",\r\n  \"name\": \"Alarm\",\r\n  \"description\": \"Peter Wakeup\",\r\n  \"command\": {\r\n    \"address\": \"/api/yeM5QamRRFNXfv13/groups/0/action\",\r\n    \"body\": {\r\n      \"scene\": \"f0f7c51a6-on-7\"\r\n    },\r\n    \"method\": \"PUT\"\r\n  },\r\n  \"localtime\": \"W124/T06:10:00\",\r\n  \"time\": \"W124/T06:10:00\",\r\n  \"created\": \"2015-11-18T22:19:16\",\r\n  \"status\": \"disabled\"\r\n}\r\n```\r\n\r\n### Creating a Schedule\r\nCreating a schedule requires just two elements, a time at which to trigger the schedule and the command that will be\r\ntriggered when the schedule is run.\r\nThere are other optional values of a name and a description that can be provided to make the schedule easier to identify.\r\n\r\nThere are two functions that can be invoked to create a new schedule (which are identically implemented);\r\n- ``scheduleEvent(event, cb)``\r\n- ``createSchedule(event, cb)``\r\n\r\nThese functions both take an object the wraps up the scheduled event to be created. There are only two required properties\r\nof the object, ``time`` and ``command``, with option properties ``name`` and ``description``.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    scheduledEvent;\r\n\r\nscheduledEvent = {\r\n    \"name\": \"Sample Schedule\",\r\n    \"description\": \"A sample scheduled event to switch on a light\",\r\n    \"time\": \"2013-12-24T00:00:00\",\r\n    \"command\": {\r\n        \"address\": \"/api/08a902b95915cdd9b75547cb50892dc4/lights/5/state\",\r\n        \"method\" : \"PUT\",\r\n        \"body\"   : {\r\n            \"on\": true\r\n        }\r\n    }\r\n};\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.scheduleEvent(scheduledEvent)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.createSchedule(scheduledEvent, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nThe result returned by the promise when creating a new schedule will be that of the ``id`` for the newly created schedule;\r\n```\r\n{\r\n  \"id\": \"1\"\r\n}\r\n```\r\n\r\nThe ``command`` value must be a Hue Bridge API endpoint for it to correctly function, which means it must start with\r\n``/api/<valid username>/``. For now if using this function, you will have to use the exact API end point as specified in\r\nthe Phillips Hue REST API.\r\n\r\nTo help with building a schedule and to perform some basic checking to ensure that values are correct/valid there is a\r\nhelper module ``scheduleEvent`` which can be used the build a valid schedule object.\r\n\r\n\r\n### Using ScheduleEvent to build a Schedule\r\nThe ``scheduleEvent`` module/function is used to build up a schedule that the Hue Bridge can understand. It is not a\r\nrequirement when creating schedules, but can eliminate some of the basic errors that can result when creating a schedule.\r\n\r\nTo obtain a scheduleEvent instance;\r\n```js\r\nvar scheduleEvent = require(\"node-hue-api\").scheduledEvent;\r\n\r\nvar mySchedule = scheduleEvent.create();\r\n```\r\n\r\nThis will give you a schedule object that has the following functions available to build a schedule;\r\n- ``withName(String)`` which will set a name for the schedule (optional)\r\n- ``withDescription(String)`` which will set a description for the schedule (optional)\r\n- ``withCommand(command)`` which will set the command object that the schedule will run\r\n- ``on()``, ``at()``, ``when()`` which all take a string or Date value to specify the time the schedule will run, if\r\npassing a string it must be valid when parsed by ``Date.parse()``\r\n\r\nThe ``command`` object currently has to be specified as the Hue Bridge API documentation states which is of the form;\r\n```\r\n{\r\n\t\"address\": \"/api/08a902b95915cdd9b75547cb50892dc4/lights/5/state\",\r\n    \"method\" : \"PUT\",\r\n    \"body\"   : {\r\n    \t\"on\": true\r\n    }\r\n}\r\n```\r\nThe above example command will switch on the light with id ``5`` for the username ``08a902b95915cdd9b75547cb50892dc4``.\r\n\r\nIf you use the ``withCommand()`` function then the ``address`` will be undergo basic validation to ensure it is an\r\nendpoint for the Hue Bridge which is a common mistake to make when crafting your own values.\r\n\r\nOnce a scheduleEvent has been built it can be passEd directly to the ``createSchedule()``, ``scheduleEvent()`` or\r\n``updateSchedule()`` function calls in the Hue API.\r\n\r\nFor example to create a new schedule that will turn on the light with id 5 at 07:00 on the 25th December 2013;\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi,\r\n    scheduleEvent = hue.scheduledEvent;\r\n\r\nvar displayResult = function (result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    mySchedule;\r\n\r\nmySchedule = scheduleEvent.create()\r\n    .withName(\"Xmas Day Wake Up\")\r\n    .withDescription(\"Like anyone really needs a wake up on Xmas day...\")\r\n    .withCommand(\r\n    {\r\n        \"address\": \"/api/08a902b95915cdd9b75547cb50892dc4/lights/5/state\",\r\n        \"method\" : \"PUT\",\r\n        \"body\"   : {\r\n            \"on\": true\r\n        }\r\n    })\r\n    .on(\"2013-12-25T07:00:00\");\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.createSchedule(mySchedule)\r\n    .then(displayResult)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.createSchedule(mySchedule, function(err, result) {\r\n    if (err) throw err;\r\n    displayResult(result);\r\n});\r\n```\r\n\r\n\r\n### Updating a Schedule\r\nYou can update an existing schedule using the ``updateSchedule()`` function;\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi,\r\n    scheduleEvent = hue.scheduledEvent;\r\n\r\nvar displayResult = function (result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    scheduleId = 1,\r\n    updatedValues;\r\n\r\nupdatedValues = {\r\n    \"name\": \"Updated Name\",\r\n    \"time\": \"January 1, 2014 07:00:30\"\r\n};\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.updateSchedule(scheduleId, updatedValues)\r\n    .then(displayResult)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.updateSchedule(scheduleId, updatedValues, function(err, result) {\r\n    if (err) throw err;\r\n    displayResult(result);\r\n});\r\n```\r\n\r\nThe result from the promise will be an object with the properties of the schedule that were updated and ``true`` as the\r\nvalue of each one that was successful.\r\n```\r\n{\r\n  \"name\": true,\r\n  \"time\": true\r\n}\r\n```\r\n\r\n\r\n### Deleting a Schedule\r\nAll schedules in the Hue Bridge are removed once they are triggered. To remove an impending schedule use the ``deleteSchedule()``\r\nfunction;\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi;\r\n\r\nvar displayResult = function (result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    scheduleId = 1;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.deleteSchedule(scheduleId)\r\n    .then(displayResult)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.deleteSchedule(scheduleId, function(err, result) {\r\n    if (err) throw err;\r\n    displayResult(result);\r\n});\r\n```\r\n\r\nIf the deletion was successful, then ``true`` will be returned from the promise, otherwise an ``ApiError`` will be thrown,\r\nas in the case if the schedule does not exist.\r\n\r\n\r\n## Working with scenes\r\nThe Hue Bridge can store up to 200 scenes internally. There is currently no way to delete a scene from the API once it\r\nis created, although old unused scenes will get overwritten.\r\n\r\nAdditionally, bridge scenes should not be confused with the preset scenes stored in the Android and iOS apps. In the\r\napps these scenes are stored internally. Once activated though, they may then appear as a bridge scene.\r\n\r\n\r\n\r\n### Obtaining all the Defined scenes\r\nTo obtain all the defined bridge scenes on the Hue Bridge use the ``scenes()`` or ``getScenes()`` functions:\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username);\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.scenes()\r\n    .then(displayResults)\r\n    .done();\r\n// Using 'getScenes' alias\r\napi.getScenes()\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.scenes(function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n// Using 'getScenes' alias\r\napi.getScenes(function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n```\r\n\r\nThe function will return an Array of scene definitions consisting of ``id``, ``name`` and ``lights``;\r\n```\r\n[\r\n  {\r\n    \"name\": \"Tap scene 1\",\r\n    \"lights\": [\r\n      \"1\",\r\n      \"2\",\r\n      \"3\"\r\n    ],\r\n    \"owner\": \"none\",\r\n    \"recycle\": true,\r\n    \"locked\": true,\r\n    \"appdata\": {},\r\n    \"picture\": \"\",\r\n    \"lastupdated\": null,\r\n    \"version\": 1,\r\n    \"id\": \"OFF-TAP-1\"\r\n  },\r\n  {\r\n    \"name\": \"Tap scene 3\",\r\n    \"lights\": [\r\n      \"1\",\r\n      \"2\",\r\n      \"3\"\r\n    ],\r\n    \"owner\": \"none\",\r\n    \"recycle\": true,\r\n    \"locked\": true,\r\n    \"appdata\": {},\r\n    \"picture\": \"\",\r\n    \"lastupdated\": null,\r\n    \"version\": 1,\r\n    \"id\": \"TAP-3\"\r\n  },\r\n  {\r\n    \"name\": \"Tap scene 4\",\r\n    \"lights\": [\r\n      \"1\",\r\n      \"2\",\r\n      \"3\"\r\n    ],\r\n    \"owner\": \"none\",\r\n    \"recycle\": true,\r\n    \"locked\": true,\r\n    \"appdata\": {},\r\n    \"picture\": \"\",\r\n    \"lastupdated\": null,\r\n    \"version\": 1,\r\n    \"id\": \"TAP-4\"\r\n  },\r\n  {\r\n    \"name\": \"Blue rain on 0\",\r\n    \"lights\": [\r\n      \"1\",\r\n      \"2\",\r\n      \"3\"\r\n    ],\r\n    \"owner\": \"none\",\r\n    \"recycle\": true,\r\n    \"locked\": true,\r\n    \"appdata\": {},\r\n    \"picture\": \"\",\r\n    \"lastupdated\": null,\r\n    \"version\": 1,\r\n    \"id\": \"74f97e0ba-on-0\"\r\n  }\r\n]\r\n```\r\n\r\n### Get a Scene\r\nYou can obtain a specific scene using the id of the scene and the ``scene()`` or ``getScene()`` function:\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    sceneId = \"OFF-TAP-1\"\r\n    ;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.scene(sceneId)\r\n    .then(displayResults)\r\n    .done();\r\n// Using 'getScene' alias\r\napi.getScene(sceneId)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.scene(sceneId, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n// Using 'getScene' alias\r\napi.getScene(sceneId, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n};\r\n```\r\n\r\nThe functions will return a result of the scene definition, like the following:\r\n```\r\n{\r\n  \"OFF-TAP-1\": {\r\n    \"name\": \"Tap scene 1\",\r\n    \"lights\": [\r\n      \"1\",\r\n      \"2\",\r\n      \"3\",\r\n      \"4\"\r\n    ],\r\n    \"owner\": \"none\",\r\n    \"recycle\": true,\r\n    \"locked\": true,\r\n    \"appdata\": {},\r\n    \"picture\": \"\",\r\n    \"lastupdated\": null,\r\n    \"version\": 1\r\n  }\r\n```\r\n\r\n### Creating a Scene\r\nThe original function `createScene()` was implemented to support the older `1.2.x` version of the Hue Bridge Scene\r\ncreation. In version `2.0.x` of this library, it was modified to support both the old an new versions of scene creation.\r\n\r\nIf you call this function using a an `array` of light ids and a `name` it will call the `createBasicScene()` function.\r\nAlternatively if you call this function with a `Scene` object, then the `createAdvancedScene()` function will be invoked.\r\n\r\nSee below for the specifics of the parameters and results.\r\n\r\n\r\n### Creating a Basic Scene\r\nThere are multiple definitions on scenes, some of which are stored in the Bridge, others are stored inside the iOS and\r\nAndroid applications. This API can only interact and define scenes that are stored inside the Hue Bridge.\r\n\r\nAs of version `1.11` of the Hue Bridge Software, all scenes are now stored inside the bridge.\r\n\r\nWhen creating a new scene, the current state of the lights that are being included become the state of the lights when\r\nyou activate/recall the scene in the future.\r\n\r\nWhen you create a scene via the API function ``createBasicScene()``, the scene will get an ``id`` that is created by the\r\nbridge.\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\")\r\n  , HueApi = hue.HueApi\r\n  , hueScene = hue.scene\r\n  ;\r\n\r\nvar displayResults = function(result) {\r\n  console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.245\"\r\n  , username = \"08a902b95915cdd9b75547cb50892dc4\"\r\n  , api = new HueApi(host, username)\r\n  , scene = hueScene.create()\r\n  ;\r\n\r\nscene.withName(\"My Scene\")\r\n  .withLights([1, 2, 3])\r\n  .withTransitionTime(500)\r\n  ;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.createAdvancedScene(scene)\r\n  .then(displayResults)\r\n  .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.createAdvancedScene(scene, function(err, result){\r\n  if (err) throw err;\r\n  displayResults(result);\r\n});\r\n```\r\n\r\nWhen a new scene is created, you will get a result back with the id of the created scene of the form;\r\n```\r\n{\r\n    \"id\": \"jsoaw-58sk2\"\r\n}\r\n```\r\n\r\nThe ``name`` value is optional, if one is not specified, then it will be set as the ``id`` that is generated. This is a\r\nfeature of the underlying Hue Bridge, so may change in a future firmware update.\r\n\r\n\r\n### Creating an Advanced Scene\r\nWith the advent of version `1.11` Hue Bridge software version, the creation of Scenes was officially added and the number\r\n of parameters available when creating a scene changed.\r\n\r\nThe scenes are now stored inside the bridge itself, and to support the multiple combination of parameters available you\r\nneed to provide the settings in a `Scene` object.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    sceneName = \"My New Scene\",\r\n    lightIds = [1, 2, 3, 4, 5, 6, 7]\r\n    ;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.createBasicScene(lightIds, sceneName)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.scene(lightIds, sceneName, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nWhen a new scene is created, you will get a result back with the id of the created scene of the form;\r\n```\r\n{\r\n    \"id\": \"jsoaw-58sk2\"\r\n}\r\n```\r\n\r\n### Scene Object\r\nThe Scene object allows you to define a number of parameters that can be used to define a scene as of the `1.11.x` Hue\r\nBridge firmware.\r\n\r\nTo obtain a `scene` instance;\r\n```js\r\nvar hueScene = require(\"node-hue-api\").scene;\r\n\r\nvar myScene = scene.create();\r\n```\r\n\r\nThis will give you a `Scene` object that has the following functions available to build a scene;\r\n- ``withName(String)`` which will set a name for the scene (optional)\r\n- ``withLights([])`` which will set the array of light ids for the scene\r\n- ``withTransitionTime(ms)`` which will set the transtion time in milliseconds for the lights (optional)\r\n- ``withRecycle(boolean)`` which will set the recycle flag on the scene (optional)\r\n- ``withAppData(Object)`` which will set the application data for the scene e.g. ``{data: \"some data\", version: \"1.0\"}`` (optional)\r\n- ``withPicture(String)`` a base64 encoded string which is the picture for the scene (optional)\r\n\r\nAn example of building a complex scene;\r\n```js\r\nvar hueScene = require(\"node-hue-api\").scene;\r\n\r\nvar scene = hueScene.create()\r\n              .withName(\"my scene\")\r\n              .withLights([1, 2, 3])\r\n              .withTransitionTime(2000)\r\n              .withAppData({data: \"My own application data value for the scene\"})\r\n              ;\r\n```\r\n\r\n\r\n### Updating/Modifying an Existing Scene\r\nYou can update an existing scene by using the ``updateScene()`` or ``modifyScene()`` function. When updating the scene\r\nyou can set the ``name``, ``lights`` or store the current light states of the lights in the scene. Any combination of\r\nthese parameters are possible.\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\")\r\n  , HueApi = hue.HueApi\r\n  , hueScene = hue.scene\r\n  ;\r\n\r\nvar displayResults = function(result) {\r\n  console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.245\"\r\n  , username = \"08a902b95915cdd9b75547cb50892dc4\"\r\n  , api = new HueApi(host, username)\r\n  , sceneId = \"iimpLsd4yVuVnjy\"\r\n  , sceneUpdates = hueScene.create()\r\n  ;\r\n\r\nsceneUpdates.withName(\"My Scene\")\r\n  .withLights([1, 2, 3])\r\n  ;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.modifyScene(sceneId, sceneUpdates)\r\n  .then(displayResults)\r\n  .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.modifyScene(sceneId, sceneUpdates, function(err, result){\r\n  if (err) throw err;\r\n  displayResults(result);\r\n});\r\n```\r\n\r\nWhen the scene is modified/updated, you will get a response containing the values modified;\r\n```\r\n{\r\n    \"name\": true,\r\n    \"lights\": true\r\n}\r\n```\r\n\r\nEach value that is modified will report a ``true`` or ``false`` value if the parameter was changed.\r\n\r\n\r\n### Set a Light State for a Light in a Scene\r\nIf you need to set a different light state for a light that is part of scene (that is a different state to what it was\r\nin when the original scene was created), then you can use the `setSceneLightState()`, ``updateSceneLightState()``\r\nor ``modifySceneLightState()`` function.\r\n\r\nThis function allows you to specify the desired values for a single light in a scene, if you want to set the state for\r\nmultiple bulbs, you will have to set it on each one individually.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi\r\n    , lightState = require(\"node-hue-api\").lightState\r\n    ;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.245\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    sceneId = \"node-hue-api-2\",\r\n    lightId = 1,\r\n    state = lightState.create().on().hue(2000)\r\n    ;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.setSceneLightState(sceneId, lightId, state)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.setSceneLightState(sceneId, lightId, state, function(err, result){\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nThe results from setting light sate values will be the name of each value being set followed by a value of `true` if\r\nthe change in the value was successful;\r\n\r\n```\r\n{\r\n    \"on\": true,\r\n    \"hue\": true\r\n}\r\n```\r\n\r\n\r\n### Activating or Recalling a Scene\r\nTo recall or activate a scene (synonyms for the same activity) use the ``activateScene()`` or ``recallScene()`` function.\r\n\r\nWhen a scense is being made active, it is possible to also filter the lights in the scene using a group definition to\r\nlimit the lights that will be affected by the scene activation.\r\nThis means you could have defined a scene for all your bulbs, but if you apply a group filter that includes only, say\r\nthe lounge lights, then the scene will be activated only on the lounge lights.\r\n\r\nIf a group filter is not specified (it is an optional parameter) then the API does no filtering on the lights in the\r\nscene when it is activated.\r\n\r\n```js\r\nvar HueApi = require(\"node-hue-api\").HueApi\r\n    , lightState = require(\"node-hue-api\").lightState\r\n    ;\r\n\r\nvar displayResults = function(result) {\r\n    console.log(JSON.stringify(result, null, 2));\r\n};\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    api = new HueApi(host, username),\r\n    sceneId = \"node-hue-api-2\",\r\n    lightId = 1,\r\n    state = lightState.create().on().hue(2000)\r\n    ;\r\n\r\n// --------------------------\r\n// Using a promise\r\napi.activateScene(sceneId)\r\n    .then(displayResults)\r\n    .done();\r\n// using the \"recallScene\" alias\r\napi.recallScene(sceneId)\r\n    .then(displayResults)\r\n    .done();\r\n\r\n// --------------------------\r\n// Using a callback\r\napi.activateScene(sceneId, function(err, result) {\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n// using the \"recallScene\" alias\r\napi.recallScene(sceneId, function(err, result) {\r\n    if (err) throw err;\r\n    displayResults(result);\r\n});\r\n```\r\n\r\nWhen a Scene is successfully activated/recalled, the result will be `true`.\r\n\r\n### Scenes by Name\r\nThere is no sensible way to dealing with scenes by name currently (firmware version 1.5+) as it is possible to define\r\nmultiple scenes with the same name (in fact in testing even editing a scene in the iOS app created a new scene on the\r\nbridge).\r\n\r\nThe scene `id` is the only reliable and consistent way to interact with scene activation/recalling.\r\n\r\n\r\n## Advanced Options\r\n\r\n### Timeouts\r\n\r\nIf there are issues with the Bridge not responding in time for a result of error to be delivered, then you\r\nmay need to tweak the timeout settings for the API. When this happens you will get an\r\n`ETIMEOUT` error.\r\n\r\nThe way to set a maximum timeout when interacting with the bridge is done when you instantiate the ``HueApi``.\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi;\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    timeout = 20000 // timeout in milliseconds\r\n    api;\r\n\r\napi = new HueApi(host, username, timeout);\r\n```\r\n\r\nThe default timeout, when not specified will be 10000ms (10 seconds). This is usually enough time for the bridge\r\nto respond unless you are returning a very large result (like the complete state for the bridge in a large installation)\r\n\r\n\r\n### Bridge Port Number\r\n\r\nIf you are running your bridge over a router or using some kind of NAT, it may be possible that the Hue Bridge is not\r\nrunning on the default port. If this is the case, then you can set the port number as an advanced configuration option\r\nwhen creating the API connection to the bridge.\r\n\r\n*Please note that for normal usage, you should never set the port value.*\r\n\r\n```js\r\nvar hue = require(\"node-hue-api\"),\r\n    HueApi = hue.HueApi;\r\n\r\nvar host = \"192.168.2.129\",\r\n    username = \"08a902b95915cdd9b75547cb50892dc4\",\r\n    timeout = 20000, // timeout in milliseconds\r\n    port = 8080, // not the default port for the bridge\r\n    api;\r\n\r\napi = new HueApi(host, username, timeout, port);\r\n```\r\n\r\n\r\n## License\r\nCopyright 2013-2015. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.0.0-alpha.1","_nodeVersion":"10.15.3","_npmVersion":"6.10.0","dist":{"integrity":"sha512-dr0hQnthyvH38qeMMmbI92se17kpeZzmyK4whfzV3imyu568+l59lHqrr3RBedVXhZxDGaZt6LkOSWe699ua1Q==","shasum":"8cdb6782051267255d8e5608b6019b6135b801a1","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.0.0-alpha.1.tgz","fileCount":160,"unpackedSize":495280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJLUQCRA9TVsSAnZWagAAQq4P/2Er9uorCYaTHqjxcFhR\na0geXiOWT73cE+hREYU6hdIHiuZCKa+0S19cCCNWnqkgX/Dr/KlQCq2/7gil\n1JBZ2WM6SmmESR6+FRglvBBV37m1XtmLw9/xixZHUdF9ocP9VBrSk0ngq5r5\ncSZwU3t2/1VCKeuzTJIO3EMAG5Lh3BWOqSN/OZCkB8AiVksJEQee1h1gzG4N\n0C+as1guZrb2RoVOV521CqSY8J+IlI+dx7RrvL7/v9mFlSbGG9GnVCI2r6jV\nzJPNE8LeiCgVhOgHbI0KP2eOGg5C53Rkbh3AHDU0EAQpZuMqKZjWVZ6cOh82\nlZgdEi4ECrhSF1NbW5OgfA79VBMMUjw4jxTGo8wnXz0q8XI+ETfAfeKp/d0r\nUYHR0nb88V77OXIMSD5p7nI73AvH3vlK+1cZkmcJuHWzVwXrYV8h0zC7NBIz\nHfVUh5qfWcypodVKRttNSGLLJU5hUgjfPFttcTQOZovcr2/AJ7Xz4MmStASD\nCoq4x/W4csNwv1dPBfpshLRNiQok+MbVI7ZfVf1eqlD0EOQ2AcbxwQH5jNIw\nzHJIrF9u9dJzUyNd11QbRFHKY3dUZLx0gA3ZGQMPcWous93TdT17BnCGHWBa\n2nSiNuKPXOWjddPjrmO++zXJdnZeB5C0BMLrO54D9iA48kkXeh+962kA9ZUc\nLVbf\r\n=Pl8M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVZawWICSQU7Px4Sq1L9QSILYsid622BmzpQgm3lUd/AiEAntR/12VqoCnV/51CvcXv4+TG0TnEB5lfbnOQS6Q6W4o="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.0.0-alpha.1_1562686735709_0.5929130770429714"},"_hasShrinkwrap":false},"3.0.0-alpha.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.0.0-alpha.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API and\r\na number of useful functions to control/configure its various features.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log)\r\n    - [2.x](#2x)\r\n    - [3.x](#3x)\r\n        - [2.x Backwards Compatibility Shim](#2x-backwards-compatibility-shim) \r\n\r\n- [Installation](#installation)\r\n\r\n- [v2 API](docs/v2_api.md)\r\n\r\n- [v3 API](#v3-api)\r\n    - [Discovering Hue Bridges](docs/discovery.md)  \r\n    - [Users](docs/users.md)\r\n    - [Lights](docs/lights.md)\r\n        - [Light Object](docs/light.md)\r\n        - [LightState Object](docs/lightState.md)\r\n    - [Sensors](docs/sensors.md)\r\n        - [Sensor Objects](docs/sensor.md)\r\n    - [Scenes](docs/scenes.md)\r\n        - [Scene Object](docs/scene.md)\r\n        - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n    - [Groups](docs/groups.md)\r\n        - [Group Object](docs/group.md)\r\n        - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n    - [Configuration](docs/configuration.md)\r\n\r\n- [Examples](#examples)\r\n\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, please refer to the change log;\r\n[Changes](Changelog.md)\r\n\r\n\r\n### 2.x\r\nThe library was originally written well before Promises and Async functions were part of the Javascript language (as well \r\nas callbacks being the Node.js standard at the time). The `2.x` versions of the library heavily used  `callbacks` and \r\n`Q promises` for all the functions of the API.\r\n\r\nIt was getting difficult to continue to support the new features of the bridge in this manner, and there was a lot of \r\nunnecessary dependencies that were being dragged around, some of which were abandoned, e.g. `traits` and `Q`.\r\n\r\nYou can continue to use the old 2.x release versions of this library, but the final release is `2.4.6` and no new \r\nfeatures will be added to this.\r\n\r\nThere is a shim layer in the `3.x` releases that provides a drop in to match about 95% of the v2 API, see \r\n[here](#2x-backwards-compatibility-shim) for more details.\r\n\r\n\r\n\r\n### 3.x\r\nIn version `3.x` the library was rewritten to adopt up to date Javascript language features (ES6) and remove a number of\r\nnow defunct dependencies.\r\n\r\nThis has resulted in the removal of the older `callbacks` and Q `promises` from the code base and a brand new API that\r\nincludes a number of missing pieces of the the Philips Hue Bridge which were not available under the `2.x` versions, \r\ne.g. Sensors support.\r\n\r\nThe rewrite of the API using up to date language constructs has resulted in some significant speed increases from a \r\ncode execution stand point as well as introducing improved functionality around utility functions like setting RGB values \r\non lights (which are not explicitly supported in the Philips Hue REST API).\r\n\r\n#### 2.x Backwards Compatibility Shim\r\nThere is a backwards compatibility shim provided in the `3.x` releases to allow existing (`2.x`) users of \r\nthe library some time to transition existing code over to the updated API.\r\n\r\nThis does have some minor breaking changes in some edge case features, but the majority of the core library \r\nfunctions are shimmed to use the new API code behind a backwards compatible layer that provides a shimmed layer of\r\n`callback`s and `Q` style promises as per the original API.\r\n\r\nPlease consult the [backwards compatibility changes](docs/v3_backwards_compatibility.md) for details on changes that had \r\nto be made that will change the v2 API.\r\n\r\n_Note: You are strongly encouraged to migrate off this, as it will be completely removed in the `4.x` releases, also all new \r\nfeatures will only be added to the `v3` going forward._  \r\n\r\n_Note: This shim will print out on `console.error` a number of warnings about the deprecated function calls that exist and\r\nprovide some details on what you can do to remove them._\r\n\r\nThis shim layer will be removed in the `4.x` release versions of the library.\r\n\r\n\r\n## Installation\r\n\r\nNodeJS using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNodeJS using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use stand Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\n_Note that there are a number of runnable code samples in the [examples/v3](examples/v3) directory of this repository._\r\n\r\n- [Discovering Hue Bridges](docs/discovery.md)  \r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Object](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Configuration](docs/configuration.md)\r\n\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","gitHead":"91d352fa34b6f735b3c73134f2db799adf62ca20","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.0.0-alpha.2","_nodeVersion":"10.15.3","_npmVersion":"6.10.2","dist":{"integrity":"sha512-v1mx+YGyOzUj2DAOasos/Zayuq7mYxPUwYUTeCW5b2y7lDSfIm6i6p/4m/ST5TRu/ZTPwtGsb2nY2DJZ2Mp6xg==","shasum":"b4ea68012b5b7dd1a6aa42e681b39c03f932972c","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.0.0-alpha.2.tgz","fileCount":216,"unpackedSize":621453,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQqiiCRA9TVsSAnZWagAA+GgP/2k/mLJyOf6Ex9C2k6yk\nHWr9ojO4jxCEzRwjUqsmgri/XcwJAXFow+gkKoDQUw1P/3F4qj4MhaF8PPMy\n9mUXqewYJKwZJT5mqhjuG5GTRzPqPf7iys27S1p2QJ/qH4dpZ4tRM5/KIVpJ\nYGJVhZ0rf9PhRNzcgXVISkAy37QiNLVQHAQBHUHETv3LOi41jRB+IYkGImUl\n3uS8rRfKvwyDfnb+19eNRT7fq8+wv0CJrjx2GLSpFmX2CoEYaojbuPCwVqTE\nOrkavZeUi4nM6QisexLtWAv9j9lnQBKF4/6MUfsbQuxKPZsUhPJNOrrycsTX\ne9kXo7q6xxY4KWMe2arGcRsyRKRMP+kKMqaXQcuSAr2XaX2AoDfl8aYo/wjL\nbWgrRWsK2dAkEvXcn5YW2lJu4Gtah4WkAQqxyiCjR9uqxjXKV2Xbx9C+aILO\nRYlsh2pYj/oWeDvmqC3SZwcFWu525X+eN65qiM/rbdk1X9pmBWZqrA3u+/HF\nHAUKx5vlK+oEK+vkzt6Fo9329xHobVG+wpND65+oBSguyrH1daXh5WB+jnuj\nVtk4CgOzVkVyg9I8WRAApOclAZ9OhnM97IAxiAa/MbqG2ATLu2ejkH3dvDnu\nz0MqDEUisS2O0wk2G97cIWAWQsL+XB5Mhbn+g7vA99VOk8gVBZ6DP7ynGU3f\n4Fzt\r\n=9sTv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHf47gkLZO879OiuowoUfLDUAe+lvL6JBIOHYZJSBUaFAiEA7hLvnKkDaJqUPuOC1dGViWn8trt7I40aUe5aI0H0KqE="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.0.0-alpha.2_1564649633797_0.7215916424652276"},"_hasShrinkwrap":false},"3.0.0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.0.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e1c8530fab08834ab6afaabf36e663cfa1bf9f6f","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.0.0","_nodeVersion":"12.2.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-/7lyPTrbV5XraP1byST8Gdcjl7NCYWbcpoQRLu8oqdJ70+cZooqrQbmlnHS4+ciDAcZcPFxg8DIlRSMVQom01g==","shasum":"db70ee43a65e60bc18530fcd49274843e686f893","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.0.0.tgz","fileCount":221,"unpackedSize":632025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaPJtCRA9TVsSAnZWagAAEocP/1rlv9z2nkIWRbb6nw3w\nsXpOBYb6MkuPiTs7rN491pRHHDpLJ4i1GapGOmVzlPzbZ66Bw5RHQKAQB78X\nYUROuB8lj49ZSQhk5FzpAgRbNU0ccclF9n6lCMnBUNqzfX5bDiamYcUoNhBs\nirk7aXpo7AxhZHGdUyiGnFfmFajpFiFGf92JJqCFAW6e55/Rv5bN2KrD9t+4\nOtNNJ4qRPKH4vHy83RMSr2oAkSJtqLCEc0yLiN7ARjJlzcVQunreN+Hd8m5f\nRt9nqisFrOo+3m1iDQtmyeHBIXjmh9NhU8tX7lbau1GjEDcwmyzR7iRpk0uk\nXIvkw891MYirDypblnm3eUi6NMcrHbGwTVw5vS/tNko9PEm75pENmOpXNq4g\np3SEpswO7FPYmPxgNwhvANHxTIXKZ+jb7ArWYEcWE2y7+ncIedgPbkLwqCws\ng6ns7SYSqe8J75SEIxhHHOXNbFi3pD+vAkpX+WYubhzZM8wqTpa0JZDT9E4L\n4i8dFfLWOGm1P/686VPARQxDDRDNI7ZAteJNXGYCz1aCv/CxAFHj3mTjdS5e\nq1KDYOhD2/UJaeiWFoW+2rx8BIw+WFVQrD+yDjLMFw9rhKUlGDaH8G+r77Ws\n5p2ecuFDaxfGpgAzhcRv96L6T5LM/Y8/2A9Bh2NHT5nbWiB5JRHCabqVMlcW\nIzX0\r\n=5ckM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcZTukVrMTc9lrCUoeH+e0y0GO1ffY7oF1UWRjwoQBMwIgVEYZmThQW9N98sixknWTcNSgwWCPLMFEllh4iShKPsw="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.0.0_1567158893103_0.7427030958867527"},"_hasShrinkwrap":false},"3.1.0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.1.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"4c469cc2e76aa328fafc9051ebe28d1d675667a2","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.1.0","_nodeVersion":"12.2.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-UshjUvMmnb91p1W4Mzzztj5/jloz9qspU6iYx1gZar7i5v99IoN67B2K8AHnj7lXDdNLA/yToIb70rE+Fj9qtg==","shasum":"fc47ea08bd9f68821fb915b90affbaa4e8f69396","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.1.0.tgz","fileCount":234,"unpackedSize":685064,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdchW5CRA9TVsSAnZWagAA9oQP/jOFrUlNJxD7JwbyB54e\n9yhOiMZSHvDj9IZNFH3zUZJMjhN40hxosb6vd/bnqpAJkmpEdd22t43O5pfW\nQP8QIe8WIGL9yTV+Bf4EKmaE4fb5BzilaCCTkkpAcoR2mdUN/E9RtvkQfWXG\nKpwGKgiS6XW2B6o+XS1K1I8XdYzQJ/6crt3HHWcm4raoH9yIOXOs0bMiN85b\nKv+KamgFpz/q9XHh7VBSzJLeQbdlltzw2vR/NE8dIosL+CJo8J6HnkFhFwsm\nDF3oucCMjav3E21fOepA4/IRwflQ5kafMXuHavtVwc/c83V66Y4y7PjSanFD\n2TySF1AXCcb+MV3p6b5HWDb8TPl9F91Dk3II/s3ajitejhnBb4G9Lun/SuuY\nTGtZFahudyFe/H8Xwq9wfPPenXTwOt9M8OxVsUm1QuyKpSePpshTuGymuWpj\ngKJcwBlvTeBRZu5Yf2XkaldCkWWUyrK6yq6ZFOfZ3ATRQGFxCNfkHE4Fa2Af\nKq7DO9+EpRZoba1+hnub9/Cn/P6sLhUVYKkNdbUEl/1u+Bzat9H9dRhsHsSw\nWIOYZSHKQlDXx4frJl3pODGCQGl23ZmfBcik7fW5yl0T7gyz5LTe0bO7KhV5\n4VRgXDeL8aNWZtX7ZbB/8nV07m8l+ZVoxzCMX/O6wtiXMUjcw94lFU/bqGe+\nRjVu\r\n=cLxM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/lB5nxemGkpMWKSWY9LfajAjtDN3A473ADELBUM+rEwIhALd2bIhORkc2UjN+67cVtfDAgwTeeNZVVt32Wj8ZO4HU"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.1.0_1567757753320_0.6129217796278574"},"_hasShrinkwrap":false},"3.1.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.1.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"74de9455269c0099e15626e8d0c4b64f0c3100de","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.1.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-8YHL1T8RMiJTsh+91oycdPU4hIK+35sw70TElTPUE+gia9ONjNVAefNuJ1Bm7Uf8U3V+c8c8BpETl1603K5AGQ==","shasum":"bb72d705c0bd3cbd9d782117ea83570bfde36e06","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.1.1.tgz","fileCount":234,"unpackedSize":710143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdc9MpCRA9TVsSAnZWagAAgBEP/j3sfEpBNn0A3LPycr1g\nm9S6qlHrhKkz5fDeIGoghPHRm5WJdGfkL6ZDIyQyjfemq1Viyuyc6kbwBZtD\ngTtEjVi33CVpuT/Z9yhQzE/fVsoi8g6gXT6V2ZgT78ZlvMp1/nwCgFBC74NO\neO6iDPhlej5FjvJAJVrUY8+B4IJQPwfH1cpR6luBmPO2vnyqhn/h6gbEw5CP\nVgbhfTIu9V5Ohnlp425jbP+jcbX6hdid+sYUaqzB/360f/YWKXJVp3Eyla2d\nxyn6tTG7MwQmKn+5zrDynjcheRtaJV4ocGWAUw24ZCyD+DaB00I8OGMovgL5\newYYc+9A3Jpst2xwSPhEYy0fmKcsAXHWAPgWmMX8KcRGbEMLYTGVIsIJIb4x\nfcgb6N2K4GMgnEE8q7ScWc99w2sI90WzoBm28MVHUMUjVeTBvZY2Ay6wysuX\nDcnwq8tLcjte8f+Jr9fZ/5YvZO088YS0DYya6uUNj5QnMu8ikHjCyGvDxDeu\nmjWpB5g6Bi8Hiou+rCrZsYy+G2Hd7ydvJwkiLAvxVkduQNm6zOCFZgEoOSpa\n5HahWWWKRq92suu8BdT+gxAgt60nkBUr8IdUexvRnXVYw8kFn2pVB/XbR7qS\nVlkOZOmuFnsJ3GPfJyQPImj2XvZv4iAveLf8iUJRKxgi8/IqxSvN4bpkjGTn\nofRW\r\n=RYSQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhnPf21rihI4BWoj3aFJh9KU4KNxdK5bTeQYq9VKqIyAiEAnbccROhD14f7ttXGRXAm9JQLYdubjwcUyTKdSJiZ1+M="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.1.1_1567871785163_0.3386925249714856"},"_hasShrinkwrap":false},"3.1.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.1.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"b55697b6d06917e306c1aa46b8bde5026ae6c748","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.1.2","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-KsmgY9JhpsCI+Ti290swUpXaxlgDLoSncCtcsysBmhGnHujiGgCVQ3QVrFBxWCYFuIdvmaVKvVkBaJjZU3wevA==","shasum":"540d26a55096f3f9722dd80a6e5edac2b3c157f2","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.1.2.tgz","fileCount":234,"unpackedSize":710496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfJxACRA9TVsSAnZWagAA3nEP/RUO8B8JeOBMzveBo92m\n2XkLAG+Nf13lpJ4kvkeCWPnZLMcZVVpj6Z5nBfGZ6i/KOre2Yb4mL7yaxCZ9\nJVqdFJhJ/5Gns2Ug2xoVjAc6QwycPB2kodBdP+TLZKzqe42iYBrLuIwXTKO8\nG0cE6NIpVnGdoi12SZ3NJSeODJA6vxXHRkuXz/anFZmRU99gDsS5x1J9jmcu\nERIxYri3drhzFhUSqxhgEKO8IkyuabM1dgeHEjuOGoBw1OtrUkOnYaD+Cv+H\nIJitS1PHsoz0/1qpbkcxQS8jDXRPTXz0gO0JEjELDgDA2xyv2Nxk1SGQnwy5\nARSsitOqbYqFDPhfKN/DTaKZkPKUQ+KtexzZI304kqHl28RLiyKKgIVMBDVj\nG48BQArSRWduhr6EKw9PLfJ5D5kRzyWonvNwfh0Ho15/hBms6WaS6DDY+AJI\nMlg7Aao3JwntwlFdqFL80sE38QWexevNCw0RPnKftB26fCteQtjxIDSWjRmg\n39+LWXrdVV4jcUXt7xIZW7u0PHM2Bym9udWJa9hvp4Qs8J3lDsRFIVOSgvWY\nqOq9yxaFdApEbQ6emtiel9eaDHsCTXYukn/mxO/1CcXkI7thMb9m/Qba3R3o\n4Y0Lo3Ykccugy2bFfIn7acxb2J6oX0JWPiylqmuR2/ryxV48YyBU2Sht05Xb\nAheY\r\n=vzvE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVG5MiAZJmD8m7wvZpzOKtTJiRARIKknS0DgS0TD/CQwIgR9lXCDG7u0rlL9zVUOs10ltPl/06VMWiOL5BHfUQH5w="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.1.2_1568447552083_0.6879863278436087"},"_hasShrinkwrap":false},"3.1.3":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.1.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"7e3f599a23a36c5ea3a16988aafa914a87efb72f","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.1.3","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-qkv8v23p2Kx7S7n+RCkcP2rLWBXztcvI/caANaFcUL1WjUZFjCvQkgNfBP277QJGwYzYiTvoIz8xHBOb3TaGjg==","shasum":"322cbc7d4522f8a0ee5cd1f4c33a2aed62ed2d4a","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.1.3.tgz","fileCount":234,"unpackedSize":710961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf1I5CRA9TVsSAnZWagAA/GwP/A+UaB4Iy56XS3NhW3nA\nSmHxFQ7PwtEMVa2pDjziXsCMp9HrIYicwlXiamuNVBZSHWdLIxw2nt0mTLW0\njLw8bpBhDIzA3VWUWNXNB5vXKavzYs4AtaVllwzqvPtmiT/YxjGzKBl52Bxx\n4Ec76qYpCpTRRWrrPHCnX7muzIBd44q9nr4DeicXwC9Xlulr9OccHvVenOKM\nPHUM8Zf/40RR6bIdTCY5TQQwFzLNl09Oz5OBS3U6s2clgHUp/hmnRwswCaez\n4M20Nkm6pFkNnOyqgV4mLYOpP829xQNK9048/vIbn49+LXbbyDdYaoZsInYv\nNyX+WSjpSxxYhwnELPAkfOUzEFAjTZJPIUb5Yx26XlKwNHwnO6OlLMxl39Fk\nqogu4u5tgDfiWIrPBg5AGZinzTjvXH+6EuGX0bIh+zWD4cVhUBnQBPYq3ljz\n5ruMLZ5RSQyF9xGEthwycm18yToQ0spcfSlQac1Q/HmKuNGKH9nTjcikRT1z\nyZSw0BtbLnIbHXMPZQcTIwy7z2sa036ODHdRHWbiIGCbNNQn/whf5Vu9KKAI\njl+Yy//k1BDr48BRwjU6Q8i63g6ht4VMEjJZL7j7rnRjtOH1LabmdpExppXD\n0mBnEpRPkIuts0CH+YJJntQ5olisUgf4HiXl/LWP/OCcJuzfA0pX3BAci5eQ\ngUgB\r\n=SVPe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIANzfU2nlfDuD68jZGvyw3MosHmXq6lWRZBq9+IrfMUbAiBfdvwUrjRTmst9FgA5qdHeot26+ilEBBBeunNepp34DQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.1.3_1568625209053_0.32376225323904717"},"_hasShrinkwrap":false},"3.1.4":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.1.4","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"202ce88ef23586dbfbbfd2511836330de23e145b","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.1.4","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-LEgArCbBQqLUJNyeRIlqk0w/WHpGHQwIXd6oLursgdiGEPoX+YVC+NDF+TB1S5/zrU5T/8/rxHyuzgYIkLWZSg==","shasum":"dbd4fdecdaae01102ce000e2ebaff40ea62795d0","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.1.4.tgz","fileCount":234,"unpackedSize":712732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdiyriCRA9TVsSAnZWagAAWG4P/2foLsSDyCKhLlgCIHgv\nof0n5sWnIwEo5MJggmudZK8rymlRvG8pxYvQAKH/wlt+XcNseEMvnQwS4nIs\n3s83btZpM81zEQvFg04/G5g9/Ir2nX6C22K7EFqhX90190Xnkypj98XckSr5\nRceXQd8j1IX+JkK9lOWF9IaQ1vzCteaFSFQhLMundylGo1oDnCkRh5sVEA97\nzxAr1G/1pa2sgwDgqg8KlbaXuqeQEVJ4FSUetdOTZnzB9bP2CY/UK58TYRHF\nrexTSuUrPIdDZ6nrgOVfTuba9yqrwQE670SFYHZHPyYnUXBT2RT1JGfUicjS\nwE6o4us+R95qNF+9/bjyUXVQdw5uNKAAimZ4gY5djoYuGEJkfa4Vet/BBns2\n7sSC/1irUV6Ns+ng8MkNbRLQtcl6yQORvqd5q5r4dyq3hlUwIUrDNlzSREuL\njrLqjj7Lv64K/hypLcndWYocRGvv5Y1QLHV3or7TgLeKLVdZ6XEDYBtU737i\nXnnwPrM89lMWrnH7PslgsJ+AuYZgKGyMxmf9rJXWOOBo4KQzSxBk76OR+t4M\naOrujwoyBpJYmTwFx2sqYzvkn7ITDmuqvOLbjjTFRrLctYAsNxp8iGnlZ604\ncNJdhhHb579STrKK7WHI2XFIcu+VVINDdxfELM0peoGr7NO0a8k/xxI/DqDI\nKHrb\r\n=8nyh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDX6BsQqVxE1PsPRLa2wU/q5+1ElZ9tfi25WMmHpeklrAIgURfQSJ4XGaNgulcQybAMXDzqWj/3c4c1azD26aNLQCo="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.1.4_1569401569877_0.464052886242168"},"_hasShrinkwrap":false},"3.2.0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.2.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"465949f894f3da089f7b086d5de8c4a28b6cb86e","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.2.0","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-3hACoeq4ORTft6Xo8BcZ/QE9xD0cvLfbBtLVecG4Wkcnzfbshrblx0V79w0PtnScLNCbhJImfHdicRRIWutmug==","shasum":"208f83b7bb36231dc132e1c97b6b2231ce5c00ca","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.2.0.tgz","fileCount":273,"unpackedSize":780663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlg80CRA9TVsSAnZWagAAPXwQAKMVJraQ8RbjwYOhc5YA\nxyzmyd2zmVFYC1wI3HD1OCTz3a5/l9fQhDRKQyXC9YCr6Jv736ARosueOo0I\nLZbRuyKHXFmAaAmHJECQJnoxMIZQtz4Cx6CXqP9zDePWv0K+NGOhcxhsshme\nltZfCpiwhpyAbqBAkjvCjuhO2n+pKLdFEjFoLmTmT3+1WgBaVWxawX2NGrtp\nfBADu/Q2LdLicAYqujFOMjCGwcHNRm71ocwh+xn/IOTWM0imEgc156lf64Em\nq7dR7Qem4k13KgKXZyj/fEq629Y7mq5qMScOsCZ3xPIgAOea22HG0NCYV3as\nEdgqsF/p9ElowmLClwEg0dBmGRgnZNIlQSMTQTtdFu9MN3xQqETJN7c3iUig\nL5VwJKpdjRUft3EMQEiFOedP54cimTkux0MCtr8qjoCKVPBTHyOQTOVbKnsm\nHT13nFlKqX5ea5ZtaR/6tQBOMRTU7ayryL46HrmGl9d3/yTNLYMxcWFUvuGP\nuKMkXVtftZZ9FGqRR7BV7ztNGIY7OHdoJZ0eiTaSkNadqjvY5OCWntZiZgkG\nt+a/yR3XdSjDBJvzT9vrH48/3D64ZJ9OdFiuDmqr79rz/p8c5YKbHQhAsRg1\n1yPByIuvRpb9LiftkbISkG5ItlsxwF2yBwtCUA/g9LEefxOH1CDE4sp9BF2Q\nhzup\r\n=XRx/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICt/dHriarfjYB63ILqFk+toWLKnKwKbSKf6qeGkkcJOAiEAs4d9HXQ0H0lvg6WT/5DI4UXT9kkmfnhDMwY4gAgo01w="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.2.0_1570115379962_0.10793044604447055"},"_hasShrinkwrap":false},"3.2.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.2.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"475e9a008069bac8bfa618c16f211900f4db9b38","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.2.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-BXCLH7/1QA9DZv+FZP6B7M2IoYrpPQY9EIlANJEX145OsHC73IOVj1nXllOKAqeERgWMhYKnJg+Yq8y00gk4TQ==","shasum":"942c057267fa98ead8e3aed7f6749df3871bbb18","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.2.1.tgz","fileCount":275,"unpackedSize":787496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmksHCRA9TVsSAnZWagAAjV4QAI9DPkwyHMhzd6bR6+lD\np95WKCAH6Gd7xEkvbdkqeMwUuVgGUKrDfm6Vo71NXjFjMrLrP6N3gpZn9/WM\n7xVlf6M83MRice23Nq67Q0FQQkgG4tHSodmbe3WrrIQdWSV6dBEBu/ppnvlT\njcukAdjiMNKG8dSV8gkOg6Fv+KBuczUB1iTA6S+kKkcs5RAXbe/DBruyQy/I\nlQHTnJkx22wTHuFlB5pS/0i10UqA2Yr5kgcs2LpIVodFRCVMnpYZXCOwUDRG\nUnDmYvSzinKfNyRoQBuXMgNT102TOKHWXRRa0nOd7B5Vo5+hnQGFO4bzHAgN\nZeN1bMq8LrnYxOe6TeJmIp1rNdnt5NKPbtOkW+8INrNkE/BYuRCVRjdBv0WX\nH3MJ7Q7wLSvpVvp/oV6matGisU6f7joNJzz/tImhJjS500lbzPh3neAVlUpI\n880PK26BvFPZO3MvgvKjN6sRkuzTGVXEqqAPMZffE0VQty7xE71MYhV0buDE\nPEujENynkXQES9Ib7NM6c2QGXLzxixoHzsMDKRu4qaL/ldGn6VHsLNGHlVZs\n5090ljGrw01fULaHXSC7LSatZe26wDqMBiAOJkm37Yd1t2S9ppDSNIAbRAZm\n9UyOU3Yxt8hdO2kFhy5S3AprjK44YQ0W1h1aU90sMq8596Bmk09073ZvWrys\nUKVz\r\n=+dbM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBlwBTdPbP8UA4zHbHhzPTQMdAefKnuzFWQhx9eozZbgIhAOwR1ftYYJsmgSi8n8V/rSvd6QaMEPtbG483fXPcmqbx"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.2.1_1570392838995_0.17089208546296453"},"_hasShrinkwrap":false},"3.3.0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.3.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"1dc57db495b64f40b7b6911eccbaeb767f068499","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.3.0","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-U1iuiQ+jmieH9FFwM5d1GXwlrneU/SaSHzEKDo5bfDEV/a/LG+zOKUYkS0Y7UkcU/YevvOFHWIhQvuJ+XbCZEw==","shasum":"fca252f4460870042e38d9dd3415caf56120be70","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.3.0.tgz","fileCount":275,"unpackedSize":791925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqC0eCRA9TVsSAnZWagAAiZQP/0OqV1SCcVQzEyus6Dsm\nylM7Y+a9n1uAf6pL/k9VhanuzjZY7Iz+sX0Nn+c1doco4uYPLo91CSqAA1R5\n93dF3OQdlFpkMD6Hs5Qz6+qEXEFc7txUyJbcb5ew0mKvxTT30pgZJnGI2YvD\nm6j7QuKLRiaA+SkIrZ+9R1vF13pWC0CKuPVTgJM/DhBO4Ni0berNAB0e7S19\nOtXHpHfxyJ3PoCzz6Q8I627KbamM3J+9SQYkQe4szjIr8uC3vj1o41xYV9Yc\nKIHMdzq3zrmP5D1fPDGkC0uIHvlrIq7qmB9Opbyxnwi3i3HI0YeLsjkojecS\nA1P1lrhK9993tA8JXeIw3/YcDxtRXD5lOt5mRBbakO3xcrfMfYqtrM+NTpVE\ncqDD+ivAgDkPAULO9sMUiAW3aEAuLInYMHA0klY6L6m28QbGx+3YXLKvCF11\nO8RhzymEMPlJGF1lElGI/4N7SphwfThX3+KkBT/+w5RrKGzErRbXnSYHipkY\nEKrxJK5T0NW/26EcBkPoYtQ/cZ2iPUukdjCxgj4DIvODs5M5NncSCIIHjsIF\nM4Kiqs4nHh+/zu+Ps7h6GVs4ecrcycJavKBjkYjXTbv1SBKqQCdCI04jfrEg\n1PBhmx7pjJLAxaZrb857wAKF8+oGZiCl0mN//fhetYCLbc28XgZ+xGAnQ9Sj\nD4K6\r\n=7cXm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDVdziJzWBdVWUOdJ1mnLZM4upAbQBDOTWyt12II7wKAiEA55TzohAQhZo1cAba48JoyAQXyS120GpJPNPSNPy+4MA="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.3.0_1571302685633_0.9373856858770715"},"_hasShrinkwrap":false},"3.3.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.3.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"54cf3698ecc0e04378a419ed105e0761bf5add72","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.3.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-HMqJvoHhhjXo58fIWunJlOMgAzVH5xIb0SEWB2kfPkrU2CQEANpx9SWDpo9SRFrR08zm+awd6f/wd5zT4Yqnng==","shasum":"06065c302c35b6adb11596ad2fae7b2c79bdc2f1","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.3.1.tgz","fileCount":275,"unpackedSize":792210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqLiBCRA9TVsSAnZWagAAJmgP/2a23Vk+JU1/fn0n2OXY\n1O40A3D80+/IYJ6wD2maN/z0/dRs96tlDNr3OJsJ0HMqt7KgP6T/pJC/pAUe\n0hTh2SxoGrwxAQjVQ4w+V5hrgDhqcqxErypxCOg5P/1XeXNn1+IZAXt4ybFT\nCqfiWB5e+SPPeYWoCg+x87DiyRTk5njgaurlRl00lEzQgoZgAYYFevKv9Dj0\n7q9M2tsylp4nMizxmFKjV1ycnXKWRSWb28ox3Z3fyVcxhMht3jvN1ldOK+1h\nRKwMafGh1WK0qsXa6ZU4lo+iQSx4t59qsvDExCSln9FzkZXCm+j0MclDgsNL\nFyOBDRK9IHmas4yuhfEJmGypJC5eBJxJFel+jI+RgbSHXMb6Lq3xHif3n355\nZ9I0gjNPQbn0YkpCBZhLj7612iDs9oHeNaOJRMxGhFBh2PoDsLt1/VReZZYI\nohnDyLhcZk1rkBzJTSIfmHEo5xJwRQefAFBZE64GrG3ky5yhnYN/WDUN1l4L\nDtUKDyRb8Ab9fSUwwVSncaqX73mw1AYB6OIHPCWerDNNTbFtb/avBiGp+c1P\n8gW2/OqrEg3XOvfI7AzPcfoTitFKDFNAJzsjCQcslUbHHgbOtKbKLataGIRw\nW+jCmxPKTTv379vpL7s0pqpl3cMNNsiJ1pjAO8fGv1eu53uQ8GHw8J4eeCnL\n4Exw\r\n=jia5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID+A4X4n+GeHDJN3EzvW0XKxzJUXzyELRPTu7OXkGs8XAiEA7qoLov0nDlXSx5/Ium74nkgyNz94u4YSQ8+NtB2VXRI="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.3.1_1571338368689_0.07183070959766913"},"_hasShrinkwrap":false},"3.3.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.3.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"3025ae9c59039f70d404237d557dda3638b1deb9","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.3.2","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-AsR479WJHvyUbHRcMdL3itiikAHoq5h7QxjU7ghisZMdXZSlGQVFo4/r4WMZmnC1yPs6NuSyF/bSPZa3BKu4AA==","shasum":"bd30042cbe8b2a92063b95c07be82c47aa72ca7e","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.3.2.tgz","fileCount":275,"unpackedSize":792436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrBYhCRA9TVsSAnZWagAASnQP/0YBD7BGm5kzAIrJZQcB\ntuyAPG5c6IvQprzMbZX4+mjh3LwC2OnnX7PBVYhb7HP1nITB5desNIsyBINf\njo68bVn1C30GHsgSkLm9MigQsuCeIUA7P82Ri03ouGGGg5jkpKQDgSHaXoXm\n4lT5so080HW7qK2TLNN6Yf4yTizhbIhoLgutSVcSu5dH5dgFpn5wWkynpu1j\npWex7bITMxZzMqSI2th87a54pUngZld1BE+piFVvHji8laIFVMnyPEeuc9IW\nuIOOxNg5VrjZWSHrCE60/AM7EKrrPhuZVa3kuS9gtzX1xcYlLzE++vRcePiS\nKPdflv1jc0ljvB+MpX+jonxJw2WrL7JEQwflTHuzVKQYEWfXrpV0hALTdp7e\n9e0yso1/EjHh5RXJ5SFxGCF3+wvkIKVWCUHMGyzUYurKwGJqKOUsyY3DomqJ\nP4BaX7Mb/6e7vSLIiLqZJUJBFvUzWhZDnF/Sq1vnt9khY8gMiZIQjnUnDEhQ\nRU+gxJMc8WQcbdY9y+hxyiLYSnw9yxlEU9I+s1vRq8FKFysImu2zeOu0HuqN\nemtQFbDctHtBnOChqmzwI3t5EHYtoCkWmAcfUpgCHErC6Sh1XqYQrtPvrjEU\nfcmT36FsDcOcdezJ1r8Wbx/CmKyDoMOgF1Gd0/s1THAGxYFdPul18eLA6nqZ\nvBai\r\n=Qknd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrTJSNh5SQ8CO+DTT1GootnbAX3T16po4fNGeDqHl0jQIgIi1RtEJz2+YZ9GN/140ge9e8jtYwlc2ZhZzXP0hg4vc="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.3.2_1571558944432_0.7667782617273908"},"_hasShrinkwrap":false},"3.4.0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.4.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"735c3631b7422f999e3fafc83872b5faa0d20e91","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.4.0","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-u4WsLn1zbThea1nVhkZ9dTgWmp52FQA/jR7xEet5INbXlQzOaIB3G24ZCDgEWxNQoroJPpBnFc8Vy/x7uYI0BQ==","shasum":"1c6cdb6e0d95c5656e982ec607573b411f4a759d","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.4.0.tgz","fileCount":277,"unpackedSize":796953,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrWNKCRA9TVsSAnZWagAAojYP/3Rx322+YSTAR7UBOI+x\naNY6Y3xf67pcIw9a+qR2Tz4hvE5ojy5V0v0M2kULOzXBTZKVb1+k4P5VixTn\n+VEqy5xvB9lkVuT/6/6j0dm3GTidBchwE7dtKx9nQLdB+kdhwSzJwjT1TFSJ\n/WWZC+iiA4phJXoRbYNtZcu7KbBDAZkZ37HQTo1YKhgyeIwaUFcU5NMohI3i\nG4QD1hvnNsvYobmJhf0+xaFq5D27otmZm16mS5q18z/bBuVoc7fDIRWGCr98\nYMGh0MZEOvSB7ZtZd+wU3M7Wq12vBHovdASMEkcwNQ/vUfbXRGNVmbYFyD4w\nhlrcDnAH6GwOtZbaYzHVHmusVlQUcihmqV4YJeRGurceu1/kaR068VYOAsrs\nDrrLsI+S+OBWOJxn5bYTsspwnyEK/Zf7/jOCgVohJCwGkAsEcFxnhLaL542c\n56XxZLYRt/klnV3RIlbxgwHpJPHGT9TYF00iBs4bwGqZi+iHCXC8uGl5cBtT\nJjNcRYJwMcO8E4Pl/iCGjliHgLeahWqfcOwL/pw9gAeaUilaOvwwLFiiQi2G\nn2gmUqc8DuvHPkUKu+fbwQAGaN4KGzdNPOG/40w73LF2ROtFync6UGMhEtyI\nEwrGf1Q5jRaYnQ4SBugzE8nQ4/NLvCH8FjyW9sV9xQLgiPXrUd5/rQbKohXJ\nA3gD\r\n=KFih\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAt8x0vGnyPpRv7+IqAyFf6fw5S7qcOH689TPpATOPHdAiBkNWRZywTi+u7AiaBp8TZP8R9z74U7VfRXKg3ogrNucg=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.4.0_1571644233460_0.5521794214767766"},"_hasShrinkwrap":false},"3.4.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.4.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"1ecc243f69e122e0d8c060c6065741fcdd69ce8b","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.4.1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-ntUK0GdFGC5WKnqfrLcdCDHJfiBf/XiLzc5BfNsR6YKuZeW3/pzRN5QMw9KWIUzgR1GtIQmVDM9hwjC3Wovf6Q==","shasum":"0a7a54056ed4dba91490655d651560faa5630ce5","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.4.1.tgz","fileCount":279,"unpackedSize":801944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0Bd+CRA9TVsSAnZWagAAh7MQAJ+TYZSFHtRyfg4XhU0u\nJSKiDx6wqs0kIFUtMGGKfjfXkuKtEzzEifWCgIekRQxXsPXHIwegDpaaGK7t\npouXVAGGY1KM7P4OqxWNEjmVDLdRUg5kZDIx3sRZ15CLtpWo40OmnZqFaJiE\nvFWYNHI7ONFlHYsGill3WZ2DGkWMqfyfVl6yPJh1Z6wtcphKo63SVAD5E6cx\nMp9uBy4wtxKl/gTcDc3DQIt+bGPx3BJeS6WSYBVtKOIMr0FVggYlOP3Lrvy2\nD39A0kgRAA4226dewtdsKpQQeFfgF1OAyR5RGsBqNNICPXmCLuuDXNydBDqs\nmN0Md0pugKZCiOAcAusb79hRxupbT35YGcPOWcoiSeuR3q7h0bM1N8MpGGKK\ntd097PU2IIWFSmJTwrmKLggPF7w3AFlCYQ3vVh/GtXWIhWNDpZ1yD2L4StUu\n991/IQjGX4n6xbxPBMc392wAweyfH1MaWTDGUrKOElTRWi6DLbTOQWMBg+I3\nz8pQ94tR1Ig5APE070P9CD+L8zgxT3yWsI7lY+JO5CnN94vEwAnj5K3pXcbC\nykMOLq5BUkravMbCd33L3PFlsi+uUFrJkpWGk1aWdoB1S+96Qn4hqW2kfQkv\nYO6r3bQhJEKE58BT5Dr8EqWKx0PIhMA4bPkQTgHWO71hsYxm/0JavPG099tY\nGl+a\r\n=wxCN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2V109kf7Qq2TYn2edBd2JOe/g3GJ9kvH6wdBtDMdjbwIhAOnoLEkEDKNAhkESaLOMjZiETgELhjai86FLP0+j0wDd"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.4.1_1573918590059_0.7224832138651314"},"_hasShrinkwrap":false},"3.4.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.4.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"d87810e68f3d0ebf1ba1ba709cd74308d44b8c7c","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.4.2","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-ErBv8ZzaoLg0r+wj1ZrQ+y/9P0x19/+TtxcNd0MqqpzGYhbhCZiDVzKQxGNvwnmtw6uYJ+80Jm9eGh9OFa4Suw==","shasum":"53836b912f312b73311c73c328751489f5f5216c","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.4.2.tgz","fileCount":278,"unpackedSize":800688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0ucoCRA9TVsSAnZWagAA1mwP+wZObE5IdINgrdfpsfws\n2HUbKwGVR55GE0OP2F35NYtYU79U/oe4iok5Cf8/2Vysuh2Ij24LwMXs1Vha\nOmuOM+ZAFEHGVasdVZQj5N5PPzAehuPbF0G9Tu7rPchT3g6H2397/VA3YMtz\nAfkfXDNUHGFLnML7HSRYFLW8Q6fGo5BwyKlh+Bby4HWifEFU5fhcrITIsZZG\nbg/b0VOunA/U+7Tl2la8BClECcHSqT1XtEfHacM6ih8CmarhSsPwQP9TwiYW\nBgNdyZwNp9xz0jojgqtiB8iEobRbCO0Zc4L0OksxGzM4O8Qd/Lv+wGaOOYog\nnHP/ZFy1ureLDFAktLgMnzZ+MMXy/jiKPq59Q4qv5rG1JMuyWHsdC/nZ42md\npO2w59d5MdMRl8aUkI+1La4hkG6ZLVbLiKxwR0ri8iRHkEUwU/UYjH+T1oJC\nKOUU1Y/fJcI8ZrYHWYa/9FpVFj3N1rTxxYfkv8UKwFNQUWxe+JV5gzCGerSU\nUDZ5LUjLgEfWdmJMHL/rVbE1R2GQmQB31BZJZfuzbYBya2dNMshJGxMAQkjp\npxkh8+sOkZa8VYlR2D802RaPt6XsynC6PKq66a1uqKZ8MQUxuYmiv7X0yVzm\nISk8kPgT2FQICB4hY3sRLQ0C2glBIJ72mcPN3+K2uU+GUBzX114Jdu+O/op+\nREDm\r\n=73ZI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMmleGGuET1uhB6roOYH4a0ATidnD2Y0Ecm0oLgKapLgIgdpIBmuLioJib9TdIiudPheIpHzo2VeIPHXJPQdKaWZ0="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.4.2_1574102823619_0.11265260751085648"},"_hasShrinkwrap":false},"4.0.0-alpha":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.0-alpha","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"915e68056ddfbc4c3c6c8f456da168cf589738b7","readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api) - new API introduced in 3.x versions of the library\r\n    - [Discovering Local Hue Bridges](docs/discovery.md)\r\n    - [Remote API Support](docs/remoteApi.md)\r\n    - [Users](docs/users.md)\r\n    - [Lights](docs/lights.md)\r\n        - [Light Object](docs/light.md)\r\n        - [LightState Object](docs/lightState.md)\r\n    - [Sensors](docs/sensors.md)\r\n        - [Sensor Objects](docs/sensor.md)\r\n    - [Scenes](docs/scenes.md)\r\n        - [Scene Object](docs/scene.md)\r\n        - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n    - [Groups](docs/groups.md)\r\n        - [Group Object](docs/group.md)\r\n        - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n    - [Rules](docs/rules.md)\r\n        - [Rule Object](docs/rule.md)\r\n        - [RuleCondition Object](docs/ruleCondition.md)\r\n        - [RuleAction Object](docs/ruleAction.md)\r\n    - [ResourceLinks](/docs/resourcelinks.md)\r\n        - [ResourceLink Object](docs/resourceLink.md)\r\n    - [Configuration](docs/configuration.md)\r\n    - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, please refer to the change log;\r\n[Changes](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use stand Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\n_Note that there are a number of runnable code samples in the [examples/v3](examples/v3) directory of this repository._\r\n\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Object](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](/docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections.\r\n\r\nIt is rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.0-alpha","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-xFzBtPTV0HbsJW0p1GvYQr42CuW4DrJDar50Fg20gToka5k4Ewrkn6OsWXvpxp+4e25DKUPF4NvyAJzyBJf9Dw==","shasum":"c43229fb05accc48bbf549b70086bb78d3b41103","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.0-alpha.tgz","fileCount":266,"unpackedSize":773830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0wlACRA9TVsSAnZWagAA3JYP/3an3vqJLjqOOACOzjjX\nNPtnjDJQZw7uwBxV8TkOlol4B7Jq7R6qgcbXzaU7O/prN4KTcfJKL2XmHI6k\n1MWR5lzCBsBpFxD/JXUx23PNwIop5YimqflnQ7B4/wmjHJy+P8Nsgo61brjR\nq3O1O4dKEMvCEGui+Ey1xiCXgu2sUT3hhfC0Mygr2SSU0sJ+ysZPsxVRc6UB\n48bFmEPCJ72xCsWQcCkWKkgI9MszNMXjtER1WMwutw44KvGb867H9+GnMO1P\nwkSUqRJb3j9RLUBdTVepoTaPP096S4dtl522n8Vf8UG1tdYGNf+Qq5G8NlUD\n6sect4hx44stRWmLnA/XxgDOGGiqj9VxuJkN2PXQB8TXfOlxk+rZr3tWWhfW\nYJ9Bya6Q58wFegRV2+Y0ciEtXxhH2bKX45xJ1iIDAIQofyMeylfRFhVW5deS\nyzLG9fy89WsqU6KmX5Ymy90FAKTgjjsVkpwVz3U48dEuMtzWL/F7Nfl82gsO\nneDYAE8mbVSLMulkOLR/XpXuo6WSGb/N6AVbR/GyXDdxi2B4Z+EPdhdEsFgQ\nOaiGlrQEwNupNslVCw08uFIa4nlJWMHfbnslvHKMQMuNxGuLJspkU3Y6gERc\nSi7QoNHW43+C1NZWrxlHSo7hQe7voPRo+pYt6PZVa4nZYfhIuHHc58le5lBz\nYqgE\r\n=eNnL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDri4m2KtC1V0Y8ScuqQA5yQF7E75qm70cAE2Rmijz8+AiEAv+yCQdVG9wjLVVvSAp4EPa+eXaV+rsqhg0YaqFqAsfc="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.0-alpha_1574111552182_0.6427792918405522"},"_hasShrinkwrap":false},"4.0.0-alpha-1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.0-alpha-1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e3c9e5e48cd4af7cc822b5b600411a7062307e9f","readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api) - new API introduced in 3.x versions of the library\r\n    - [Discovering Local Hue Bridges](docs/discovery.md)\r\n    - [Remote API Support](docs/remoteApi.md)\r\n    - [Users](docs/users.md)\r\n    - [Lights](docs/lights.md)\r\n        - [Light Object](docs/light.md)\r\n        - [LightState Object](docs/lightState.md)\r\n    - [Sensors](docs/sensors.md)\r\n        - [Sensor Objects](docs/sensor.md)\r\n    - [Scenes](docs/scenes.md)\r\n        - [Scene Object](docs/scene.md)\r\n        - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n    - [Groups](docs/groups.md)\r\n        - [Group Object](docs/group.md)\r\n        - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n    - [Rules](docs/rules.md)\r\n        - [Rule Object](docs/rule.md)\r\n        - [RuleCondition Object](docs/ruleCondition.md)\r\n        - [RuleAction Object](docs/ruleAction.md)\r\n    - [ResourceLinks](/docs/resourcelinks.md)\r\n        - [ResourceLink Object](docs/resourceLink.md)\r\n    - [Configuration](docs/configuration.md)\r\n    - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, please refer to the change log;\r\n[Changes](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use stand Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\n_Note that there are a number of runnable code samples in the [examples/v3](examples/v3) directory of this repository._\r\n\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Object](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](/docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections.\r\n\r\nIt is rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.0-alpha-1","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-uwu7wBTjIO7OWZKTcouQ6JmWUfBj84OxrZ2iWHhCXFbm42NjmFbb8oi2+btFQ8U1YV0IcJDNXU7+ChiiFqV3MA==","shasum":"d0cc24f570745e979af098fd984851540a3af1f7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.0-alpha-1.tgz","fileCount":395,"unpackedSize":1043210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0wpXCRA9TVsSAnZWagAAKP8P/22l65DcKThqCtTsyAnJ\nNuJULwA/72zlQc72aL8FJ2SoGuY9clwYq8pm//F63RaGfneGPCuzO1JV2wb1\nbqj/UYSHTJYJXZ1kXMLed6ZqWPSOw4odsEo7H03ZfklCeh/BMey3Zkrn1bkL\n8X+cpYIdsMmltSv+4VW1RXwo3H5mQjGmnnbxvgKIbXMQ45GUz4xxvRrkuGxV\nWx0Au+Juwed8LRT2mTTdHrPjPxPrh3+tHO8M3a2Q6BeIYXzvSPFFB0hUww3Q\nvnp4pnFxewYAfWoKRexcOQx5TU7mMV0U+uz4qNWkQcoFjMyHHn9nLUGpcBtx\ngrwygv3XAQHKbvjt8JZVHi1ZOd5StQXp+akwtiHvY7VTbqxeIgfXCfxxJOfj\nxsOwyFd62sqB9UFmhHimPwW8K1jh/yjAcx31soDvy3moob0NuPLrIR4Uspj8\nI/3FDhG5tdhwvi5w3m+wY2OhOOaiOkcPC7w5/vZ6ykXCw4b7itiwYOsjRHgx\ndtfB7ktfmaxdL18QpQeliQydDOfeq7yeXrLJjz1GQ1NgXEFGVpi8Rtco8R+r\ndpIm4V1JCqR3CvOwH2e/uZQVxbXDZq0Q+jc9mN9UQaoNPbNW3Hq+4uF7m3uP\nWlMIz0TxEITsjqPeI/LOp2eV2FUttSzjvtrbFMEE7fenQiJfC41B5HQIdP0E\n6Rha\r\n=LNC4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCM41yA+W8/1ZCPUUOxJvyIEHgugVSOMqTT0LP+lyws2gIhAKMnnQcdKbZDw1bc4Zsaq4r6RshCXBkPxHhqJcKIHGF5"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.0-alpha-1_1574111831331_0.2236569064683669"},"_hasShrinkwrap":false},"4.0.0-alpha-2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.0-alpha-2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"8d55ddd7505b1b61449396f39f5a0116e109f754","readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api) - new API introduced in 3.x versions of the library\r\n    - [Discovering Local Hue Bridges](docs/discovery.md)\r\n    - [Remote API Support](docs/remoteApi.md)\r\n    - [Users](docs/users.md)\r\n    - [Lights](docs/lights.md)\r\n        - [Light Object](docs/light.md)\r\n        - [LightState Object](docs/lightState.md)\r\n    - [Sensors](docs/sensors.md)\r\n        - [Sensor Objects](docs/sensor.md)\r\n    - [Scenes](docs/scenes.md)\r\n        - [Scene Object](docs/scene.md)\r\n        - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n    - [Groups](docs/groups.md)\r\n        - [Group Object](docs/group.md)\r\n        - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n    - [Rules](docs/rules.md)\r\n        - [Rule Object](docs/rule.md)\r\n        - [RuleCondition Object](docs/ruleCondition.md)\r\n        - [RuleAction Object](docs/ruleAction.md)\r\n    - [ResourceLinks](/docs/resourcelinks.md)\r\n        - [ResourceLink Object](docs/resourceLink.md)\r\n    - [Configuration](docs/configuration.md)\r\n    - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, please refer to the change log;\r\n[Changes](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use stand Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\n_Note that there are a number of runnable code samples in the [examples/v3](examples/v3) directory of this repository._\r\n\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Object](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](/docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections.\r\n\r\nIt is rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.0-alpha-2","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-gHMsu1hwSeE4o3yjFH4ksjITboGIW6WbzlAwLGSoVMaXT/aF0RBUfTWAwq/1fbo6kOzD4YsE88IXwpRgGgPkuA==","shasum":"f643435906792e00dd78ce68622c22fbdc36311f","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.0-alpha-2.tgz","fileCount":382,"unpackedSize":1012380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0wstCRA9TVsSAnZWagAANl8QAJ1M9Rvrwatq2TrGpNNt\n07iirUZuSo3yAxAvC+Pe2FfqRwOX7w99/Yv/r2YcNCjrRJJv/hT2JxDUVcnK\nrpqGjpvYS/liFLSw8vlJB9O2CTOEpTkpryYywJ80zabAtLon1+/UCm9KjWV8\n1BzozVE+mMiC5FNGgeQpw0jZIYy6KUEpv1P78o7SxrC0aY0HfKEtGcGQNkQu\nPJv2VZqAaW9wltZAMDFi0epMOoxzlqRJm1oSKk1LnEv7HyIifsmWx+z26BLH\nJu24n4OC1t8neMBdM40aJf8VyPs4P/n3moWAXwqHE64TdrJQXT4QqxgJMr1k\nK4nwuY3i1oOXFaATGt+/cG+ZuN746e54KNuTEOn67gmlSuaPsSrHBIvOP0J2\nb2rBEuKVheeYp4XrhzHnFGZdQqxLaRcg/JgGmY3PlEgQAbamDxTL/kjWvfmH\n1IWnLWhYBxtkJAIijwBlkYbxsgXpvP5h9jTU7w7Bd6zFLKc3lXBPdpRI2fgb\nv+oh7Sb4vRQG1Uq1110EmOvRpJRPe/Ld8pzPE/2/m1rfa+hT2e6fZw+ikNlM\nxbKQF7eD1CwiXZqDzrUJIC/fw06L0bvJswjr2+3DWcV48rvRAUHTrDF9d84Q\nCInX/69GYClXK/Dev1aat6T42jwwffBgaYq9SsfOaLHcav1mbU+MEQXxCxTI\nT3IH\r\n=feRY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC++AwCX4b77gFKpcmZqh9aTf00zJeGB7TOkCWVLEoGLAiBONtUqZ9afQhr1IEnQZGXBH6l42Qc9ghFhbeRRlgqNVg=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.0-alpha-2_1574112044961_0.02850455025637788"},"_hasShrinkwrap":false},"3.4.3":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"3.4.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","scripts":{"test-bridge-model":"mocha --recursive \"lib/bridge-model/**/*.test.js\"","test-api":"mocha --recursive \"lib/api/**/*.test.js\"","test-old-api":"mocha --recursive \"test/**/*-tests.js\""},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.1.4","semver":"~6.0"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"fd464f4da59d72d999d44dca15e4b3bc66190eee","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@3.4.3","_nodeVersion":"10.15.3","_npmVersion":"6.11.2","dist":{"integrity":"sha512-K1OqYYGKHsMejfnYvihS5QA6br58CO1F3TVde6p5Jm36K9zEthqv2zG/7Uw7mKtxydyDmuc7OM/efGU4WlfZWw==","shasum":"202d64d40f9635ba27a6e5ef9d0bd25ac1282ef8","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-3.4.3.tgz","fileCount":278,"unpackedSize":802624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0/6JCRA9TVsSAnZWagAAULUP/0gEyRiVbqfcQTVtL8wj\n4tTHA8LZpoGfxn2BunOgenRefXad95EGmiZH+BR1V6wO07ERVvaziyDObCLc\nrVoAOdfJV7IAqKfbbu/wJEj/mYM35pe+4uTjhI12rkMOyfN5TnDeqSzEJsmE\n18gSc2NgcZsHrG1ljLnRvmFBc4p7LSMoqblmDwprmMFYPBdx1yEGroIyzMFg\nG803X+P/2D13oOyXrFVVKASsymarPAxzteYRQ6j2q4Ft6KNsoa5x++mns8K0\n62tcmgCbCjFul+OfqmdTsJzB34eSV+EokZ5Ggl+RAt+tP3DZTc9pVKtxGB+B\nhOdqSVK4GZ+yujefKIXjdw2frutV4wqoM/MoOftq0Oar2CqQlTmcJWwdN63S\n39arMVJcs6o+ZIqX1IrvD9uZz0ySyBWgMJPUI4RLA1Xl69h9DBBmDz3+Bq2H\n8a8eCfOBTrt2/4dUpWxEC9RQ5bzc4tw7G/OQAr/Yfcr3dYjxCNXG0EP2va1x\nlaU6fgQZJY49JAsYZDUNxCPX2xLaWXziWZmvhtesIjqxdwUteV9JRRprOT4I\nDMOZGC+L2Cyx0/z2eBcZs16UYjcS/Z7gSPL2bKQnBYJkgNXvhS6B5UH8DsyC\nYo3Uynbwxoy+u9cUTHpmvbI/K1u4IbchWW7GPwSUlS3GdIAkzokL+aE4seK7\nRXHu\r\n=nYKc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFuJ3Hx121WkAs/9V98zUf3uhjQrrJLGwKMrRvJmPtGcAiEA/kmXG7KjuzDvf7gwImkVxsKF99P9jh7EIYkfO9nCCZ0="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_3.4.3_1574174344782_0.19978091089306105"},"_hasShrinkwrap":false},"4.0.0-alpha-3":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.0-alpha-3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"aac7a4fcbec4603757328e1ffc7335cc5bae1c45","readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \r\ndocumented Hue API.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api)\r\n    - [Connections to the Bridge](#connections-to-the-bridge)\r\n    - [Rate Limiting](#rate-limiting)\r\n    - [Debug Bridge Communications](#debug-bridge-communications)\r\n    - [API Documentation](#api-documentation)\r\n        - [Discovering Local Hue Bridges](docs/discovery.md)\r\n        - [Remote API Support](docs/remoteApi.md)\r\n        - [Users](docs/users.md)\r\n        - [Lights](docs/lights.md)\r\n            - [Light Object](docs/light.md)\r\n            - [LightState Object](docs/lightState.md)\r\n        - [Sensors](docs/sensors.md)\r\n            - [Sensor Objects](docs/sensor.md)\r\n        - [Scenes](docs/scenes.md)\r\n            - [Scene Object](docs/scene.md)\r\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n        - [Groups](docs/groups.md)\r\n            - [Group Objects](docs/group.md)\r\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n        - [Rules](docs/rules.md)\r\n            - [Rule Object](docs/rule.md)\r\n            - [RuleCondition Object](docs/ruleCondition.md)\r\n            - [RuleAction Object](docs/ruleAction.md)\r\n        - [ResourceLinks](/docs/resourcelinks.md)\r\n            - [ResourceLink Object](docs/resourceLink.md)\r\n        - [Schedules](docs/schedules.md)\r\n            - [Schedule Object](docs/schedule.md)\r\n            - [Time Patterns](docs/timePatterns.md)\r\n        - [Configuration](docs/configuration.md)\r\n        - [Capabilities](docs/capabilities.md)\r\n        - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\r\n[Change Log](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\r\n\r\n\r\n### Connections to the Bridge\r\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \r\nverified to the expected format and subject contents.\r\n\r\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \r\nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \r\nBridge.\r\n\r\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\r\nsite has an externally valid certificate and CA chain.\r\n\r\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \r\nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\r\nthat you are connecting in an insecure way_.\r\n\r\n\r\n### Rate Limiting\r\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\r\n\r\n* For the whole library, API calls are limited to 12 per second\r\n* For `lights.setLightState()`, API calls are limited to 10 per second\r\n* For `groups.setState()`, API calls are limited to 1 per second\r\n\r\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \r\nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\r\n\r\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \r\naccesses the bridge, it is still possible to overload it with requests._\r\n\r\n\r\n### Debug Bridge Communications\r\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \r\ntalk to the Hue Bridge.\r\n\r\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \r\ncontains `node-hue-api` in it.\r\n\r\nOnce the debug mode is active you will see output like the following on the console:\r\n\r\n```\r\nBridge Certificate:\r\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  valid from:    Jan  1 00:00:00 2017 GMT\r\n  valid to:      Jan  1 00:00:00 2038 GMT\r\n  serial number: xxxxxxx\r\n\r\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\"}\r\n{\r\n  \"method\": \"get\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\r\n}\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\r\n{\r\n  \"method\": \"post\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\r\n  \"data\": {\r\n    \"name\": \"Test Schedule Recurring\",\r\n    \"description\": \"A node-hue-api test schedule that can be removed\",\r\n    \"command\": {\r\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\r\n      \"method\": \"PUT\",\r\n      \"body\": {\r\n        \"on\": true\r\n      }\r\n    },\r\n    \"localtime\": \"W124/T12:00:00\",\r\n    \"status\": \"enabled\",\r\n    \"recycle\": true\r\n  }\r\n}\r\n```\r\n\r\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \r\nMAC Address of the bridge, IP Address and username values._\r\n\r\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\r\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\r\n\r\n\r\n## API Documentation\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Objects](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Schedules](docs/schedules.md)\r\n    - [Schedule Object](docs/schedule.md)\r\n    - [Time Patterns](docs/timePatterns.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Capabilities](docs/capabilities.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\r\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\r\n\r\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\n\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.0-alpha-3","_nodeVersion":"10.17.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-9NyUX+itKKIPtprfFi3mnX3ChbGp6Q1C24cNUuAE8AxXSP1YHztYyLbhv0tVH614b/V+IgN0bWMOl/3UyKCHIQ==","shasum":"0f741456cf63da68617abeb0764f8d157b7c59c5","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.0-alpha-3.tgz","fileCount":460,"unpackedSize":1187994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd9+WLCRA9TVsSAnZWagAANBQQAJMUmEqopZMbcaJ8GoBC\nWKpNiYeWmZ952cs5Dqtuv1Mo1bu+DTuTvrMZrT850nxNj0Lr5hImq/bf6tEg\nOeTnEOQtB39LbvV1GPjRYQJWcz5d7u1L2SXalzWC2k5C512mQB15KjSlOhJ1\nM3DIrATkJXfrxT5DpuBKMHrJomF5+wGqS6tXVPWsUO16z4r1ud1wnH5cjzz8\nMZEoUCXNX4VcqD4UEFntvWfJhf97X/njkp4bS+geqqBnyf1qC41wNwJQh3Mi\n+fJ/7q11kFj2qdGpqNmgrJjSEebbTDa6o5YPMyoWG1nLV6DHnuwpUziYC60L\nRf2QJK92v/ssgj1hZVJWPEhBx5+tQXPYDEwA4uFDNjj8cagU9rp46B+rGj3J\nbdOiFMogJLt1QaW/0n8feO51qbGRF7kdSzvKqleZS5QI+CGiMQ2eKnduxZdz\nAPo8fN18DiwJXYpsbjmiEM85d5GcHKdaXABV/mZp9cDFjaTdKRx64RelhjnS\nrwsGLhuoRV6Qy+ltZCHzNJWMy9xgXZhGbEUevR70/aAEEdbJKAAtyDebYNHQ\nJ6iyPMBUj/bK4tAXUVJzK8W3RKcnu9lY9V9Fgy4WZ6yeqZwWjuh2EEVb9USx\ngnBTOdbDnuVRR0IQndRwXOLwpszRcBy9+k4xyQEktYgtzjNbP8331IzbBR8J\nY7HC\r\n=ezNe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFDr3IqGx8vg9jokk9oLf2XKaws1yTPGnQ2HQsp0169rAiEA5uo1LPoxws32sC4GAtU0eLNDW4GnG54sc15taEPJKQI="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.0-alpha-3_1576527242538_0.326595841823071"},"_hasShrinkwrap":false},"4.0.0-beta.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.0-beta.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"ea4670d44f3b4ae6401859d077ca9c99ec55791d","readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \r\ndocumented Hue API.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api)\r\n    - [Connections to the Bridge](#connections-to-the-bridge)\r\n    - [Rate Limiting](#rate-limiting)\r\n    - [Debug Bridge Communications](#debug-bridge-communications)\r\n    - [v2 Compatibility](#v2-api-compatibility)\r\n    - [API Documentation](#api-documentation)\r\n        - [Discovering Local Hue Bridges](docs/discovery.md)\r\n        - [Remote API Support](docs/remoteApi.md)\r\n        - [Users](docs/users.md)\r\n        - [Lights](docs/lights.md)\r\n            - [Light Object](docs/light.md)\r\n            - [LightState Object](docs/lightState.md)\r\n        - [Sensors](docs/sensors.md)\r\n            - [Sensor Objects](docs/sensor.md)\r\n        - [Scenes](docs/scenes.md)\r\n            - [Scene Object](docs/scene.md)\r\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n        - [Groups](docs/groups.md)\r\n            - [Group Objects](docs/group.md)\r\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n        - [Rules](docs/rules.md)\r\n            - [Rule Object](docs/rule.md)\r\n            - [RuleCondition Object](docs/ruleCondition.md)\r\n            - [RuleAction Object](docs/ruleAction.md)\r\n        - [ResourceLinks](/docs/resourcelinks.md)\r\n            - [ResourceLink Object](docs/resourceLink.md)\r\n        - [Schedules](docs/schedules.md)\r\n            - [Schedule Object](docs/schedule.md)\r\n            - [Time Patterns](docs/timePatterns.md)\r\n        - [Configuration](docs/configuration.md)\r\n        - [Capabilities](docs/capabilities.md)\r\n        - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\r\n[Change Log](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\r\n\r\n\r\n### Connections to the Bridge\r\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \r\nverified to the expected format and subject contents.\r\n\r\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \r\nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \r\nBridge.\r\n\r\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\r\nsite has an externally valid certificate and CA chain.\r\n\r\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \r\nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\r\nthat you are connecting in an insecure way_.\r\n\r\n\r\n### Rate Limiting\r\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\r\n\r\n* For the whole library, API calls are limited to 12 per second\r\n* For `lights.setLightState()`, API calls are limited to 10 per second\r\n* For `groups.setState()`, API calls are limited to 1 per second\r\n\r\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \r\nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\r\n\r\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \r\naccesses the bridge, it is still possible to overload it with requests._\r\n\r\n\r\n### Debug Bridge Communications\r\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \r\ntalk to the Hue Bridge.\r\n\r\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \r\ncontains `node-hue-api` in it.\r\n\r\nOnce the debug mode is active you will see output like the following on the console:\r\n\r\n```\r\nBridge Certificate:\r\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  valid from:    Jan  1 00:00:00 2017 GMT\r\n  valid to:      Jan  1 00:00:00 2038 GMT\r\n  serial number: xxxxxxx\r\n\r\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\"}\r\n{\r\n  \"method\": \"get\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\r\n}\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\r\n{\r\n  \"method\": \"post\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\r\n  \"data\": {\r\n    \"name\": \"Test Schedule Recurring\",\r\n    \"description\": \"A node-hue-api test schedule that can be removed\",\r\n    \"command\": {\r\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\r\n      \"method\": \"PUT\",\r\n      \"body\": {\r\n        \"on\": true\r\n      }\r\n    },\r\n    \"localtime\": \"W124/T12:00:00\",\r\n    \"status\": \"enabled\",\r\n    \"recycle\": true\r\n  }\r\n}\r\n```\r\n\r\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \r\nMAC Address of the bridge, IP Address and username values._\r\n\r\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\r\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\r\n\r\n\r\n## v2 API Compatibility\r\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\r\nfunctionality was removed (as was indicated in the 3.x documentation). \r\n\r\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \r\nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\r\n\r\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \r\nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \r\nAPI provided in this library (which is where any new features and improvements will be made going forward)._\r\n\r\n\r\n## API Documentation\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Objects](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Schedules](docs/schedules.md)\r\n    - [Schedule Object](docs/schedule.md)\r\n    - [Time Patterns](docs/timePatterns.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Capabilities](docs/capabilities.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\r\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\r\n\r\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\n\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.0-beta.1","_nodeVersion":"10.17.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-XJBYai4NDZLJ7SW5SokqTCpCB4lMWYI2CYSDmldB1n1tWwH6jstI+BH7Ytvm5qBgh+2WlyrIdJm59BbJ2XEFSQ==","shasum":"d268985dafa1f02b5e72316e7a84fa8006a8a789","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.0-beta.1.tgz","fileCount":459,"unpackedSize":985922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/KA5CRA9TVsSAnZWagAAm3YQAJIVfpM+vdvHs2df1gva\n9Ez3wmZiLCHo3pI7fJAZuGX0TnIBdPBixvnYBHnJ4jJPHkwPF9V/Fo3S8zbE\npBecUeXLS5c7ReNkPDYp1CenIT8fcr7g7H9vB8FPQXupSseHHzTMnGDd89hY\ngKtVCZ8b/QFIbzDou5mUs3fES6TveLopDyv9CJCAR95dadu+d1NcTbEEios1\n6PVzvRk02vqBQM4o2t0NgWuXW+FSqjAONJeFrplLuKoQjGZcGvMYH9ApGUaa\nBPQYtrOANJesWjHMX73hiD1hsKzVmaivZJMX1h57cIjnmVf20beaxOzyKNO/\nRRYiSGvrxFeyhB2gqkyuqZxKCqqq72jSMlrIBAm74kFQB1SyTvJJkr7ApMYX\nzBz+JP14qsQ+d9tFF5kbeH0K7tzSrBmrIJLmSmSPn4x1Y2XKMO7Ibtizavd4\ns7jrq5VwhqZI0zXYGZC3GJTXIq8KyO+YJYS4D2i0WDVA9aEx2/52Zufjt9SH\nlOouTMB9DCUhcA6VBEeIJa6JFwScwF8RHCdOqHFzYXFDx503+iBwEsCgnC81\nOgPMs4hcK9+ESJ38rL6ay6gzr3mLpfZFtQdT9NjSOApEWG4FTdAgGM4csWhR\nx3931mTquBJwU7zrm5wNCYs4yE5tEu/1/yFO0NzVZ6y7VWM90ZCO0VDT4vfN\nnVuU\r\n=QwY/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzjpC2DpTPkaLSe7BBIaIXiswCcI5do5AZrJKI4IjOcAIgTLH4xf1nxR/u0cIcqv4wnpOxCnBs6eXgGM5r53/Eekg="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.0-beta.1_1576837176901_0.6596108312891908"},"_hasShrinkwrap":false},"4.0.0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"5adb09c14796f869840f06b62a013c7854553f50","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.0","_nodeVersion":"10.17.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-b9ePIsNAqpVx/Eg/MFQLIDARh7m2nEpTH9iygvY2WWULlh+2XTJqZ4XbNclHs7U3ypijoOPefXs2yOVa/SnG+w==","shasum":"fbaa52ce154b4b337b7f19559823fb84a468eaa8","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.0.tgz","fileCount":459,"unpackedSize":988448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBhy/CRA9TVsSAnZWagAAqmIP/12WkBRznZTOqQRHHu5u\n+N2DklOLVnAtegvzx0jfuosD5mtFIEQuJOdutC0E2ZOylo1bqrgG7r67hUWZ\nOU4s5Jsnr5SpGG9IJRORJ9LnFE5ZND11qNsEJ1H5819jdDnoMOZZsEpmgsbg\nQSAef1Q50s8A4Ue5e3ap4KxqCZAjiK5Lrud9Rbvjd2t70TS5J6UGOFlLnHjc\nCD/CVI30PeBtzImjWoLZQY99rt/WtwZ8oqkhWBdCj6yS2ak8Kx3v+NeY4SUK\ndoCKBGsGX+DVBZwXKLo31nTnFsN56+gpuazVJyajkSSEI6mlHi66JfJFp+0g\nbqdnHI+Bzzj1SKkmjH1LYhLffcWxu7jVr/4YRM+vI/ef4KeZHyg+IqweWyIW\nvmggFq2yWrAr2q/Sjlj1P7nJb2Gs/4aALQONBWpxJkFiTqjFo0+uq6ubwX+N\npUPzBEZVs+xkPulzzKDB6zpwYIKnJTY/vOfY31geBTlCugu7rvs6XDKvy5i4\n0KHcW4vNkEjXjiYetVpkDhQw2rbAeX0dmmbvDXpSxkGSBrW64nRtV0vfJw/G\nNz3nMX97Ys4LZJ7u+x1bMFbfc3GhmVhuSzZ1UD4iWPxW5geQ3MzzE9bNL6N9\nOHPdym7ljksiPLREZpcMaRvg9wLX5YICSRY/WeK0HFypjYl+T5Mnhw/VOLQe\nzBp9\r\n=nxar\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWyUZtCDqPOyuWtXI7OHcANyIAm2oFLlYP3DmcTsIR0AIhANnE6kT7HFkm22b3aQcAkvvk2o70OSjHqRUxvBXRi2KI"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.0_1577458878825_0.6955038458262699"},"_hasShrinkwrap":false},"4.0.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"bcf1f107926ae8ba7fe39dc6f9cbb8b985337108","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.1","_nodeVersion":"10.17.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-MZW4NyORkLOfH85YDFcgkLW367jeW5JpHP+qR61okaTBOEZPTBa9sPnGEiM/3LN3/XFFyb30HUVT1OrqCP3qGg==","shasum":"da708d28253a9ba81b5f8e23fd93ad9ba3a7a66c","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.1.tgz","fileCount":460,"unpackedSize":992132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeCxbbCRA9TVsSAnZWagAASBoP/2rxqzyTujAm6Ezn/FGP\nbzzioGjNANSx/8c6dwfxowZ4LXxu4IVkujNCJ0kMoySI0boNyvwsDyRq4v2A\nlBerfpd9kK34dIXdnYfm4JYFYfeQhMnjyoVaknshKQMIjMwAugRykBGWo2Qq\n6ktdPHeYDwWYtQF9A1qiQXcE6kiXGo0EmUIlLUZQ+pNu0UcBe1YXk4tzZtzC\nPxDSQKj3EgSWB2IhUXXQ59STosFS2D042GuhtJkkAmzGN+uZwZD1M7Jm+JfB\n09VA3BEB/iNcvn0XOb1iDrdPo0uAzMQjAESBw9e1RR2iFi6NRCFAV+ugk4eF\nHp/D9n1PLb9V6Cpdg4mU75Y7fyzt5mafsbL/oD2wVgvd1h/ddQl+gdapqGxC\nt01InMXiTdSyhjCnwouZwtPAMWIxO/pO5uWmkncF+LuRCweD0NgR+UthZ7If\njrjpEmhoCxTtzrbfWTrf+RytvLDZk+E1T71ua+QuUVMQ5X9D/ERfgTLEPrgr\nWkJzOqEA4QE7lOTX+0PHqGPFp6XCsfKJmzKUTOnP/krXRLeDXj4+6diy7ym0\nAQM1/dTR4jyA3nfh9TnJRawcaCTeyj0oXySnTvAw7wLigty9j2SFXOb/KI8A\nn1lLHOWirmfP00iPsjxgk+14azV8X7B4fAQ7Z1IHrCipMv56sIT4vVD13yZX\nuF/y\r\n=9ITe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEi2WShDwPdc9kfBYOJM0F/R9iMDhR0o6SHnT/boTKTYAiEA9frzjPZccJcuX1aO3YkCcmuGCP3sN4Wk5tBgwA29iVM="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.1_1577785051336_0.8839638106723497"},"_hasShrinkwrap":false},"4.0.2-alpha.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.2-alpha.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"10a5b01a16982e75fb74c3c4f0d30e635f9fc491","readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \r\ndocumented Hue API.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api)\r\n    - [Connections to the Bridge](#connections-to-the-bridge)\r\n    - [Rate Limiting](#rate-limiting)\r\n    - [Debug Bridge Communications](#debug-bridge-communications)\r\n    - [v2 Compatibility](#v2-api-compatibility)\r\n    - [API Documentation](#api-documentation)\r\n        - [Discovering Local Hue Bridges](docs/discovery.md)\r\n        - [Remote API Support](docs/remoteApi.md)\r\n        - [Users](docs/users.md)\r\n        - [Lights](docs/lights.md)\r\n            - [Light Object](docs/light.md)\r\n            - [LightState Object](docs/lightState.md)\r\n        - [Sensors](docs/sensors.md)\r\n            - [Sensor Objects](docs/sensor.md)\r\n        - [Scenes](docs/scenes.md)\r\n            - [Scene Object](docs/scene.md)\r\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n        - [Groups](docs/groups.md)\r\n            - [Group Objects](docs/group.md)\r\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n        - [Rules](docs/rules.md)\r\n            - [Rule Object](docs/rule.md)\r\n            - [RuleCondition Object](docs/ruleCondition.md)\r\n            - [RuleAction Object](docs/ruleAction.md)\r\n        - [ResourceLinks](/docs/resourcelinks.md)\r\n            - [ResourceLink Object](docs/resourceLink.md)\r\n        - [Schedules](docs/schedules.md)\r\n            - [Schedule Object](docs/schedule.md)\r\n            - [Time Patterns](docs/timePatterns.md)\r\n        - [Configuration](docs/configuration.md)\r\n        - [Capabilities](docs/capabilities.md)\r\n        - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\r\n[Change Log](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\r\n\r\n\r\n### Connections to the Bridge\r\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \r\nverified to the expected format and subject contents.\r\n\r\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \r\nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \r\nBridge.\r\n\r\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\r\nsite has an externally valid certificate and CA chain.\r\n\r\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \r\nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\r\nthat you are connecting in an insecure way_.\r\n\r\n\r\n### Rate Limiting\r\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\r\n\r\n* For the whole library, API calls are limited to 12 per second\r\n* For `lights.setLightState()`, API calls are limited to 10 per second\r\n* For `groups.setState()`, API calls are limited to 1 per second\r\n\r\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \r\nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\r\n\r\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \r\naccesses the bridge, it is still possible to overload it with requests._\r\n\r\n\r\n### Debug Bridge Communications\r\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \r\ntalk to the Hue Bridge.\r\n\r\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \r\ncontains `node-hue-api` in it.\r\n\r\nOnce the debug mode is active you will see output like the following on the console:\r\n\r\n```\r\nBridge Certificate:\r\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  valid from:    Jan  1 00:00:00 2017 GMT\r\n  valid to:      Jan  1 00:00:00 2038 GMT\r\n  serial number: xxxxxxx\r\n\r\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\"}\r\n{\r\n  \"method\": \"get\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\r\n}\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\r\n{\r\n  \"method\": \"post\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\r\n  \"data\": {\r\n    \"name\": \"Test Schedule Recurring\",\r\n    \"description\": \"A node-hue-api test schedule that can be removed\",\r\n    \"command\": {\r\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\r\n      \"method\": \"PUT\",\r\n      \"body\": {\r\n        \"on\": true\r\n      }\r\n    },\r\n    \"localtime\": \"W124/T12:00:00\",\r\n    \"status\": \"enabled\",\r\n    \"recycle\": true\r\n  }\r\n}\r\n```\r\n\r\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \r\nMAC Address of the bridge, IP Address and username values._\r\n\r\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\r\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\r\n\r\n\r\n## v2 API Compatibility\r\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\r\nfunctionality was removed (as was indicated in the 3.x documentation). \r\n\r\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \r\nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\r\n\r\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \r\nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \r\nAPI provided in this library (which is where any new features and improvements will be made going forward)._\r\n\r\n\r\n## API Documentation\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Objects](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Schedules](docs/schedules.md)\r\n    - [Schedule Object](docs/schedule.md)\r\n    - [Time Patterns](docs/timePatterns.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Capabilities](docs/capabilities.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\r\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\r\n\r\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\n\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.2-alpha.1","_nodeVersion":"10.17.0","_npmVersion":"6.13.1","dist":{"integrity":"sha512-/59jF6iC9ie5C4GHEbWtbTbj+ho/V3EPXRJKqL27Ca0NoaNNX9x/7tkEsfiL8VMildeTmgEo4EDNrM0KAJjwwg==","shasum":"96522b11d733650e9407dfac4a631836672e8c29","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.2-alpha.1.tgz","fileCount":463,"unpackedSize":1353384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDhWACRA9TVsSAnZWagAAUHUP/iGYJZSBVYvjgb2phwLY\nSxX6FB25zq8UVn34LIL8ELDh+2HQ5U7P610gJl0nNl/Y0F7mSCuX/mtIuKBZ\nw64Iz/KjyuHbKOyEAihmygGI5bwgfJtGNvXdjIwwvg3vyC4bOrGoSfwP+48Q\nTypIInLbv+fkfOQ1/fbqRVE6deujs7owpnCSo/Vt+M+YJ/iEesOn8+fEdBLe\nfFoCFPyFyblYzWhDo4ERKjmo9SnZ+5slI2SOCxnvjg5F5deBdXXOa6qK+0ZO\n+K097TE5km+rjT+3W/m05o3VMird/TyV26FGmvIDu5zQpctn44IW8G5du7i3\nQm9B0xSNERzm7w+LYZ+sKS3H1pyXl4zcCzoX1kLP6xScoySfSXB6Ga1TGJ9U\nybzqv3V7iKNsgJVCnoRtfMWlEl2DlM1byVONyjNvODoTGLHoI0MFnnSDVPpD\nhbQVd0xmldvjMG+7lwbXV/jTeM2ECfmgWmLucC4uQ1X8A7MfvmXg5UuHv5Ik\nP3eoMCtK8SIqm0ko2s3v/azItBdSxyX+E1LGSLISzeiFkvpMH5uSSzppzyGx\nOtowGRYCNA520nlfaSxU1ap2ENFB62GJeFrT+/mjKbzcaFT3J1wlPgcwAp2Z\nMuIJXZPBz7ShcTT0ZTc2F2Rh2Xv01Cogknf1xdoKSdSE5qd084WQUQQmlXWI\nmBzZ\r\n=2Evd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYWD/LHqLm7KZreCcMwai9jZ1XmsiY0013mdsZkRKmmAiEAhGN9xMTlbNZWYnzj2ohki1wbHKZr2rnw5W4xoFFoWxE="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.2-alpha.1_1577981312154_0.411563788005213"},"_hasShrinkwrap":false},"4.0.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.2","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"6dca06803692d76679b9f1c98b27e39c0f8cf747","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.2","_nodeVersion":"10.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-JfPGqMEqZDecCliRugaP/hFjBtQFpuhJLkiEp6S6eGFXgB9bzvTikI6hStFPK+52yoPtudciILwhOhuQJ6do7A==","shasum":"c9e94085848ef998d5e8b6a1973fe053bdfb9901","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.2.tgz","fileCount":463,"unpackedSize":1355251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFMHvCRA9TVsSAnZWagAAIVsP/iAXOKyF13uSvVPl+UhT\no0BVNz6FcvlBZ5Xgghl933wldb3ua3mSsfAXeMAlTo1gtU6wRSVSx+TFvpgb\nVVPjJvr1DwrXJfVYESsEwUOUY7Pua61RDCGVqQTq45XasoWSjh+nFfJnpE0F\n+C2vh2kbDaR8Sid76f2BGSTZQ1hgc3X/2s966v42kcGxk/xLl/EKdiUoakfs\n3SidsVp4xsJ5KrUUm49eiPzIBoIMH6X+12UDPBfBnqCJOgooei67C+C635LZ\nNlN/di5TPF0zs7waH1ZGALISqKn1NYTyRHtPpq3yJkC3KfOfiPOIC1EESbBM\nPYylj8tVjzVDN3yiLLBILlnGFuIWqEgUxOmmNVCBU9k+Y/UOgQqlBpwFM1vg\nejs+Ut+U+4SSbUoSrmN1iiffZQqingayI9RE3e4OJBwLeSP5CzFBMy4iOcW4\nl8JxlNpbM1BAjLo821cRNKLQCaA7lGENYO6fABqCf4wrEZ+NMNhtHclGYRLJ\n21SSTYndameS7Xy1LSoW+Zv26T27cEmzk1a20VKUw1MHPW8rPdxrxMdBj1m6\nZqGt+TFPoSje2URDuP/zlcS1TQ0canR09ANznXYyqcIjK67JzLEd1yFnzuN2\nayl2QZt8E/6igp2F4AMfhDthf4vRa+5LEzKFREXZ5tACMoMnNdEQLl22QelU\nqUc3\r\n=jEeq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeV/oDraoQmq/3xsD6E5MpadxP0n26IvxmcegNR9blTAiBsTc6rATmODXkarezQGsiWbhG4poG8276L8DHBUqMCKQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.2_1578418671327_0.23064415564098795"},"_hasShrinkwrap":false},"4.0.3-alpha.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.3-alpha.1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"beb5af23600fcb427bc97efe97dde7d908f7a874","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.3-alpha.1","_nodeVersion":"10.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-vi7XeNi3WOTXRs9kaPxX5lyoLBNjt2VQntPReD7t8P5YjLrpOkLEmu7TkyOKR1rp66GdKgCGqet0GIx/2jjydQ==","shasum":"ccea8dbf1a686f6fb9d7fa13d980a7758fe633a8","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.3-alpha.1.tgz","fileCount":463,"unpackedSize":1355260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFM+jCRA9TVsSAnZWagAAPpwP/jq1YIfQp3eTb8NXKzWW\nH2BlMzpTmrXPQQcwbrP5cDYY8LDd31rPXZgV+fLwmE+6EagzjBC5kFEyc78z\nbShgT+0SEmr3r4Q0Yxhw36EpN8fbD7ta0K9DMJzzAXd++0NgWAC6lGAVbdwT\nc8BI05kcho2AgYLqLHPtjz+NqyTNozFwEnVZgH4jRT/KzeprQagHhcNQSDB6\nGbE4XNQw6cY1kaEKRpxcOKIG6G+AgXM5TvNRp2INktNAeBmgzExvAQFwjo6z\nn6H9vCZP1UsYdbjuWWXqwythgSOLad4ASk8kj9vu7h5x4vzaxNcRimrFs2BI\ny0+oaxvG0gTPfFdZaeYyGEdfBsxcVCWYx5s/MK7Wk8HsAl6MCL6dV17sb77/\nLcnftYQ4XWypnuxjxppHHuziEWxqatpk70xysFkRM5csklV01n6HSiUAdVhW\nDBnKlK4PeZ0tRYu5jOIddNTBDmRvGpKq/B3inVvY3pjqVuEuPgKKPYrJjBTN\ntDl+3ADnqCaOxEG1wxbHd+jw4s70nMa2uNLgsxFqcmZuVcr5YuZ/kxliPCxb\ngzmzHuJSlqIQ641JiNntJu6LOKQoz2xR56eHDkg6JOSFEGUxOmRHbMhxrAEa\nFqisTPyIm3rMOBxSuJ5zsJHwhSX5mp96JWlP0Z0mwIviMh4bZz1BYie/Bphj\nj5Ah\r\n=PGsi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFQ1Qjxq4a1YQcirLqSXT48Pf7KQzn23F77+V5dEp7QdAiEAiqCGdprUiwgM7tVpC/CjJI9PJnCVa3pylyKR7WWM6oI="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.3-alpha.1_1578422179117_0.2885616906275297"},"_hasShrinkwrap":false},"4.0.3":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.3","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"9bb7f07467f257d777d2a238c234f04493272aae","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.3","_nodeVersion":"10.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-i8EPyN5ZOvqhUF+oqbOkKaGERMhPn4xSe7X5oz56h3PTLTTVDTnDK1UY1RtP8mLYZPPyd5hMpyfiM1e50/WYnA==","shasum":"227fa9e5b6ef80afbef42479b4e472a09cd27bbc","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.3.tgz","fileCount":463,"unpackedSize":1355302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeHIMTCRA9TVsSAnZWagAAKRwP/RA8k3rJyspOVcItAK1y\n4DT/+epmqkgXpzX0PhsBjB/Gc32IUAg9fwdmpsqRcnllSOaFhBlMokgo3BDv\npk8nc7LllW1RMaTzkycEkA/ecTpCKGqeefy8tEvHo6g+TzeDJZ+bojpukNg4\nMOKAImMaDaILHMdMAHaFtzrJJ0LoqDmKD15XoS471t5v5iti79KWIU6iaqum\nHGvtuixn+q51UNzBulq1E0eLssD9LWPK/OLn1e/FZgV7qyoMVhnBVcCeVNgg\nCYMljlPmy/uYUdGMinxeV3BVH3aAQqTMGU5LcRN8WNtNkWV1gh/zfDSwsj+M\ndYQx3z00gzcf1be1fRDwceqJpIs+j4AOtTouLAMfGzeIZAgpfGPprSCw0mnJ\nwvVYRaKp9qEGhwyEOe91yBfPsNcOmQjwUBelw6gQrHkA46UuGoG1A+TpVzo9\nbirRHSAmfKc8diXvg8VrfrGzJ02/nmmZEtLlciQslrXjz7TujvDdgNQENYXJ\n4LC1Ceja9PSxs8n12rxwQrQhsD7V8M4+y0ed9LpZFdc1WNFMY8seI3uxMCgF\nI/GYXo2j9WJoAdsRu1kYgeU0CIRR43MZ20W/EMXg4zZZSFnbinfgAndfw1SZ\ni8dbpikAflMOu9xDYDzKHs9zS2G3Tj4GuSdp4vfqF1WPTqFl7+HpxVuOOchJ\nG37C\r\n=XFcc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCasZHRz1EmHVcA0ZuGLYPt6fnmMf3ZvhZRwDkqlwReDwIgcsjRyZQZHDogeFRSBj9Op6K5V5md269g3Dsc9NfHAdI="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.3_1578926866564_0.17540983092017282"},"_hasShrinkwrap":false},"4.0.4":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.4","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"334441306370293091b56f843cba1c8bc91a0975","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.4","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-VimEFuRmFKnOwd0so5k9q7zOJ0bszEsa4b/lA3+CIY8lXvIbkHfI334webUcGRP36PY2YVCJgBHHnQFI1cR02A==","shasum":"d25213b7122c2aa929e77b63714dadc436237f6d","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.4.tgz","fileCount":461,"unpackedSize":994774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKKyuCRA9TVsSAnZWagAATugP/A9DmqswZlz4waT70Bcc\ngJULQWiMAr9hGlayxCYy2cbsEQg5lMYOCfF0kOlVn8VGtqAYfz/yGSpXvnVn\nIHW49oEyvCqzuDaEAY+drUb5veZqgXTdL5vxuELuhERhz5QKSAKnCuF8SX4d\nCiTdD9Kjnb0HkVDbvsjOBhdSfiVrOcO+XbrOSnorRojCC051KzTE8J0hcaLc\nbgiidsArxUinK9i3GRzdeHQS76cJ7yxCaFifnZRasMj6mnY1Ag1CdFHscsAE\ncewCKIvUUEtY6raZvbOE3Ti2Hhaqu+brpu1kDz4skVYXsbIWmMifSGNq2n8I\n8hjb++P2k/+49/tpe3WUZet2jaXxYb8gTgoA1JT3Ba6vbmcIBp1D05X0RM+T\nAiKZhok86tMQ4yKS1lFkesS0755WarL+ycTAKw3QEoJP1WI5Xu5tCHhdgPor\nrO6uHFeHXPbX0zsZyMBe981UKWjopZe/cfATXtHQVLPJ33OLxMO8PfndwfMx\nzqW7z8ZLZmbKBzxPxA8jZmVvgMZ1Q9NppQGMJ8gdjp59+B9dwzKhYelTzPM/\neWm5TwqjggubdCkPjLI+d0cYaIX3Ea/Nf1+gweC+qGe+tJxefcTo9yGbvgMO\nZ88rhf8C2bUqhavTmmbErhwO1UU5bw0sERGow9dYWR4S39RnkHff9DITychd\nSSIt\r\n=LCNq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKynOgjQJznca1b9AXI5DKmBFMgloiK3+dPVkJd897GgIhAIYVdG8Lq8MeuJe+Vyjf5zfyopgeAxGSO7kewAhDSyyl"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.4_1579723949929_0.015836416075165838"},"_hasShrinkwrap":false},"4.0.5-0":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.5-0","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \r\ndocumented Hue API.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api)\r\n    - [Connections to the Bridge](#connections-to-the-bridge)\r\n    - [Rate Limiting](#rate-limiting)\r\n    - [Debug Bridge Communications](#debug-bridge-communications)\r\n    - [v2 Compatibility](#v2-api-compatibility)\r\n    - [API Documentation](#api-documentation)\r\n        - [Discovering Local Hue Bridges](docs/discovery.md)\r\n        - [Remote API Support](docs/remoteApi.md)\r\n        - [Users](docs/users.md)\r\n        - [Lights](docs/lights.md)\r\n            - [Light Object](docs/light.md)\r\n            - [LightState Object](docs/lightState.md)\r\n        - [Sensors](docs/sensors.md)\r\n            - [Sensor Objects](docs/sensor.md)\r\n        - [Scenes](docs/scenes.md)\r\n            - [Scene Object](docs/scene.md)\r\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n        - [Groups](docs/groups.md)\r\n            - [Group Objects](docs/group.md)\r\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n        - [Rules](docs/rules.md)\r\n            - [Rule Object](docs/rule.md)\r\n            - [RuleCondition Object](docs/ruleCondition.md)\r\n            - [RuleAction Object](docs/ruleAction.md)\r\n        - [ResourceLinks](/docs/resourcelinks.md)\r\n            - [ResourceLink Object](docs/resourceLink.md)\r\n        - [Schedules](docs/schedules.md)\r\n            - [Schedule Object](docs/schedule.md)\r\n            - [Time Patterns](docs/timePatterns.md)\r\n        - [Configuration](docs/configuration.md)\r\n        - [Capabilities](docs/capabilities.md)\r\n        - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\r\n[Change Log](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn install node-hue-api\r\n```\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\r\n\r\n\r\n### Connections to the Bridge\r\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \r\nverified to the expected format and subject contents.\r\n\r\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \r\nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \r\nBridge.\r\n\r\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\r\nsite has an externally valid certificate and CA chain.\r\n\r\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \r\nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\r\nthat you are connecting in an insecure way_.\r\n\r\n\r\n### Rate Limiting\r\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\r\n\r\n* For the whole library, API calls are limited to 12 per second\r\n* For `lights.setLightState()`, API calls are limited to 10 per second\r\n* For `groups.setState()`, API calls are limited to 1 per second\r\n\r\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \r\nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\r\n\r\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \r\naccesses the bridge, it is still possible to overload it with requests._\r\n\r\n\r\n### Debug Bridge Communications\r\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \r\ntalk to the Hue Bridge.\r\n\r\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \r\ncontains `node-hue-api` in it.\r\n\r\nOnce the debug mode is active you will see output like the following on the console:\r\n\r\n```\r\nBridge Certificate:\r\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  valid from:    Jan  1 00:00:00 2017 GMT\r\n  valid to:      Jan  1 00:00:00 2038 GMT\r\n  serial number: xxxxxxx\r\n\r\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\"}\r\n{\r\n  \"method\": \"get\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\r\n}\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\r\n{\r\n  \"method\": \"post\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\r\n  \"data\": {\r\n    \"name\": \"Test Schedule Recurring\",\r\n    \"description\": \"A node-hue-api test schedule that can be removed\",\r\n    \"command\": {\r\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\r\n      \"method\": \"PUT\",\r\n      \"body\": {\r\n        \"on\": true\r\n      }\r\n    },\r\n    \"localtime\": \"W124/T12:00:00\",\r\n    \"status\": \"enabled\",\r\n    \"recycle\": true\r\n  }\r\n}\r\n```\r\n\r\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \r\nMAC Address of the bridge, IP Address and username values._\r\n\r\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\r\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\r\n\r\n\r\n## v2 API Compatibility\r\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\r\nfunctionality was removed (as was indicated in the 3.x documentation). \r\n\r\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \r\nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\r\n\r\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \r\nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \r\nAPI provided in this library (which is where any new features and improvements will be made going forward)._\r\n\r\n\r\n## API Documentation\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Objects](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Schedules](docs/schedules.md)\r\n    - [Schedule Object](docs/schedule.md)\r\n    - [Time Patterns](docs/timePatterns.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Capabilities](docs/capabilities.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.get();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\r\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\r\n\r\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\n\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","gitHead":"4e8b700bd8300ed4558a499355bfea29ee38c9e2","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.5-0","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-xT3f67r1rcZgCRaq88w1BxZg5kq5KgnFl+x9rA0dmNTD28Lowp51ccLpSE9XFnVoZGnVAkN9NGl1vqh8UzVHrQ==","shasum":"2a58d13bc00703ac4bc726432323199c4f051acd","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.5-0.tgz","fileCount":461,"unpackedSize":997070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeM0HGCRA9TVsSAnZWagAAwE4P/1Rn/IRnrr+37NsbngJw\ns4bhKXLN1ET2i5ipPBFDoZB5Q9bI05fBwaHpNtNZEJ1FmCq2vAWErgIL0y0C\ntd6svfYn84D+wmhqAS9LF6KbzPRQ99UN71jWpxA4b68nLW/kRC4z+EMoo9Q0\nKr/THrAzyQgWdLgvFYGTpPB4++y/Fo423zTgxQxkr33VyvLzBIMnzpLPU3eW\nouujFvV0z0v4+6pv11VhhH5k9AXK+r3kYFgiLNmubzdLe+5ei1v3Z1ypDprX\nlwUwnbrsMsGBA4aBbJdej69certmlP9FApYTP944qK8bsc/jfyroNUXIfHgY\nrmPNvKStvMEOh5gHtZIWqy7uCP2KYcQyLPidGDx+ojP1tQp9mH2wa5x16eQh\nNoocSQwQQHVIsr/KZoC/rUlM26V48R/8RcZbXa8A0fWBuCUfh3Tr3MYqY6bX\ndI23QfP5F+Qk6kvplkuZvYXEbxaMADA66ZNZLtjTfWXHCN0nbknS68JAxUrQ\ndRvrDUlF39BINI6b9shXj3pQwBTk6HnX9Ek+3Qq22ncmcnuMeG9PW23j1rfF\n8RG1guTXMk1cfUnmTvlQoeJiRLx5MROKGvXF9Nl/3cezkyEmlsNjrwC27lfg\n1OzcAJHSH/Qg2ERcTQQUvWsT/8KMx7nJM35BkLAGsY4syINCi/llhWk6rDNv\n5wTT\r\n=NvxB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGhXGjxC6iXV9faYcDSDXmOhXxhDx6Y9vmsDjq8zOzOEAiANBB87h3oU7jfNsoRcBbVV4xskehuTol6NA68s4chCCQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.5-0_1580417477904_0.7841467412786949"},"_hasShrinkwrap":false},"4.0.5":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.5","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"b0dd24ccf1b4c3646fdb7783c9d971c861593112","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.5","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-g/6cEB6m9e20bf1T8wmHvK8r6dqtgn5xS0l2WRGYts7jxEk7amTn2HkDyvgmaS5QTvH8gkeFNrpjq2IxyrVBcw==","shasum":"383e4923b9ab018c2212b38f8e6331e0095484c2","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.5.tgz","fileCount":461,"unpackedSize":997139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeM/QKCRA9TVsSAnZWagAA2nYQAIWfvHjCYqN0+1l4eNPm\nowxXxYd49TmLp7EuyRKUGQ/IWA9NK1j/RkbdF2n52LZs0dJwIcAT2xH6Lvi8\nvnKifUOdcRUmKFpxJH5hyGk666fYo97r9ZdRw6BI/la8Uo7/HbyjLyBbipI4\ngL013RM5dahsXY92zJ/pv2T5c4Xe8QjiGP4WWgZiy78iiNUBMrT4Vzpq2Aq9\nzTtWXSqrKRRBpxcjHpi/t0HzglJmH6SBvpT+wvI7oqsTqmvE6z7kShFXGmbe\n1VSoDpKRs62nJPsoC/6k0cSyitOirw8y7ZS5jWGoz0SlM0UvdPHSr5aYdUNP\nFS/5q6aWae16jrf05Q6eHGw/MVdsLKYbrhAfrtomiWuxcjCPOfyqfre6mr3T\nrSyAQI0H9aksTMLYYZSZVLwsjqrg3S8Wy4NcwuNxYH56zrQH0qDCjlI1vJ5t\neHrAS19nrgbhFwfb+bE+hsWwYu/zzlGBJz5fd565HDC7ZVGjdyi/ptRG1Ywm\nMUx0LZIoZ4FM3OTlkjWOF48nX9fPuf5BRQiyjD2/ytxvVbx2VnqBcvuMembZ\nGkqUqWxYezsHva/XQlKMnOXNoaj/j5PryN06NfMhOV6YJv0Y+P21jVQzA5rq\nznXNHhGhA7YCXNZhBTUef8vuX8j6H0uBK8iVa+zQ2LQfjgpgTbiKMFlNZKLy\nhPR4\r\n=5Gzi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUVux9KhD+FdmKaFQpxETIuapnpn1XUWTRCD5eU3dFiwIhAOngGPsT2G9sZvWnqoUhPY8DBldvnG9K8dx9rkkdE/w7"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.5_1580463113923_0.32297118331142527"},"_hasShrinkwrap":false},"5.0.0-alpha.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-alpha.1","author":{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \r\ndocumented Hue API.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api)\r\n    - [Connections to the Bridge](#connections-to-the-bridge)\r\n    - [Rate Limiting](#rate-limiting)\r\n    - [Debug Bridge Communications](#debug-bridge-communications)\r\n    - [v2 Compatibility](#v2-api-compatibility)\r\n    - [API Documentation](#api-documentation)\r\n        - [Discovering Local Hue Bridges](docs/discovery.md)\r\n        - [Remote API Support](docs/remoteApi.md)\r\n        - [Users](docs/users.md)\r\n        - [Lights](docs/lights.md)\r\n            - [Light Object](docs/light.md)\r\n            - [LightState Object](docs/lightState.md)\r\n        - [Sensors](docs/sensors.md)\r\n            - [Sensor Objects](docs/sensor.md)\r\n        - [Scenes](docs/scenes.md)\r\n            - [Scene Object](docs/scene.md)\r\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n        - [Groups](docs/groups.md)\r\n            - [Group Objects](docs/group.md)\r\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n        - [Rules](docs/rules.md)\r\n            - [Rule Object](docs/rule.md)\r\n            - [RuleCondition Object](docs/ruleCondition.md)\r\n            - [RuleAction Object](docs/ruleAction.md)\r\n        - [ResourceLinks](/docs/resourcelinks.md)\r\n            - [ResourceLink Object](docs/resourceLink.md)\r\n        - [Schedules](docs/schedules.md)\r\n            - [Schedule Object](docs/schedule.md)\r\n            - [Time Patterns](docs/timePatterns.md)\r\n        - [Configuration](docs/configuration.md)\r\n        - [Capabilities](docs/capabilities.md)\r\n        - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\r\n[Change Log](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn add node-hue-api\r\n```\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\r\n\r\n\r\n### Connections to the Bridge\r\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \r\nverified to the expected format and subject contents.\r\n\r\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \r\nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \r\nBridge.\r\n\r\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\r\nsite has an externally valid certificate and CA chain.\r\n\r\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \r\nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\r\nthat you are connecting in an insecure way_.\r\n\r\n\r\n### Rate Limiting\r\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\r\n\r\n* For the whole library, API calls are limited to 12 per second\r\n* For `lights.setLightState()`, API calls are limited to 10 per second\r\n* For `groups.setState()`, API calls are limited to 1 per second\r\n\r\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \r\nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\r\n\r\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \r\naccesses the bridge, it is still possible to overload it with requests._\r\n\r\n\r\n### Debug Bridge Communications\r\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \r\ntalk to the Hue Bridge.\r\n\r\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \r\ncontains `node-hue-api` in it.\r\n\r\nOnce the debug mode is active you will see output like the following on the console:\r\n\r\n```\r\nBridge Certificate:\r\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  valid from:    Jan  1 00:00:00 2017 GMT\r\n  valid to:      Jan  1 00:00:00 2038 GMT\r\n  serial number: xxxxxxx\r\n\r\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\"}\r\n{\r\n  \"method\": \"get\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\r\n}\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\r\n{\r\n  \"method\": \"post\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\r\n  \"data\": {\r\n    \"name\": \"Test Schedule Recurring\",\r\n    \"description\": \"A node-hue-api test schedule that can be removed\",\r\n    \"command\": {\r\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\r\n      \"method\": \"PUT\",\r\n      \"body\": {\r\n        \"on\": true\r\n      }\r\n    },\r\n    \"localtime\": \"W124/T12:00:00\",\r\n    \"status\": \"enabled\",\r\n    \"recycle\": true\r\n  }\r\n}\r\n```\r\n\r\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \r\nMAC Address of the bridge, IP Address and username values._\r\n\r\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\r\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\r\n\r\n\r\n## v2 API Compatibility\r\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\r\nfunctionality was removed (as was indicated in the 3.x documentation). \r\n\r\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \r\nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\r\n\r\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \r\nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \r\nAPI provided in this library (which is where any new features and improvements will be made going forward)._\r\n\r\n\r\n## API Documentation\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Objects](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Schedules](docs/schedules.md)\r\n    - [Schedule Object](docs/schedule.md)\r\n    - [Time Patterns](docs/timePatterns.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Capabilities](docs/capabilities.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.getConfiguration();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\r\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\r\n\r\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\n\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","gitHead":"c3144dc6c97c10c074c9d059f4bacfb47229a8ca","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-alpha.1","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-iMoRIAyTz6UVxNWmEGk+7GzT5R+XIOfEyQVEHgBiLbDPo5GuMYrQ8HdZ7NBbH/Z+ENa9uuQXAz20lPG8fJe90g==","shasum":"0398682943840b3b17b86b13a735e60154575101","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-alpha.1.tgz","fileCount":461,"unpackedSize":1005760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZi4VCRA9TVsSAnZWagAAWUoQAJlrzkUJSpCq3EBkSTt/\nPQ0kgVREnK943TDyVqCkaV4R//dIlUzs6wslJoJTNQo0h4N84DB3q7mIRHIU\n8yDtAvV6ggcrLmBJ1QbGdW4b/Nt449jLfDzG3YCjDPioF1L8TTbW5zy6A3x5\nvJpx/pwX2s0X5ZCMDDIMPEL6jT8rDi3Js38KzFCuTg7QHrmWkPBrfiUHy1vg\nyvOh1St0PUEYGNQKWGe9WCjEMIcGogKzhqBglfVO/BLR00DywofILdOAAKvK\nsCA7CREBCYiZzDgKYU7GNXGCbt8cVHi5l18u+GWUAVS2Os3DQZJO7i5w/37t\nVifTwozRj/+a7fxYiWLHyw82jBPgrIMKLVAbVtwFWGSShZZ6gH5lT/VCLIAW\nmeW1y+8UCeIdTW0pZeuQhEgA8q223M+zGQy+6nOwpy5L/I5gKQNRokTC98Pp\nRWFSdXwRj34OaZUZeo6u/d7diLpHaNuR4cN9pDsPuDyRoiFCt61pZ+D4e8Rj\nN0Bh+6pohledkl5j8oa0kMNQYZOPobGcfSHtrJ4eTiHZT+5447aCD6pMmMPy\nGWziFVoJSgRP4hf1Xt4Z1jlSpWh7MzaC3GZFRN8VqB5TF3myAB2x+nBftBL5\nAM07jnIwXse7/fnIe3d8bw+uy4FLyr9v5atejMYNqD4fpx3HpHHvECU2T+x+\np9nl\r\n=xq1a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUjMLwcn94Ht41G0epCzc55mSvHI+cO8aSjttUI3d0hAiAX2NHP0XmBRJ7nLncQ2+RjyzUahRlN29Egtk5ju0y8gQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-alpha.1_1583754772749_0.17106500422092785"},"_hasShrinkwrap":false},"5.0.0-alpha.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-alpha.2","author":{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.2","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"^6.2.3"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"readme":"# node-hue-api\r\n\r\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\r\n\r\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \r\nvarious other features of the Hue Bridge.\r\n\r\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \r\nand a number of useful functions to control/configure its various features.\r\n\r\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \r\ndocumented Hue API.\r\n\r\n\r\n## Contents\r\n- [Change Log](#change-log) \r\n- [Installation](#installation)\r\n- [v3 API](#v3-api)\r\n    - [Connections to the Bridge](#connections-to-the-bridge)\r\n    - [Rate Limiting](#rate-limiting)\r\n    - [Debug Bridge Communications](#debug-bridge-communications)\r\n    - [v2 Compatibility](#v2-api-compatibility)\r\n    - [API Documentation](#api-documentation)\r\n        - [Discovering Local Hue Bridges](docs/discovery.md)\r\n        - [Remote API Support](docs/remoteApi.md)\r\n        - [Users](docs/users.md)\r\n        - [Lights](docs/lights.md)\r\n            - [Light Object](docs/light.md)\r\n            - [LightState Object](docs/lightState.md)\r\n        - [Sensors](docs/sensors.md)\r\n            - [Sensor Objects](docs/sensor.md)\r\n        - [Scenes](docs/scenes.md)\r\n            - [Scene Object](docs/scene.md)\r\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n        - [Groups](docs/groups.md)\r\n            - [Group Objects](docs/group.md)\r\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n        - [Rules](docs/rules.md)\r\n            - [Rule Object](docs/rule.md)\r\n            - [RuleCondition Object](docs/ruleCondition.md)\r\n            - [RuleAction Object](docs/ruleAction.md)\r\n        - [ResourceLinks](/docs/resourcelinks.md)\r\n            - [ResourceLink Object](docs/resourceLink.md)\r\n        - [Schedules](docs/schedules.md)\r\n            - [Schedule Object](docs/schedule.md)\r\n            - [Time Patterns](docs/timePatterns.md)\r\n        - [Configuration](docs/configuration.md)\r\n        - [Capabilities](docs/capabilities.md)\r\n        - [Remote](docs/remote.md)\r\n- [Examples](#examples)\r\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\r\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\r\n    - [Using Hue Remote API](#using-hue-remote-api)\r\n- [Philips Hue Resources](#philips-hue-resources)\r\n- [License](#license)\r\n\r\n\r\n\r\n## Change Log\r\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\r\n[Change Log](Changelog.md)\r\n\r\n## Installation\r\n\r\nNode.js using npm:\r\n```\r\n$ npm install node-hue-api\r\n```\r\n\r\nNode.js using yarn:\r\n```\r\n$ yarn add node-hue-api\r\n```\r\n\r\n## v3 API\r\n\r\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \r\nand `catch()` or utilize synchronous `async` and `await` in your own code base.\r\n\r\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\r\n\r\n\r\n### Connections to the Bridge\r\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \r\nverified to the expected format and subject contents.\r\n\r\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \r\nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \r\nBridge.\r\n\r\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\r\nsite has an externally valid certificate and CA chain.\r\n\r\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \r\nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\r\nthat you are connecting in an insecure way_.\r\n\r\n\r\n### Rate Limiting\r\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\r\n\r\n* For the whole library, API calls are limited to 12 per second\r\n* For `lights.setLightState()`, API calls are limited to 10 per second\r\n* For `groups.setState()`, API calls are limited to 1 per second\r\n\r\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \r\nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\r\n\r\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \r\naccesses the bridge, it is still possible to overload it with requests._\r\n\r\n\r\n### Debug Bridge Communications\r\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \r\ntalk to the Hue Bridge.\r\n\r\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \r\ncontains `node-hue-api` in it.\r\n\r\nOnce the debug mode is active you will see output like the following on the console:\r\n\r\n```\r\nBridge Certificate:\r\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\r\n  valid from:    Jan  1 00:00:00 2017 GMT\r\n  valid to:      Jan  1 00:00:00 2038 GMT\r\n  serial number: xxxxxxx\r\n\r\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\"}\r\n{\r\n  \"method\": \"get\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\r\n}\r\nURL Placeholders:\r\n  username: { type:string, optional:false, defaultValue:null }\r\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\r\n{\r\n  \"method\": \"post\",\r\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\r\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\r\n  \"data\": {\r\n    \"name\": \"Test Schedule Recurring\",\r\n    \"description\": \"A node-hue-api test schedule that can be removed\",\r\n    \"command\": {\r\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\r\n      \"method\": \"PUT\",\r\n      \"body\": {\r\n        \"on\": true\r\n      }\r\n    },\r\n    \"localtime\": \"W124/T12:00:00\",\r\n    \"status\": \"enabled\",\r\n    \"recycle\": true\r\n  }\r\n}\r\n```\r\n\r\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \r\nMAC Address of the bridge, IP Address and username values._\r\n\r\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\r\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\r\n\r\n\r\n## v2 API Compatibility\r\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\r\nfunctionality was removed (as was indicated in the 3.x documentation). \r\n\r\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \r\nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\r\n\r\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \r\nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \r\nAPI provided in this library (which is where any new features and improvements will be made going forward)._\r\n\r\n\r\n## API Documentation\r\n- [Discovering Local Hue Bridges](docs/discovery.md)  \r\n- [Remote API Support](docs/remoteApi.md)\r\n- [Users](docs/users.md)\r\n- [Lights](docs/lights.md)\r\n    - [Light Object](docs/light.md)\r\n- [Sensors](docs/sensors.md)\r\n    - [Sensor Objects](docs/sensor.md)\r\n- [Scenes](docs/scenes.md)\r\n    - [Scene Object](docs/scene.md)\r\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\r\n- [Groups](docs/groups.md)\r\n    - [Group Objects](docs/group.md)\r\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\r\n- [Rules](docs/rules.md)\r\n    - [Rule Object](docs/rule.md)\r\n    - [RuleCondition Object](docs/ruleCondition.md)\r\n    - [RuleAction Object](docs/ruleAction.md)\r\n- [ResourceLinks](docs/resourcelinks.md)\r\n    - [ResourceLink Object](docs/resourceLink.md)\r\n- [Schedules](docs/schedules.md)\r\n    - [Schedule Object](docs/schedule.md)\r\n    - [Time Patterns](docs/timePatterns.md)\r\n- [Configuration](docs/configuration.md)\r\n- [Capabilities](docs/capabilities.md)\r\n- [Remote](docs/remote.md)\r\n\r\n\r\n## Examples\r\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \r\nthe documentation links [above](#v3-api).\r\n\r\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \r\nrunnable example code.\r\n\r\n---\r\n\r\n### Discover and connect to the Hue Bridge for the first time\r\n\r\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\r\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \r\nfeatures to locate it.\r\n\r\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\r\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\r\n\r\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\r\n```js\r\nconst v3 = require('node-hue-api').v3\r\n  , discovery = v3.discovery\r\n  , hueApi = v3.api \r\n;\r\n\r\nconst appName = 'node-hue-api';\r\nconst deviceName = 'example-code';\r\n\r\nasync function discoverBridge() {\r\n  const discoveryResults = await discovery.nupnpSearch();\r\n\r\n  if (discoveryResults.length === 0) {\r\n    console.error('Failed to resolve any Hue Bridges');\r\n    return null;\r\n  } else {\r\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\r\n    return discoveryResults[0].ipaddress;\r\n  }\r\n}\r\n\r\nasync function discoverAndCreateUser() {\r\n  const ipAddress = await discoverBridge();\r\n\r\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\r\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\r\n  \r\n  let createdUser;\r\n  try {\r\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\r\n    console.log('*******************************************************************************\\n');\r\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\r\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\r\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\r\n    console.log(`Hue Bridge User: ${createdUser.username}`);\r\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\r\n    console.log('*******************************************************************************\\n');\r\n\r\n    // Create a new API instance that is authenticated with the new user we created\r\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\r\n\r\n    // Do something with the authenticated user/api\r\n    const bridgeConfig = await authenticatedApi.configuration.getConfiguration();\r\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\r\n\r\n  } catch(err) {\r\n    if (err.getHueErrorType() === 101) {\r\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\r\n    } else {\r\n      console.error(`Unexpected Error: ${err.message}`);\r\n    }\r\n  }\r\n}\r\n\r\n// Invoke the discovery and create user code\r\ndiscoverAndCreateUser();\r\n```\r\n\r\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\r\n\r\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \r\nalong with the [users API](./docs/users.md). \r\n\r\n\r\n---\r\n\r\n### Set a Light State on a Light\r\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \r\nTo interact with light on the Hue Bridge you can use the following:\r\n\r\n```js\r\nconst v3 = require('node-hue-api').v3;\r\nconst LightState = v3.lightStates.LightState;\r\n\r\nconst USERNAME = 'your username to authenticating with the bridge'\r\n  // The name of the light we wish to retrieve by name\r\n  , LIGHT_ID = 1\r\n;\r\n\r\nv3.discovery.nupnpSearch()\r\n  .then(searchResults => {\r\n    const host = searchResults[0].ipaddress;\r\n    return v3.api.createLocal(host).connect(USERNAME);\r\n  })\r\n  .then(api => {\r\n    // Using a LightState object to build the desired state\r\n    const state = new LightState()\r\n      .on()\r\n      .ct(200)\r\n      .brightness(100)\r\n    ;\r\n    \r\n    return api.lights.setLightState(LIGHT_ID, state);\r\n  })\r\n  .then(result => {\r\n    console.log(`Light state change was successful? ${result}`);\r\n  })\r\n;\r\n```\r\n\r\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \r\ndocumentation and examples referenced within.\r\n\r\n\r\n### Using Hue Remote API\r\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\r\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\r\n\r\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\r\n\r\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\r\n\r\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\r\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \r\n\r\n\r\n## Philips Hue Resources\r\n\r\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\r\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\r\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\r\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\r\n\r\n\r\n## License\r\nCopyright 2013-2019. All Rights Reserved.\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\r\n\r\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\r\n\r\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n","readmeFilename":"README.md","gitHead":"2494322634ac95068ce7f6c7c54828a9972a8e8c","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-alpha.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-bNMzTAzHHMWYiMQE51UWa/9lk+foQbMxhOT9IkIbz0OO6xG1A3F21aBgdu8xk5AYc9XOz9zFbogfWZV5VP/Gcw==","shasum":"505bf92f94d642da61c3c1ef033d9e6766263f5b","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-alpha.2.tgz","fileCount":461,"unpackedSize":1006277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeouOaCRA9TVsSAnZWagAAIJwP/3qld9SQmyzEu62fNPeU\nzAAeGb/R4RAI2yneJl/ktb6A3TTmuUewiaIdgR3MPy9T/I58jYQL4jTVlE03\nQsV+S2THq8i/EPoUMs1xplAs8R2YwGbJ9IKzjAi6YBpBn51vHE21gjQ+jjWJ\npV+IaGW0x4hLDhpjXsTBwDz8YIBhdGbvCu+2rCP4nkSXS9PZ+DfFlWy03ehZ\nTjaiAdcJ82YXegdFm8lhKctzJdYnW+3xYnk39GzA+84mi3A5/0RQXjDpag2k\n2Gc7/iUroNBK2aMsa3ZjOziGS40fJhuLBISQar8pOw/Q8V59G7g+JsuOGRqe\nFIUjbo7J9+tcnTY6kFINv66jbaoXbPQCnxTI9EwK/sIZWzBFYRnu2wgGsqLy\nZTE9m+ZlwK7L9lvtq0tGLq41vb4I8GOBbWDHjwiJtOdPqnc14FtKHzEO1bmQ\n+6EgE2jxJz3M+2jZFiQvod603ZbKgVwVkAUcPRtGxlUgW/zpBr7PlBpB0qR7\ned7hsP8vAwn3L4LukoYLgJIrsozUaZJJuU7yaCg9149DlPbkzBZlWyQ0XYrq\n7hVkUp3br6CGcWdJcH8yaLk8EvCrVUPxXSTHql0im55OHXDCazbpEwI/STal\nMSJQaoAvq9l9bsWZd+SKrLRiqSroM+USWImkOS7x04Wfy6SzudscQUF1vcMi\nCnRE\r\n=L4eH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCujEJDimdFjX8jnaOMOPxlanKzgiU6mPDH+SfOceJfgIhALK5KrcdPpqGnW3lLxOAZP7tJYhRNcTdgAtNDuG5VU0M"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-alpha.2_1587733402069_0.5944270894721428"},"_hasShrinkwrap":false},"4.0.6":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.6","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"d7ee8fe4d241a5777c35afc39239eccda77d61d7","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.6","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-HoBy97r+btnZdGYpBVkag/IuQBbTq+vwW0K3Ni8tG/5/nW3Gvz9z1zE0Rg3DoEkVnmXOWPcvKSYI/b/UTJcdEg==","shasum":"ddd79b776c647f3a1ded7268048958bdf3e89e82","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.6.tgz","fileCount":461,"unpackedSize":1003406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoucuCRA9TVsSAnZWagAAjYIQAJcNApqXROz4Mvum6UbL\nJBeBldJa5tjEevDtRslcuk3hkal7wWVSo8AmL41xwvwnpBpWtNwcs0ji8Giz\nOyqVvUjfS8p1nMuKruhF6btawrHpZR0N/+zg17Qu6sAZFyllZNsfizEB6dry\nH7BWpxV/9AcHvNowuyJNkOo+ea31Trh/EC80D3LxrzvteoWb3TdPnsst65DU\nwlVtYiR6D+93o9CbAYIMP9QtkPTHSywonihx/nqGv+BxV/rSwoClW53zS+Sn\nrwg4gavenz693Ufga9lPJaXNyrPegrii0WIPNuxDFu6msAcPD2H05L1k9yKN\njJfULrNOCSo6pA+Y6uDO3EEKgu25b9B8ddVJ9IENa4wWXAgweQlh4AGyapqa\n8fAVf4qMlYAemA64S7u484rwOHP5uu1qZnfqgPUANO2Ft/O3Gpy4hU2H4GSy\nRoCvJG6lJnw4M7im/OYdGqlHs2AFhrzlUyek1fW/KYKGi4Rmkwptmk79anN8\nTE0tr+5KLW03gwUpwUuAEEIt6flAH096o0rDmBvXRNLjzo11pVRPZ9pke+gR\nEUCUyO5WN8e/R711ZUUJYNYLg3Fn2eJLWMDPsNglrJ0slobD7tfg4BAlhqf4\ndU/+dHWSvCFU0oabVztDvjx1oo4xSRxipilErtQEgPgqPHLSMmVHC4no83au\nRzj5\r\n=LAP3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf0OlnpDeeQhirdpKtSLkAf7tgVZl4KuLTPlncKLpRawIhANhzCnEj+QIxYV2P5wPL+CUvOQAdl7u6AAnUKnylOcW2"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.6_1587734318234_0.4228941341738086"},"_hasShrinkwrap":false},"4.0.7":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.7","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"npx rimraf **/*.d.ts","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript index.js --allowJs --declaration --emitDeclarationOnly","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"7806aa460331dbc7f63560f1c7d3082655a024cc","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.7","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-XAAFd/GsMgM8dybk/XoZ6LMhGvMGLxtFPL8S2Dw4H0vvOMb/93UtLHTkUN6OVPzycA6KcsYrfv9tO03pWNLJCQ==","shasum":"ad8def2339cce9822352d4b89fae37b7d1fbd598","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.7.tgz","fileCount":461,"unpackedSize":995074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4kkhCRA9TVsSAnZWagAALk0P/2HyK/7A6iIr2L9loXhG\nY9z/KBbNnIR4FXsFr9bmXaP4pftSJ9uMPXk62BTfLJQz+FjbZhfmU1Birg+9\n3aQprpN1bxJAevzyi4fuS23IF3CiA7duI55HzT23/m97iGI7dutS9mVR68Bd\nc+D93/CI8jvsubg/3ZiP32KBW3Xnu7zbEYbJ7FTlSPGRwy/mGN9w2ycGQe1i\ntY9rIICcrdS3ZkXNRc6vWai+S/0XoKgyabvXfcON5Brp0r2mHkbrgr1g3tgf\nlONsXhpVC5PvQlH+tUb4oE6u3uS0WPqD2ZTRxinGs2/RGshQBZOxWI0LgnYn\nzgt+QrdKEGJIUOUuKhPn8dQU+Dzfo6AG7BN0URkG4j6DeW8tcZDF4DMki3Ox\nMLXG5OoSlr3fCR3bUF+Kh5L0Aek+T/CkRdlyJy2JS8zkg5+A9q8lpDk9dALs\nSkafWpS7N8QdaGulft/GX6Yrt7rVPITkQ05mn4K0TTsfcGimhAaF3m7g9Aas\nGlHEPgt3xBuLxh/XQYzLZr4PiMVpAwHRSiG7UqIo9Qyf+33ueHMTXB1lRU0T\njB20uM8P4X9CrbX5WVENHfxCqfEjdEkSywzjiJgjWuMZIN8yNUJUulfuJter\n4qUwS4ma8J9VasOIQQkbhFvj/IGJQOwkOoVMmgzOyjozLaUEwn7gGrnn/0H0\nl2dH\r\n=r3Qs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE1TnTZCw9VvU1wICzOiiZ6qwrcIl9YDubyKC963+osvAiEAl654J2EzPqgCQZM3cMvF9BBeDI/C6XTyoC/G3+IEbcA="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.7_1591888160606_0.3984782353004206"},"_hasShrinkwrap":false},"4.0.8":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.8","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"find . -type f -name '*.d.ts' -exec rm {} \\;","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript@3.8.3 index.js --allowJs --strict --declaration --emitDeclarationOnly --listEmittedFiles","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"269c3076c5dd9dec58062a73de1e1d6821f873b5","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.8","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9/MfN0Qot5KSysS7C4yDjmDoR/TLSeX4PDkSH85zpC36jdQBW1db9HVhznG0C/6v4K51u+4h+gEa/pNSueHVXQ==","shasum":"16a260f97c8cb15e78fbc8c8eabe658fbe0924ed","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.8.tgz","fileCount":461,"unpackedSize":970484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI+CgCRA9TVsSAnZWagAA6IUP/jEpv5Qus9N75GNCXXbf\neS8/rBg/KFJyPezvK+bl4hlN1tgHn5HNEKIJxXlYYMOh+W3KfNj85VMnt4KJ\nLoDx2ZRODYADlioTtX+G/NqlGDVxANXwlYRHvB+SsAk7HS4iOOGCrsipODpq\niPP54oDJ5SNOro+0Ybub6kQaTGUrB1C3woI1lcmqeeWYQ21Txhi3/PS13oDX\nxeCLpVCnf0I3ewmlStsTIH/+gHFwDgtZK7mmZJu2eBevUos8mbp11x2WNz7N\nnXhQRs4P2RSJw80v2Y4kCoz+tvN3CVo4Czr2Cn9opASKbPJHiI1oGiw7d7ds\nyaUyyGlE28U2LhjTHZnuChqs/hC/QroU/lTXs3sJ7qMujC6RKvOrupPNipfy\nxy+xjVYq2cLB2bOpDco2nvPS8O8AUka6x8Fm1pG4Ie5EbL9nf94CcCMx5BEt\nVuC8oIyv+3YDVg3VKHG8QS1l2SY1Ci/NkLiAFua1CnfFMGeb+TwvRvEgu5j/\nuY4vF5Uy/SsskwQX131k/cq2w6IMW9a51aJcaKaZ7JwcB3ISr5dtO6SF6qiH\n7f3ZvuGT4GoYyfD58SQqSjyOSnoxOF7fEPjwekJqc+mzuoiZMUNTIdAXIDHt\nvVNaLv/tiKSQpKcUkqmWOntjIpZ2roYsT5QxKr4gqKD/MFAer+mUN23us1Td\nY5lg\r\n=cg2o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE2gjhzRXR+au1z8S0q7mdCNqkV1hJKX8NQFqfKby0VoAiAXMTTP5FphQcBsFVpIOyYK5OG63NzifKv+WKtff/fBNQ=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.8_1596186783792_0.3598696714159131"},"_hasShrinkwrap":false},"4.0.9-rc1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.9-rc1","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"find . -type f -name '*.d.ts' -exec rm {} \\;","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript@3.8.3 index.js --allowJs --strict --declaration --emitDeclarationOnly --listEmittedFiles","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"readme":"# node-hue-api\n\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\n\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \nvarious other features of the Hue Bridge.\n\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \nand a number of useful functions to control/configure its various features.\n\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \ndocumented Hue API.\n\n\n## Contents\n- [Change Log](#change-log) \n- [Installation](#installation)\n- [v3 API](#v3-api)\n    - [Connections to the Bridge](#connections-to-the-bridge)\n    - [Rate Limiting](#rate-limiting)\n    - [Debug Bridge Communications](#debug-bridge-communications)\n    - [v2 Compatibility](#v2-api-compatibility)\n    - [API Documentation](#api-documentation)\n        - [Discovering Local Hue Bridges](docs/discovery.md)\n        - [Remote API Support](docs/remoteApi.md)\n        - [Users](docs/users.md)\n        - [Lights](docs/lights.md)\n            - [Light Object](docs/light.md)\n            - [LightState Object](docs/lightState.md)\n        - [Sensors](docs/sensors.md)\n            - [Sensor Objects](docs/sensor.md)\n        - [Scenes](docs/scenes.md)\n            - [Scene Object](docs/scene.md)\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\n        - [Groups](docs/groups.md)\n            - [Group Objects](docs/group.md)\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\n        - [Rules](docs/rules.md)\n            - [Rule Object](docs/rule.md)\n            - [RuleCondition Object](docs/ruleCondition.md)\n            - [RuleAction Object](docs/ruleAction.md)\n        - [ResourceLinks](/docs/resourcelinks.md)\n            - [ResourceLink Object](docs/resourceLink.md)\n        - [Schedules](docs/schedules.md)\n            - [Schedule Object](docs/schedule.md)\n            - [Time Patterns](docs/timePatterns.md)\n        - [Configuration](docs/configuration.md)\n        - [Capabilities](docs/capabilities.md)\n        - [Remote](docs/remote.md)\n- [Examples](#examples)\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\n    - [Using Hue Remote API](#using-hue-remote-api)\n- [Philips Hue Resources](#philips-hue-resources)\n- [License](#license)\n\n\n\n## Change Log\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\n[Change Log](Changelog.md)\n\n## Installation\n\nNode.js using npm:\n```\n$ npm install node-hue-api\n```\n\nNode.js using yarn:\n```\n$ yarn install node-hue-api\n```\n\n## v3 API\n\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \nand `catch()` or utilize synchronous `async` and `await` in your own code base.\n\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\n\n\n### Connections to the Bridge\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \nverified to the expected format and subject contents.\n\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \nBridge.\n\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\nsite has an externally valid certificate and CA chain.\n\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\nthat you are connecting in an insecure way_.\n\n\n### Rate Limiting\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\n\n* For the whole library, API calls are limited to 12 per second\n* For `lights.setLightState()`, API calls are limited to 10 per second\n* For `groups.setState()`, API calls are limited to 1 per second\n\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\n\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \naccesses the bridge, it is still possible to overload it with requests._\n\n\n### Debug Bridge Communications\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \ntalk to the Hue Bridge.\n\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \ncontains `node-hue-api` in it.\n\nOnce the debug mode is active you will see output like the following on the console:\n\n```\nBridge Certificate:\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\n  valid from:    Jan  1 00:00:00 2017 GMT\n  valid to:      Jan  1 00:00:00 2038 GMT\n  serial number: xxxxxxx\n\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\nURL Placeholders:\n  username: { type:string, optional:false, defaultValue:null }\nHeaders: {\"Accept\":\"application/json\"}\n{\n  \"method\": \"get\",\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n}\nURL Placeholders:\n  username: { type:string, optional:false, defaultValue:null }\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\n{\n  \"method\": \"post\",\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\n  \"data\": {\n    \"name\": \"Test Schedule Recurring\",\n    \"description\": \"A node-hue-api test schedule that can be removed\",\n    \"command\": {\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\n      \"method\": \"PUT\",\n      \"body\": {\n        \"on\": true\n      }\n    },\n    \"localtime\": \"W124/T12:00:00\",\n    \"status\": \"enabled\",\n    \"recycle\": true\n  }\n}\n```\n\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \nMAC Address of the bridge, IP Address and username values._\n\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\n\n\n## v2 API Compatibility\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\nfunctionality was removed (as was indicated in the 3.x documentation). \n\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\n\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \nAPI provided in this library (which is where any new features and improvements will be made going forward)._\n\n\n## API Documentation\n- [Discovering Local Hue Bridges](docs/discovery.md)  \n- [Remote API Support](docs/remoteApi.md)\n- [Users](docs/users.md)\n- [Lights](docs/lights.md)\n    - [Light Object](docs/light.md)\n- [Sensors](docs/sensors.md)\n    - [Sensor Objects](docs/sensor.md)\n- [Scenes](docs/scenes.md)\n    - [Scene Object](docs/scene.md)\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\n- [Groups](docs/groups.md)\n    - [Group Objects](docs/group.md)\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\n- [Rules](docs/rules.md)\n    - [Rule Object](docs/rule.md)\n    - [RuleCondition Object](docs/ruleCondition.md)\n    - [RuleAction Object](docs/ruleAction.md)\n- [ResourceLinks](docs/resourcelinks.md)\n    - [ResourceLink Object](docs/resourceLink.md)\n- [Schedules](docs/schedules.md)\n    - [Schedule Object](docs/schedule.md)\n    - [Time Patterns](docs/timePatterns.md)\n- [Configuration](docs/configuration.md)\n- [Capabilities](docs/capabilities.md)\n- [Remote](docs/remote.md)\n\n\n## Examples\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \nthe documentation links [above](#v3-api).\n\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \nrunnable example code.\n\n---\n\n### Discover and connect to the Hue Bridge for the first time\n\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \nfeatures to locate it.\n\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\n\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\n```js\nconst v3 = require('node-hue-api').v3\n  , discovery = v3.discovery\n  , hueApi = v3.api \n;\n\nconst appName = 'node-hue-api';\nconst deviceName = 'example-code';\n\nasync function discoverBridge() {\n  const discoveryResults = await discovery.nupnpSearch();\n\n  if (discoveryResults.length === 0) {\n    console.error('Failed to resolve any Hue Bridges');\n    return null;\n  } else {\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\n    return discoveryResults[0].ipaddress;\n  }\n}\n\nasync function discoverAndCreateUser() {\n  const ipAddress = await discoverBridge();\n\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\n  \n  let createdUser;\n  try {\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\n    console.log('*******************************************************************************\\n');\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\n    console.log(`Hue Bridge User: ${createdUser.username}`);\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\n    console.log('*******************************************************************************\\n');\n\n    // Create a new API instance that is authenticated with the new user we created\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\n\n    // Do something with the authenticated user/api\n    const bridgeConfig = await authenticatedApi.configuration.get();\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\n\n  } catch(err) {\n    if (err.getHueErrorType() === 101) {\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\n    } else {\n      console.error(`Unexpected Error: ${err.message}`);\n    }\n  }\n}\n\n// Invoke the discovery and create user code\ndiscoverAndCreateUser();\n```\n\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\n\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \nalong with the [users API](./docs/users.md). \n\n\n---\n\n### Set a Light State on a Light\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \nTo interact with light on the Hue Bridge you can use the following:\n\n```js\nconst v3 = require('node-hue-api').v3;\nconst LightState = v3.lightStates.LightState;\n\nconst USERNAME = 'your username to authenticating with the bridge'\n  // The name of the light we wish to retrieve by name\n  , LIGHT_ID = 1\n;\n\nv3.discovery.nupnpSearch()\n  .then(searchResults => {\n    const host = searchResults[0].ipaddress;\n    return v3.api.createLocal(host).connect(USERNAME);\n  })\n  .then(api => {\n    // Using a LightState object to build the desired state\n    const state = new LightState()\n      .on()\n      .ct(200)\n      .brightness(100)\n    ;\n    \n    return api.lights.setLightState(LIGHT_ID, state);\n  })\n  .then(result => {\n    console.log(`Light state change was successful? ${result}`);\n  })\n;\n```\n\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \ndocumentation and examples referenced within.\n\n\n### Using Hue Remote API\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\n\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\n\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\n\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \n\n\n## Philips Hue Resources\n\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\n\n\n## License\nCopyright 2013-2019. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\n\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n","readmeFilename":"README.md","gitHead":"b3583d6f182bf3c629ac22ba134f226db54fad0f","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.9-rc1","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-7XSJ0TiYX8u0QdTeLEPj+dzxhhRCtfUwEJ9gQ+P5UkOpOhgJMlc2ZL46poq39XDCCNV850ZifsWpnLO81vvhuA==","shasum":"2276a55b05a0e38f59a7ab0076a9bdf2e36045a6","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.9-rc1.tgz","fileCount":463,"unpackedSize":971579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOqBtCRA9TVsSAnZWagAA7TgP/3B+XK15+17uklRUH2A8\n32WWlmJu/dAZSxj9912BYmgLitBuy/Lgg1sHo4yhPClDH4XKltmnxgPNyvUp\nFcwQiS6lUzD+hHh1gcT63dEXbAHqVjOFj62mVqj7hftaEpoxqPXNodTDM3VU\nqRpyoWq8c4zlAWhM7MLJmEeYIIdNlKSYj9nAwccl1eLgkc/44pxMVpWmCG5P\nhCL5zYScMyxHc8SZHokGMFQ/3QBty2L99SRGE90bC0+l43mh+4aHC1t/ZUer\nAJaea1MkLbDbg8W4hyRlmHX2pq3Es75XUkIep9h6kIKQU76lMY7+YbFEE/6e\nMsqcdyrnnHsLqOSe4K5tzW6eRizOrDkC3sXa/TnBKLF1i/m8+nRzs0AQJZ77\nNQwzdbzvCj9dnsyisSHu20cECIOfNzubehy6yYuKBXXmuIJtAi1XpRGe0Rtg\nvq6qvhUlVy3FX5DurVPCOzNkGnrGfwIQcbnk06cp59aBrBabOEJctH38CL/Y\n9Bkkdr7tPljlY7pLFDxLsRbec7/TPWtzhbISHnALDhEtNoWsgGGoj+LCsUh4\nfd7hZC2cm62D5DZKHmoVC6NeYQk4hB1moESvt5RcY43EypAPrcBIvZTlDiA+\n6jeb40pM4zOZPQtn0dNXBypydv9+DYyNijom5jMhVifdmTzq9HUQeAQ9cHU4\netHi\r\n=1ng3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDflea6qpTkdh05sXJ1QnacorrTTDcJ8tT2ms5jELLdhgIhAONCcxUlTToXRoZF0mQOfKTYXUbS1dBy7eFomYkTEVyI"}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.9-rc1_1597677676679_0.8005861702397703"},"_hasShrinkwrap":false},"4.0.9":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.9","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"find . -type f -name '*.d.ts' -exec rm {} \\;","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript@3.8.3 index.js --allowJs --strict --declaration --emitDeclarationOnly --listEmittedFiles","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.19.0","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"~6.2.2"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"93814dc0b4236717bd186a1bbf21042bc30f6de4","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.9","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xsMUGKDSeMtYsKHSKNCn5XFq4eEArbEaFRAAccGBIlQ+ysrVKjlg1So44wY32gMgYfm3S6sJQOw2jLyPxu3Dkw==","shasum":"ed11cf4ee94bcdb0c339775e98213b5047d08314","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.9.tgz","fileCount":463,"unpackedSize":971575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO5GoCRA9TVsSAnZWagAAf64P/iNtxmSy41gX8OGy2tIh\nQtFkl+vIFqxrXdm8emyzCvZfhV9BRpETRQm9nKLxBad0QYENr9vStv6h2D4g\nKEl9ugf7/FcvwuJqhuKd4VxADJzA4YL/0jdXYDvytlq+skMOILm0l+SY0B5O\nuSf6iDgQBd4GJag8dNq6RdTFhheWRQLEaZFyAE4l3dD5/y5rdDG2wq1oHASR\nfqrCcBl19Aa0rJ8G0K+qxgVDoYxHe6Y2NZxid7DMM8UlwZuFYVa/R9FLEdr1\nEsub2LbyWrYqf8PySsO1PO6rOsECRVZw620MqVeZROgbRMbeGc1oJupCSv9F\nFEX+gO9jig9n6kvzJz/uUsBwsqTpbGTgIUPTsbc7v4PIQjPhxBp3XIdebhZs\nlA3kPfwgP5m1XFkSu2lpYgHl2h+X23jWXlgUH3IADuH9niqLTpUxPnBqw2AH\nO4PyhoSssk2i/Gt6/R5Urd1wrJMVNC/VphzilStAPxPDRGDwIPM2Fms/YI2k\nPi33dIH6ARl5qDkGlCrXRCaXbira5g63ZMP0sPFY7vOObroH0l5gHYbRcdew\nMEZGg+VwpIRa7J7kHVrkpbVadbL7drNtxD4m76bmxJlo5jBWNDAyhNvlRYgQ\nUcVBXh8zo/+JvEsdy30t82vsMBEbKsbu+SfQ6e7CebfxYU+E56gpZUEqlvAd\n0uoB\r\n=XR+q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyJVS9HsddtrSNWb6TW7VA9QJIx6Gv2j+87iPm0laeHAiA5K9CTpCmG+f0Xb9gWOYtjuS0Nvy75Usq0e0WTAisroA=="}]},"maintainers":[{"name":"peter-murray","email":"pmurray@osirisoft.com"}],"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.9_1597739431971_0.397905093110579"},"_hasShrinkwrap":false},"5.0.0-beta.1":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.1","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/cjs/index.d.ts","scripts":{"test":"mocha --recursive -r ts-node/register \"lib/**/*.test.ts\" \"lib/**/*.test.js\"","build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^1.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.12","@types/mocha":"^8.2.0","@types/node":"^14.14.14","@types/node-fetch":"^2.5.7","chai":"~4.2","mocha":"^8.2.1","ts-node":"^9.1.1","typescript":"^4.1.3"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"readme":"# node-hue-api\n\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\n\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \nvarious other features of the Hue Bridge.\n\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \nand a number of useful functions to control/configure its various features.\n\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \ndocumented Hue API.\n\n\n## Contents\n- [Change Log](#change-log) \n- [Installation](#installation)\n- [v3 API](#v3-api)\n    - [Connections to the Bridge](#connections-to-the-bridge)\n    - [Rate Limiting](#rate-limiting)\n    - [Debug Bridge Communications](#debug-bridge-communications)\n    - [v2 Compatibility](#v2-api-compatibility)\n    - [API Documentation](#api-documentation)\n        - [Discovering Local Hue Bridges](docs/discovery.md)\n        - [Remote API Support](docs/remoteApi.md)\n        - [Users](docs/users.md)\n        - [Lights](docs/lights.md)\n            - [Light Object](docs/light.md)\n            - [LightState Object](docs/lightState.md)\n        - [Sensors](docs/sensors.md)\n            - [Sensor Objects](docs/sensor.md)\n        - [Scenes](docs/scenes.md)\n            - [Scene Object](docs/scene.md)\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\n        - [Groups](docs/groups.md)\n            - [Group Objects](docs/group.md)\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\n        - [Rules](docs/rules.md)\n            - [Rule Object](docs/rule.md)\n            - [RuleCondition Object](docs/ruleCondition.md)\n            - [RuleAction Object](docs/ruleAction.md)\n        - [ResourceLinks](/docs/resourcelinks.md)\n            - [ResourceLink Object](docs/resourceLink.md)\n        - [Schedules](docs/schedules.md)\n            - [Schedule Object](docs/schedule.md)\n            - [Time Patterns](docs/timePatterns.md)\n        - [Configuration](docs/configuration.md)\n        - [Capabilities](docs/capabilities.md)\n        - [Remote](docs/remote.md)\n- [Examples](#examples)\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\n    - [Using Hue Remote API](#using-hue-remote-api)\n- [Philips Hue Resources](#philips-hue-resources)\n- [License](#license)\n\n\n\n## Change Log\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\n[Change Log](Changelog.md)\n\n## Installation\n\nNode.js using npm:\n```\n$ npm install node-hue-api\n```\n\nNode.js using yarn:\n```\n$ yarn add node-hue-api\n```\n\n## v3 API\n\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \nand `catch()` or utilize synchronous `async` and `await` in your own code base.\n\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\n\n\n### Connections to the Bridge\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \nverified to the expected format and subject contents.\n\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \nBridge.\n\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\nsite has an externally valid certificate and CA chain.\n\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\nthat you are connecting in an insecure way_.\n\n\n### Rate Limiting\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\n\n* For the whole library, API calls are limited to 12 per second\n* For `lights.setLightState()`, API calls are limited to 10 per second\n* For `groups.setState()`, API calls are limited to 1 per second\n\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\n\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \naccesses the bridge, it is still possible to overload it with requests._\n\n\n### Debug Bridge Communications\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \ntalk to the Hue Bridge.\n\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \ncontains `node-hue-api` in it.\n\nOnce the debug mode is active you will see output like the following on the console:\n\n```\nBridge Certificate:\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\n  valid from:    Jan  1 00:00:00 2017 GMT\n  valid to:      Jan  1 00:00:00 2038 GMT\n  serial number: xxxxxxx\n\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\nURL Placeholders:\n  username: { type:string, optional:false, defaultValue:null }\nHeaders: {\"Accept\":\"application/json\"}\n{\n  \"method\": \"get\",\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n}\nURL Placeholders:\n  username: { type:string, optional:false, defaultValue:null }\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\n{\n  \"method\": \"post\",\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\n  \"data\": {\n    \"name\": \"Test Schedule Recurring\",\n    \"description\": \"A node-hue-api test schedule that can be removed\",\n    \"command\": {\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\n      \"method\": \"PUT\",\n      \"body\": {\n        \"on\": true\n      }\n    },\n    \"localtime\": \"W124/T12:00:00\",\n    \"status\": \"enabled\",\n    \"recycle\": true\n  }\n}\n```\n\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \nMAC Address of the bridge, IP Address and username values._\n\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\n\n\n## v2 API Compatibility\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\nfunctionality was removed (as was indicated in the 3.x documentation). \n\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\n\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \nAPI provided in this library (which is where any new features and improvements will be made going forward)._\n\n\n## API Documentation\n- [Discovering Local Hue Bridges](docs/discovery.md)  \n- [Remote API Support](docs/remoteApi.md)\n- [Users](docs/users.md)\n- [Lights](docs/lights.md)\n    - [Light Object](docs/light.md)\n- [Sensors](docs/sensors.md)\n    - [Sensor Objects](docs/sensor.md)\n- [Scenes](docs/scenes.md)\n    - [Scene Object](docs/scene.md)\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\n- [Groups](docs/groups.md)\n    - [Group Objects](docs/group.md)\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\n- [Rules](docs/rules.md)\n    - [Rule Object](docs/rule.md)\n    - [RuleCondition Object](docs/ruleCondition.md)\n    - [RuleAction Object](docs/ruleAction.md)\n- [ResourceLinks](docs/resourcelinks.md)\n    - [ResourceLink Object](docs/resourceLink.md)\n- [Schedules](docs/schedules.md)\n    - [Schedule Object](docs/schedule.md)\n    - [Time Patterns](docs/timePatterns.md)\n- [Configuration](docs/configuration.md)\n- [Capabilities](docs/capabilities.md)\n- [Remote](docs/remote.md)\n\n\n## Examples\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \nthe documentation links [above](#v3-api).\n\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \nrunnable example code.\n\n---\n\n### Discover and connect to the Hue Bridge for the first time\n\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \nfeatures to locate it.\n\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\n\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\n```js\nconst v3 = require('node-hue-api').v3\n  , discovery = v3.discovery\n  , hueApi = v3.api \n;\n\nconst appName = 'node-hue-api';\nconst deviceName = 'example-code';\n\nasync function discoverBridge() {\n  const discoveryResults = await discovery.nupnpSearch();\n\n  if (discoveryResults.length === 0) {\n    console.error('Failed to resolve any Hue Bridges');\n    return null;\n  } else {\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\n    return discoveryResults[0].ipaddress;\n  }\n}\n\nasync function discoverAndCreateUser() {\n  const ipAddress = await discoverBridge();\n\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\n  \n  let createdUser;\n  try {\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\n    console.log('*******************************************************************************\\n');\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\n    console.log(`Hue Bridge User: ${createdUser.username}`);\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\n    console.log('*******************************************************************************\\n');\n\n    // Create a new API instance that is authenticated with the new user we created\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\n\n    // Do something with the authenticated user/api\n    const bridgeConfig = await authenticatedApi.configuration.getConfiguration();\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\n\n  } catch(err) {\n    if (err.getHueErrorType() === 101) {\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\n    } else {\n      console.error(`Unexpected Error: ${err.message}`);\n    }\n  }\n}\n\n// Invoke the discovery and create user code\ndiscoverAndCreateUser();\n```\n\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\n\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \nalong with the [users API](./docs/users.md). \n\n\n---\n\n### Set a Light State on a Light\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \nTo interact with light on the Hue Bridge you can use the following:\n\n```js\nconst v3 = require('node-hue-api').v3;\nconst LightState = v3.lightStates.LightState;\n\nconst USERNAME = 'your username to authenticating with the bridge'\n  // The name of the light we wish to retrieve by name\n  , LIGHT_ID = 1\n;\n\nv3.discovery.nupnpSearch()\n  .then(searchResults => {\n    const host = searchResults[0].ipaddress;\n    return v3.api.createLocal(host).connect(USERNAME);\n  })\n  .then(api => {\n    // Using a LightState object to build the desired state\n    const state = new LightState()\n      .on()\n      .ct(200)\n      .brightness(100)\n    ;\n    \n    return api.lights.setLightState(LIGHT_ID, state);\n  })\n  .then(result => {\n    console.log(`Light state change was successful? ${result}`);\n  })\n;\n```\n\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \ndocumentation and examples referenced within.\n\n\n### Using Hue Remote API\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\n\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\n\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\n\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \n\n\n## Philips Hue Resources\n\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\n\n\n## License\nCopyright 2013-2019. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\n\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n","readmeFilename":"README.md","gitHead":"7261bd86682b2ff53b77de7c60534251f7d4727e","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.1","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-hldfl5dY8CE4phFgMkfFD1pie5Iof5BPovuHGxuWb9NFHpajt1n/bSXEOF5MWXFtzc7fsKg/1IAcGeGUzoqxsg==","shasum":"1c7510aad17cb0a28dcea536aa1e5106fe61529d","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.1.tgz","fileCount":321,"unpackedSize":798602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf34AsCRA9TVsSAnZWagAAlFMP/3xqXA4O1BXSPReJ+vn9\ncW3UoawMrd1t++XlOlsyilKw5VUV651kSr45oh46UaVX9ekvbNTd6aWMfxdt\ncdLObGRe/C8nlBFp3sKcRJJUY+xePBCt4lgC3PLzWzoXzhiZr45Tul5Sg5OY\nZe1Gmn9nrPlvhkbkaFepZAnIiHUaut3/jSmOKp0iOhCzafkJrzBLDGoty68T\nRB8V2W/760gbPEl3qfPQdnGTuD2vPA9iA31EcSk+pf2xwNKhOAsx5mu1SeZ0\nhLL0oPbqCWUA76ZydmWOScbGo9RExt2Y4pbeaJ03IHjOCwNwX2BidYas0FZt\nrW1eacGnVCdVRBg6MdjiDo3zYtYSCdpPLCMkwHDTulQU9V7xZO8Or5+O/mne\nouXmRsJzKLG+DiyuvZwyM7Jt82Muc434teBpCO68ItviI5GC6RKELwGZaiLf\nHCdQhRcmPlOv8IlvWWHj3VPcKIOcjp2PABHggU9TmfaFleucijEPIi0SzBAr\nrdksUJYKoiQy4QjblobUtJH8PwSm0f9ocDBvwT7mH1StEJyRqgX+//6lLWVN\n5bqrVm2lm03O0lxxn+MvO5/N+YiEhVD9xdShOmQ2rlEM3w5kKVWaP8D5T9m/\nAEX5qzOkGW3hj0v1m7WD357Bh35yO0tSDW8NZu2Tyq850MNBspgaJYmFWqLU\nSZBs\r\n=LreP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0pLc4eZv8kEVOB0l5xmonWnfSFImv4vurfOgoF5rOigIgPbjMCqv5aDGknylpOaz6aOXjFxhquaWMJD3SGPGQLAE="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.1_1608482860104_0.25897930054385276"},"_hasShrinkwrap":false},"4.0.10":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.10","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"find . -type f -name '*.d.ts' -exec rm {} \\;","generate-ts-definitions":"npm run clean-ts-definitions && npx typescript@3.8.3 index.js --allowJs --strict --declaration --emitDeclarationOnly --listEmittedFiles","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.21.1","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^5.16.0","mocha":"^8.2.1"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"8d11b89ef87cd1eb24f80d4e482f5d1e84ef138a","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.10","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-s+UvFttQfNXFadk8p6N9q9A5hteY2Q48W/mVze9nFPR5gwPH374cdA61ezKOx1WgBrN4btHj1z81veznhEZZAA==","shasum":"739b0c0f24a29887f3ff1a42037f4f37bc5c2327","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.10.tgz","fileCount":463,"unpackedSize":971679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/XnpCRA9TVsSAnZWagAAgdQP/1u6z64lm33DKobFiY5T\nKcMsr4fJshKoHXpi80StbqZYcnBCeITaa1c/I7WAdnRwp4mjgs/WlAz0Pzij\nNarwyLVorwvnME/Smjr4sxRnPZvMase4Cbtutp8Z7VH2dkCZwAuSI/xWNoSg\n9G3nJPas6hhfiSzqKbqaqMlK8gy84z8UGRHXeeIwOh42bYhfpfv7zfHNM/rc\nBqGzs6vTnQ3mwz+67468GhJSY/UmfWwyEfbX1yJzO/DP5ifL2kuDQoMsFvWZ\nT1rDKajP8fBc1ooXkejcxCS+Ty7qvgd6kJwVNU5Fq2Sh0kPEu3YTFC4wORbI\ncD0ZDAjE5/+5RKjz7d9WPQtpLX6w7X40ccqItz7A55rl9v1KtEpEcZAdS74X\n7uwRn+o/Q1heI2EzaMqQY64/IW+vOHPRkeNp11pHhVt3je4mNZeuZykD+ejV\nAPG2zBtCywUyvgrtATlsjbk4x7vWmDZtchNcIDBbeAZnmtA6p58/gUtICL2w\n/YDR5xEP+FTBxnCQo+lm9498ji9sN4HQpg/+47AfxLCFMjjFFFvvSr351OZY\ntLN0+86w1pYcK/iowL10OlSGWdzEpnyT4Ctn/OAJQsZdwiJyspqgb4Akqz4Y\nvm1Fflgo0KwQSVSx/bZJqFoSYnqb8/X5c7wn71+1jyoRM4YLCXraqUTzJ8zG\nrLcv\r\n=+Pm7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICfmlgJeMUVgsi8XnAW+3WdxoSVLCyJlhtfID2QELSsXAiA4DA2Iu3oTC1n6BUpMxBeWiG9JO1ENuflVpALH72HfEw=="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.10_1610447336533_0.23331316940119784"},"_hasShrinkwrap":false},"5.0.0-beta.2":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.2","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha --recursive -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.15","@types/mocha":"^8.2.1","@types/node":"^14.14.31","@types/node-fetch":"^2.5.8","chai":"~4.2","mocha":"^8.3.0","ts-node":"^9.1.1","typescript":"^4.1.5"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"c39becb28bc51683025919efa481c8da0902ac98","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.2","_nodeVersion":"12.16.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-KG8GTqqXbg+aR4ZEqbaYiAnAwrX6hqJFpDGsBwSC87v/qPSTMZpP/Zb5OnilRusudQ69oVbWQUWgI/rdUurRTQ==","shasum":"73f6a1b37c5d0eb08a8cefdca161d5b0f9128f84","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.2.tgz","fileCount":577,"unpackedSize":1265500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMZCsCRA9TVsSAnZWagAATnIQAKPeJBH2PKlMnkDelc6K\nRqKXUG0Bj+M4aUSNs3ghe0FqNN5TRFFMr3RpgCO7wCprOkSavxaq66mIZCxR\nNxobfBQAtzjQ5BNjyF771opua3Rjg+sVrJTTvZWcpQ6E9PVPFxVFTrTWjet4\nT2PdttHDvSsPDRusxbemTFdQ1DDvu61IEOOdLbm2n25pYwcnVGdwr5XZ+UI6\n4xq1uFIXDYrwX6LFCUTG+AnqP/AWnHeq7N1emxJI4INMe3IwkrJem7QGoI5Z\n0UwiaTDcd0N7vaJCoVR48SiiSMuKunvUaz5t9rgW9cI0PhmgZRSlQfeMiQ/Z\n5byJ4PYnFh5bGrNs/G2fw9pUN2QDX2c+lk5oKFVX7gUVk2qybBB7BbVbAiHb\naO8Jzoxrq1obECuMqqpVGMJ2FdylljtBeJTXSDBNeo4koFhn23asivLz0Lhu\n/FDr0WrWGQqKpTw+bv60qdBoUYGQ/uXyctQTXhItBYSERnHSJUvSbmwwvd6A\nQeHAdH87Q3GPWVJSTDcSY2JgAMhOva1fXQih3lAQsATj0hWmJeiglVucbNOu\nm8p4TJcAH/FRI/4kEad5Q2MSxjLc+yoHhRpFOVm5FHhZn65xTHE8wKeywKs9\n/alDABI6DzbzU3KhMQxbF5XGALmiSSwIGhrUbMfpq49YIhitWo0HlLTTVWva\nexpj\r\n=urih\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFwZiXkxwrtkWhK8WW11/GxhUG8Kqqj47N3AmiQ+vNSAIhAO3o9gmQcck99ckeQMitvGIHM8L0qD+fTL65Zz5pMGtP"}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.2_1613861035541_0.6175078802571601"},"_hasShrinkwrap":false},"5.0.0-beta.3":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.3","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha --recursive -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.15","@types/mocha":"^8.2.1","@types/node":"^14.14.31","@types/node-fetch":"^2.5.8","chai":"~4.2","mocha":"^8.3.0","ts-node":"^9.1.1","typescript":"^4.1.5"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"c46cb403f4a631c6489b1cb8923d1c4fc360cf0b","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.3","_nodeVersion":"16.5.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-UvnOpzVfWeJEpsIPpM02iWwO0cTtK3UjrgcAXxQ6dF0uIkW/dtqn4HOrgXTU7p6idNwS7sTL+vBsCXFhpiaNLQ==","shasum":"7fac5c78a98a2aef6439b0bf995944806b45a7f0","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.3.tgz","fileCount":577,"unpackedSize":1267377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+Wc/CRA9TVsSAnZWagAA2O8P/R5VfDo8vJYotpwr0CYw\nNA6FSK3xJMRIy9Mr0mYKo1iGyvHUA6lDe5Anr7uZO8NJ1XCmA+HKow3kEBQx\nMMOnKqjvXmmbdCK8MTHVGN4U3Vl6xZMlYelsszt4Ue4OVHl0BeoHn4GNOz7A\nkxWvaK9Diyr6169tTckqxbWoysrOMSlSqxL8o0O2vN4ZUmU3nY0G14Cj6gc2\nWP7m4jkT2lhTQ+jwVWaHCrHpk3sm9rYnnjB1CBCG50twH6IOivp8640Rbqzf\nbZfiWF/2ju2TwTZKKh3c9hwssirGQ2lMRFOSanpkpjuTqEa/Kt/eqnrkxVQs\nbNSxEikAl5IjltVRhiPoDnD5tuMD/dVp3lDHPOSD6Gvz1jRMirG1jpGJezxg\n514nuoALbXjejd18UdzO0IIfNnErn1dnb7W+xBfAga7szI7Hn5De/03A76kJ\n+4JMj/bfEwKVc95yItjM7ZANsDq9n2aCROJkOhrISsuJ+14mf7Zc3N35SJVm\nTWPGtFnTeubOarUU/Z2MjxNChIG8sk0THUACG7WhJJUwT3Ob8t2JVjyaZwVV\nIsufezcHxk977rUZyIb5KTOpbWcusngY3QgP+u4/Vb3EJkXYANPenZC7Vw5I\nDgpVpFXQeYhHJD6ow3/6Ep6TrE5321CZbWgCvtPAL65RViQ6/CiKFnWbXsex\n+jml\r\n=+dKI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDao8qD2FRuQFS5kJvmzu68wpcY5WoKhbk/Mfu/uG7qXgIgGi+1C7Sk2/jfsBXZ5P0wiowkHZc6bkuvIjhYaUdrrek="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.3_1626957631344_0.30044436101215855"},"_hasShrinkwrap":false},"5.0.0-beta.4":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.4","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha --recursive -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.15","@types/mocha":"^8.2.1","@types/node":"^14.14.31","@types/node-fetch":"^2.5.8","chai":"~4.2","mocha":"^8.3.0","ts-node":"^9.1.1","typescript":"^4.1.5"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"afd32c510eddc9ddd524da43e79cd3b91923ead5","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.4","_nodeVersion":"16.5.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-oEAbcDG5/eIwhYxi9wnOLIORwAQSSW5RzeSE+r0OMVNUjUPurMGFqK4S9jqJY3GBMYzDHubyMdqZPnXYMW71oA==","shasum":"e4474654098d676c7037679a470a85763d8ef10e","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.4.tgz","fileCount":578,"unpackedSize":1270162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/pqHCRA9TVsSAnZWagAAO2IP/1edT3Vfh3gaLvGNFXFL\nKguhjEtxTPSc6yKabAKybKgeXS5+XWaBuxYIE6qe3nKeVVdSM4PmUPCZLnhz\ndYjfIcUsT9LW6amQvLVc0b6xCy528QXCxaXi3g0GhluSHAA7cU4iB0XVYEkr\n0gqfU6Fz8Os2WlO5IB4bq2Q0pP//nuONO0jdf96ue5q/iaHqFFuQz8ODPyZQ\n3AU6DV6oiQf1ISDpSHh+M3+M7OfprA4U3xw/J70P53BIcsMdfwmCn55PSH/v\nnkMLiUtOF2pePSRYR1/IbDFUWFx6VCfJ9A7BPIkvGQihYg/3PiS3uspDmr+b\nV2GI/BvWhgxTIW8dBC/2qsiKL9G7frAfc5pWRXfV6PvaDtBadcbxfK/9dBmF\nolJYWmUalylM7wB2HfYzmY5vp1blnk8yx9gIJgW16qLMEKfeMOaK6OIX6Tcu\nTSjGOqXSJtk/7M7+hNBbMJMm+GzAKFDHj01O002mz8yq4eY7MFfcUW9DXnm4\nG111ai3BakBLOSwfqjXOT+/3N9Jkk89iZGQDKgqThs7NtdIl0c4s3Ea10Nel\n86SBb084B+O5tur6hnoPxB6flzrr6Q0CXOZGjCMXCfdC8ci3a5cWd1ro49nV\nZtUQKsJk64QMpyuMuLT2vXk7+J7vvixclEn+lG7gaVl7YLIINE0PqL2m+qcA\nXA0P\r\n=lx1p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVhw46aFWvDQntR25dTSSNIY7TK0GI8IVcSN+cSX6oiAiEAyDO5OX/giSubHdV5YijsrdZDwscx0Rn7UDBbmA9m138="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.4_1627298438857_0.3279523152651651"},"_hasShrinkwrap":false},"5.0.0-beta.6":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.6","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha --recursive -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.15","@types/mocha":"^8.2.1","@types/node":"^14.14.31","@types/node-fetch":"^2.5.8","chai":"~4.2","mocha":"^8.3.0","ts-node":"^9.1.1","typescript":"^4.1.5"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"19d0a8cebf9796488b098a3441150da98cbc48c3","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.6","_nodeVersion":"16.5.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-dKJm9ZUnT0QDbEehoq1idokWNqO3AhR/QXZWrvBUhdK3pyiWZ1ImwbKDJ1nu4dfcUF/sgC/uUVmcirEp3WAjJA==","shasum":"f26d833370c322a94e83bdb1a82996a7237d36c1","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.6.tgz","fileCount":597,"unpackedSize":1289808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCSC0CRA9TVsSAnZWagAAnbsQAKSIk9zyQ02845f1Ijmk\nLEsBUBd6SEl701OaGaU080v5nEAem8TYscGsm9DhvFxAkkHrCWwKI12D2OGo\nARTWWpk9ShCofViCbPar0J3sJaETi29hKrz4O4u58DxRaI1bUDzH4PUvA3NY\nKxTDMDI3Nhcuv+9cX2UoXxoQJw1Br95DvTA9OZolNfp8kdWB96LTeoF2eFjr\nIW9PyfJJWYxnWMCaYsYy1b/wJ2id4H71snuVBkRqDTw/Ut+skZFaeiAXDPKN\n42NkMiuQnVbaY73MqegQsaidp7hJcPYXNRJwnYDX/hCHQQ3D1c0SBFsYjHfi\ndptqvhvOB1FaaKdOqvoJRj3LxMmo8xXXQs0wmo76DQeATuU6OOAK3GC6Oqvz\nretZTupedsRq1ujXs0w8dCgD24cXpXWAsRGbGdjnKU9d+jV5rtcJoYLAt6el\n3ek1AT+t/cjYBFbHu5i1hGfHm7ulJIpYTNk+eyPOzTCLvEfil6kDlZbtPhQ4\nbWdW4fxyevQQzcINRsMFVtEbSUIAJE6Y7oPCCiDMe/rXjTvpM4y1t7XWBPQm\nIgek4avl6SQ/l9adS0YCgCmn22KiLbE0cxtN17BPa1aXpTmLr4Ws2t7N9/3G\npeUdbv1ar533Yayz3b1AQJWp9FDO5uA2sCZTBBnbZHaiy2cOK4+TuX7hqyfS\nBDFX\r\n=lAUt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNVIdJ4+jVzxEjVC7ef59i0/5EgXjhD9XKUFTCdL0DcwIhANpHT2e3/ftXmid1DG5ruCSbbXiOkALdFXFO3MF3DZ2D"}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.6_1627988148413_0.7233477471845109"},"_hasShrinkwrap":false},"5.0.0-beta.7":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.7","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha --recursive -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.15","@types/mocha":"^8.2.1","@types/node":"^14.14.31","@types/node-fetch":"^2.5.8","chai":"~4.2","mocha":"^8.3.0","ts-node":"^9.1.1","typescript":"^4.1.5"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"ed9df372ebd92afe7b9a06f7677312352349623a","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.7","_nodeVersion":"16.5.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-H3PtUD3tEObSz/4N6kBbx13L0jBAgYbjebN3Oh9j8PRLkkuT87DPSqE6laW70Z6tgKx/QGkdTAzL1SRJ93rtVw==","shasum":"af25dc1fd7387a60fe887da0d6d5051e4aa1e949","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.7.tgz","fileCount":599,"unpackedSize":1289836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhERylCRA9TVsSAnZWagAA0JsP/A749XKXiP4Mk5+6dKGV\nqTkHTgq9f3Rwrvt350SSTccFfhDYuUNFihBwkLyXePhH6hkBOhEVhGG8Dw1A\nvU/EqVvaQbyCQV3+EoGEblWneFTgBfo24VJi1w7n9TLt96ZQqqx8hC26cV2L\nHRgI26kJssKjTO7E1QhwWo1O3ghIzLt2XDTlQMJQmmGqmFX7WB1xSEtSzq4+\nh/DXon5Whi4kNxWERsFROPgbQDk0iTOizXqeqGWsUaMCvi1NAP1EVtl83U8L\nsqcLy2Fpu3XHdSmaXmJeIXND+NHHlxdRZ/Y93jIPQbG8CD9bVz4hpchrHH6q\n4iakNhDjCpzjyE/VMUM/XgybUiPSBcYdUy5wvfaGNANeP+cOKCPuJg0tEkCj\nHxRDaOnosayVLT5aTuCRcILTE76LfxXdhEUyNd1tpHmVsY8G9hu9kC61ItBi\n/xsiUyIda+5PcQ/+PaXCX7ogFZVEPd+5Lbox8oTRtzNMlAMC+87kaIv5CZnf\n5NyhlD5o3H+8fdaxYCWSe5uBv2/nkHjaSjU7vVwvT63YgHMgGhulue+MhXVD\nIMifVFd2i0EenGKysSGexgG5AT3Ym+kzTFBns8xvqggWVPsPSoIZBv3hIHW1\n2SHI+MspUXHGUMkWoEiKWl9mUOXuG1vWQRtY3IxSgzcynYvz+z8TolyalR2O\nFZOe\r\n=fvwM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB61qHpcgRsbx0+Rc4XhFddIm70Gzb9yYt5jxh7zSfZCAiEA0p4Q8SVEhwd7SUsg4bODPP9Sb2j+pNiu0wt/j2zB6Ec="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.7_1628511397368_0.2541580117236302"},"_hasShrinkwrap":false},"5.0.0-beta.8":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.8","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha --recursive -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.2.21","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","chai":"~4.3.4","mocha":"^9.1.0","ts-node":"^9.1.1","typescript":"^4.1.5"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"b1062e18880714b2613d33d68c60cabe537dfbd9","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.8","_nodeVersion":"16.5.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-XmrJgQwPLRWvH1M5S92QbU+64WJG6VNgBlWXo8Mjb8e7diiNDgZlmNuztU/NpKuqUUVew7PlRmvjGn9pR8Y9Dw==","shasum":"77cae4a319c30da4ea1d90ced7ca43b5c7a8b5a7","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.8.tgz","fileCount":598,"unpackedSize":1289259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJgDjCRA9TVsSAnZWagAAI2gP/0MRfL3FGsWGew0Bq7zI\nATDse9+UIpidUT+++lb4Pm98aYAiBUXiby493/GhMphaNI+ibO3zkuY9Oc06\nobAezm/gYUat+qGmerM2Vsym9G5OUl5xUQQpKiBaENQL7eAWfN7DyrMHVKOA\niUF/UOhdN8a3dpZ7LIKe5cVJXMzZ+BsmzZEvt/K1LS/U0Ho5RjJ+KwMbuN49\nyba2jdgE7fc5H21ppt6qsKtlxXPGK7qqJMRunjsSWDLD5n0J+7M2KFUZud7/\nDtEswu6huLHCDcsDsYYPEy7K5/noGYU6t7stx4tjDOXru7An2lHY3VhT3zvt\nT144Zk9xBPuRdlBYJV0YC6VkxDE31O9dSJI2cyGjeZL2QY+AnDARVgOJcVfz\nO36lt6dA4RKkfNbK5Nc7YygqtgQBx9DYLG9Wd7p5YTidtTuTJn8S7IGcrEPx\nZyjgtfm5WkeS6wtGD6VXUoMVhUVtSNk504An1wagp2bTs2zFY/Cajfq8mK6u\nekkeJx6jzImjgWjPiaXCakpC6TyDarmN48rs1oYSdAjdTmKYHo0+qdKxZCll\nZtHwMy33AQ+ev39Z5z+DSTlHSR1X1uCEUepO7zGOZ4Lec2ywz2XUbgPQ14vs\n34i4N8g4vXg3ZQxSwqujLbjIAy1vlkZA43wRpdalNB03FBbnj9p9uJ/ssUK2\nVoSB\r\n=wleP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQt6DCAjWRKaysfAUngCqiPr+RZLT/seEpb0UdfgqYoAIhALARydKtkxxQSMqho8eJeY4nALp3T9/fMpuJaqdG69wj"}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.8_1629880547461_0.25204479890459863"},"_hasShrinkwrap":false},"5.0.0-beta.9":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.9","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e3bd2e1e8f2c8d087931fc31fabe6e3cd208375a","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.9","_nodeVersion":"17.0.1","_npmVersion":"8.1.0","dist":{"integrity":"sha512-MSvsvsE5MSOJlBOxzrr6eA5piMCuNvmiLCQf4XVjcz/Gz3lxZUZ8Ftw/ysmMqa4XeijjMRY6urcAf8SpQKpcIA==","shasum":"751c29706f36a35acc559ff2ced31670b8b1bd17","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.9.tgz","fileCount":605,"unpackedSize":1300536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvNh4CRA9TVsSAnZWagAAdt4P/3dl0/Ma1NjNgVe5+fwU\nWieXvnCCBd7EEURMfrquIodb3TQhaHv0SpSWWzMcgURO2K9zqA+BpJiCdPyw\nZdCPiMh4TxyQmwyy3RKILDnV2GcFvmrSwbszP+bYf2nMrtHLHkVzwZS0gcUI\nIIeEm4LXjB14lF2xBDWnfz+ZTHhTb5FP/fjk6XaBb6M7GaAPuDDWDMmeN055\n7dx5rhy5SuNvJMzWYy/N4jJKObN9RFK30Yr/BAChZW9R5pSOEKdRsXMlP+XX\nHv/7f/EuN4BZUgyxxKVXProceDiXN1vffySEs2W/R35ymYMHOznAMEoRtUnH\nf+ZNDoHIpHR/LTYU0zUkhOMABOBBceB9Pv5ZLrGXLGMFJJb2lQ1yw2WJeWWT\nXh2XuQEm5Vkt98uWmXLaf4JseJSbfHeRuay5MTKuny6pYIX26Lt5jP0lrpH3\n2XAw9SiVmqZTj6SOTxqDDyh5RPsLCnnfRyaiAOCs/u0HMvTUsBjZGvNZXIRj\n1A3od3EusHaIFgSS5L8wLl5tJW+HLsdH1mTm1HuXK6AbRgYlHzfyO/1LRPdo\nGU+lgbyxRTVtdMd1Hs6L4r0GNJxBeztS9qhMVVHxXOYv9gM9x2Hf0LW4nHdL\n47hnvIIvis01PfS1qHPxtazZ95ZfFkFBu99I9E0O5BpPeaSV/8/KGy0lreHv\nfdes\r\n=Kc9w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjFwQbUmowdoe6d+QpsHHMbPOntzE1i5ihd4507MOYWgIgVG+vj6zLMQ8FpjDeteLiQBiwizLzBjjsnaBTAnyAEIs="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.9_1639766136098_0.33727161008795736"},"_hasShrinkwrap":false},"4.0.11":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"4.0.11","author":{"name":"Peter Murray","email":"peter.murray@osirisoft.com"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"index.js","types":"index.d.ts","scripts":{"test-model":"mocha --recursive \"lib/model/**/*.test.js\"","test-api":"mocha --timeout 5000 --recursive \"lib/api/**/*.test.js\"","test-types":"mocha --recursive \"lib/types/*.test.js\"","generate-webpack-files":"npx webpack --config webpack.model.config.js","clean-ts-definitions":"find . -type f -name '*.d.ts' -exec rm {} \\;","generate-ts-definitions":"npm run clean-ts-definitions && npx -p typescript@3.8.3 tsc index.js --allowJs --strict --declaration --emitDeclarationOnly --listEmittedFiles","prepublishOnly":"npm run generate-ts-definitions"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"axios":"^0.21.1","bottleneck":"^2.19.5","get-ssl-certificate":"^2.3.3"},"devDependencies":{"chai":"~4.2","eslint":"^8.6.0","mocha":"^8.2.1"},"engines":{"node":">= 10.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"730b0cb6265121a0df6ac257cb1a6e474521c2b3","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@4.0.11","_nodeVersion":"17.0.1","_npmVersion":"8.1.0","dist":{"integrity":"sha512-lpnDdMjLTmm00JRsU70Mtm0Ix03cf7PRjKQAJbSg/Y0ChiIKQs+oDbSUpW2aDhEbor+wKpyfLYLGLTrjlG24pQ==","shasum":"7bc594ac5f8f80a7e77900a81ed6402941772836","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-4.0.11.tgz","fileCount":655,"unpackedSize":1504277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3WfwCRA9TVsSAnZWagAAB8oP/RMcc80BkLtfJ8eWqr1m\n9i4eWli+5KwJLlrlWZuHcgAYsAr+70ZIZ0IqSTO8lstVXbxRWpN2xtmTUFPx\nPdwMn9R4q2RWAbmneHWQHPGwPE8WTe6MEBb6u48RSsaInfa0K+xGZbZyhQIA\nBaD1iwTfpJerIPi5B2rG5KNzQJhXQkj2q9TrY3mfc4Md2ioU2wIonE6nyKgD\nK9vHUYeePtfZZ9T/1gJUF+UJ0kdtppzTZyoxKXwv+FCjzAa4kII6eU1QTHPG\n2PGrOykidC+ozGMSvRBB8O7aK1yb5ER9rlGSvEvvZx53RrvrmYpmS+3uf6fz\n4cGQ/H10MFHDN7qw4E1xXx0TNaDSmmb7aqAUhDyQxKffUYf49YWwkQ/eNHQd\nXMFCOkNQ/lctUCdFdFkvmmQQ43avdVtJjCh+t9a4+lcv2+8hLWwEKcMAO+Be\nT1PnAlln/zzlPb+m/b6gEPN1zWfpIJifvQ+eITXUy0o8GpZ2c6+taUtRMhz+\npCtawN078hTXWB4RF3qMdklXv7wR7ljpgXQTakq4VAC8rj0Iugq15SGQ4xU6\nQoPs/iKI1kN8dwwBVbOeynMOBSsN6EBwbd5zXd/1lazzL1SyJwLsa2wftFyt\n2DLBIYevsgyDYLvpJBvsWiLNIr9myg2Z/TBOQcARPyDzXy+hfyKmPXzWDSyy\n5Mfw\r\n=zdWR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIENXsThaBbh5bQuhhleZVDoJs40V8ZLesm1RxIRtNG/VAiEApxb7kc0QZQv3gqBo2LqRgIMnW5oUbXSgpyeZRsTRQMM="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_4.0.11_1641900016306_0.5708019436126293"},"_hasShrinkwrap":false},"5.0.0-beta.10":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.10","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"ce96670c88cb099718fab8a1b765aaa54a743290","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.10","_nodeVersion":"17.0.1","_npmVersion":"8.1.0","dist":{"integrity":"sha512-gQ6RIN4+Q4lrHWA7kF+tEZxCnAQjHU88srZ48ucthCwYidKR1n9pSP5rjjiTDvpbS2zIgHTuUfTdfwbY+Bk9Ig==","shasum":"f66c75eabe51e0aeb71a497ede79e21b8522ac89","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.10.tgz","fileCount":675,"unpackedSize":1375725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3Wk9CRA9TVsSAnZWagAAgTIP/2YZW/uJNJVq8kInAJ5v\n2OIOwBYGMeRypIc59uUl4YUJPyx6opRETM0s73x0bjEGJ6l3mq8nsJHYR8jN\nQiUbTF5d2wDtXabPgHqJ1pjH1QN5kZRTQQSSA41lWdnsxDO3499Go6ogBJam\nJZwasJrTi6ruNYciiKUEuMPwUWZhboAQSkfq2c9IdOoE4mE/13Iu44eqtrPY\nxgJX2j3EW+0ULrQXbXc/hWW+1BFQMQfvYnQUXoCBcTtHHqMeWtOByDQFuAQb\nx2dIy7Gqp74HolJmsjyGt6rBXnnFiiRDebR3bERlob/QqMUAUoTxia9jaNAk\nXsKKtQlmXRmf3jXqLJc+GefX4hG/iGMRQnMW+0DUDSa8pc23mP1R1OgUokqk\n8p+/AzHEZz78zCxEA5VGAvo6OkOxXFENFJwTczm+iQUH7W9TV8b7aHmVoc9U\nMRNU0fnYnT95uTocVM7nUeeLoYW6AZ/PcCh/4jjaNIXkXf+gncEw0VoxZxcW\noMmamPYCMdNkCyloAeM3lby8lXT3NIxFH89L1xKIi++YOYJd0gpHln4dOVYr\nVZ4okoHUANZdo22lWxPLggIVxYydPLBz9s7E5MDmxFycqo6ec7Gw8a9914Qu\n3w8acgnfO8bBiObcxIU/08mKNqy2Y6091+N9WXn7ZySX1jdnY/pvmUVW+MCi\nj16x\r\n=gTln\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4sksCSkLJaq04MADU+jky2AXvI3CJoM2c6cx9AlOACQIgIfA250rs/YY6iIt/p710L2CCj8qPLx8pvok4u089j5E="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.10_1641900349378_0.08239826712422471"},"_hasShrinkwrap":false},"5.0.0-beta.11":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.11","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"e0548ab7f1fe061638fe731e27df56b2f518f787","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.11","_nodeVersion":"17.0.1","_npmVersion":"8.1.0","dist":{"integrity":"sha512-DIlusK1LnFLUw39z613yZAvtf1KztTTD1OrxH27N3+F2FXLi0jrlE8XiIUP+Dg5OmHTXZ4YYbW1vM7jz8cvDXA==","shasum":"2a7408d9e2a43f49e45425c52adfa69732ea1636","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.11.tgz","fileCount":675,"unpackedSize":1375822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5XTACRA9TVsSAnZWagAAKgEP+QAW2Z0bfZVgsRPalt+c\nJzyr1J4M139XX9AmesF6+sbChnf8F6MpxoxJix3PehG3SpzqrnyURVhxco96\nMHIVPtEoqTZOp5xsmCWoTPS4a8d1BboYik70wZiGM3vkgloV4Cz/b0gP5/D1\nrl1aRpKepT79Vhm6q6vJYUlk86Ncg3x1z2vXG3/uDzPKmpnviVKeArFlZhVW\nbnvWt98Eo7U0zuAduQdEFQ8hLI/ZtGpPSF8+cTri8kAOeuN0vEK0F6AqLLq+\nZjVypyXxXT8tkZkkKEnPMFSgUfhTaF0t/g8Vzk5rQiKTp99uzi/L/ipJWRrD\n6TfUSBTF7B5aut02Rhqa5Gb5tJrDufmjWXKgn1ieNAOx69o+pMiDivfmza7O\nI2hkuRTktENl1tXCGYw0Dk5sElGTBGu2g/H8qczu+N7smL4DZ+9kln5Aswh+\nTldP+mN2hIXXZoOGDp3RhdwlQn/ML5ro7l280UgqmfFFB5I0WOUay2I0FvbR\nvmcDA43GNTYWZ1N6mcEsetB3iUH4l9OBfQM3Gx/PRckWL0P/v+VTydsatqEq\nIaDwOb5EHNnM3MNCJ2fHAiy+4qqVvEEbahJwy4zBp/IrqxBYLviNLYRuN5af\nTMH+wdCRCkUfHzj+lsmWzHi1/yqn+SAyoZyvE9RVFyXHaymm7M9UIKpzDD2Q\nMxSd\r\n=e8QB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrhEtjvXPSlbN4D/z+N3PAZHjbQSYgJuxTeTKxgh+x2AiEAqSbc7jsgKMTKo55MgRSc/H0L9rceukyNtW3Eh6kSUuY="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.11_1642427584095_0.8923765310241136"},"_hasShrinkwrap":false},"5.0.0-beta.13":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.13","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"b2ffca19c8795f1e7bcbbfd5ac0cf7893b76cd78","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.13","_nodeVersion":"17.0.1","_npmVersion":"8.1.0","dist":{"integrity":"sha512-DedPjqveYYChq919eMlQKAmggbOBL6nZCytG/8nhe1yShdN1vbxrlMnHcPYyp21zJ8JkslpaUcNJ40ZmE/eiow==","shasum":"004a5ebc41415e8126cd253c5533d2b6624ad944","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.13.tgz","fileCount":675,"unpackedSize":1378889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8AO+CRA9TVsSAnZWagAAMK4P/1Ipq2n02bxHkrLnZpjZ\nP+crgj00bNwseKW76T37BdS6DeSI1C/96pbLlRlveWfwh9gUiOUHNXuhiBhR\nk8sMPcslXa1qjRNf3C6H6TvYV6ZeBB7ZmHW+u3S+6r5Q7vLqHbSgsC/yIxyg\ni1O0jOM2Gts+clcHqZZJkjOxPBt3LgO844j6FM2LBaYcJ4pWi05hEr9sUnGI\n5QvzOAZlJV25qTewEey/39qXz/dvR9RIh2KoUebV9a1m3rk4mUjo/qsMYVHO\n+Heq2Jvsaxe2W0wWJTPKFSrDhgounLfhwXs/QP7GKq5WZgOVcwH56kxKz6Ws\nr/QWRy5sJmCIutBAHOj0tyN0glAj5QW5PotBB4pYOhRAfEXagNhUqaR73TNC\nw52+gQvsxZq8ZhF+gtRcWF0H1nAHHqNR4QTpSBfm4oiCyJLQg/EnM3g73uYq\neO7fZNCIZR/jobxGCI1S7sviBg87cyt3luOu+pvwkPQ8iytvuw5uCE8EHMyf\nR6WQLI7Yp0jQ/SkqysVJnUQMnOgOH6dJUAECyIYOtLImVjdKBmdzbSBpLsuO\n5vOOK2D7gMFQyqjWSRI4FgSfATb9rWpdFudoLaGV7FATX/6CB4JgeF+2FukL\nXdp/apiikE7uRw5du1ou8UoxWFpOngmoL2kVfkBVhQVzZXMOUtgrUHM49eao\nQElx\r\n=iJ+f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFz2u/4w3Wu7RR6YKSZHSlnpNRyzDFyQj8wlePYcPyhAiEAs1R2RuDJ2mSBf7WRLLxnG33qCYdgxfo1ivqXRo8avZ0="}]},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.13_1643119549806_0.4632422509644072"},"_hasShrinkwrap":false},"5.0.0-beta.14":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.14","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bonjour":"^3.5.0","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","@types/bonjour":"^3.5.10","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"081da8354c761d3405ddf240ed53d83e01ee7a6c","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.14","_nodeVersion":"18.4.0","_npmVersion":"8.12.1","dist":{"integrity":"sha512-IlrIehMEqMsGZPKT2FraCwHsK2po7Rz5c6C/1wB3QCQJy3edZZQYG4dEMSCa1CTj0p69tq4au+T2fg8vFg0uMg==","shasum":"dca326df7f424ee60be89dd02e282a5cde871778","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.14.tgz","fileCount":686,"unpackedSize":1390226,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEkXJqJ+g4pURDf+DD/GaKI1eJisCE8YY+VrGMxWoPHAiBYImSKMwgxggqfq0MhNlgnkeaSn6BZ5M/zkOqYUEjAlg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi98o/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoaqw/+OLiEoCg/Y7DcqNjsC53AbDm/FY4HMULd9IZgOv80Ed0/EIa4\r\n2cyLi8yNKU/HB9RFwPEQdaePD8ujDF0YE9T5dPv0JIgfjv0bhi0Z1D8gHkJY\r\n5ztK6Kw7lwx35KtYFn9NqYRiwiHJmVfEGf2WzWLpVLWrHBEKBPBGU81atguM\r\nwS7Jqzad6BNdn+Y9SmXucK3me3MQlhbrpiCq0pImrgYiO5YS4K5+f5jpoe0t\r\nYHzGfOIKTBgZhzVcdwoK2J/CL22YNZ1VDPOodWDvegOsO2gNFu+5ZcYoqC3c\r\n6OgamyDMVS00VOZJkY8hQWZddNQwU9GicdXB+gK3L8Bb5VTcz3Vbf8HiT/MB\r\njPU5VV3PhBXl6IF4qM/LlM5XHVcj/MRBdQV0KaKdMrwzW2acmakj9oNko4vb\r\nYkIF446b661U1UNglWKgczPYLsZGthhNbHICtYO6RXEKIdtlDx7htg2o5BXo\r\nA7PfSFmLMD0F8QuEGN6YSzg2Q3ea3KtTm/lGJwvFJci3osgJOW3qOXKe/dDc\r\nbRVfWYwc70awrnq8BEhfbbfEgKB93JFLZGO7Wna9qRkfTwxZwo3Wu/ruKqde\r\n1UKQPZibUq4wl6w3JYcb8Iv9ySxm5LjAPNeImSkTWLFIac++FI5YMBYQFvFS\r\nxeQ+Rl69MChHo7nwnubDc6OQZrXeTf3a2IA=\r\n=SR5e\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.14_1660406335572_0.7933536705358111"},"_hasShrinkwrap":false},"5.0.0-beta.15":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.15","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.1.0","bonjour":"^3.5.0","bottleneck":"^2.19.5","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^14.14.31","@types/node-fetch":"^2.5.12","@types/bonjour":"^3.5.10","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 12.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"c645d471e6bb653db0d9f7897367b478f5e97317","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.15","_nodeVersion":"18.9.0","_npmVersion":"8.19.1","dist":{"integrity":"sha512-euUoCyhLN2eK9I4+6cp51r78/41fLslBdIXZTpH/52OJ8bmsffEoUtW6ZRqE1WIjmSvsOwlDomdmnoW0RvGOlg==","shasum":"76c27a89f8777889a6ea752378f01959c9c577dc","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.15.tgz","fileCount":686,"unpackedSize":1389284,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWUDm/6opgXXio9FImUNAuASaKEx8P5jsY8nBjpqbTSAIgKcxVqORop7WU84kLqFT1mbK/Xwvhd8mLCHEcOsLNpH4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjlyEoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoU1g/8De0pOPmrx1qt/tqoSXapz4jKyPbRBSFbzl4++2gwxl4ILNoM\r\nnWQNR5nQwjTPqrX8+1ZXpgGBL687vU9pxOlPeWPwdN+PVKC0+rkQmkCX/j9r\r\nluOkbrlh5V57CZPVsT9LNVjg4OGNkM3YQZFPLE36qwKKFQpzf1v6t58UgExA\r\na4hhHTZPG5gCF4jlhtHbH3hQiWwFAmbSj6EEdaXb9JTyDHIePR9RaMBfXd1l\r\nOw/9V6qmJzpOBUKmJpoEhRCatXzZxOv+Ppt25EpRtjbmX8VM5KIkwQJUbdDN\r\n3Ppc8BsEJMqnc3PB0PpV3OOUDheKXypDIo2WTjPMGzQpKAea/q7jVh1s5zaC\r\ns+Jsok0Ub0HZW9VT7bpwRkx9v3fxs3sE1MSDmeTw4AxNXxM+zvfV6T1Wn+fu\r\nb3bzcAuAwLxVrPoU5rG4dokriDBI2lrHtVMpD89vGsqJI1mNyWa7XG2q+lIH\r\nZ1cpDsj2hAai7Pu58xUiejgJsGZB8vSmCXkDqUIW3Eow6VE3kQSmMTK9JbYg\r\nYbONn4dn3kSgrCWsKfKwiVfOZkzTQO5ylP2jqOMGeJzXxKRfqsytiYnXPpwL\r\n/8y1CuRYRHi1KWv+/GxNucluU8SHWW6oXzhrCZBbhuFnmUPbxC0n7ordc/xs\r\nGdTclUF+8X552fzGhBREvAKCdqw53WdPNyo=\r\n=d2L6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.15_1670848807780_0.263752444554584"},"_hasShrinkwrap":false},"5.0.0-beta.16":{"name":"node-hue-api","description":"Philips Hue API Library for Node.js","version":"5.0.0-beta.16","author":{"name":"Peter Murray"},"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"main":"dist/cjs/index.js","types":"dist/esm/index.d.ts","module":"dist/esm/index.js","exports":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"scripts":{"test":"mocha -r ts-node/register \\\"src/**/*.test.ts\\\" \\\"src/**/*.test.js\\\"","build":"tsc -p tsconfig.json && tsc -p tsconfig_esm.json","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"dependencies":{"@peter-murray/hue-bridge-model":"^2.0.1","bottleneck":"^2.19.5","node-dns-sd":"^1.0.1","node-fetch":"^2.6.1"},"devDependencies":{"@types/chai":"^4.3.0","@types/mocha":"^9.0.0","@types/node":"^18.15.11","@types/node-fetch":"^2.5.12","chai":"~4.3.4","mocha":"^9.1.3","ts-node":"^10.4.0","typescript":"^4.5.3"},"engines":{"node":">= 16.0.0"},"license":"Apache-2.0","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"gitHead":"dd8d950d463b34224e9171a1cdae966d4ef99b79","homepage":"https://github.com/peter-murray/node-hue-api#readme","_id":"node-hue-api@5.0.0-beta.16","_nodeVersion":"19.8.1","_npmVersion":"9.5.1","dist":{"integrity":"sha512-JsCQlhOt9e556zzb50BzsMjQ2/Pj1J6srtQS+6mwAhjXsCMT8jm6wEmQCDb7sXVn+5LFtKpq4nmYix1fBWtm8A==","shasum":"209ca9795b089ddf6f105e10c19dbece3a9f1300","tarball":"https://registry.npmjs.org/node-hue-api/-/node-hue-api-5.0.0-beta.16.tgz","fileCount":480,"unpackedSize":1081982,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4OHstJK+CWjbles8i8pDwsIHtwBTMuakDQdVrfogHsAiEApuXMWdaAYdqF/VkHWafRwgtLE7CRBlNcNTlYez37rPI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNAzhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqg+A/+Ke2JTSQvkFCPMNORdNuI0LI1krqq1jhlxb+tmNaCevISdzbf\r\noqyGMEMA7y3P7Oagc0d1K3X2mKr0HqSj4RopZNQcEwvumsIaiVczXUhV/wup\r\nScTs+eUi6sGo+JsRPMPCUl5t1Pp21yen1q75eko3L2yuvEW8RyiT8NdB/U5f\r\nd6ZTza3hRlvyJ8hHyUXuQqKj+a9RcwqAidmGklTkG1/hWZdyQWxV2jbQaqC7\r\n2gUeVRwCc0bX/MFvu1WLDhHbNLykn7qPV/5xb7O49Fx/d/uLssOLnHw1xVTk\r\ng1Tzr0jQPaeiBT+cGilNwkDqhTKLo1CnOX5QBUZ5clzM9hOuJmv1cN899uj4\r\nEoXAyT/7KfRTEeQ7OswU5NIbB0vpePkc6B61OyBXrE7yNTCzTUfhND4ES5QB\r\nQ2xFoCpxpLr5iB7i+hRk5Yh13SR7dHMVjjUjk1IR8lUOPPzn9TUNAa0eJN8k\r\n+A7IvNkb9JJWsyjEXcVjkCmf9P6PVke6lx6kCAxYu4+1V25+QLDh8VnhGqi1\r\newsKSj+WiWIsTc4sjQIsb0bN5uphjTlj7KJTRgpCUJ60DnZhFVoSyo4fUuIH\r\nLsLUPlAa5jaq9TMDecxVvLJEDOARHquwl3Kt+ty2BlGZQgi+RDnD5HITypcW\r\nbruXH8TjRB7D40CWGr4ZUDTQ15+VAcfVkDU=\r\n=TzrK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"peter-murray","email":"peter.murray@osirisoft.com"},"directories":{},"maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/node-hue-api_5.0.0-beta.16_1681132769631_0.9534526766775864"},"_hasShrinkwrap":false}},"readme":"# node-hue-api\n\n[![npm](https://img.shields.io/npm/v/node-hue-api.svg)](http://npmjs.org/node-hue-api)\n\nAn API library for Node.js that interacts with the Philips Hue Bridge to control Lights, schedules, sensors and the \nvarious other features of the Hue Bridge.\n\nThis library abstracts away the actual Philips Hue Bridge REST API and provides all of the features of the Philips API \nand a number of useful functions to control/configure its various features.\n\nThe library fully supports `local network` and `remote internet` access to the Hue Bridge API and has 100% coverage of the \ndocumented Hue API.\n\n\n## Contents\n- [Change Log](#change-log) \n- [Installation](#installation)\n- [v3 API](#v3-api)\n    - [Connections to the Bridge](#connections-to-the-bridge)\n    - [Rate Limiting](#rate-limiting)\n    - [Debug Bridge Communications](#debug-bridge-communications)\n    - [v2 Compatibility](#v2-api-compatibility)\n    - [API Documentation](#api-documentation)\n        - [Discovering Local Hue Bridges](docs/discovery.md)\n        - [Remote API Support](docs/remoteApi.md)\n        - [Users](docs/users.md)\n        - [Lights](docs/lights.md)\n            - [Light Object](docs/light.md)\n            - [LightState Object](docs/lightState.md)\n        - [Sensors](docs/sensors.md)\n            - [Sensor Objects](docs/sensor.md)\n        - [Scenes](docs/scenes.md)\n            - [Scene Object](docs/scene.md)\n            - [SceneLightState Object](docs/lightState.md#scenelightstate)\n        - [Groups](docs/groups.md)\n            - [Group Objects](docs/group.md)\n            - [GroupLightState Object](docs/lightState.md#grouplightstate)\n        - [Rules](docs/rules.md)\n            - [Rule Object](docs/rule.md)\n            - [RuleCondition Object](docs/ruleCondition.md)\n            - [RuleAction Object](docs/ruleAction.md)\n        - [ResourceLinks](/docs/resourcelinks.md)\n            - [ResourceLink Object](docs/resourceLink.md)\n        - [Schedules](docs/schedules.md)\n            - [Schedule Object](docs/schedule.md)\n            - [Time Patterns](docs/timePatterns.md)\n        - [Configuration](docs/configuration.md)\n        - [Capabilities](docs/capabilities.md)\n        - [Remote](docs/remote.md)\n- [Examples](#examples)\n    - [Discover and connect to the Hue Bridge for the first time](#discover-and-connect-to-the-hue-bridge-for-the-first-time)\n    - [Set a LightState on a Light](#set-a-light-state-on-a-light)\n    - [Using Hue Remote API](#using-hue-remote-api)\n- [Philips Hue Resources](#philips-hue-resources)\n- [License](#license)\n\n\n\n## Change Log\nFor a list of changes, and details of the fixes/improvements, bugs resolved, please refer to the change log;\n[Change Log](Changelog.md)\n\n## Installation\n\nNode.js using npm:\n```\n$ npm install node-hue-api\n```\n\nNode.js using yarn:\n```\n$ yarn add node-hue-api\n```\n\n## v3 API\n\nThe V3 API is written to support JavaScript native Promises, as such you can use standard Promise chaining with `then()` \nand `catch()` or utilize synchronous `async` and `await` in your own code base.\n\nAs of release `4.0.0` in December 2019, the library now has complete coverage for the Hue REST API.\n\n\n### Connections to the Bridge\nBy default all connections to the Hue Bridge are done over TLS, after the negotiation of the Bridge certificate being \nverified to the expected format and subject contents.\n\nThe Bridge certificate is self-signed, so this will cause issues when validating it normally. The library will process \nthe certificate, validate the issuer and the subject and if happy will then allow the connection over TLS with the Hue \nBridge.\n\nWhen using the remote API functionality of the library, the certificate is validated normally as the https://api.meethue.com\nsite has an externally valid certificate and CA chain.\n\n_Note: There is an option to connect over `HTTP` using `createInsecureLocal()` as there are some instances of use of the \nlibrary against software the pretends to be a Hue Bridge. Using this method to connect will output warnings on the `console`\nthat you are connecting in an insecure way_.\n\n\n### Rate Limiting\nAs of version 4.0+ of the library there are Rate limiters being used in three places:\n\n* For the whole library, API calls are limited to 12 per second\n* For `lights.setLightState()`, API calls are limited to 10 per second\n* For `groups.setState()`, API calls are limited to 1 per second\n\nThese defaults are not currently configurable, but have been implemented to conform to the best practices defined in the \nHue API documentation. If you are facing issues with this, then raise a support ticket via an Issue.\n\n_Note: these do NOT (and cannot) take into account all access to the Hue Bridge, so if you have other softare that also \naccesses the bridge, it is still possible to overload it with requests._\n\n\n### Debug Bridge Communications\nYou can put the library in to debug mode which will print out the placeholder and request details that it is using to \ntalk to the Hue Bridge.\n\nTo do this, you need to define an environment variable of `NODE_DEBUG` and ensure that it is set to a string that \ncontains `node-hue-api` in it.\n\nOnce the debug mode is active you will see output like the following on the console:\n\n```\nBridge Certificate:\n  subject:       {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\n  issuer:        {\"C\":\"NL\",\"O\":\"Philips Hue\",\"CN\":\"xxxxxxxxx\"}\n  valid from:    Jan  1 00:00:00 2017 GMT\n  valid to:      Jan  1 00:00:00 2038 GMT\n  serial number: xxxxxxx\n\nPerforming validation of bridgeId \"xxx\" against certifcate subject \"xxx\"; matched? true\nURL Placeholders:\n  username: { type:string, optional:false, defaultValue:null }\nHeaders: {\"Accept\":\"application/json\"}\n{\n  \"method\": \"get\",\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n}\nURL Placeholders:\n  username: { type:string, optional:false, defaultValue:null }\nHeaders: {\"Accept\":\"application/json\",\"Content-Type\":\"application/json\"}\n{\n  \"method\": \"post\",\n  \"baseURL\": \"https://192.xxx.xxx.xxx:443/api\",\n  \"url\": \"/xxxxxxxxxxxxxxxxxxxxxxxx/schedules\",\n  \"data\": {\n    \"name\": \"Test Schedule Recurring\",\n    \"description\": \"A node-hue-api test schedule that can be removed\",\n    \"command\": {\n      \"address\": \"/api/xxxxxxxxxxxxxxxxxxxxxxxxxx/lights/0/state\",\n      \"method\": \"PUT\",\n      \"body\": {\n        \"on\": true\n      }\n    },\n    \"localtime\": \"W124/T12:00:00\",\n    \"status\": \"enabled\",\n    \"recycle\": true\n  }\n}\n```\n\n_Note: You should be careful as to who can gain access to this output as it will contain sensative data including the \nMAC Address of the bridge, IP Address and username values._\n\nThe above warning applies here with respect to schedule when **not** in debug mode, as the schedule endpoints will contain the\nusername value (that can be used to authenticate against the bridge) in the payloads of the `command`.\n\n\n## v2 API Compatibility\nIn the version 4.x releases of this library all backwards compatibility to the much older Q promise and callback\nfunctionality was removed (as was indicated in the 3.x documentation). \n\nWhat was provided in the 3.x versions of this library to provide some backward comaptibility has now been moved into \nanother library [node-hue-api-v2-shim](https://github.com/peter-murray/node-hue-api-v2-shim).\n\n_The `node-hue-api-v2-shim` is only provided to allow you to continue to use the older v2 API functionality in code you \nmay have had previously written and there are downsides to using it. You are strongly encouraged to migrate to the v3 \nAPI provided in this library (which is where any new features and improvements will be made going forward)._\n\n\n## API Documentation\n- [Discovering Local Hue Bridges](docs/discovery.md)  \n- [Remote API Support](docs/remoteApi.md)\n- [Users](docs/users.md)\n- [Lights](docs/lights.md)\n    - [Light Object](docs/light.md)\n- [Sensors](docs/sensors.md)\n    - [Sensor Objects](docs/sensor.md)\n- [Scenes](docs/scenes.md)\n    - [Scene Object](docs/scene.md)\n    - [SceneLightState Object](docs/lightState.md#scenelightstate)\n- [Groups](docs/groups.md)\n    - [Group Objects](docs/group.md)\n    - [GroupLightState Object](docs/lightState.md#grouplightstate)\n- [Rules](docs/rules.md)\n    - [Rule Object](docs/rule.md)\n    - [RuleCondition Object](docs/ruleCondition.md)\n    - [RuleAction Object](docs/ruleAction.md)\n- [ResourceLinks](docs/resourcelinks.md)\n    - [ResourceLink Object](docs/resourceLink.md)\n- [Schedules](docs/schedules.md)\n    - [Schedule Object](docs/schedule.md)\n    - [Time Patterns](docs/timePatterns.md)\n- [Configuration](docs/configuration.md)\n- [Capabilities](docs/capabilities.md)\n- [Remote](docs/remote.md)\n\n\n## Examples\nThe v3 APIs are documented using example code and links to more complex/complete examples for each API calls, consult \nthe documentation links [above](#v3-api).\n\nAlternatively take a look at the [examples directory](examples/v3) in this repository for complete self contained \nrunnable example code.\n\n---\n\n### Discover and connect to the Hue Bridge for the first time\n\nFor getting started interacting with the Hue Bridge, you will need to discover and then connect to the Hue Bridge as an\nauthorized user. To do this you need to either know the IP Address of the Hue Bridge in advance, or use the discovery \nfeatures to locate it.\n\nOnce you know the IP Address of the Bridge, you need to create a user that is authorized to interact with the Hue Bridge,\nthis is typically done by pressing the `Link` button on the bridge and then attempting to register a new user via code.\n\nBelow is example code that can be used to achieve this (using async/await to avoid nested Promises):\n```js\nconst v3 = require('node-hue-api').v3\n  , discovery = v3.discovery\n  , hueApi = v3.api \n;\n\nconst appName = 'node-hue-api';\nconst deviceName = 'example-code';\n\nasync function discoverBridge() {\n  const discoveryResults = await discovery.nupnpSearch();\n\n  if (discoveryResults.length === 0) {\n    console.error('Failed to resolve any Hue Bridges');\n    return null;\n  } else {\n    // Ignoring that you could have more than one Hue Bridge on a network as this is unlikely in 99.9% of users situations\n    return discoveryResults[0].ipaddress;\n  }\n}\n\nasync function discoverAndCreateUser() {\n  const ipAddress = await discoverBridge();\n\n  // Create an unauthenticated instance of the Hue API so that we can create a new user\n  const unauthenticatedApi = await hueApi.createLocal(ipAddress).connect();\n  \n  let createdUser;\n  try {\n    createdUser = await unauthenticatedApi.users.createUser(appName, deviceName);\n    console.log('*******************************************************************************\\n');\n    console.log('User has been created on the Hue Bridge. The following username can be used to\\n' +\n                'authenticate with the Bridge and provide full local access to the Hue Bridge.\\n' +\n                'YOU SHOULD TREAT THIS LIKE A PASSWORD\\n');\n    console.log(`Hue Bridge User: ${createdUser.username}`);\n    console.log(`Hue Bridge User Client Key: ${createdUser.clientkey}`);\n    console.log('*******************************************************************************\\n');\n\n    // Create a new API instance that is authenticated with the new user we created\n    const authenticatedApi = await hueApi.createLocal(ipAddress).connect(createdUser.username);\n\n    // Do something with the authenticated user/api\n    const bridgeConfig = await authenticatedApi.configuration.getConfiguration();\n    console.log(`Connected to Hue Bridge: ${bridgeConfig.name} :: ${bridgeConfig.ipaddress}`);\n\n  } catch(err) {\n    if (err.getHueErrorType() === 101) {\n      console.error('The Link button on the bridge was not pressed. Please press the Link button and try again.');\n    } else {\n      console.error(`Unexpected Error: ${err.message}`);\n    }\n  }\n}\n\n// Invoke the discovery and create user code\ndiscoverAndCreateUser();\n```\n\nThe complete code sample above is available from [here](./examples/v3/discoverAndCreateUserScript.js).\n\nFor more details on discovery of Hue Bridges, check out the [discovery API](./docs/discovery.md) and referenced examples \nalong with the [users API](./docs/users.md). \n\n\n---\n\n### Set a Light State on a Light\nOnce you have created your user account and know the IP Address of the Hue Bridge you can interact with things on it. \nTo interact with light on the Hue Bridge you can use the following:\n\n```js\nconst v3 = require('node-hue-api').v3;\nconst LightState = v3.lightStates.LightState;\n\nconst USERNAME = 'your username to authenticating with the bridge'\n  // The name of the light we wish to retrieve by name\n  , LIGHT_ID = 1\n;\n\nv3.discovery.nupnpSearch()\n  .then(searchResults => {\n    const host = searchResults[0].ipaddress;\n    return v3.api.createLocal(host).connect(USERNAME);\n  })\n  .then(api => {\n    // Using a LightState object to build the desired state\n    const state = new LightState()\n      .on()\n      .ct(200)\n      .brightness(100)\n    ;\n    \n    return api.lights.setLightState(LIGHT_ID, state);\n  })\n  .then(result => {\n    console.log(`Light state change was successful? ${result}`);\n  })\n;\n```\n\nFor more details on interacting with lights, see the [lights API](./docs/lights.md) and [LightState](./docs/lightState.md) \ndocumentation and examples referenced within.\n\n\n### Using Hue Remote API\nThis library has support for interacting with the `Hue Remote API` as well as local network connections. There are some\nlimitations on the remote endpoints, but the majority of them will function as they would on a local network.\n\nIt can be rather involved to set up a remote connection, but not too onerous if you desire such a thing.\n\nThe complete documentation for doing this is detailed in the [Remote API](docs/remoteApi.md) and associated links.\n\n* [Example for connecting remotely for the first time](./examples/v3/remote/accessFromScratch.js)\n* [Example for connecting using existing OAuth tokens](./examples/v3/remote/accessWithTokens.js) \n\n\n## Philips Hue Resources\n\nThere are a number of resources where users have detailed documentation on the Philips Hue Bridge;\n - The Official Phillips Hue Documentation <http://www.developers.meethue.com>\n - Hue Hackers Mailing List: <https://groups.google.com/forum/#!forum/hue-hackers>\n - StackOverflow: <http://stackoverflow.com/questions/tagged/philips-hue>\n\n\n## License\nCopyright 2013-2019. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this library except in compliance with the License.\n\nYou may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>.\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n","maintainers":[{"name":"peter-murray","email":"peter.murray@osirisoft.com"}],"time":{"modified":"2023-04-10T13:19:30.053Z","created":"2013-01-04T17:59:58.639Z","0.1.0":"2013-01-04T18:00:00.544Z","0.1.1":"2013-01-05T16:59:52.299Z","0.1.2":"2013-03-23T20:16:54.907Z","0.1.3":"2013-04-05T18:02:16.042Z","0.1.4":"2013-05-04T20:02:54.042Z","0.2.0":"2013-06-15T15:45:10.410Z","0.2.1":"2013-07-23T19:46:27.549Z","0.2.2":"2013-10-16T19:37:37.095Z","0.2.3":"2014-06-15T15:49:34.047Z","0.2.4":"2014-12-18T20:11:32.933Z","0.2.5":"2014-12-19T09:41:48.986Z","0.2.6":"2014-12-20T23:48:04.605Z","0.2.7":"2015-01-10T17:41:59.632Z","1.0.0":"2015-01-26T20:55:16.682Z","1.0.1":"2015-01-31T10:55:10.739Z","1.0.2":"2015-01-31T17:58:26.731Z","1.0.3":"2015-02-04T23:00:28.124Z","1.0.4":"2015-02-08T08:39:29.540Z","1.0.5":"2015-02-08T17:14:54.341Z","1.1.0":"2015-07-25T18:29:05.971Z","1.1.1":"2015-07-27T16:19:02.207Z","1.1.2":"2015-09-01T19:27:08.732Z","1.2.0":"2015-10-12T21:03:42.644Z","1.2.1":"2015-10-20T20:24:38.380Z","2.0.0-RC1":"2015-12-30T17:15:55.790Z","2.0.0":"2016-01-04T22:08:16.924Z","2.0.1":"2016-01-17T18:42:21.932Z","2.1.0":"2016-02-07T17:56:42.524Z","2.1.1":"2016-02-07T17:59:41.516Z","2.2.0":"2016-02-27T18:53:40.501Z","2.3.0":"2016-10-10T20:30:13.829Z","2.4.0":"2017-01-04T20:18:15.238Z","2.4.1":"2017-01-19T19:53:01.603Z","2.4.2":"2017-03-14T21:44:47.925Z","2.4.3":"2018-08-19T19:38:58.221Z","2.4.4":"2018-10-07T18:40:08.472Z","2.4.5":"2019-05-19T16:30:45.964Z","2.4.6":"2019-06-16T13:07:09.546Z","3.0.0-alpha.1":"2019-07-09T15:38:55.882Z","3.0.0-alpha.2":"2019-08-01T08:53:54.024Z","3.0.0":"2019-08-30T09:54:53.235Z","3.1.0":"2019-09-06T08:15:53.490Z","3.1.1":"2019-09-07T15:56:25.432Z","3.1.2":"2019-09-14T07:52:32.283Z","3.1.3":"2019-09-16T09:13:29.225Z","3.1.4":"2019-09-25T08:52:50.132Z","3.2.0":"2019-10-03T15:09:40.212Z","3.2.1":"2019-10-06T20:13:59.166Z","3.3.0":"2019-10-17T08:58:05.798Z","3.3.1":"2019-10-17T18:52:48.828Z","3.3.2":"2019-10-20T08:09:04.654Z","3.4.0":"2019-10-21T07:50:33.686Z","3.4.1":"2019-11-16T15:36:30.320Z","3.4.2":"2019-11-18T18:47:03.799Z","4.0.0-alpha":"2019-11-18T21:12:32.486Z","4.0.0-alpha-1":"2019-11-18T21:17:11.554Z","4.0.0-alpha-2":"2019-11-18T21:20:45.199Z","3.4.3":"2019-11-19T14:39:04.945Z","4.0.0-alpha-3":"2019-12-16T20:14:02.774Z","4.0.0-beta.1":"2019-12-20T10:19:37.081Z","4.0.0":"2019-12-27T15:01:18.995Z","4.0.1":"2019-12-31T09:37:31.584Z","4.0.2-alpha.1":"2020-01-02T16:08:32.353Z","4.0.2":"2020-01-07T17:37:51.535Z","4.0.3-alpha.1":"2020-01-07T18:36:19.286Z","4.0.3":"2020-01-13T14:47:46.754Z","4.0.4":"2020-01-22T20:12:30.166Z","4.0.5-0":"2020-01-30T20:51:18.241Z","4.0.5":"2020-01-31T09:31:54.088Z","5.0.0-alpha.1":"2020-03-09T11:52:52.905Z","5.0.0-alpha.2":"2020-04-24T13:03:22.257Z","4.0.6":"2020-04-24T13:18:38.464Z","4.0.7":"2020-06-11T15:09:20.942Z","4.0.8":"2020-07-31T09:13:04.000Z","4.0.9-rc1":"2020-08-17T15:21:16.925Z","4.0.9":"2020-08-18T08:30:32.111Z","5.0.0-beta.1":"2020-12-20T16:47:40.266Z","4.0.10":"2021-01-12T10:28:56.740Z","5.0.0-beta.2":"2021-02-20T22:43:55.756Z","5.0.0-beta.3":"2021-07-22T12:40:31.811Z","5.0.0-beta.4":"2021-07-26T11:20:39.034Z","5.0.0-beta.6":"2021-08-03T10:55:48.587Z","5.0.0-beta.7":"2021-08-09T12:16:37.654Z","5.0.0-beta.8":"2021-08-25T08:35:47.674Z","5.0.0-beta.9":"2021-12-17T18:35:36.334Z","4.0.11":"2022-01-11T11:20:16.570Z","5.0.0-beta.10":"2022-01-11T11:25:49.600Z","5.0.0-beta.11":"2022-01-17T13:53:04.335Z","5.0.0-beta.13":"2022-01-25T14:05:50.082Z","5.0.0-beta.14":"2022-08-13T15:58:55.884Z","5.0.0-beta.15":"2022-12-12T12:40:08.044Z","5.0.0-beta.16":"2023-04-10T13:19:29.865Z"},"author":{"name":"Peter Murray"},"repository":{"type":"git","url":"git+https://github.com/peter-murray/node-hue-api.git"},"homepage":"https://github.com/peter-murray/node-hue-api#readme","keywords":["philips","hue","api","living","color","colour","automation","light","lighting","bridge"],"contributors":[{"name":"Peter Murray","email":"681306+peter-murray@users.noreply.github.com"}],"bugs":{"url":"https://github.com/peter-murray/node-hue-api/issues"},"readmeFilename":"README.md","users":{"131":true,"goliatone":true,"franklin":true,"olivertt82":true,"tfmnode":true,"shanewholloway":true,"lemulot":true,"febley":true,"fikibok":true,"nebulon":true,"fabian.moron.zirfas":true},"license":"Apache-2.0"}