Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions homeassistant/components/effortlesshome/.pylintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
[MASTER]
ignore=tests
ignore-patterns=app_vars
ignored-modules=homeassistant
# Use a conservative default here; 2 should speed up most setups and not hurt
# any too bad. Override on command line as appropriate.
jobs=2
persistent=no
suggestion-mode=yes
extension-pkg-whitelist=taglib

[BASIC]
good-names=id,i,j,k,ex,Run,_,fp,T,ev

[MESSAGES CONTROL]
# Reasons disabled:
# format - handled by black
# locally-disabled - it spams too much
# duplicate-code - unavoidable
# cyclic-import - doesn't test if both import on load
# abstract-class-little-used - prevents from setting right foundation
# unused-argument - generic callbacks and setup methods create a lot of warnings
# too-many-* - are not enforced for the sake of readability
# too-few-* - same as too-many-*
# abstract-method - with intro of async there are always methods missing
# inconsistent-return-statements - doesn't handle raise
# too-many-ancestors - it's too strict.
# wrong-import-order - isort guards this
# fixme - project is in development phase
disable=
format,
abstract-class-little-used,
abstract-method,
cyclic-import,
duplicate-code,
inconsistent-return-statements,
locally-disabled,
not-context-manager,
too-few-public-methods,
too-many-ancestors,
too-many-arguments,
too-many-branches,
too-many-instance-attributes,
too-many-lines,
too-many-locals,
too-many-public-methods,
too-many-return-statements,
too-many-statements,
too-many-boolean-expressions,
unused-argument,
wrong-import-order,
fixme
# enable useless-suppression temporarily every now and then to clean them up
enable=
use-symbolic-message-instead

[REPORTS]
score=no

[REFACTORING]

# Maximum number of nested blocks for function / method body
max-nested-blocks=15

[TYPECHECK]
# For attrs
ignored-classes=_CountingAttr

[FORMAT]
expected-line-ending-format=LFf
102 changes: 102 additions & 0 deletions homeassistant/components/effortlesshome/.vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"tasks": [
{
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}/run_core_pr_checks.ps1",
"-Setup",
"-Checks",
"all"
],
"command": "powershell",
"group": "build",
"label": "EffortlessHome: Setup Core Check Env",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}/run_core_pr_checks.ps1",
"-Checks",
"all"
],
"command": "powershell",
"group": "test",
"label": "EffortlessHome: Run Core PR Checks (all)",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}/run_core_pr_checks.ps1",
"-Checks",
"prek"
],
"command": "powershell",
"group": "test",
"label": "EffortlessHome: Run prek checks",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}/run_core_pr_checks.ps1",
"-Checks",
"hassfest"
],
"command": "powershell",
"group": "test",
"label": "EffortlessHome: Check hassfest",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}/run_core_pr_checks.ps1",
"-Checks",
"pylint"
],
"command": "powershell",
"group": "test",
"label": "EffortlessHome: Check pylint",
"problemMatcher": [],
"type": "shell"
},
{
"args": [
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}/run_core_pr_checks.ps1",
"-Checks",
"mypy"
],
"command": "powershell",
"group": "test",
"label": "EffortlessHome: Check mypy",
"problemMatcher": [],
"type": "shell"
}
],
"version": "2.0.0"
}
165 changes: 165 additions & 0 deletions homeassistant/components/effortlesshome/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# EffortlessHome

[![GitHub Release][releases-shield]][releases]
[![License][license-shield]](LICENSE)

![Project Maintenance][maintenance-shield]
[![BuyMeCoffee][buymecoffeebadge]][buymecoffee]

[![Discord][discord-shield]][discord]
[![Community Forum][forum-shield]][forum]

EffortlessHome is a simplified Home Assistant integration focused on service-based actions and setup helpers.

## Features

- Config flow with account sign-in and system selection.
- Service endpoints for creating alerts/events and maintaining entity metadata.
- Optional deployment helper to copy packaged web resources/config assets.
- Device-class group synchronization at startup.

## Installation

### HACS Installation (Recommended)

1. Open HACS in your Home Assistant instance
2. Add this Github Repo as a custom source
3. Search for "EffortlessHome"
4. Click Install
5. Restart Home Assistant

### Manual Installation

1. Copy the `effortlesshome` directory to your `custom_components` folder
2. Restart Home Assistant
3. Add the integration via Configuration > Integrations > Add Integration > EffortlessHome

## Configuration

### Initial Setup

1. After installation, go to Configuration > Integrations
2. Click the "+" button and search for "EffortlessHome"
3. Enter your EffortlessHome account credentials
4. Select the system you want to configure (if you have multiple systems)

### Required Information

- **Email**: Your EffortlessHome account email
- **Password**: Your EffortlessHome account password

### Optional Configuration

After initial setup, you can configure additional options:

- **Debug Mode**: Enable debug logging for troubleshooting

## Services

The integration provides several services:

| Service | Description |
|---------|-------------|
| `effortlesshome.clean_motion_files` | Clean old motion snapshot files |
| `effortlesshome.create_alert` | Create an alert record |
| `effortlesshome.create_event` | Create an event for active alarm |
| `effortlesshome.deploy_latest_config` | Deploy latest configuration files |
| `effortlesshome.add_label_to_entity` | Add a label to an entity |
| `effortlesshome.update_entity` | Update entity area assignment |

## Entities

This simplified integration does not register dedicated entity platforms.

## Requirements

### Dependencies

This integration requires the following Python packages (automatically installed):

- `oasira>=0.2.12`
- `gcal-sync>=6.2.0`
- `google-auth>=2.28.0`
- `google-api-python-client>=2.126.0`
- `gTTS>=2.5.0`
- `google-genai==1.29.0`
- `influxdb-client>=1.48.0`

### Home Assistant Dependencies

The integration requires the following Home Assistant components:

- `http`
- `recorder`
- `conversation`

## Labels

The integration uses the following labels for entity organization:

- `Favorite`: Mark favorite entities
- `NotForSecurityMonitoring`: Exclude entities from security monitoring

## Support

- **GitHub Issues**: [Report bugs and feature requests](https://github.com/EffortlessHome/EffortlessHome/issues)
- **Discord Community**: [Join our Discord server](https://discord.gg/effortlesshome)
- **Forum**: [Community Forum](https://community.home-assistant.io/t/effortlesshome/)

## Contributing

We welcome contributions! Please see our [contributing guidelines](CONTRIBUTING.md) for more information.

## Run Home Assistant Core PR Checks Locally

From this `effortlesshome` folder, you can run the same core checks used in Home Assistant CI:

1. First-time setup (create `.venv` in core and install dev/test dependencies):

```powershell
.\run_core_pr_checks.ps1 -Setup -Checks all
```

2. Run all requested checks:

```powershell
.\run_core_pr_checks.ps1 -Checks all
```

3. Run individual checks:

```powershell
.\run_core_pr_checks.ps1 -Checks prek
.\run_core_pr_checks.ps1 -Checks hassfest
.\run_core_pr_checks.ps1 -Checks pylint
.\run_core_pr_checks.ps1 -Checks mypy
```

This script targets `homeassistant/components/effortlesshome` for pylint/mypy and uses the same `PREK_SKIP` split as the CI workflow so that `prek` does not duplicate `hassfest`, `pylint`, and `mypy`.

VS Code tasks are also included in `.vscode/tasks.json` for one-click runs.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- Home Assistant community
- All contributors and testers
- EffortlessHome users

---

**Note**: This integration requires an EffortlessHome account. Sign up at [https://my.effortlesshome.co](https://my.effortlesshome.co)

[buymecoffee]: https://www.buymecoffee.com/effortlesshome
[buymecoffeebadge]: https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg?style=for-the-badge
[discord]: https://discord.gg/effortlesshome
[discord-shield]: https://img.shields.io/discord/1234567890?color=7289da&label=Discord&logo=discord&logoColor=white&style=for-the-badge
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge&logo=home-assistant
[forum]: https://community.home-assistant.io/
[license-shield]: https://img.shields.io/github/license/EffortlessHome/EffortlessHome.svg?style=for-the-badge
[maintenance-shield]: https://img.shields.io/maintenance/yes/2024.svg?style=for-the-badge
[releases-shield]: https://img.shields.io/github/release/EffortlessHome/EffortlessHome.svg?style=for-the-badge
[releases]: https://github.com/EffortlessHome/EffortlessHome/releases
Loading
Loading