{"_id":"@buddyshome/shellies-ds9","_rev":"8-c8daa03978046f1203cdbb79078ca47d","name":"@buddyshome/shellies-ds9","dist-tags":{"latest":"2.1.3"},"versions":{"2.1.0":{"name":"@buddyshome/shellies-ds9","version":"2.1.0","keywords":["shelly"],"author":{"name":"Alexander Rydén/ David S."},"license":"GPL-3.0","_id":"@buddyshome/shellies-ds9@2.1.0","maintainers":[{"name":"buddyshome","email":"alex@linkzuhause.com"}],"homepage":"https://github.com/buddyshome/node-shellies-ds9#readme","bugs":{"url":"https://github.com/buddyshome/node-shellies-ds9/issues"},"dist":{"shasum":"955486275e1efbd3dc23be59b9c8510c39c28dfe","tarball":"https://registry.npmjs.org/@buddyshome/shellies-ds9/-/shellies-ds9-2.1.0.tgz","fileCount":231,"integrity":"sha512-e1WsbrJXTvZqgkanVasBb8yLMbwG+wepPYJx9cUD+TtkfduuQCwhGdMZvFRlIm2uSZdXKN/j6F9/NaPLINartg==","signatures":[{"sig":"MEQCIDH4AQADCOme9/7YGu8VOjue1masqNanCO+BVYszeZRIAiBDYigDthRCAfnxcBPDsTcF/JSsezA9dH1euxMZUFFN2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422051},"main":"dist/index.js","types":"dist/index.d.ts","funding":{"url":"https://ko-fi.com/buddyshome","type":"kofi"},"gitHead":"fab4be8bd4be1f12eac210d1ea2a6d0c20485abe","scripts":{"link":"npm unlink @buddyhome/shellies-ds9 && npm link","lint":"eslint ./src --ext .ts,.js","test":"jest","build":"rimraf ./dist && tsc","pretty":"prettier --write \"./**/*.{js,jsx,json}\"","unlink":"npm unlink @buddyhome/shellies-ds9","preversion":"npm run build && npm run lint && npm test","postversion":"git push && git push --tags"},"_npmUser":{"name":"buddyshome","email":"alex@linkzuhause.com"},"repository":{"url":"git+https://github.com/buddyshome/node-shellies-ds9.git","type":"git"},"_npmVersion":"10.8.2","description":"Handles communication with the next generation of Shelly devices","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ws":"^8.18.3","json-rpc-2.0":"^1.7.1","eventemitter3":"^5.0.1","multicast-dns":"^7.2.5","fast-deep-equal":"^3.1.3","@types/multicast-dns":"^7.2.4"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.4.5","prettier":"^3.7.1","typescript":"^4.9.5","@types/jest":"^29.5.14","eslint-config-prettier":"^9.1.2","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^6.21.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/shellies-ds9_2.1.0_1764365016285_0.2232593166595589","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@buddyshome/shellies-ds9","version":"2.1.2","keywords":["shelly"],"author":{"name":"Alexander Rydén/ David S."},"license":"GPL-3.0","_id":"@buddyshome/shellies-ds9@2.1.2","maintainers":[{"name":"buddyshome","email":"alex@linkzuhause.com"}],"homepage":"https://github.com/buddyshome/node-shellies-ds9#readme","bugs":{"url":"https://github.com/buddyshome/node-shellies-ds9/issues"},"dist":{"shasum":"7ddcba062a7cbd97ad43a5dc2bf4e1da8e82b398","tarball":"https://registry.npmjs.org/@buddyshome/shellies-ds9/-/shellies-ds9-2.1.2.tgz","fileCount":231,"integrity":"sha512-+Q1wplyrTySt9cU//vs21wtmWIlV0Fdza1Mk2P0g+6WvgeED4x7hAmQvsAiHJL9xmECUG4C85z8Cz6b1tHcJpA==","signatures":[{"sig":"MEUCIQDE/RN2YX3jvuEuIXCYbY5giAbsAKryjbGROUUGVwxZwAIgaBrGoM1lH439YR3ZlECdrAk5OSriZeVRgB8XlPnrgHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@buddyshome%2fshellies-ds9@2.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":422045},"main":"dist/index.js","types":"dist/index.d.ts","funding":{"url":"https://ko-fi.com/buddyshome","type":"kofi"},"gitHead":"490f7828af06ca043c8ab797650b3c16c89620dc","scripts":{"link":"npm unlink @buddyhome/shellies-ds9 && npm link","lint":"eslint --ext .ts,.js","test":"jest","build":"rimraf ./dist && tsc","pretty":"prettier --write \"./**/*.{js,jsx,json}\"","unlink":"npm unlink @buddyhome/shellies-ds9","preversion":"npm run lint && npm run build && npm test","postversion":"git push && git push --tags"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98a9fccd-4004-471f-80bd-34728e687f30"}},"repository":{"url":"git+https://github.com/buddyshome/node-shellies-ds9.git","type":"git"},"_npmVersion":"11.9.0","description":"Handles communication with the next generation of Shelly devices","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.18.3","json-rpc-2.0":"^1.7.1","eventemitter3":"^5.0.1","multicast-dns":"^7.2.5","fast-deep-equal":"^3.1.3","@types/multicast-dns":"^7.2.4"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.1","rimraf":"^5.0.10","ts-jest":"^29.4.5","prettier":"^3.7.1","typescript":"^4.9.5","@types/jest":"^29.5.14","eslint-config-prettier":"^9.1.2","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.57.2","@typescript-eslint/eslint-plugin":"^8.57.2"},"_npmOperationalInternal":{"tmp":"tmp/shellies-ds9_2.1.2_1774534017653_0.7033280766907153","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@buddyshome/shellies-ds9","version":"2.1.3","description":"Handles communication with the next generation of Shelly devices","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"rimraf ./dist && tsc","lint":"eslint --ext .ts,.js","test":"jest","preversion":"npm run lint && npm run build && npm test","postversion":"git push && git push --tags","pretty":"prettier --write \"./**/*.{js,jsx,json}\"","link":"npm unlink @buddyhome/shellies-ds9 && npm link","unlink":"npm unlink @buddyhome/shellies-ds9"},"repository":{"type":"git","url":"git+https://github.com/buddyshome/node-shellies-ds9.git"},"keywords":["shelly"],"author":{"name":"Alexander Rydén/ David S."},"license":"GPL-3.0","bugs":{"url":"https://github.com/buddyshome/node-shellies-ds9/issues"},"homepage":"https://github.com/buddyshome/node-shellies-ds9#readme","funding":{"type":"kofi","url":"https://ko-fi.com/buddyshome"},"devDependencies":{"@types/jest":"^29.5.14","@typescript-eslint/eslint-plugin":"^8.57.2","@typescript-eslint/parser":"^8.57.2","eslint":"^8.57.1","eslint-config-prettier":"^9.1.2","eslint-plugin-prettier":"^5.5.4","jest":"^29.7.0","prettier":"^3.7.1","rimraf":"^5.0.10","ts-jest":"^29.4.5","typescript":"^4.9.5"},"dependencies":{"@types/multicast-dns":"^7.2.4","eventemitter3":"^5.0.1","fast-deep-equal":"^3.1.3","json-rpc-2.0":"^1.7.1","multicast-dns":"^7.2.5","ws":"^8.18.3"},"gitHead":"9d2434d62e89fbe53bee1616a820c0fa6044d304","_id":"@buddyshome/shellies-ds9@2.1.3","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-9sh4eHF87m5TZG3cRbrG7sXHvhD6sGToMQFP4QiJkvoYS1EID9R6b1A0qrDnfxpsDrGm1Wd7+xdYQ+fN62i0kA==","shasum":"50814d3fe6d3a5566cf32cd13502b651abba5029","tarball":"https://registry.npmjs.org/@buddyshome/shellies-ds9/-/shellies-ds9-2.1.3.tgz","fileCount":231,"unpackedSize":422045,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@buddyshome%2fshellies-ds9@2.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCMku7uEZtjOPqpm2WCLgpPrRG7ZNhz5Mopx28eafrnrQIgfkNVtuexmkWfBh8WyUT8O/AONY/CJ6md9GyzJUjQacU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:98a9fccd-4004-471f-80bd-34728e687f30"}},"directories":{},"maintainers":[{"name":"buddyshome","email":"alex@linkzuhause.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/shellies-ds9_2.1.3_1774534820829_0.3497728973146035"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T21:23:36.187Z","modified":"2026-03-26T14:20:21.313Z","1.0.1":"2025-11-26T21:12:46.603Z","1.1.0":"2025-11-26T22:14:13.429Z","1.2.0":"2025-11-26T22:25:19.709Z","2.1.0":"2025-11-28T21:23:36.480Z","2.1.2":"2026-03-26T14:06:57.827Z","2.1.3":"2026-03-26T14:20:21.032Z"},"bugs":{"url":"https://github.com/buddyshome/node-shellies-ds9/issues"},"author":{"name":"Alexander Rydén/ David S."},"license":"GPL-3.0","homepage":"https://github.com/buddyshome/node-shellies-ds9#readme","keywords":["shelly"],"repository":{"type":"git","url":"git+https://github.com/buddyshome/node-shellies-ds9.git"},"description":"Handles communication with the next generation of Shelly devices","maintainers":[{"name":"buddyshome","email":"alex@linkzuhause.com"}],"readme":"# node-shellies-ds9\n\n[![npm-version](https://badgen.net/npm/v/shellies-ds9)](https://www.npmjs.com/package/shellies-ds9)\n\nHandles communication with the next generation of Shelly devices. This Package is only to pimp up the existing package https://badgen.net/npm/v/shellies-ng. Because I'm lost if my Minis don't run in the Homebridge.\nIf Alex creates a new version of his package that supports the Mini devices, I will delete this package again. thx@sw-koenig...\n\nFor the first generation, see [node-shellies](https://github.com/alexryd/node-shellies).\n\n## Supported devices\n\n- [Shelly Plus 1 + V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus1)\n- [Shelly Plus 1 PM + V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus1PM)\n- [Shelly Plus 1 Mini + V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus1)\n- [Shelly Plus 1 PM Mini + V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus1PM)\n- [Shelly Plus PM Mini + V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusPMMini)\n- [Shelly Plus 2 PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus2PM)\n- [Shelly Plus I4 +V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusI4)\n- [Shelly Plus Plug S](https://kb.shelly.cloud/knowledge-base/shelly-plus-plug-s-1)\n- [Shelly Plus Plug US](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlugUS)\n- [Shelly Plus Plug UK](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusPlugUK)\n- [Shelly Plus Plug IT](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusPlugIT)\n- [Shelly Plus S EU](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusPlugS)\n- [Shelly Plus H&T +V3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusHT)\n- [Shelly Plus 0-10V Dimmer](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlus10V)\n- [Shelly Dimmer 0/1-10V PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen3/ShellyDimmer0110VPMG3)\n- [Shelly Dimmer](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen3/ShellyDimmerG3)\n- [Shelly Pro 1](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro1)\n- [Shelly Pro 1 PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro1PM)\n- [Shelly Pro 2](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro2)\n- [Shelly Pro 2 EU](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro2)\n- [Shelly Pro 2 PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro2PM)\n- [Shelly Pro 3](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro3)\n- [Shelly Pro 4 PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPro4PM)\n- [Shelly Pro Dual Cover PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyProDualCoverPM)\n- [Shelly Pro Dimmer 1PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyProDimmer1PM)\n- [Shelly Pro Dimmer 0/1-10V PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyProDimmer0110VPM)\n- [Shelly Pro Dimmer 2PM](https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyProDimmer2PM)\n\n<sup>1</sup> Support for outbound websockets is a work in progress.\n\n## Basic usage example\n\n```typescript\nimport {\n  Device,\n  DeviceId,\n  MdnsDeviceDiscoverer,\n  Shellies,\n  ShellyPlus1,\n} from \"shellies-ds9\";\n\nconst shellies = new Shellies();\n\n// handle discovered devices\nshellies.on(\"add\", async (device: Device) => {\n  console.log(`${device.modelName} discovered`);\n  console.log(`ID: ${device.id}`);\n\n  // use instanceof to determine the device model\n  if (device instanceof ShellyPlus1) {\n    const plus1 = device as ShellyPlus1;\n\n    // toggle the switch\n    await plus1.switch0.toggle();\n  }\n});\n\n// handle asynchronous errors\nshellies.on(\"error\", (deviceId: DeviceId, error: Error) => {\n  console.error(\"An error occured:\", error.message);\n});\n\n// create an mDNS device discoverer\nconst discoverer = new MdnsDeviceDiscoverer();\n// register it\nshellies.registerDiscoverer(discoverer);\n// start discovering devices\ndiscoverer.start();\n```\n\nSee [homebridge-shelly-ng]() for a real-world example.\n","readmeFilename":"README.md"}