Ma chère et tendre a fait l’acquisition d’une multiprise connectée de la marque Meross. Il s’agit du modèle MSS425F comportant 4 connecteurs, une rangée de 4 prises USB ainsi qu’un bouton poussoir qui permet d’activer ou désactiver l’ensemble du bloc. Il est possible de commander séparemment chaque prise à l’aide de l’application mobile.
À ce propos, j’ai du passer par un téléphone sous Android pour pouvoir connecter le dispositif au réseau sans fil, l’enregistrement passant par un réseau fourni par l’appareil et il semble que les dernières version d’iOS ne permettent plus la bascule d’un réseau à l’autre au sein d’une application. Cela dit, ça fonctionne parfaitement ensuite. L’application permet également de définir des scènes avec le contrôle de plusieurs dispositifs par exemple ou des routines, c’est à dire la planification d’événements. J’y ai branché plusieurs appareils de mon bureau salon, l’écran d’ordinateur, le chargeur d’ordinateur, la lampe de bureau et la télé et j’ai programmé l’allumage de l’écran tous les matins. Il est possible de lier le compte créé chez Meross à Alexa ou Google Assistant afin d’utiliser ces derniers pour contrôler les appareils Meross - mais évidemment, je n’utilise pas ces services. C’est également possible avec Smarthings, l’écosystème dédié à la domotique de Samsung. Ainsi, j’ai pu ajouter ma multiprise dans l’application éponyme pour pouvoir activer ou désactiver la prise correspondante à la télé et donc la télé elle-même. Je ne me souviens pas avoir configuré l’application pour ce faire mais les contrôles sont assez basiques et la télécommande infrarouge est souvent plus pratique et plus rapide à attraper. Il manque par exemple la possibilité de passer d’une application à une autre sans passer par les menus du téléviseur. J’ai donc deux applications pour contrôler ma multiprise et une pour la télé mais j’ai toujours besoin de déverrouiller mon téléphone (en fait non, on peut le faire depuis le centre de contrôle aussi) et de mes doigts.
Là, je me dis “mais qu’est ce que ça serait bien de pouvoir le faire avec Siri”. C’est possible avec certains modèles de multiprises de la marque mais pas avec celle en ma possession et bien entendu, pas avec une télévision Samsung. Et là, je découvre homebridge, un projet qui permet d’apporter la compatibilité HomeKit à des appareils pour lesquels ça n’est pas prévu à l’aide de plugins, et il en existe justement un pour les appareils de la marque Meross et un pour les téléviseurs tournant sous Tizen. C’est écrit en node, donc quoi de mieux qu’une zone native de mon serveur smartos pour l’héberger :
{
"brand": "joyent",
"image_uuid": "1d05e788-5409-11eb-b12f-037bd7fee4ee",
"alias": "hb01",
"hostname": "hb01",
"max_physical_memory": 384,
"quota": 20,
"dns_domain": "local",
"resolvers": ["192.168.1.1"],
"nics": [
{
"nic_tag": "admin",
"ip": "192.168.1.2",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1"
}
],
"customer_metadata": {
"root_authorized_keys": "ssh-rsa ma-clé-publique",
"user-script" : "/usr/sbin/mdata-get root_authorized_keys > ~root/.ssh/authorized_keys ; /usr/sbin/mdata-get root_authorized_keys > ~admin/.ssh/authorized_keys",
"user-script" : "/opt/local/bin/sm-set-timezone Europe/Paris"
}
}
Une fois la zone créée, il suffit de lancer npm pour installer homebridge et son interface graphique.
# npm install -g --unsafe-perm homebridge homebridge-config-ui-x
npm WARN deprecated class-transformer@0.3.2: This release contains a breaking change from 0.3.1 but otherwise functions properly. Please read the changelog on Github to learn more.
npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
/opt/local/bin/homebridge-config-ui-x -> /opt/local/lib/node_modules/homebridge-config-ui-x/dist/bin/standalone.js
/opt/local/bin/hb-service -> /opt/local/lib/node_modules/homebridge-config-ui-x/dist/bin/hb-service.js
/opt/local/bin/homebridge -> /opt/local/lib/node_modules/homebridge/bin/homebridge
> node-pty-prebuilt-multiarch@0.10.1-pre.3 install /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch
> node scripts/check-prebuild.js || prebuild-install || node scripts/install.js
On peut lancer l’interface pour voir à quoi ça ressemble.
# homebridge-config-ui-x
innerError Error: Cannot find module '../build/Debug/pty.node'
Require stack:
- /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/prebuild-loader.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/unixTerminal.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/index.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/dist/main.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/dist/bin/standalone.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/prebuild-loader.js:10:15)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/prebuild-loader.js',
'/opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/unixTerminal.js',
'/opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/index.js',
'/opt/local/lib/node_modules/homebridge-config-ui-x/dist/main.js',
'/opt/local/lib/node_modules/homebridge-config-ui-x/dist/bin/standalone.js'
]
}
[4/22/2021, 12:41:05 PM] [Homebridge UI] Error: Cannot find module '../build/Release/pty.node'
Require stack:
- /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/prebuild-loader.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/unixTerminal.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/lib/index.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/dist/main.js
- /opt/local/lib/node_modules/homebridge-config-ui-x/dist/bin/standalone.js
[4/22/2021, 12:41:05 PM] [Homebridge UI] [node-pty] Node.js v14.15.4
[4/22/2021, 12:41:05 PM] [Homebridge UI] [node-pty] Failed to load node-pty module
[4/22/2021, 12:41:05 PM] [Homebridge UI] [node-pty] This could be because the installation of this plugin did not complete successfully or you may have recently upgraded Node.js to a new major version.
[4/22/2021, 12:41:05 PM] [Homebridge UI] [node-pty] Follow the steps below to resolve this issue.
[4/22/2021, 12:41:05 PM] [Homebridge UI] [node-pty] Trying to rebuild automatically...
[4/22/2021, 12:41:05 PM] [Homebridge UI] [node-pty] Path: /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch
[4/22/2021, 12:41:15 PM] [Homebridge UI] [node-pty] Failed to rebuild npm modules automatically. Manual operation is now required.
[4/22/2021, 12:41:15 PM] [Homebridge UI] [node-pty] From the terminal run these commands (exact commands may vary):
[4/22/2021, 12:41:15 PM] [Homebridge UI] cd /opt/local/lib/node_modules/homebridge-config-ui-x
[4/22/2021, 12:41:15 PM] [Homebridge UI] sudo npm rebuild --unsafe-perm
Zut, il nous manque le module node-pty qu’il va falloir compiler. On installe donc gmake et gcc.
# pkgin in gmake gcc9-9.3.0
calculating dependencies...done.
3 packages to install:
gmake-4.2.1nb1 gcc9-9.3.0 binutils-2.35.1nb3
0 to refresh, 0 to upgrade, 3 to install
148M to download, 511M to install
proceed ? [Y/n]
gmake-4.2.1nb1.tgz 100% 304KB 151.8KB/s 00:02
binutils-2.35.1nb3.tgz 100% 21MB 212.1KB/s 01:42
gcc9-9.3.0.tgz 100% 127MB 196.4KB/s 11:00
installing gmake-4.2.1nb1...
gmake-4.2.1nb1: registering info file /opt/local/info/make.info
installing gcc9-9.3.0...
binutils-2.35.1nb3: registering info file /opt/local/info/as.info
binutils-2.35.1nb3: registering info file /opt/local/info/bfd.info
binutils-2.35.1nb3: registering info file /opt/local/info/binutils.info
binutils-2.35.1nb3: registering info file /opt/local/info/gprof.info
binutils-2.35.1nb3: registering info file /opt/local/info/ld.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/cpp.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/cppinternals.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/gcc.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/gccgo.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/gccinstall.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/gccint.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/gfortran.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/libgomp.info
gcc9-9.3.0: registering info file /opt/local/gcc9/info/libquadmath.info
installing binutils-2.35.1nb3...
binutils-2.35.1nb3: unregistering info file /opt/local/info/as.info
binutils-2.35.1nb3: unregistering info file /opt/local/info/bfd.info
binutils-2.35.1nb3: unregistering info file /opt/local/info/binutils.info
binutils-2.35.1nb3: unregistering info file /opt/local/info/gprof.info
binutils-2.35.1nb3: unregistering info file /opt/local/info/ld.info
binutils-2.35.1nb3: registering info file /opt/local/info/as.info
binutils-2.35.1nb3: registering info file /opt/local/info/bfd.info
binutils-2.35.1nb3: registering info file /opt/local/info/binutils.info
binutils-2.35.1nb3: registering info file /opt/local/info/gprof.info
binutils-2.35.1nb3: registering info file /opt/local/info/ld.info
pkg_install warnings: 0, errors: 0
reading local summary...
processing local summary...
marking gmake-4.2.1nb1 as non auto-removable
marking gcc9-9.3.0 as non auto-removable
La compilation se fait avec la commande npm rebuild dans le répertoire idoine :
# cd /opt/local/lib/node_modules/homebridge-config-ui-x
# npm rebuild --unsafe-perm
> @nestjs/core@7.6.5 postinstall /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/core
> opencollective || exit 0
Thanks for installing nest 🙏
Please consider donating to our open collective
to help us maintain this package.
Number of contributors: 0
Number of backers: 533
Annual budget: $62,727
Current balance: $726
👉 Become a partner: https://opencollective.com/nest/donate
> core-js-pure@3.11.0 postinstall /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/core-js-pure
> node -e "try{require('./postinstall')}catch(e){}"
Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock
Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
> node-pty-prebuilt-multiarch@0.10.1-pre.3 install /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch
> node scripts/check-prebuild.js || prebuild-install || node scripts/install.js
Prebuild binary missing for platform.
prebuild-install WARN install No prebuilt binaries found (target=14.15.4 runtime=node arch=x64 libc= platform=sunos)
make: Entering directory '/opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/build'
CXX(target) Release/obj.target/pty/src/unix/pty.o
../src/unix/pty.cc: In function 'void pty_after_waitpid(uv_async_t*)':
../src/unix/pty.cc:512:43: warning: 'void* std::memset(void*, int, size_t)' writing to an object of type 'class Nan::Persistent<v8::Function>' with no trivial copy-assignment [-Wclass-memaccess]
512 | memset(&baton->cb, -1, sizeof(baton->cb));
| ^
In file included from ../../nan/nan.h:405,
from ../src/unix/pty.cc:20:
../../nan/nan_persistent_12_inl.h:12:40: note: 'class Nan::Persistent<v8::Function>' declared here
12 | template<typename T, typename M> class Persistent :
| ^~~~~~~~~~
In file included from ../../nan/nan.h:56,
from ../src/unix/pty.cc:20:
../src/unix/pty.cc: At global scope:
/root/.cache/node-gyp/14.15.4/include/node/node.h:758:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Object>)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-functio
n-type]
758 | (node::addon_register_func) (regfunc), \
| ^
/root/.cache/node-gyp/14.15.4/include/node/node.h:792:3: note: in expansion of macro 'NODE_MODULE_X'
792 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
| ^~~~~~~~~~~~~
../src/unix/pty.cc:734:1: note: in expansion of macro 'NODE_MODULE'
734 | NODE_MODULE(pty, init)
| ^~~~~~~~~~~
SOLINK_MODULE(target) Release/obj.target/pty.node
COPY Release/pty.node
make: Leaving directory '/opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch/build'
> node-pty-prebuilt-multiarch@0.10.1-pre.3 postinstall /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch
> node scripts/post-install.js
@nestjs/common@7.6.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/common
axios@0.21.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/axios
follow-redirects@1.13.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/follow-redirects
iterare@1.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/iterare
tslib@2.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tslib
uuid@8.3.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/uuid
@nestjs/core@7.6.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/core
@nuxtjs/opencollective@0.3.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nuxtjs/opencollective
chalk@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/chalk
ansi-styles@4.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ansi-styles
color-convert@2.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/color-convert
color-name@1.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/color-name
supports-color@7.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/supports-color
has-flag@4.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/has-flag
consola@2.15.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/consola
node-fetch@2.6.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-fetch
fast-safe-stringify@2.0.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fast-safe-stringify
object-hash@2.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/object-hash
path-to-regexp@3.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/path-to-regexp
@nestjs/jwt@7.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/jwt
@types/jsonwebtoken@8.5.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@types/jsonwebtoken
@types/node@14.14.41 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@types/node
jsonwebtoken@8.5.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/jsonwebtoken
jws@3.2.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/jws
jwa@1.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/jwa
buffer-equal-constant-time@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/buffer-equal-constant-time
ecdsa-sig-formatter@1.0.11 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ecdsa-sig-formatter
safe-buffer@5.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/safe-buffer
lodash.includes@4.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.includes
lodash.isboolean@3.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.isboolean
lodash.isinteger@4.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.isinteger
lodash.isnumber@3.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.isnumber
lodash.isplainobject@4.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.isplainobject
lodash.isstring@4.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.isstring
lodash.once@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash.once
ms@2.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ms
semver@5.7.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/jsonwebtoken/node_modules/semver
@nestjs/passport@7.1.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/passport
@nestjs/platform-fastify@7.6.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/platform-fastify
fastify@3.9.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify
abstract-logging@2.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/abstract-logging
ajv@6.12.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ajv
fast-deep-equal@3.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fast-deep-equal
fast-json-stable-stringify@2.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fast-json-stable-stringify
json-schema-traverse@0.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/json-schema-traverse
uri-js@4.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/uri-js
punycode@2.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/punycode
avvio@7.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/avvio
archy@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/archy
debug@4.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/debug
ms@2.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/debug/node_modules/ms
fastq@1.11.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastq
reusify@1.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/reusify
queue-microtask@1.2.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/queue-microtask
fast-json-stringify@2.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fast-json-stringify
deepmerge@4.2.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/deepmerge
rfdc@1.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/rfdc
string-similarity@4.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/string-similarity
fastify-error@0.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-error
fastify-warning@0.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-warning
find-my-way@3.0.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/find-my-way
fast-decode-uri-component@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fast-decode-uri-component
safe-regex2@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/safe-regex2
ret@0.2.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ret
semver-store@0.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/semver-store
flatstr@1.0.12 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/flatstr
light-my-request@4.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/light-my-request
cookie@0.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/cookie
readable-stream@3.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/readable-stream
inherits@2.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/inherits
string_decoder@1.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/string_decoder
util-deprecate@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/util-deprecate
set-cookie-parser@2.4.8 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/set-cookie-parser
pino@6.11.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/pino
fast-redact@3.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fast-redact
pino-std-serializers@3.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/pino-std-serializers
quick-format-unescaped@4.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/quick-format-unescaped
sonic-boom@1.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/sonic-boom
atomic-sleep@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/atomic-sleep
proxy-addr@2.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/proxy-addr
forwarded@0.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/forwarded
ipaddr.js@1.9.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ipaddr.js
secure-json-parse@2.4.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/secure-json-parse
semver@7.3.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/semver
lru-cache@6.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lru-cache
yallist@4.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/yallist
tiny-lru@7.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tiny-lru
fastify-cors@5.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-cors
fastify-plugin@3.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-plugin
vary@1.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/vary
fastify-formbody@5.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-formbody
fastify-plugin@2.3.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-formbody/node_modules/fastify-plugin
middie@5.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/middie
path-to-regexp@6.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/middie/node_modules/path-to-regexp
@nestjs/platform-socket.io@7.6.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/platform-socket.io
socket.io@2.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io
debug@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io/node_modules/debug
engine.io@3.4.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io
accepts@1.3.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/accepts
mime-types@2.1.30 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mime-types
mime-db@1.47.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mime-db
negotiator@0.6.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/negotiator
base64id@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/base64id
cookie@0.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io/node_modules/cookie
debug@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io/node_modules/debug
engine.io-parser@2.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-parser
after@0.8.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/after
arraybuffer.slice@0.0.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/arraybuffer.slice
base64-arraybuffer@0.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/base64-arraybuffer
blob@0.0.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/blob
has-binary2@1.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/has-binary2
isarray@2.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/isarray
ws@7.4.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ws
socket.io-adapter@1.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-adapter
socket.io-client@2.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client
backo2@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/backo2
base64-arraybuffer@0.1.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client/node_modules/base64-arraybuffer
component-bind@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/component-bind
component-emitter@1.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/component-emitter
debug@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client/node_modules/debug
engine.io-client@3.4.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client
component-emitter@1.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client/node_modules/component-emitter
component-inherit@0.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/component-inherit
debug@3.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client/node_modules/debug
ms@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client/node_modules/ms
has-cors@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/has-cors
indexof@0.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/indexof
parseqs@0.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client/node_modules/parseqs
parseuri@0.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client/node_modules/parseuri
ws@6.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/engine.io-client/node_modules/ws
async-limiter@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/async-limiter
xmlhttprequest-ssl@1.5.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/xmlhttprequest-ssl
yeast@0.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/yeast
object-component@0.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/object-component
parseqs@0.0.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/parseqs
better-assert@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/better-assert
callsite@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/callsite
parseuri@0.0.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/parseuri
socket.io-parser@3.3.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client/node_modules/socket.io-parser
component-emitter@1.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/component-emitter
debug@3.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/debug
ms@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/ms
to-array@0.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/to-array
socket.io-parser@3.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-parser
debug@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/socket.io-parser/node_modules/debug
@nestjs/swagger@4.7.12 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/swagger
@nestjs/mapped-types@0.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/mapped-types
lodash@4.17.20 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/lodash
@nestjs/websockets@7.6.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@nestjs/websockets
@oznu/hap-client@1.7.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@oznu/hap-client
bonjour@3.5.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/bonjour
array-flatten@2.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/array-flatten
deep-equal@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/deep-equal
is-arguments@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-arguments
call-bind@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/call-bind
function-bind@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/function-bind
get-intrinsic@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/get-intrinsic
has@1.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/has
has-symbols@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/has-symbols
is-date-object@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-date-object
is-regex@1.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-regex
object-is@1.1.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/object-is
define-properties@1.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/define-properties
object-keys@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/object-keys
regexp.prototype.flags@1.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/regexp.prototype.flags
dns-equal@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/dns-equal
dns-txt@2.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/dns-txt
buffer-indexof@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/buffer-indexof
multicast-dns@6.2.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/multicast-dns
dns-packet@1.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/dns-packet
ip@1.1.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ip
thunky@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/thunky
multicast-dns-service-types@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/multicast-dns-service-types
decamelize@3.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/decamelize
xregexp@4.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/xregexp
@babel/runtime-corejs3@7.13.17 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@babel/runtime-corejs3
core-js-pure@3.11.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/core-js-pure
regenerator-runtime@0.13.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/regenerator-runtime
inflection@1.12.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/inflection
source-map-support@0.5.19 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/source-map-support
buffer-from@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/buffer-from
source-map@0.6.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/source-map
class-transformer@0.3.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/class-transformer
class-validator@0.13.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/class-validator
@types/validator@13.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@types/validator
libphonenumber-js@1.9.16 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/libphonenumber-js
validator@13.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/validator
commander@6.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/commander
dayjs@1.10.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/dayjs
fastify-multipart@3.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-multipart
busboy@0.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/busboy
dicer@0.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/dicer
streamsearch@0.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/streamsearch
end-of-stream@1.4.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/end-of-stream
once@1.4.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/once
wrappy@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/wrappy
hexoid@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/hexoid
stream-wormhole@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/stream-wormhole
fastify-static@3.3.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-static
glob@7.1.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/glob
fs.realpath@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fs.realpath
inflight@1.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/inflight
minimatch@3.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/minimatch
brace-expansion@1.1.11 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/brace-expansion
balanced-match@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/balanced-match
concat-map@0.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/concat-map
path-is-absolute@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/path-is-absolute
send@0.17.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/send
debug@2.6.9 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/send/node_modules/debug
ms@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/send/node_modules/debug/node_modules/ms
depd@1.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/depd
destroy@1.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/destroy
encodeurl@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/encodeurl
escape-html@1.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/escape-html
etag@1.8.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/etag
fresh@0.5.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fresh
http-errors@1.7.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/http-errors
setprototypeof@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/setprototypeof
statuses@1.5.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/statuses
toidentifier@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/toidentifier
mime@1.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mime
ms@2.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/send/node_modules/ms
on-finished@2.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/on-finished
ee-first@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ee-first
range-parser@1.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/range-parser
fastify-swagger@3.5.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fastify-swagger
@types/swagger-schema-official@2.0.21 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@types/swagger-schema-official
js-yaml@3.14.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/js-yaml
argparse@1.0.10 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/argparse
sprintf-js@1.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/sprintf-js
esprima@4.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/esprima
json-schema-resolver@1.2.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/json-schema-resolver
fs-extra@9.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fs-extra
at-least-node@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/at-least-node
graceful-fs@4.2.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/graceful-fs
jsonfile@6.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/jsonfile
universalify@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/universalify
helmet@4.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/helmet
node-cache@5.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-cache
clone@2.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/clone
node-pty-prebuilt-multiarch@0.10.1-pre.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-pty-prebuilt-multiarch
nan@2.14.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/nan
prebuild-install@6.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/prebuild-install
detect-libc@1.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/detect-libc
expand-template@2.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/expand-template
github-from-package@0.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/github-from-package
minimist@1.2.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/minimist
mkdirp-classic@0.5.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mkdirp-classic
napi-build-utils@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/napi-build-utils
node-abi@2.26.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-abi
semver@5.7.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-abi/node_modules/semver
noop-logger@0.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/noop-logger
npmlog@4.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/npmlog
are-we-there-yet@1.1.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/are-we-there-yet
delegates@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/delegates
readable-stream@2.3.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/are-we-there-yet/node_modules/readable-stream
core-util-is@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/core-util-is
isarray@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/are-we-there-yet/node_modules/isarray
process-nextick-args@2.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/process-nextick-args
safe-buffer@5.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/are-we-there-yet/node_modules/safe-buffer
string_decoder@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/are-we-there-yet/node_modules/string_decoder
console-control-strings@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/console-control-strings
gauge@2.7.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/gauge
aproba@1.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/aproba
has-unicode@2.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/has-unicode
object-assign@4.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/object-assign
signal-exit@3.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/signal-exit
string-width@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/string-width
code-point-at@1.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/code-point-at
is-fullwidth-code-point@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-fullwidth-code-point
number-is-nan@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/number-is-nan
strip-ansi@3.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/strip-ansi
ansi-regex@2.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ansi-regex
wide-align@1.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/wide-align
set-blocking@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/set-blocking
pump@3.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/pump
rc@1.2.8 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/rc
deep-extend@0.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/deep-extend
ini@1.3.8 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ini
strip-json-comments@2.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/strip-json-comments
simple-get@3.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/simple-get
decompress-response@4.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/decompress-response
mimic-response@2.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mimic-response
simple-concat@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/simple-concat
tar-fs@2.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tar-fs
chownr@1.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/chownr
tar-stream@2.2.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tar-stream
bl@4.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/bl
buffer@5.7.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/buffer
base64-js@1.5.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/base64-js
ieee754@1.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ieee754
fs-constants@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fs-constants
tunnel-agent@0.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tunnel-agent
node-schedule@1.3.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/node-schedule
cron-parser@2.18.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/cron-parser
is-nan@1.3.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-nan
moment-timezone@0.5.33 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/moment-timezone
moment@2.29.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/moment
long-timeout@0.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/long-timeout
sorted-array-functions@1.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/sorted-array-functions
ora@5.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ora
cli-cursor@3.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/cli-cursor
restore-cursor@3.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/restore-cursor
onetime@5.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/onetime
mimic-fn@2.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mimic-fn
cli-spinners@2.6.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/cli-spinners
is-interactive@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-interactive
log-symbols@4.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/log-symbols
is-unicode-supported@0.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-unicode-supported
strip-ansi@6.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ora/node_modules/strip-ansi
ansi-regex@5.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ora/node_modules/ansi-regex
wcwidth@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/wcwidth
defaults@1.0.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/defaults
clone@1.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/defaults/node_modules/clone
p-limit@3.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/p-limit
yocto-queue@0.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/yocto-queue
passport@0.4.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/passport
passport-strategy@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/passport-strategy
pause@0.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/pause
passport-jwt@4.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/passport-jwt
pino-pretty@4.7.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/pino-pretty
@hapi/bourne@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/@hapi/bourne
args@5.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args
camelcase@5.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/camelcase
chalk@2.4.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args/node_modules/chalk
ansi-styles@3.2.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args/node_modules/ansi-styles
color-convert@1.9.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args/node_modules/color-convert
color-name@1.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args/node_modules/color-name
escape-string-regexp@1.0.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/escape-string-regexp
supports-color@5.5.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args/node_modules/supports-color
has-flag@3.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/args/node_modules/has-flag
leven@2.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/leven
mri@1.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mri
dateformat@4.5.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/dateformat
jmespath@0.15.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/jmespath
joycon@2.2.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/joycon
split2@3.2.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/split2
strip-json-comments@3.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/pino-pretty/node_modules/strip-json-comments
reflect-metadata@0.1.13 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/reflect-metadata
rxjs@6.6.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/rxjs
tslib@1.14.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/rxjs/node_modules/tslib
systeminformation@4.34.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/systeminformation
tail@2.2.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tail
tar@6.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tar
chownr@2.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tar/node_modules/chownr
fs-minipass@2.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fs-minipass
minipass@3.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/minipass
minizlib@2.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/minizlib
mkdirp@1.0.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/mkdirp
tcp-port-used@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/tcp-port-used
is2@2.0.6 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is2
deep-is@0.1.3 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/deep-is
ip-regex@4.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/ip-regex
is-url@1.2.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/is-url
unzipper@0.10.11 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/unzipper
big-integer@1.6.48 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/big-integer
binary@0.3.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/binary
buffers@0.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/buffers
chainsaw@0.1.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/chainsaw
traverse@0.3.9 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/traverse
bluebird@3.4.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/bluebird
buffer-indexof-polyfill@1.0.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/buffer-indexof-polyfill
duplexer2@0.1.4 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/duplexer2
readable-stream@2.3.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/duplexer2/node_modules/readable-stream
isarray@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/duplexer2/node_modules/isarray
safe-buffer@5.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/duplexer2/node_modules/safe-buffer
string_decoder@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/duplexer2/node_modules/string_decoder
fstream@1.0.12 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fstream
mkdirp@0.5.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/fstream/node_modules/mkdirp
rimraf@2.7.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/rimraf
listenercount@1.0.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/listenercount
readable-stream@2.3.7 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/unzipper/node_modules/readable-stream
isarray@1.0.0 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/unzipper/node_modules/isarray
safe-buffer@5.1.2 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/unzipper/node_modules/safe-buffer
string_decoder@1.1.1 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/unzipper/node_modules/string_decoder
setimmediate@1.0.5 /opt/local/lib/node_modules/homebridge-config-ui-x/node_modules/setimmediate
Il faudra refaire cette opération à chaque mise à jour du plugin.
On peut maintenant lancer le serveur.
# homebridge
Initializing HAP-NodeJS v0.9.4...
[4/24/2021, 9:18:53 AM] config.json (/root/.homebridge/config.json) not found.
[4/24/2021, 9:18:53 AM] ---
[4/24/2021, 9:18:54 AM] Loaded plugin: homebridge-config-ui-x@4.41.0
[4/24/2021, 9:18:54 AM] Registering platform 'homebridge-config-ui-x.config'
[4/24/2021, 9:18:54 AM] ---
Preparing Advertiser for 'Homebridge CAD8' using bonjour-hap backend!
Setup Payload:
X-HM://0023ISYWYRU1W
Scan this code with your HomeKit app on your iOS device to pair with Homebridge:
ICI IL Y A UN QR CODE EN MODE TEXTE MAIS CA NE SE VOIT PAS
Or enter this code with your HomeKit app on your iOS device to pair with Homebridge:
┌────────────┐
│ 031-45-154 │
└────────────┘
Starting to advertise 'Homebridge CAD8' using bonjour-hap backend!
[4/24/2021, 9:18:55 AM] Homebridge v1.3.4 (Homebridge) is running on port 44488.
Le serveur est bien démarré et nous a affiché un code QR qu’on peut scanner pour l’ajouter dans l’application Maison du téléphone - on peut aussi le faire manuellement en entrant le code correspondant. Il n’a pas démarré l’interface graphique, mais c’est parce qu’on ne lui a pas demandé de le faire. Pour cela, il suffit de démarrer l’interface, naviguer dans les plugins, cliquer sur celui de l’interface - c’est le seul normalement, puis sur le bouton réglages et sauvegarder la configuration. Ça revient à copier le fichier de configuration donné en exemple et de l’éditer pour ajouter ce qui suit. C’est fait par la commande hb-service
, mais elle ne supporte que les systèmes d’exploitations les plus répandus.
# cp /opt/local/lib/node_modules/homebridge/config-sample.json .homebridge/config.json
Il faut ajouter le contenu suivant :
"platforms": [
{
"name": "Config",
"port": 8080,
"auth": "form",
"theme": "auto",
"tempUnits": "c",
"lang": "auto",
"platform": "config"
}
]
Voici donc l’interface graphique avec les mêmes informations.
L’installation du plugin meross se fait de la même manière.
# npm install -g --unsafe-perm homebridge-meross
npm WARN notsup Unsupported engine for homebridge-meross@5.0.2: wanted: {"node":">=14.16.0","homebridge":">=1.3.4"} (current: {"node":"14.15.4","npm":"6.14.9"})
npm WARN notsup Not compatible with your version of node/npm: homebridge-meross@5.0.2
+ homebridge-meross@5.0.2
added 5 packages from 12 contributors in 8.837s
# npm install -g --unsafe-perm homebridge-samsung-tizen
+ homebridge-samsung-tizen@5.0.1
added 12 packages from 8 contributors in 2.439s
# npm install -g --unsafe-perm homebridge-ipmi
+ homebridge-ipmi@1.2.0
added 2 packages from 2 contributors in 3.873s
La configuration de ce dernier nécessite de capturer les paramètres sign
,timestamp
, et messageId
des requêtes envoyées par l’application Meross aux serveurs de ce dernier comme décrit sur cette page.
Il faut ensuite procéder de la même manière que pour l’interface graphique, dans la page des plugins, il faut cliquer sur le lien Réglages et on se retrouve face à cette page :
Le nom d’appareil indiqué en haut sera celui connu dans l’application Maison et par Siri. On peut récupérer le modèle dans l’application Meross ou bien sur la boîte du produit, l’adresse IP n’est pas bien compliquée à connaître mais il est assez fortement recommandé d’en utiliser une statique (homebridge discute directement avec l’appareil) et on a capturé les autres paramètres avec une étoile rouge un peu plus haut. Le réglage “Device Channel” permet de cibler le bloc multiprise dans son ensemble (avec la valeur 0) ou bien une prise en particulier (numérotées à partir de 1 donc). Pour pouvoir contrôler chaque élément séparément, il faut donc créer un device pour chacun. Cliquer sur “Enregistrer” pour inscrire les modifications dans le fichier de configuration. Voici donc ce que ça donne :
{
"name": "Meross",
"devices": [
{
"name": "La Multiprise du Bureau",
"model": "MSS425F",
"deviceUrl": "192.168.1.3",
"channel": 0,
"messageId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": 1111111111,
"sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"name": "Prise écran",
"model": "MSS425F",
"deviceUrl": "192.168.1.3",
"channel": 1,
"messageId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": 1111111111,
"sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"name": "Prise ordinateur",
"model": "MSS425F",
"deviceUrl": "192.168.1.3",
"channel": 2,
"messageId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": 1111111111,
"sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"name": "Prise lampe",
"model": "MSS425F",
"deviceUrl": "192.168.1.3",
"channel": 3,
"messageId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": 1111111111,
"sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"name": "Prise télé",
"model": "MSS425F",
"deviceUrl": "192.168.1.3",
"channel": 4,
"messageId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"timestamp": 1111111111,
"sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
],
"_bridge": {
"username": "XX:XX:XX:XX:XX:XX",
"port": 53356
},
"platform": "Meross"
}
On a configuré le plugin, il faut maintenant enregistrer le pont en cliquant sur la clé puis sur “Réglages du pont” et cliquer sur le bouton poussoir pour l’activer.
Comme indiqué, il faut redémarrer. Une fois que c’est fait, la même page affiche maintenant un code QR à scanner dans l’application Maison. La procédure est décrite ici. Il y aura un avertissement indiquant que l’accessoire n’est pas certifié, et pour cause.
Les différents éléments configurés précédemment apparaîssent maintenant sous forme d’interrupteurs dans l’application Maison et il est également possible de les contrôler à partir de Siri.
Étape suivante, la télé.
Comme indiqué dans la documentation du plugin, on peut vérifier que la télé est compatible :
# curl 192.168.1.4:8001/api/v2/
{"device":{"FrameTVSupport":"false","GamePadSupport":"true","ImeSyncedSupport":"true","Language":"fr_FR","OS":"Tizen","PowerState":"standby","TokenAuthSupport":"true","VoiceSupport":"false","WallScreenRatio":"0","WallService":"false","countryCode":"FR","description":"Samsung DTV RCR","developerIP":"0.0.0.0","developerMode":"0","duid":"uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","firmwareVersion":"Unknown","id":"uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ip":"192.168.1.4","model":"19_MUSEL_UHD_BASIC","modelName":"UE65RU7305KXXC","name":"[TV] Samsung 7 Series (65)","networkType":"wireless","resolution":"3840x2160","smartHubAgreement":"true","ssid":"xx:xx:xx:xx:xx:xx","type":"Samsung SmartTV","udn":"uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","wifiMac":"00:C3:F4:E2:7C:8A"},"id":"uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","isSupport":"{\"DMP_DRM_PLAYREADY\":\"false\",\"DMP_DRM_WIDEVINE\":\"false\",\"DMP_available\":\"true\",\"EDEN_available\":\"true\",\"FrameTVSupport\":\"false\",\"ImeSyncedSupport\":\"true\",\"TokenAuthSupport\":\"true\",\"remote_available\":\"true\",\"remote_fourDirections\":\"true\",\"remote_touchPad\":\"true\",\"remote_voiceControl\":\"false\"}\n","name":"[TV] Samsung 7 Series (65)","remote":"1.0","type":"Samsung SmartTV","uri":"http://192.168.1.4:8001/api/v2/","version":"2.0.25"}
L’installation du plugin est similaire :
# npm install -g --unsafe-perm homebridge-samsung-tizen
+ homebridge-samsung-tizen@5.0.1
added 12 packages from 8 contributors in 2.861s
╭────────────────────────────────────────────────────────────────╮
│ │
│ New major version of npm available! 6.14.9 -> 7.11.2 │
│ Changelog: https://github.com/npm/cli/releases/tag/v7.11.2 │
│ Run npm install -g npm to update! │
│ │
╰────────────────────────────────────────────────────────────────╯
Comme pour l’autre plugin, il faut se rendre sur la page du même nom et cliquer sur “Réglages” et ajouter l’appareil.
Il est possible de cocher la case “List Applications List” afin que le plugin affiche la liste des applications installées sur la télé (si elle est joignable sur le réseau) sur la sortie standard au prochain démarrage.
Il faut choisir le nom qui apparaîtra dans l’application Maison et renseigner l’adresse IP (statique, c’est toujours mieux) ainsi que l’adresse MAC qui servira à réveiller le téléviseur puis cliquer sur “Enregistrer”.
Dans la configuration avancée, on peut ajouter des “Inputs” qui apparaîtront sous la forme de liste déroulante associée à l’appareil dans l’application Maison, j’y ai mis mes applications préférées. On peut également ajouter des interrupteurs qui eux apparaîtront indépendemment mais associés à la télé, j’y ai mis celles que j’utilise le plus. Voici ce que ça donne dans le fichier de configuration :
{
"app_list": true,
"devices": [
{
"name": "Télé salon",
"ip": "192.168.1.4",
"mac": "a0:b1:c2:d3:e4:f5",
"inputs": [
{
"type": "app",
"name": "Netflix",
"value": "11101200001"
},
{
"type": "app",
"name": "YouTube",
"value": "111299001912"
},
{
"type": "app",
"name": "Plex",
"value": "3201512006963"
},
{
"type": "app",
"name": "Prime Video",
"value": "3201512006785"
},
{
"type": "app",
"name": "Disney+",
"value": "3201901017640"
},
{
"type": "app",
"name": "Apple TV",
"value": "3201807016597"
},
{
"type": "app",
"name": "Spotify",
"value": "3201606009684"
},
{
"type": "app",
"name": "Molotov",
"value": "3201611011210"
}
],
"switches": [
{
"name": "Netflix",
"power": true,
"app": "11101200001"
},
{
"name": "Couper le son",
"mute": true
},
{
"name": "Molotov",
"power": true,
"app": "3201611011210"
},
{
"name": "Amazon Prime",
"power": true,
"app": "3201512006785"
},
{
"name": "Apple TV+",
"power": true,
"app": "3201807016597"
}
]
}
],
"_bridge": {
"username": "XX:XX:XX:XX:XX:XX",
"port": 51863
},
"platform": "SamsungTizen"
}
]
Comme pour le plugin précédent, il faut activer le nouveau pont : Ce qui nous affiche un nouveau code QR à scanner : Seule déception, Siri sait allumer ou éteindre la télé mais ne sait pas contrôler les applications. Il faut le faire depuis l’application Maison avec ses doigts.
Une autre idée qui m’est venue en tête pour profiter de Homebridge, c’est d’utiliser le thermomètre intégré au serveur pour connaître la température de la pièce où il se trouve. Pour ça, il est possible d’utiliser directement la commande ipmitool dans la zone globale, voici ce que ça donne :
# ipmitool sdr
UID Light | 0x00 | ok
Health LED | no reading | ns
01-Inlet Ambient | 20 degrees C | ok
02-CPU | 40 degrees C | ok
03-P1 DIMM 1-2 | 34 degrees C | ok
04-HD Max | disabled | ns
05-Chipset | 56 degrees C | ok
06-Chipset Zone | 43 degrees C | ok
07-VR P1 Zone | 45 degrees C | ok
08-Supercap Max | disabled | ns
09-iLO Zone | 43 degrees C | ok
10-PCI 1 | disabled | ns
11-PCI 1 Zone | 37 degrees C | ok
12-Sys Exhaust | 42 degrees C | ok
13-LOM | disabled | ns
Fan 1 | 10.98 percent | ok
Power Supply 1 | 0x00 | ok
Memory | 0x00 | ok
Le capteur qui nous intéresse est le “01-Inlet Ambient”.
Pour pouvoir utiliser cette commande depuis la zone homebridge, il faut le faire à travers le réseau en contactant le serveur iLO comme décrit dans la documentation. On voit qu’il faut spécifier un utilisateur, qu’on va créer à partir de l’interface web pour faire simple et ne pas utiliser l’utilisateur administrateur. Pas besoin de droits particuliers. On peut maintenant le faire depuis notre zone :
# ipmitool -I lanplus -H 192.168.1.254 -U ipmiuser -P xxxxxxxxxxxxxxx -L USER sdr
UID Light | 0x00 | ok
Health LED | no reading | ns
01-Inlet Ambient | 20 degrees C | ok
02-CPU | 40 degrees C | ok
03-P1 DIMM 1-2 | 34 degrees C | ok
04-HD Max | disabled | ns
05-Chipset | 56 degrees C | ok
06-Chipset Zone | 43 degrees C | ok
07-VR P1 Zone | 45 degrees C | ok
08-Supercap Max | disabled | ns
09-iLO Zone | 43 degrees C | ok
10-PCI 1 | disabled | ns
11-PCI 1 Zone | 37 degrees C | ok
12-Sys Exhaust | 42 degrees C | ok
13-LOM | disabled | ns
Fan 1 | 10.98 percent | ok
Power Supply 1 | 0x00 | ok
Memory | 0x00 | ok
Le plugin approprié existe et s’appelle opportunément IPMI. L’installation se fait toujours de la même manière :
# npm install -g homebridge-ipmi
+ homebridge-ipmi@1.2.0
added 2 packages from 2 contributors in 3.996s
Pas d’interface graphique pour la configuration mais voici ce que ça donne :
{
"accessory": "IPMI",
"name": "IPMI",
"hostname": "192.168.1.254",
"username": "ipmiuser -I lanplus",
"password": "xxxxxxxxxxxxxxx",
"temperatureSensors": {
"01-Inlet Ambient": "Thermomètre"
},
"fans": {
"Fan 1": "Ventilateur"
},
"_bridge": {
"username": "XX:XX:XX:XX:XX:XX",
"port": 57494
}
}
Il faut associer le nom du capteur tel qu’affiché par impitool à celui qu’on veut voir dans Maison. J’ai rusé un peu en ajoutant le paramètre “-I lanplus” au nom d’utilisateur puisqu’apparemment le plugin ne permet pas de choisir le type d’interface et s’attend probablement à n’utiliser que l’interface système. Il faut comme pour les autres plugins ajouter un pont en procédant de la même manière.
Je peux maintenant interroger Siri pour savoir quelle température il fait chez moi.
La dernière chose à faire, c’est de configurer un service pour que homebridge démarre tout seul, voici le manifest :
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
Created by Manifold
--><service_bundle type="manifest" name="homebridge">
<service name="site/homebridge" type="service" version="1">
<create_default_instance enabled="true"/>
<single_instance/>
<dependency name="network" grouping="require_all" restart_on="error" type="service">
<service_fmri value="svc:/milestone/network:default"/>
</dependency>
<dependency name="filesystem" grouping="require_all" restart_on="error" type="service">
<service_fmri value="svc:/system/filesystem/local"/>
</dependency>
<method_context>
<method_credential user="hb" group="other"/>
</method_context>
<exec_method type="method" name="start" exec="/opt/local/bin/node /opt/local/bin/homebridge > /home/hb/.homebridge/homebridge.log" timeout_seconds="60"/>
<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60"/>
<property_group name="startd" type="framework">
<propval name="duration" type="astring" value="child"/>
<propval name="ignore_error" type="astring" value="core,signal"/>
</property_group>
<property_group name="application" type="application">
</property_group>
<stability value="Evolving"/>
<template>
<common_name>
<loctext xml:lang="C">
Homebridge
</loctext>
</common_name>
</template>
</service>
</service_bundle>
Il faut passer les commandes suivantes pour l’importer puis activer le service :
# svccfg import homebridge.xml
# svcadm enable homebridge
Le tout fonctionne globablement bien même s’il y a parfois une certaine latence entre le passage d’une commande et son exécution mais c’est peut-être lié à mon réseau wifi.