Homebridge

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 : meross

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. meross2 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. meross3 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. tizen 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 : tizen2 Ce qui nous affiche un nouveau code QR à scanner : tizen3 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.
Température

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 &gt; /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.