homebridge-loxone-control
Link To GitHub Repo
https://github.com/rocket-monkey/homebridge-loxone-control
Link To NPM Package
https://www.npmjs.com/package/homebridge-loxone-control
Plugin Icon (Optional)
:white_check_mark: Pre-checks completed successfully.
it is a completely different plugin compared to the existing loxone proxies. the reason for this is that i have zero access to the loxone miniserver. this plugin is working around this by intercepting the web interface websocket connection. it is a complete rewrite of my first attempt "homebridge-loxone-puppeteer" and compared to that, i could delete ~90% of the code because of the new web-socket approach - it is much cleaner and simpler now (and much stabler, i use it on daily basis now for 2 weeks without reboot)
Hi @rvetere
If a user has not filled out any of the configuration for the plugin, is there any reason to start the HTTP server?
[11/02/2024, 03:45:59] [LoxoneControl] Http server listening on 18081...
Oh, good catch - will change that behavior! ;-)
Ok, just released v1.0.2 with a fix for that
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
-
General
- [x] The plugin must be of type dynamic platform.
- [x] The plugin must not offer the same nor less functionality than that of any existing verified plugin.
-
Repo
- [x] The plugin must be published to NPM and the source code available on a GitHub repository, with issues enabled.
- [x] A GitHub release should be created for every new version of your plugin, with release notes.
-
Environment
- [x] The plugin must run on all supported LTS versions of Node.js, at the time of writing this is Node v18 and v20.
- [x] The plugin must successfully install and not start unless it is configured.
- [x] The plugin must not execute post-install scripts that modify the users' system in any way.
- [x] The plugin must not require the user to run Homebridge in a TTY or with non-standard startup parameters, even for initial configuration.
-
Codebase
- [x] The plugin must implement the Homebridge Plugin Settings GUI.
- [x] The plugin must not contain any analytics or calls that enable you to track the user.
- [x] If the plugin needs to write files to disk (cache, keys, etc.), it must store them inside the Homebridge storage directory.
- [x] The plugin must not throw unhandled exceptions, the plugin must catch and log its own errors.
Comment /check to run checks again.
Hi @rvetere
A couple of things:
-
Would you say that this was true for the plugin?
If the plugin needs to write files to disk (cache, keys, etc.), it must store them inside the Homebridge storage directory.
This is not a trick question, I was just having trouble verifying this and thought you would probably know better!
-
with a config of:
{ "name": "LoxoneControl", "loxoneMiniServerId": "dsadasd", "loxoneUser": "dsadasd", "loxonePassword": "sadasdasd", "chromiumPath": "dsadasd", "platform": "LoxoneControl" }Homebridge went into a crash loop which affected my other plugins:
[16/03/2024, 18:56:07] [LoxoneControl] Initializing LoxoneControl platform... [16/03/2024, 18:56:07] [LoxoneControl] 🚀 Initializing loxone web interface.. [16/03/2024, 18:56:08] [LoxoneControl] Http server listening on 18081... [16/03/2024, 18:56:08] Error: Failed to launch the browser process! spawn dsadasd ENOENT TROUBLESHOOTING: https://pptr.dev/troubleshooting at ChildProcess.onClose (/usr/local/lib/node_modules/homebridge-loxone-control/node_modules/@puppeteer/browsers/src/launch.ts:393:11) at ChildProcess.emit (node:events:518:28) at Process.ChildProcess._handle.onexit (node:internal/child_process:292:12) at onErrorNT (node:internal/child_process:484:16) at processTicksAndRejections (node:internal/process/task_queues:82:21) [16/03/2024, 18:56:09] Got SIGTERM, shutting down Homebridge...I appreciate my config is random letters but the plugin still needs to catch errors properly (and log them) but not terminate the process, just stop the plugin from loading any more.
Finally i found some time again to address these issues you mentioned. To your questions:
- Yes this is true, my plugin never writes anything to the harddrive - it uses only the config file of homebridge. The http server is only there for device discovery and is now only started if you configure a working loxone backend.
- This is not happening anymore - whatever the config is, it won't go in a crash loop anymore and is quite stable now with all the try-catches in place.
Thanks for your time and finally i feel the plugin could be ready for verification with v.1.2.1
In the meantime I have made some changes to the check script with a few additional items for new verifications. I will run the check script again on your plugin, if there are some that fail, please consider actioning them, but not vital since your original verification request was from before the changes!
/check
🔴 The following pre-checks failed:
- Package JSON: more
keywordsapart from'homebridge-plugin'should exist - GitHub Repo: should have issues enabled
- GitHub Repo: should contain releases
- Config Schema JSON: does not contain a
nameschema property
🟢 The following pre-checks passed:
- Installation: successfully installed
- Package JSON:
repository.urlproperty exists - Package JSON:
bugs.urlexists - Package JSON:
'preinstall'inscriptsis not present - Package JSON:
'install'inscriptsis not present - Package JSON:
'postinstall'inscriptsis not present - Package JSON:
engines.nodeproperty is compatible with Node 18 - Package JSON:
engines.nodeproperty is compatible with Node 20 - Package JSON:
engines.homebridgeproperty is compatible with Homebridge 1.7.0 - Package JSON: initializer function found
- GitHub Repo: repository is public
- GitHub Repo: repository is not archived
- NPM Package: has not been deprecated
- Config Schema JSON: exists and is valid JSON
- Config Schema JSON: contains a valid
pluginAlias - Config Schema JSON: the
pluginTypeis set to'platform' - Dependencies:
homebridgewas not installed as a dependency - Dependencies:
hap-nodejswas not installed as a dependency
⚠️ Please action these failures and then comment /check to run the checks again. Let us know if you need any help.
If updating your package.json and config.schema.json files, don't forget to publish a new version to NPM.
In fact these two are original requirements, so please fix these (no code changes)
- GitHub Repo: should have issues enabled
- GitHub Repo: should contain releases
In fact, these checks are failing because in your package json file, you have
"repository": {
"type": "git",
"url": "https://github.com/rvetere/homebridge-loxone-control.git"
},
"bugs": {
"url": "https://github.com/rvetere/homebridge-loxone-control/issues"
},
but the actual repo url is https://github.com/rocket-monkey/homebridge-loxone-control
-> username is different
/check
🟢 The following pre-checks passed:
- Installation: successfully installed
- Package JSON:
repository.urlproperty exists - Package JSON:
bugs.urlexists - Package JSON:
keywordsexist and contain'homebridge-plugin' - Package JSON:
'preinstall'inscriptsis not present - Package JSON:
'install'inscriptsis not present - Package JSON:
'postinstall'inscriptsis not present - Package JSON:
engines.nodeproperty is compatible with Node 18 - Package JSON:
engines.nodeproperty is compatible with Node 20 - Package JSON:
engines.homebridgeproperty is compatible with Homebridge 1.7.0 - Package JSON: initializer function found
- GitHub Repo: repository is public
- GitHub Repo: repository is not archived
- GitHub Repo: issues are enabled
- GitHub Repo: contains releases
- NPM Package: has not been deprecated
- Config Schema JSON: exists and is valid JSON
- Config Schema JSON: contains a valid
pluginAlias - Config Schema JSON: the
pluginTypeis set to'platform' - Config Schema JSON: contains a
nameschema property - Dependencies:
homebridgewas not installed as a dependency - Dependencies:
hap-nodejswas not installed as a dependency
🎉 All pre-checks passed successfully, nice work! Your plugin and/or icon will now be manually reviewed by the Homebridge team.
yes, now i'm passing all checks 👍
A couple of things, i'll put them in separate comments.
One:
would most users need to put in the chromium path? or is it something that could go into the advanced section?
Two: with a nonsense config of this
{
"name": "LoxoneControl",
"platform": "LoxoneControl",
"loxoneMiniServerId": "kjklj",
"loxoneUser": "jklj",
"loxonePassword": "jkljkl",
"chromiumPath": ""
}
would it be normal to receive this message in the log?
I'm definitely happy to verify your plugin and will do so now, the above are just things that a brand new user may ask and perhaps get confused by and not really know what to do next!
Congratulations! Your plugin has been verified!
You can now add one of the Verified by Homebridge badges to your plugin's README:
[](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
[](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)
Your plugin is now also eligible to display a :heart: Donate button on its tile in the Homebridge UI. See https://github.com/homebridge/homebridge/wiki/Donation-Links for instructions.
If for any reason in the future you can no longer maintain your plugin, please consider transferring it to our unmaintained plugins repo. We can take ownership until another willing developer comes along.
Don't forget to join the official Homebridge Discord server, where plugin developers can get tips and advice from other developers and the Homebridge project team in the #plugin-development channel!
As a verified plugin, you can request a channel in the Discord server to discuss your plugin with users and other developers. Just ask in the #plugin-development channel.
Thank you for your contribution to the Homebridge community.
- The Homebridge Team
Wow thank you for the verification :) And i'm happy to answer the questions. First, yes, everyone has to install chromium, therefore - the chromium path is a standard parameter of the config. The readme goes trough this step by step.
And yes, a non-sense config will result in these logs. I'm just thinking about that i can check if the path given exists in the file system to make a better log output ;-) I will do that, also with the verification in place :)