Thank you for considering contributing to this project! This document provides guidelines for contributing.
Be respectful, professional, and constructive in all interactions.
Before creating a bug report:
- Check existing issues to avoid duplicates
- Test with the latest version
- Gather relevant information
When creating a bug report, include:
- Description: Clear description of the issue
- Steps to Reproduce: Detailed steps to reproduce the bug
- Expected Behavior: What you expected to happen
- Actual Behavior: What actually happened
- Environment:
- Home Assistant version
- Integration version
- Boiler model and firmware version
- Logs: Relevant error messages from HA logs
- Screenshots: If applicable
Enhancement suggestions are welcome! Please include:
- Use Case: Why this enhancement would be useful
- Proposed Solution: How you envision it working
- Alternatives: Other solutions you've considered
- Additional Context: Any other relevant information
-
Fork the Repository
git clone https://github.com/bauer-group/IP-HargassnerIntegration.git
-
Create a Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Follow the code style guidelines
- Add comments for complex logic
- Update documentation as needed
-
Test Your Changes
- Test with actual hardware if possible
- Check for errors in logs
- Verify backward compatibility
-
Commit Your Changes
git commit -m "Add: Brief description of changes"Commit message format:
Add:- New featureFix:- Bug fixUpdate:- Improvement to existing featureDocs:- Documentation changesRefactor:- Code refactoringTest:- Adding tests
-
Push to Your Fork
git push origin feature/your-feature-name
-
Create Pull Request
- Use a clear, descriptive title
- Reference any related issues
- Describe what changed and why
- Include screenshots for UI changes
- List testing performed
- Follow PEP 8 style guide
- Use type hints for all functions
- Use descriptive variable names
- Add docstrings to all public functions/classes
- Keep functions focused and concise
Example:
async def async_connect(self, host: str, port: int = 23) -> bool:
"""Connect to the boiler's telnet interface.
Args:
host: IP address or hostname of the boiler
port: Telnet port (default: 23)
Returns:
True if connection successful
Raises:
ConnectionError: If connection fails
"""
# Implementation- Test with actual hardware when possible
- Include edge case testing
- Check error handling
- Verify logs are appropriate (not too verbose)
- Update README.md if adding features
- Update ARCHITECTURE.md for structural changes
- Add inline comments for complex logic
- Update translations if adding UI strings
See DEVELOPMENT.md for detailed development setup and guidelines.
- Testing with different firmware versions
- Protocol documentation
- Unit tests
- Integration tests
- Additional language translations
- Write support (send commands to boiler)
- Additional sensor types
- Binary sensors for digital outputs
- Historical data tracking
- Efficiency calculations
- Custom Lovelace cards
- Maintenance predictions
- Advanced statistics
- Energy forecasting
- Integration with weather data
If you have a boiler with a different firmware version:
-
Capture Telnet Messages:
telnet <boiler-ip> 23 > messages.txt # Wait for several messages, then Ctrl+C
-
Count Parameters:
- Remove
pmprefix from a message - Count the number of space-separated values
- This is the expected message length
- Remove
-
Identify Parameters:
- Use boiler display/manual to identify what each value represents
- Note the position of key parameters (temperature, state, etc.)
-
Create Template:
- Create XML template in
src/firmware_templates.py - Follow existing format
- Test with real messages
- Create XML template in
-
Submit PR:
- Include sample messages (sanitize any personal data)
- Include parameter mapping
- Document boiler model and firmware version
We welcome translations! To add a new language:
- Copy
translations/en.jsontotranslations/<lang>.json - Translate all strings
- Add language constant to
const.py - Update config flow to include new language
- Test in Home Assistant UI
- Submit PR
- Issues: For bug reports and feature requests
- Discussions: For questions and general discussion
- Pull Requests: For code contributions
Contributors will be:
- Listed in project contributors
- Mentioned in release notes for significant contributions
- Credited in documentation
By contributing, you agree that your contributions will be licensed under the MIT License.
If you have questions about contributing:
- Check existing documentation
- Search closed issues
- Open a new discussion
- Ask in issue comments
Thank you for contributing to make this integration better!