We welcome any contributions when it comes to integrating new devices into the system, whether it's development efforts or testing the blueprints on your hardware.
Feel free to:
- π Report an issue
- π Improve documentation
- π¨βπ» Contribute to the code
- π Provide remote access to your hardware
- π₯ Create review or tutorial video on Youtube
Feel free to open discussion in Discord or GitHub
Go through the tutorial to learn about the blueprint concept and development workflow.
manifest.yml
is validated against the specification, although not every aspect of the manifest is ready to be fixed in the specification. Some in-progress features are backed by YAML fields that start with a dot (e.g. .cloud
). These fields are not documented and ignored in the manifest validation. When the feature is ready, the field will be moved into the main manifest body, and the blueprints will be updated.
Please follow this simple checklist for every blueprint README file:
- Level 1 header should contain vendor and full model or product family.
- Intro paragraph should briefly describe the device.
- Make sure that blueprint's use case is clear.
- Some blueprints may require physical connection schematics. You can add it as a picture to the README file or as a link to a PDF file. Place the file into the
.assets
blueprint subdirectory (example). - List the hardware needed for the physical connection. This may be an Enapter UCM model, communication interface converter, etc.
- Device pictures and vendor logos are always welcome, but we ask you to respect the author of said pictures and to follow copyright and licencing guidelines.
- References should be given to the device vendor page, manual, API documentation, etc.
Blueprint files are validated using several linters:
The configuration can be found in .yamllint.yml
, .luacheckrc
, .markdownlint.yml
and .stylua.toml
files respectively.
Run the linters locally before creating a pull request:
luacheck .
yamllint .
markdownlint .
stylua --check .
stylua --check .
will fail. Changes introduced by auto-formatting require review, which is still in progress.
To automatically run the checks before each commit, consider enabling pre-commit hooks:
pre-commit install
Lua code is expected to be autoformatted with StyLua
.
Here are some conventions besides that enforced by the auto-formatter:
- Document with LDoc.
- Use
snake_case
for variables and functions. - Use
CamelCase
for OOP class names. - Use
UPPER_CASE
for constants. Put top-level constants at the beginning of the file. - Use
is_
when naming boolean functions, e.g.is_between()
. - Typecheck in critical places (
assert(type(myvar) == 'string')
).
Some more coding conventions are available in the LuaRocks style guide.
- Β Join our Discord community!
- Β Take a look on our documentation.
- Β Open thread on GitHub!
- Β Support us on ProducHunt with review and upvote!
Blueprints in the marketplace should be licensed under the MIT license. Please add license: MIT
in your manifest.yml
.
Also you can specify authorship and support information via author
, contributors
and support
fields.