{"_id":"homebridge-luxtronik2","_rev":"111-b726a199feb82533cfad9197bf4fc818","name":"homebridge-luxtronik2","dist-tags":{"latest":"2.1.3"},"versions":{"1.3.2":{"name":"homebridge-luxtronik2","version":"1.3.2","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.3.2","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","json/*":"error","no-var":"warn","quotes":"warn","camelcase":"off","max-depth":"off","quote-props":"error","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"},"plugins":["json"],"extensions":["js","json"]},"dist":{"shasum":"8ac1a9cc1df7007168b4338377c0fda188b467c5","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.3.2.tgz","fileCount":16,"integrity":"sha512-cJpMnfgjoxJoqfNNAHzoEREOQQ8Iidb4UF+pnKOPMI0ItlPIxUB+fkyBhhxDh2WJaUZKNwlnJoiphfvSNX2MVg==","signatures":[{"sig":"MEUCIGJbX2YTyw4Mms4gJKriPHb6lWPw7dteQsEDZ00jV6TFAiEAhr9hayMDECEZcgqRWn7OZh+vv2AKZ0j7FMYt7GDsZRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30670},"main":"index.js","config":{"urls":[]},"engines":{"node":"^18.19.1 || ^20.15.1 || ^22.12.0","homebridge":"^1.6.1 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"8ae030eb0f5e2c2f5f62613f5e7c613c3ceac574","scripts":{"test":"xo","pretest":"npm run lint:json","lint:json":"xo --ext .json"},"_npmUser":{"name":"cbrandlehner","email":"christian@brandlehner.at"},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"10.9.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"22.14.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.60.0","eslint-plugin-json":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.3.2_1742061307904_0.18503784700900994","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"homebridge-luxtronik2","version":"1.3.3","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.3.3","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","json/*":"error","no-var":"warn","quotes":"warn","camelcase":"off","max-depth":"off","quote-props":"error","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"},"plugins":["json"],"extensions":["js","json"]},"dist":{"shasum":"2bedf6f2e9bad5c7ce4d0f2a8ee5a3895c00a02c","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.3.3.tgz","fileCount":14,"integrity":"sha512-CB19CcKGXnqfR97HOJS0YKB5aGapzkHefUBjSYKUUY/3Aq6olcwly0z5x2WxOPVZiMtRKkfam23OmZNP1HppWQ==","signatures":[{"sig":"MEYCIQCtGZgvFfSq4cmuz3cOm9NAUloapoeNF3p4SFgMempr3QIhAPkavRLzQ0BNwYAlJjEON6J7dn+3OpGjvT9rEWOLAK40","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30670},"main":"index.js","config":{"urls":[]},"engines":{"node":"^18.19.1 || ^20.15.1 || ^22.12.0","homebridge":"^1.6.1 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"08d18f17ef1dd964309efa2998cf48abde85e0f1","scripts":{"test":"xo","pretest":"npm run lint:json","lint:json":"xo --ext .json"},"_npmUser":{"name":"cbrandlehner","email":"christian@brandlehner.at"},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"10.9.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"22.14.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.60.0","eslint-plugin-json":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.3.3_1742062479461_0.8248293103625934","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"homebridge-luxtronik2","version":"1.4.0","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.4.0","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","json/*":"error","no-var":"warn","quotes":"warn","camelcase":"off","max-depth":"off","quote-props":"error","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"},"plugins":["json"],"extensions":["js","json"]},"dist":{"shasum":"80976d807143a2572c4fc824ad5190bf3c699ce1","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.4.0.tgz","fileCount":16,"integrity":"sha512-Sk/z/ME2g+Co+VzEYENNUgWgiu88c1ioMgaFWYhZZOoJ9nUtR1yqXMFMkrXPTtGPOnYBk94+DNSpwIO9rfvZVg==","signatures":[{"sig":"MEUCIQDpv7zcjAmfS16TvN0JxuV0zvMpVI9SMWcbvNhgPm12BAIgRShyixWqVAYP2HQfpWaYqOKaLbmWXpxYrmURQk7FgLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30682},"main":"index.js","config":{"urls":[]},"engines":{"node":"^18.20.8 || ^20.19.0 || ^22.14.0 || ^23.11.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"6efea8d27925074a60985c559561453c1ef60547","scripts":{"test":"xo","pretest":"npm run lint:json","lint:json":"xo --ext .json"},"_npmUser":{"name":"cbrandlehner","email":"christian@brandlehner.at"},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"10.9.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"22.14.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.60.0","eslint-plugin-json":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.4.0_1745223217909_0.6902278103618693","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"homebridge-luxtronik2","version":"1.5.2","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.5.2","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","no-var":"warn","quotes":"off","camelcase":"off","max-depth":"off","quote-props":"off","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"@stylistic/indent":"off","no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"}},"dist":{"shasum":"bd0358bf9e2379e0ab82aba0785847e59e84ba15","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.5.2.tgz","fileCount":16,"integrity":"sha512-6efI+KcSQfto3IrVxJFJJroDmCcbyqbDQdVleh/BG7u5TK5zV+hKSradg/IFnbSRZuYp1jfzNy8TIrRYI7jsww==","signatures":[{"sig":"MEQCIGEhHyGJRIK73ovvQ65IBdBETDpaFDAlkAh6auQslaV8AiAu3bBniRmHTESxNeD5k5oGPbwHNI6IHK2yjvYupUnHRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31320},"main":"index.js","config":{"urls":[]},"engines":{"node":"^20.19.0 || ^22.14.0 || ^24.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"c0a376b62102565200117cae10d5189b58dcd2b7","scripts":{"test":"xo"},"_npmUser":{"name":"cbrandlehner","email":"christian@brandlehner.at"},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"10.9.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"22.14.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.5.2_1748872614701_0.7612890113356641","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"homebridge-luxtronik2","version":"1.5.3","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.5.3","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","no-var":"warn","quotes":"off","camelcase":"off","max-depth":"off","quote-props":"off","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"@stylistic/indent":"off","no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"}},"dist":{"shasum":"27cd810512f16d275a36614b1479bda3397b80b8","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.5.3.tgz","fileCount":17,"integrity":"sha512-SkidVy3a7wBXQ78DdIXFUdU/6D2zneiO/f1evZKKOZ+QMq3Ml+ftMsRl9jqe1jwQJVZDbFcCa8AUl9kB2zk/NQ==","signatures":[{"sig":"MEYCIQDbKZripD2PGtn2/AF1h4wtyniV8vVpCLvqM3Hk9FqzGgIhAPBEKC2v4AYg2GpfWCGCXc0HGj0fczvomNUAgcYGyA4+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36461},"main":"index.js","config":{"urls":[]},"engines":{"node":"^20.19.0 || ^22.14.0 || ^24.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"d0595c257f3e02f454473c45326dbbc9ac70cb6d","scripts":{"test":"xo"},"_npmUser":{"name":"cbrandlehner","email":"christian@brandlehner.at"},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.6.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"22.14.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.5.3_1767864164871_0.454051676739853","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"homebridge-luxtronik2","version":"1.5.5","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.5.5","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","no-var":"warn","quotes":"off","camelcase":"off","max-depth":"off","quote-props":"off","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"@stylistic/indent":"off","no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"}},"dist":{"shasum":"bd02dee1ba343f8c0233304fcdfc4045a1de7134","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.5.5.tgz","fileCount":17,"integrity":"sha512-EMl1CBbl2F0OJteURVTYzC9XPVIiyI12B67nYiktlimLMPRkam//ZyC7rPqWN1MZgc3VA/NOgWruao5Dx8k5Ug==","signatures":[{"sig":"MEUCIQDNhhZ2aG381vaM45KJjn4rKu+c9OzLJdqhhMX4sbJ7EAIgFWBIRU4D8Q8KdW0AFrej1cUCoAWBd0PNUuS1hItLviM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@1.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36323},"main":"index.js","config":{"urls":[]},"engines":{"node":"^20.19.0 || ^22.14.0 || ^24.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"656343e1d2ae1b2a88260ebd782e579c1b7c3541","scripts":{"test":"xo"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.6.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"24.12.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.5.5_1767872901793_0.38257980417646587","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"homebridge-luxtronik2","version":"1.6.0","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.6.0","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","no-var":"warn","quotes":"off","camelcase":"off","max-depth":"off","quote-props":"off","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"@stylistic/indent":"off","no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"}},"dist":{"shasum":"c8c22b61e91c9651546d78be441f0c1992d1b89d","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.6.0.tgz","fileCount":16,"integrity":"sha512-gYnnMfMYb25MozCAGE1ITUUpLskkr9299YWVKQGPe9WtKhq9oylBeULyPcenas5NT4ACEH9QZm8EShfGIY+KhA==","signatures":[{"sig":"MEUCICdPHtolnMtgEWlJZ1D7eRK937Zvpn37IbOVUTwmEAmCAiEAmb0+FoMSEY0bwZR6jSwgHOMIq7DOYFVlcjW9tr7PB1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36612},"main":"index.js","config":{"urls":[]},"engines":{"node":">=22.0.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"ee1d7aca2bac326892ee60bf6e34c2c194a35da0","scripts":{"test":"xo"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.6.2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"24.13.0","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^1.0.5"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.6.0_1770815203143_0.5281481139128246","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"homebridge-luxtronik2","version":"1.6.1","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.6.1","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","no-var":"warn","quotes":"off","camelcase":"off","max-depth":"off","quote-props":"off","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"@stylistic/indent":"off","no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"}},"dist":{"shasum":"943ac04fd3fe8eeba2bb90b0c86f8bc576691b12","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.6.1.tgz","fileCount":16,"integrity":"sha512-twnqbpzQNIRW94p/xVWqWQbJr2RH3jhiu2J/I6psmydLfUWWPO6Sa7RjBCLU/5PZJX1bcigvKZjjWIm9AuZGEw==","signatures":[{"sig":"MEUCIQCZ82h1EmO0vnLahRwQobF/IC72sxMrjf+muKoJHeLb4wIgGUqAfb0B8dYcZlTB2vYsogWWcBtnsj6UC8NreBSIIyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36612},"main":"index.js","config":{"urls":[]},"engines":{"node":">=22.0.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"0ecc59b276ba26c98378429b6c57eda987ec465e","scripts":{"test":"xo"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.11.0","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"24.14.1","dependencies":{"socket.io-client":">= 4.8.1"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.6.1_1778340731552_0.07124454358770782","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"homebridge-luxtronik2","version":"1.7.0","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@1.7.0","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"xo":{"rules":{"curly":["error","multi-or-nest","consistent"],"indent":"off","no-var":"warn","quotes":"off","camelcase":"off","max-depth":"off","quote-props":"off","no-unused-vars":"error","object-shorthand":["off","always",{"ignoreConstructors":true}],"@stylistic/indent":"off","no-useless-escape":"warn","unicorn/no-for-loop":"off","capitalized-comments":"off","no-use-before-define":["error",{"classes":false}],"prefer-arrow-callback":"off","unicorn/prefer-module":"off","no-mixed-spaces-and-tabs":"warn","unicorn/expiring-todo-comments":"off","unicorn/no-anonymous-default-export":"off"}},"dist":{"shasum":"1402f83dbb75a2d86e5123a4a7d505cfae13c557","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-1.7.0.tgz","fileCount":17,"integrity":"sha512-thVD6Aqj5j4sfYuo8E6I0dhSxlf9EyJUYXx3LOzE0W6QARlpYGd231vbzESQer0JGZExf/DOWwbTr+b8ock4Kw==","signatures":[{"sig":"MEUCIQCOLBXitBB3pK2YCMuyty/kPKA0g/SYZWVfcbWki1nNFwIgSQyz+yGiuC+w8NR71UUlFqDKfkZUmbjDGqAlXlAk15Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39555},"main":"index.js","config":{"urls":[]},"engines":{"node":">=22.0.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"1a71c614b8cba68e5959aa67de7984911fa259c8","scripts":{"test":"xo"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.13.0","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"xo":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_1.7.0_1781799282384_0.6403272655105801","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"homebridge-luxtronik2","version":"2.1.1","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@2.1.1","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"dist":{"shasum":"44b5ca66b91931cd454c1c07929ffdd20e40914f","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-2.1.1.tgz","fileCount":32,"integrity":"sha512-gIF5TQzxwYOcVeXNG/96AtRQfJ8/uKEmNVbDei6A5k/ZxHsFSjdFckTEMEyHoGsolT9iZQREiCryjkQcqWzBqA==","signatures":[{"sig":"MEQCIEHrW5jfPouhf+56VPZ94pKimW7BF6LVmjOC36AeIOw8AiAwONn5aVXsDu5d14lXWepxyvfHnjSRkU31Ru/otjIZrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":78325},"main":"index.js","config":{"urls":[{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2","title":"Star on GitHub"},{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues","title":"Report an Issue"}]},"engines":{"node":">=22.0.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"40c3e8678f194bbc2b389a4d3fda4e4d9e29240a","scripts":{"test":"npm run lint:json && node --test test/**/*.test.js","lint:json":"node scripts/lint-json.js","test:unit":"node --test test/**/*.test.js","migrate-config":"node scripts/migrate-config.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.13.0","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"displayName":"Luxtronik2","_nodeVersion":"24.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_2.1.1_1782765785159_0.03209537030154341","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"homebridge-luxtronik2","version":"2.1.2","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"author":{"name":"Christian Brandlehner"},"license":"MIT","_id":"homebridge-luxtronik2@2.1.2","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"dist":{"shasum":"a0aab2de3059127779d86e11fabc74fb88f4c6ba","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-2.1.2.tgz","fileCount":17,"integrity":"sha512-V9CgPO4iA+33YOweF9P8pWgN9v6KBpZVnrJt/aEKgo+7C/f5ip09MjEYA+CqyqUoKTv1C9Nx3vfRWmNCkgX86w==","signatures":[{"sig":"MEYCIQCMAi7URY8K5rRBv797IwVzeRHGucgGZqG/zjKQMVyVnQIhAMSRh/GWlHklRJp2s/t7SJ2TINlrto949xZOiW4Astj2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@2.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53414},"main":"index.js","config":{"urls":[{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2","title":"Star on GitHub"},{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues","title":"Report an Issue"}]},"engines":{"node":">=22.0.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"funding":[{"url":"https://github.com/sponsors/cbrandlehner","type":"github"},{"url":"https://paypal.me/CBrandlehner","type":"paypal"}],"gitHead":"f32167e03ccf077dff6e087963211e26fb35cd46","scripts":{"test":"npm run lint:json && node --test test/**/*.test.js","lint:json":"node scripts/lint-json.js","test:unit":"node --test test/**/*.test.js","migrate-config":"node scripts/migrate-config.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"repository":{"url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git","type":"git"},"_npmVersion":"11.16.0","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","directories":{},"displayName":"Luxtronik2","_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/homebridge-luxtronik2_2.1.2_1783099556977_0.18589045802710147","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"homebridge-luxtronik2","version":"2.1.3","displayName":"Luxtronik2","description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","main":"index.js","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"engines":{"node":">=22.0.0","homebridge":"^1.9.0 || ^2.0.0-beta.0"},"author":{"name":"Christian Brandlehner"},"license":"MIT","config":{"urls":[{"title":"Star on GitHub","url":"https://github.com/cbrandlehner/homebridge-luxtronik2"},{"title":"Report an Issue","url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"}]},"bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","funding":[{"type":"github","url":"https://github.com/sponsors/cbrandlehner"},{"type":"paypal","url":"https://paypal.me/CBrandlehner"}],"repository":{"type":"git","url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git"},"scripts":{"lint:json":"node scripts/lint-json.js","test":"npm run lint:json && node --test test/**/*.test.js","test:unit":"node --test test/**/*.test.js","migrate-config":"node scripts/migrate-config.js"},"gitHead":"464ab2ada5c9ebeded035df3eaa4d87982a0ee0a","_id":"homebridge-luxtronik2@2.1.3","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-KR73jZTGtBnAHHODZ7bob8ENz3KKgz2RMmpXWI3H9twstgW0qAvjoHn5b102LKtEmte59wNv6oPt3D3KH6I8Pw==","shasum":"29842cf501f40c25b9940aa1896170a74316b32b","tarball":"https://registry.npmjs.org/homebridge-luxtronik2/-/homebridge-luxtronik2-2.1.3.tgz","fileCount":19,"unpackedSize":56407,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/homebridge-luxtronik2@2.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFy1qN4tXzBB25NvnAFgR5Q0D64arcJdHZFHpnXp/Os6AiEA+Tz8SeRyexEoGrufLK3QVMpMT+nYIgQ0pzE7hOo4aL4="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cf5c7c6-ecc7-416e-af88-ef0e3b42406e"}},"directories":{},"maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/homebridge-luxtronik2_2.1.3_1783105239425_0.11903766374557145"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-15T17:55:07.904Z","modified":"2026-07-03T19:00:39.837Z","0.1.0":"2016-03-19T13:31:12.414Z","0.1.1":"2016-03-19T13:39:59.451Z","0.1.2":"2016-03-19T13:51:05.758Z","0.1.4":"2016-03-19T13:58:37.425Z","2019.18.2":"2019-05-05T10:49:21.787Z","2019.18.3":"2019-05-05T12:02:57.189Z","2019.25.3":"2019-06-22T12:36:33.128Z","2019.35.1":"2019-08-27T14:29:09.978Z","2019.35.5":"2019-08-30T16:30:39.680Z","2019.36.1":"2019-09-09T11:02:37.212Z","2020.49.4":"2020-12-02T15:45:36.103Z","2020.49.5":"2020-12-02T19:14:32.063Z","2020.50.1":"2020-12-09T09:01:25.813Z","2020.51.1":"2020-12-17T11:52:07.992Z","2020.51.2":"2020-12-17T15:39:32.119Z","2021.2.1":"2021-01-06T11:28:41.526Z","2021.2.2":"2021-01-06T12:00:23.593Z","2021.2.3":"2021-01-15T08:34:19.123Z","2021.8.1":"2021-02-15T12:52:49.943Z","2021.9.1":"2021-02-22T09:59:10.195Z","2021.15.1":"2021-04-07T13:24:25.543Z","2021.20.1":"2021-05-14T19:56:30.930Z","2021.20.2":"2021-05-14T21:49:23.470Z","2021.20.3":"2021-05-15T10:54:05.042Z","2021.24.1":"2021-06-13T10:00:31.131Z","2021.32.1":"2021-08-02T10:49:50.172Z","2021.32.2":"2021-08-04T15:45:39.999Z","2021.38.1":"2021-09-18T11:43:28.861Z","2022.1.1":"2022-01-03T14:11:16.993Z","2022.3.1":"2022-01-12T13:24:15.031Z","2022.3.2":"2022-01-13T09:38:08.150Z","2022.3.3":"2022-01-13T09:53:07.264Z","2022.18.1":"2022-04-26T08:16:54.404Z","2022.22.1":"2022-05-24T10:27:20.706Z","2022.25.1":"2022-06-14T10:31:59.348Z","2022.34.1":"2022-08-17T11:32:21.757Z","2022.45.1":"2022-11-06T15:21:36.633Z","2022.50.1":"2022-12-11T19:41:15.371Z","2032.4.1":"2023-01-19T13:45:32.989Z","1.0.0":"2023-01-21T20:52:05.625Z","1.0.1":"2023-04-16T15:57:28.276Z","1.0.2":"2023-04-18T11:20:14.935Z","1.0.3":"2023-04-19T07:50:33.843Z","1.0.4":"2023-05-10T09:07:26.897Z","1.0.5":"2023-05-10T09:18:08.592Z","1.0.6":"2023-06-28T10:03:11.452Z","1.1.0":"2023-08-14T13:48:39.143Z","1.2.0":"2023-10-03T08:32:16.018Z","1.2.1":"2024-03-19T15:45:08.559Z","1.2.2":"2024-06-17T09:33:15.188Z","1.2.4":"2024-10-10T19:39:40.594Z","1.2.5":"2024-11-12T15:32:52.757Z","1.2.6":"2025-01-06T14:05:16.103Z","1.3.1":"2025-03-11T22:05:08.940Z","1.3.2":"2025-03-15T17:55:08.155Z","1.3.3":"2025-03-15T18:14:39.649Z","1.4.0":"2025-04-21T08:13:38.104Z","1.5.2":"2025-06-02T13:56:54.848Z","1.5.3":"2026-01-08T09:22:45.001Z","1.5.5":"2026-01-08T11:48:21.954Z","1.6.0":"2026-02-11T13:06:43.281Z","1.6.1":"2026-05-09T15:32:11.696Z","1.7.0":"2026-06-18T16:14:42.519Z","2.1.1":"2026-06-29T20:43:05.329Z","2.1.2":"2026-07-03T17:25:57.116Z","2.1.3":"2026-07-03T19:00:39.551Z"},"bugs":{"url":"https://github.com/cbrandlehner/homebridge-luxtronik2/issues"},"author":{"name":"Christian Brandlehner"},"license":"MIT","homepage":"https://github.com/cbrandlehner/homebridge-luxtronik2#readme","keywords":["luxtronik2","HomeBridge","homebridge-plugin"],"repository":{"type":"git","url":"git+https://github.com/cbrandlehner/homebridge-luxtronik2.git"},"description":"Homebridge module to retrieve data from a luxtronik2 controller for heat pumps","maintainers":[{"name":"cbrandlehner","email":"christian@brandlehner.at"}],"readme":"[![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)\n\n[![GitHub stars](https://img.shields.io/github/stars/cbrandlehner/homebridge-luxtronik2?style=social&label=Star%20on%20GitHub)](https://github.com/cbrandlehner/homebridge-luxtronik2)\n[![node-current](https://img.shields.io/node/v/homebridge-luxtronik2)](https://github.com/cbrandlehner/homebridge-luxtronik2)\n[![npm](https://img.shields.io/npm/dt/homebridge-luxtronik2.svg)](https://www.npmjs.com/package/homebridge-luxtronik2)\n[![npm](https://img.shields.io/npm/l/homebridge-luxtronik2.svg)](https://github.com/cbrandlehner/homebridge-luxtronik2/blob/master/LICENSE)\n\n![Node CI](https://github.com/cbrandlehner/homebridge-luxtronik2/workflows/Node%20CI/badge.svg)\n![CodeQL](https://github.com/cbrandlehner/homebridge-luxtronik2/workflows/CodeQL/badge.svg)\n\n\n# homebridge-luxtronik2\n\nThis plugin for [Homebridge](https://github.com/nfarina/homebridge) adds temperature sensors for Luxtronik2-based heat pump controllers (Siemens, Novelan, Wolf, Alpha Innotec).\n\nThe plugin reads data over the Luxtronik2 TCP API on port 8888.\n\nNewer Luxtronik devices use a different API and are not supported. For those devices, use [this plugin](https://github.com/Bouni/luxtronik).\n\n## Install\n\nInstall and configure [Homebridge](https://github.com/nfarina/homebridge) and [Homebridge Config UI X](https://github.com/oznu/homebridge-config-ui-x#readme).\n\nOpen the configuration UI, search for \"Luxtronik2\", and install the plugin.\n\nRestart Homebridge after configuration changes.\n\nIf this plugin is useful, please **[star the repository on GitHub](https://github.com/cbrandlehner/homebridge-luxtronik2)**. Stars help others discover the plugin and show support for continued maintenance. You will also see a link at the bottom of the plugin settings screen in Homebridge Config UI.\n\n## Usage\n\nEach configured sensor appears as a separate **Temperature Sensor** accessory in the Home app.\n\nThe plugin exposes:\n\n- `CurrentTemperature` — updated when HomeKit polls the accessory\n- `StatusActive` — `false` until the first successful controller read, then `false` again after connection failures\n\nAll sensors on the same controller share one TCP client. Requests are serialized so multiple sensors do not open overlapping connections.\n\n## Configuration\n\nVersion 2.0.0 is a **platform plugin**. Add one entry under `\"platforms\"` in `config.json` (not under `\"accessories\"`).\n\nPlatform plugins are required for [child-bridges](https://github.com/homebridge/homebridge/wiki/Child-Bridges) and for [Homebridge 2.0 Matter support](https://developers.homebridge.io/homebridge/#matter-support). See [Why migrate to a platform plugin?](#why-migrate-to-a-platform-plugin) below.\n\nExamples:\n\n- [sample-config.json](sample-config.json) — multi-sensor platform\n- [sample-config.single-sensor.json](sample-config.single-sensor.json) — single sensor\n\n### Example\n\n```json\n{\n  \"platforms\": [\n    {\n      \"platform\": \"homebridge-luxtronik2\",\n      \"name\": \"Luxtronik2 Heat Pump\",\n      \"IP\": \"192.168.1.10\",\n      \"Port\": 8888,\n      \"sensors\": [\n        {\n          \"name\": \"Outdoor Temperature\",\n          \"channel\": 5\n        },\n        {\n          \"name\": \"Flow Temperature\",\n          \"channel\": 0\n        }\n      ]\n    }\n  ]\n}\n```\n\nFor one sensor, use a `sensors` array with a single entry. See [sample-config.single-sensor.json](sample-config.single-sensor.json).\n\n### Configuration reference\n\n| Field | Required | Type | Default | Description |\n|-------|----------|------|---------|-------------|\n| `platform` | yes | string | — | Must be `homebridge-luxtronik2` |\n| `name` | yes | string | `Luxtronik2` | Platform label in Homebridge |\n| `IP` | yes | string | — | Controller IP address |\n| `Port` | yes | integer | `8888` | Controller TCP port |\n| `sensors` | yes | array | — | One or more sensors to expose |\n| `sensors[].name` | yes | string | — | HomeKit accessory name |\n| `sensors[].channel` | yes | integer | — | Compacted temperature channel index |\n\n### Channel numbers\n\n`channel` values are **compacted indices** produced by the plugin decoder. They are **not** the raw keys from `lib/channellist.json`.\n\nThe config UI and schema list the most common temperature channels. Names come from the Luxtronik2 firmware (German abbreviations). Not every sensor is present on every heat pump — pick the channel that matches a value you see on the controller display or web interface.\n\n| Channel | Sensor name | Meaning |\n|---------|-------------|---------|\n| 0 | Temperatur_TVL | Heating circuit flow (supply) temperature — *Vorlauf* |\n| 1 | Temperatur_TRL | Heating circuit return temperature — *Rücklauf* |\n| 2 | Sollwert_TRL_HZ | Heating circuit return setpoint — *Sollwert* (target), *HZ* (heating) |\n| 3 | Temperatur_TRL_ext | Buffer/storage tank return temperature |\n| 4 | Temperatur_THG | Compressor hot-gas temperature — *Heißgas* |\n| 5 | Temperatur_TA | Outdoor air temperature — *Außen* (most common choice) |\n| 6 | Mitteltemperatur | 24-hour average outdoor temperature (used for heating curve/limit) |\n| 7 | Temperatur_TBW | Domestic hot water temperature (actual) — *Brauchwasser* |\n| 8 | Einst_BWS_akt | Domestic hot water target temperature (active setpoint) — *Brauchwasser Sollwert* |\n| 9 | Temperatur_TWE | Heat source inlet temperature (e.g. brine or intake air) — *Wärmequelle Ein* |\n| 10 | Temperatur_TWA | Heat source outlet temperature — *Wärmequelle Aus* |\n| 11 | Temperatur_TFB1 | Mixing circuit 1 flow temperature — *FB* (floor/mixing circuit) |\n| 12 | Sollwert_TVL_MK | Mixing circuit 1 flow setpoint — *MK* (mixing circuit) |\n| 13 | Temperatur_RFV | Room temperature from room station 1 — *Raumfühler* |\n| 14 | Temperatur_TFB2 | Mixing circuit 2 flow temperature |\n| 15 | Sollwert_TVL_MK2 | Mixing circuit 2 flow setpoint |\n| 16 | Temperatur_TSK | Solar collector temperature — *Solar Kollektor* |\n| 17 | Temperatur_TSS | Solar storage tank temperature — *Solar Speicher* |\n| 18 | Temperatur_TEE | External heat source temperature — *externe Energiequelle* |\n\nAdditional temperature channels from `channellist.json` can be used manually in `config.json` if needed.\n\n## Why migrate to a platform plugin?\n\nVersion 1.x registered each sensor as a standalone **accessory plugin** (`\"accessory\": \"homebridge-luxtronik2.temperature\"`). That worked for HomeKit, but it cannot participate in newer Homebridge features that rely on **platform plugins** and **child-bridges**.\n\n### Child-bridges\n\nA [child-bridge](https://github.com/homebridge/homebridge/wiki/Child-Bridges) lets a platform plugin run as its own separate Homebridge bridge instead of sharing the main bridge. Each child-bridge gets its own pairing PIN, accessory cache, and (optionally) its own Matter endpoint. That keeps your main bridge uncluttered and avoids HomeKit's per-bridge accessory limit.\n\nChild-bridges are configured on a platform entry with a `_bridge` block in `config.json`. Only **platform** plugins support this — legacy accessory plugins cannot run as child-bridges.\n\n### Homebridge Matter support\n\n[Homebridge 2.0](https://developers.homebridge.io/homebridge/#matter-support) can expose accessories over [Matter](https://csa-iot.org/all-solutions/matter/) in addition to HomeKit. Matter is **opt-in per bridge**: you add a `matter` block to the main `bridge` config and/or to a platform's `_bridge` (child-bridge) config. Each Matter-enabled bridge advertises separately and is paired with its own QR code.\n\nBecause Matter is configured at the bridge level, platform plugins that can run as child-bridges are the natural way to expose plugin accessories to Matter controllers (Apple Home, Google Home, Alexa, SmartThings, and others). Legacy single-accessory plugins do not fit this model.\n\nMigrating from 1.x accessory entries to a 2.x platform entry is therefore **required** — not just a config tidy-up — if you want this plugin to work with child-bridges and future Homebridge Matter support.\n\n## Migrating from 1.x\n\nVersion 2.x is a **platform-only** plugin. It does not load `\"accessory\": \"homebridge-luxtronik2.temperature\"` entries.\n\nIf your `config.json` still shows the old accessory block, the plugin **auto-migrates** legacy `homebridge-luxtronik2.temperature` entries to platform config on startup and logs a message asking you to restart Homebridge. Until that restart, a compatibility shim prevents the recurring startup error. You can also migrate manually with the script below. After migrating, you can optionally enable a [child-bridge](https://github.com/homebridge/homebridge/wiki/Child-Bridges) by adding a `_bridge` block to your platform config.\n\n### Migrate with the included script\n\nRun this once against your Homebridge config:\n\n```bash\nnpm run migrate-config -- /path/to/homebridge/config.json\n```\n\nOr:\n\n```bash\nnode scripts/migrate-config.js /path/to/homebridge/config.json\n```\n\nFor Docker/Portainer setups, the path is often `/homebridge/config.json` inside the container, or `~/docker/homebridge/config.json` on the host.\n\nThe script:\n\n- Finds `\"accessory\": \"homebridge-luxtronik2.temperature\"` entries\n- Creates equivalent `\"platform\": \"homebridge-luxtronik2\"` blocks\n- Groups multiple old accessories on the same IP/port into one platform with a `sensors` array\n- Removes the migrated accessory entries\n- Leaves unrelated accessories untouched\n\nRestart Homebridge after migrating.\n\n### Manual migration\n\n#### Before (1.x)\n\n```json\n{\n  \"accessories\": [\n    {\n      \"accessory\": \"homebridge-luxtronik2.temperature\",\n      \"name\": \"Luxtronik2\",\n      \"IP\": \"192.168.1.10\",\n      \"Port\": 8888,\n      \"Channel\": 5\n    }\n  ]\n}\n```\n\n### After (2.x)\n\n```json\n{\n  \"platforms\": [\n    {\n      \"platform\": \"homebridge-luxtronik2\",\n      \"name\": \"Luxtronik2\",\n      \"IP\": \"192.168.1.10\",\n      \"Port\": 8888,\n      \"sensors\": [\n        { \"name\": \"Luxtronik2\", \"channel\": 5 }\n      ]\n    }\n  ]\n}\n```\n\nManual migration steps:\n\n1. Remove the old `\"accessories\"` entry with `\"accessory\": \"homebridge-luxtronik2.temperature\"`.\n2. Add the equivalent `\"platforms\"` entry shown above.\n3. Restart Homebridge.\n4. Remove stale accessories from the Home app if Homebridge shows duplicates.\n\nTo expose multiple temperatures from one controller, add more entries to `sensors`.\n\n## Homebridge Config UI still shows the old accessory?\n\nThe UI reads the **installed plugin files**, not just `config.json`.\n\nIf you still see `homebridge-luxtronik2.temperature` as an accessory option, one of these is usually the cause:\n\n1. **Stale plugin code in `node_modules`** — an older build that still registered the legacy accessory type\n2. **Old version pin** — `~/docker/homebridge/package.json` still listing `\"homebridge-luxtronik2\": \"1.6.1\"`\n3. **Cached UI metadata** — restart Homebridge after updating the plugin\n\nAfter upgrading, confirm the installed plugin contains:\n\n- `config.schema.json` with `\"pluginType\": \"platform\"`\n- `index.js` that only calls `registerPlatform(...)`\n\nThen restart Homebridge (and refresh the Config UI).\n\n## Troubleshooting\n\n- Confirm the controller is reachable on port 8888.\n- Enable Homebridge debug logging with `homebridge -D`.\n- Check that `StatusActive` becomes `true` after the first successful read.\n- Verify `IP`, `Port`, and `channel` values. `Port` and `channel` must be numbers, not strings.\n\n## Support\n\n- **[Star on GitHub](https://github.com/cbrandlehner/homebridge-luxtronik2)** — the quickest way to support the project\n- [Report issues](https://github.com/cbrandlehner/homebridge-luxtronik2/issues) or ask questions on the issue tracker\n- [Sponsor the maintainer](https://github.com/sponsors/cbrandlehner) (optional)\n\n## Development\n\n```bash\nnpm test\n```\n\nTests run JSON validation and Node.js unit tests for:\n\n- Luxtronik2 protocol parsing and TCP client (`test/luxtronik2-client.test.js`)\n- Platform config normalization (`test/config.test.js`)\n- Legacy config migration (`test/migrate-config.test.js`)\n- Channel metadata (`test/channels.test.js`)\n- Platform accessory discovery (`test/platform.test.js`)\n- Accessory service wiring (`test/accessory.test.js`)\n- Temperature sensor handler behavior (`test/sensor-handler.test.js`)\n- Shared utilities (`test/tools.test.js`)\n\nSee [CHANGELOG.md](CHANGELOG.md) for release notes.","readmeFilename":"README.md"}