Skip to content
Merged

V2.0 #167

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
235b403
Merge pull request #123 from moehrem/dev
moehrem Mar 17, 2026
5875eb7
Merge pull request #124 from moehrem/main
moehrem Mar 17, 2026
740b20f
prototype for multicluster and multiuser support
moehrem Mar 18, 2026
2eb45d6
added migration logic to v2.0.0
moehrem Mar 19, 2026
02dcc1e
refactor DiveraConfigFlowAPI
moehrem Mar 19, 2026
6eab083
- removed webhook support and related code
moehrem Mar 24, 2026
4834bd8
deleted webhook related commented coding
moehrem Mar 24, 2026
17fba64
added entities: select user status, user info
moehrem Mar 25, 2026
fc01b43
Update custom_components/diveracontrol/utils.py
moehrem Mar 25, 2026
a215dd5
Update custom_components/diveracontrol/translations/de.json
moehrem Mar 25, 2026
2a2f540
Update custom_components/diveracontrol/sensor_entity.py
moehrem Mar 25, 2026
28bbf96
Update custom_components/diveracontrol/divera_api.py
moehrem Mar 25, 2026
d2c5ad8
Update custom_components/diveracontrol/select_entity.py
moehrem Mar 25, 2026
f69853f
Update custom_components/diveracontrol/utils.py
moehrem Mar 25, 2026
cef4e10
Update custom_components/diveracontrol/sensor_entity.py
moehrem Mar 25, 2026
ecb3af9
Update custom_components/diveracontrol/entity.py
moehrem Mar 25, 2026
e42145a
bugfixing for v2.0.0-beta.1
moehrem Mar 26, 2026
a3ff7a9
Update custom_components/diveracontrol/service.py
moehrem Mar 26, 2026
8c6cad5
Update custom_components/diveracontrol/utils.py
moehrem Mar 26, 2026
be3e7ab
Merge pull request #125 from moehrem/v2.0
moehrem Mar 26, 2026
1a84cf9
reworked device names for better identification
moehrem Mar 26, 2026
718f851
implementing new device action "request_refresh"
moehrem Mar 26, 2026
30dced9
refactored service data handling: each service call will request the …
moehrem Mar 27, 2026
7816b5b
added device triggers for new alarms and all alarms closed
moehrem Mar 27, 2026
248b31a
refactored config entry to use subentries per user
moehrem Mar 28, 2026
aa0be3e
fix: handle dict sorting in _get_alarm_data to prevent KeyError
AmSach May 21, 2026
37f1d85
Merge pull request #129 from AmSach/fix/keyerror-when-sorting-is-dict
moehrem Jun 2, 2026
56f4965
Merge branch 'v2.0' into main
moehrem Jun 2, 2026
f7b1ceb
Merge pull request #130 from moehrem/main
moehrem Jun 2, 2026
94e1e6b
merge confict
moehrem Jun 3, 2026
8563da6
Merge pull request #132 from moehrem/v2.0
moehrem Jun 3, 2026
5f2c71c
Merge pull request #133 from moehrem/main
moehrem Jun 3, 2026
c317d84
Add sorting retrieval in _get_alarm_data method
moehrem Jun 3, 2026
a679f77
Merge pull request #134 from moehrem/v2.0
moehrem Jun 3, 2026
5818ada
merge conflict
moehrem Jun 3, 2026
6e9b67e
Merge pull request #135 from moehrem/v2.0
moehrem Jun 3, 2026
d66db83
bug: migration 1.4.1 -> 2.0.0 didn't created subentries for config_entry
moehrem Jun 3, 2026
da233e8
bug: created wrong formatted subentries
moehrem Jun 3, 2026
1b8cfd5
optimized data handling in migration to v2.0.0
moehrem Jun 3, 2026
65521ce
removed webhooks parameter in migration to v2.0.0
moehrem Jun 3, 2026
39ddefd
added entity cleanup upon migrating to v2.0.0
moehrem Jun 3, 2026
76c6d8d
changing structure to Hub and User-devices
moehrem Jun 3, 2026
37b0388
modified structure: removed subentries, so every
moehrem Jun 3, 2026
bccb5b5
refactor: Optimize config_flow structure and extract options flow
moehrem Jun 6, 2026
ba9f0d1
- Extract migration steps into separate helper functions (_migrate_to…
moehrem Jun 7, 2026
c645de5
fixed import error
moehrem Jun 7, 2026
9ebd102
updated readme to reflect the new features and changes in version 2.0
moehrem Jun 8, 2026
b5d83cb
debugging readme....
moehrem Jun 8, 2026
ffc0d52
added translations for action 'post_user_status'
moehrem Jun 8, 2026
86f698d
added device_classes "vehicle" & "alarm"
moehrem Jun 8, 2026
122a941
updated diagnostics and log handler to new config_entry data structure
moehrem Jun 8, 2026
f81c8a7
consitent divera wording: changed 'api_key' to 'accesskey'
moehrem Jun 9, 2026
dcb3188
removed 'usergroup_id' from config flow and init
moehrem Jun 9, 2026
0e95b94
centralized handling of coordinators and ucrs
moehrem Jun 9, 2026
e3734a2
moved initial data loading into parallel tasks to enhance performance
moehrem Jun 9, 2026
ecb8786
linting and minor optimizations
moehrem Jun 10, 2026
e2bed59
coordinator: optimized interval handling
moehrem Jun 10, 2026
4052daf
data validation moved from config_flow to divera_api
moehrem Jun 11, 2026
37998cb
added type_dicts to divera_api.py
moehrem Jun 12, 2026
0ba4438
updated readmes with 'triggers'
moehrem Jun 12, 2026
6381e80
Add confirm alarm API endpoint integration
invalid-email-address Jul 9, 2026
1f5c586
Remove range specification from status_id description
invalid-email-address Jul 9, 2026
ff79f65
Merge pull request #1 from N1co93/n1co93-add-confirm-alarm-endpoint
N1co93 Jul 9, 2026
bc3cff7
Adjust Payload for confirming alarm
N1co93 Jul 17, 2026
191ba85
bugfix: calendar entity not updating when divera api returns no data
moehrem Aug 18, 2026
24e53ab
Merge branch 'v2.0' into add_confirm_alarm
moehrem Aug 18, 2026
1df64c8
Merge conflict resolved: Added post_confirm_alarm
moehrem Aug 18, 2026
520d932
Merge pull request #139 from N1co93/add_confirm_alarm
moehrem Aug 18, 2026
90a5478
refactored workflows
moehrem Aug 18, 2026
7eb028d
fixing workflows
moehrem Aug 18, 2026
b23f089
workflow correction
moehrem Aug 18, 2026
7cadc93
bugfix services.yaml: changing request_refresh to device.selector
moehrem Aug 18, 2026
841383b
updated tests to fit v2.0
moehrem Aug 19, 2026
26ab57f
refactored tests to fit v2.0.0
moehrem Aug 20, 2026
8f65b58
altering tests again
moehrem Aug 20, 2026
31b0994
bugfix: included versioning into config_flow
moehrem Aug 20, 2026
db1ca2b
bugfix: remove old entities from entity registry when migrating to v2.0
moehrem Aug 20, 2026
2f6db4c
bugfix: remove old entity entries during migration
moehrem Aug 20, 2026
6e1c3fa
improve old entity handling upon migrating to v2.0.0
moehrem Aug 20, 2026
4877ab0
optimizing migration to v2.0.0
moehrem Aug 20, 2026
3693130
migration optimizations it is
moehrem Aug 20, 2026
a3657aa
tweaked post_confirm_alarm:
moehrem Aug 20, 2026
b9baf9b
bugfix: services to use entity instead of device as target
moehrem Aug 20, 2026
d253873
linting
moehrem Aug 20, 2026
b2ccd22
bugfix: config_flow imports
moehrem Aug 20, 2026
d6445b8
workflow: ci_pipeline to use black
moehrem Aug 21, 2026
6705dc5
workflow error handling
moehrem Aug 21, 2026
654abdc
workflow fixes
moehrem Aug 21, 2026
3d6bf61
workflow: Update CI pipeline and test dependencies
moehrem Aug 21, 2026
d3ff290
refactored workflows
moehrem Aug 21, 2026
dd97a32
workflow: Update CI pipeline and test workflow
moehrem Aug 21, 2026
21fbdb2
removed old files
moehrem Sep 27, 2026
9bd3def
Merge pull request #140 from moehrem/v2.0
moehrem Sep 27, 2026
ce4a5a4
updated workflows to use python 3.14 and HA-version 2024.9.4
moehrem Sep 27, 2026
c75705a
updated mypy.ini to use python 3.14 instead of 3.12
moehrem Sep 27, 2026
ab48f84
Merge branch 'main' into v2.0
moehrem Sep 27, 2026
e95e2e8
Merge pull request #143 from moehrem/v2.0
moehrem Sep 27, 2026
092e94a
docs: fix README inaccuracies (base URL, CI badges, missing confirm-a…
mistral-vibe Oct 9, 2026
c2453f2
docs: add AI-assistance note to both READMEs
mistral-vibe Oct 9, 2026
f6a64e4
Merge pull request #145 from moehrem/vibe/readme-fixes-2618e1
moehrem Oct 9, 2026
0eb8323
fix: do not report 0/0 as tracker position when Divera has no position
mistral-vibe Oct 9, 2026
19a2c63
style: apply black formatting
mistral-vibe Oct 9, 2026
200103f
Merge pull request #146 from moehrem/vibe/no-zero-position-tracker-30…
moehrem Oct 9, 2026
0df9963
bug: status select entities were created inactive
moehrem Oct 9, 2026
05811ac
Merge branch 'main' into v2.0
moehrem Oct 9, 2026
b86b6ca
Merge pull request #148 from moehrem/v2.0
moehrem Oct 9, 2026
9e61350
fix: replace invalid custom device_class with SensorDeviceClass.ENUM …
Oct 9, 2026
b2bb212
Merge pull request #149 from moehrem/vibe/fix-device-class-history-c7…
moehrem Oct 9, 2026
77c707d
feat: move alarms to the event platform for GUI selection
Oct 9, 2026
1435716
Merge pull request #150 from moehrem/vibe/alarm-event-platform-c7e38e
moehrem Oct 9, 2026
65fc789
bugfix: added missing const D_ALARM to sensor_entity.py
moehrem Oct 9, 2026
fe0e0ab
fix: keep alarm events until Divera archives the alarm
Oct 9, 2026
dd61f76
Merge pull request #151 from moehrem/vibe/alarm-lifecycle-archive-c7e38e
moehrem Oct 9, 2026
1f299f5
feat: translate alarm event types and entity name
Oct 9, 2026
a65716a
Merge pull request #152 from moehrem/vibe/alarm-lifecycle-archive-c7e38e
moehrem Oct 9, 2026
89d9ea9
changed translation of events
moehrem Oct 9, 2026
7503904
fix: fire initial triggered event when alarm event entity is added
Oct 9, 2026
a1a4df5
Merge pull request #153 from moehrem/vibe/alarm-lifecycle-archive-c7e38e
moehrem Oct 9, 2026
4f20ed0
fix: show alarm title as event entity name instead of static label
Oct 9, 2026
f67c0fa
Merge pull request #154 from moehrem/vibe/alarm-lifecycle-archive-c7e38e
moehrem Oct 9, 2026
24ab160
feat: place user status select above the device page divider
Oct 9, 2026
612329f
Merge pull request #155 from moehrem/vibe/alarm-lifecycle-archive-c7e38e
moehrem Oct 9, 2026
b347486
change translation of events
moehrem Oct 9, 2026
c89f443
enhancing vehicle status select options
moehrem Oct 10, 2026
0871a91
persisting last alarm data
moehrem Oct 10, 2026
aab3820
fix: re-enable user status select entries disabled by integration
mistral-vibe Oct 10, 2026
0ac3e1f
fix: update event tests for renamed event type and apply black format…
mistral-vibe Oct 10, 2026
196b0b1
Merge pull request #157 from moehrem/vibe/user-status-select-always-e…
moehrem Oct 10, 2026
8fe6e61
refactor: harden last alarm persistence
mistral-vibe Oct 11, 2026
b848560
Merge pull request #159 from moehrem/vibe/last-alarm-persist
moehrem Oct 11, 2026
4fb62de
fix: replace deprecated DeviceEntry.config_entries with config_entry_id
mistral-vibe Oct 11, 2026
13561d0
merged sensor.*vehicle* and selector.*vehicle*
moehrem Oct 11, 2026
a498e4e
Merge pull request #160 from moehrem/vibe/fix-device-config-entries-d…
moehrem Oct 11, 2026
1723242
updated vehicle select for services
moehrem Oct 11, 2026
2f664a3
fix: complete vehicle sensor/select merge (dynamic selects, service v…
mistral-vibe Oct 11, 2026
7fdc215
Merge pull request #161 from moehrem/vibe/vehicle-merge-fixes-3e6f44
moehrem Oct 11, 2026
f21e5e7
fix: make v2.0.0 migration resilient (offline fallback, unique_id ali…
mistral-vibe Oct 11, 2026
ecb063e
Merge pull request #162 from moehrem/vibe/migration-v2-fixes-c0efec
moehrem Oct 11, 2026
bb48f27
docs: reflect alarm event entities in READMEs (DE/EN)
mistral-vibe Oct 11, 2026
3fb21d5
Merge branch 'main' into v2.0
moehrem Oct 11, 2026
08cf159
fix: normalize mixed line endings in const.py (pylint mixed-line-endi…
mistral-vibe Oct 11, 2026
6256137
Merge pull request #163 from moehrem/v2.0
moehrem Oct 12, 2026
4bb6e02
fix: replace removed DeviceEntry.config_entry_id with compatible helper
mistral-vibe Oct 12, 2026
b565b09
style: apply black formatting
mistral-vibe Oct 12, 2026
a84f30a
fix: mypy type for device argument to accept ChildDeviceEntry
mistral-vibe Oct 12, 2026
defc496
Merge pull request #164 from moehrem/vibe/fix-device-entry-config-ent…
moehrem Oct 12, 2026
0336ef6
update version to v2.0.1
moehrem Oct 12, 2026
8f6c4fb
Merge branch 'main' into v2.0
moehrem Oct 12, 2026
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
36 changes: 36 additions & 0 deletions .github/actions/setup-python/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Setup Python
description: Sets up Python and installs dependencies
inputs:
python-version:
description: Python version to set up
default: "3.14"
cache-dependencies:
description: Whether to cache pip dependencies
default: "true"
runs:
using: composite
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ inputs.python-version }}

- name: Cache pip dependencies
if: inputs.cache-dependencies == 'true'
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements*.txt') }}
restore-keys: |
${{ runner.os }}-pip-

- name: Install dependencies
run: |
pip install --upgrade pip
if [ -f "requirements_test.txt" ]; then
pip install -r requirements_test.txt
fi
if [ -f "requirements.txt" ]; then
pip install -r requirements.txt
fi
shell: bash
76 changes: 0 additions & 76 deletions .github/workflows/ci_pipeline.yml

This file was deleted.

27 changes: 0 additions & 27 deletions .github/workflows/hacs.yml

This file was deleted.

23 changes: 0 additions & 23 deletions .github/workflows/hass.yml

This file was deleted.

79 changes: 79 additions & 0 deletions .github/workflows/homeassistant_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: ✅ HomeAssistant CI

on:
pull_request:
branches: [dev, main]
push:
branches: [dev, main]
schedule:
- cron: "0 3 * * 1" # Jeden Montag um 03:00 UTC

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.ref_name || github.event.pull_request.number }}
cancel-in-progress: true

jobs:
lint:
name: "🔍 Linting & Static Analysis"
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Wichtig für pylint!

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.14"
cache: "pip"

- name: Install Dependencies
run: |
pip install -r requirements.txt
pip install \
pylint==4.0.9 \
flake8==6.1.0 \
mypy==1.13.0 \
black==24.3.0 \
ruff==0.4.4

- name: Check Black Formatting
run: black . --check --diff --line-length=88

- name: Run ruff
run: ruff check custom_components/diveracontrol

- name: Run pylint
run: pylint custom_components/diveracontrol --rcfile=.pylintrc

- name: Run flake8
run: flake8 custom_components/diveracontrol

- name: Run mypy (Type Checking)
run: mypy custom_components/diveracontrol

hassfest:
name: "🏠 HomeAssistant Validation (hassfest)"
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Run hassfest
uses: home-assistant/actions/hassfest@master

hacs:
name: "🎯 HACS Validation"
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Run HACS Validation
uses: hacs/action@main
with:
category: "integration"
Original file line number Diff line number Diff line change
@@ -1,44 +1,43 @@
name: Tests
name: 🧪 HomeAssistant Tests

on:
pull_request:
branches: [dev, main]
push:
branches: [dev, main]

permissions:
contents: read

concurrency:
# Bei Push: "Tests-push-main", bei PR zu main: "Tests-pr-123"
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.ref_name || github.event.pull_request.number }}
cancel-in-progress: true

jobs:
test:
name: Run tests
tests:
name: "🧪 Unit & Integration Tests (Python 3.14)"
runs-on: ubuntu-latest

steps:
- name: Checkout code
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Python 3.13
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
python-version: "3.14"
cache: "pip"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements_test.txt
- name: Install Dependencies
run: pip install -r requirements.txt

- name: Run tests with coverage
- name: Run Tests
run: |
pytest tests/ \
--cov=custom_components.diveracontrol \
--cov-report=xml \
--cov-report=term-missing

- name: Upload coverage to Codecov
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v4
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false)
with:
Expand Down
18 changes: 15 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,26 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Get Version from manifest.json
id: version
run: |
VERSION=$(jq -r '.version' custom_components/diveracontrol/manifest.json)
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Build HACS ZIP
run: |
mkdir -p dist
cd custom_components/diveracontrol
zip -r ../../dist/DiveraControl.zip . \
zip -r ../../dist/DiveraControl-${{ steps.version.outputs.version }}.zip . \
-x "*/__pycache__/*" "*.pyc"

- name: Upload asset to release
- name: Generate Changelog
run: |
git log --oneline --pretty=format:"- %s (%h)" $(git describe --tags --abbrev=0)..HEAD > CHANGELOG.md

- name: Upload Asset to Release
uses: softprops/action-gh-release@v2
with:
files: dist/DiveraControl.zip
files: |
dist/DiveraControl-${{ steps.version.outputs.version }}.zip
CHANGELOG.md
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Python
__pycache__/
*.py[cod]
*.egg-info/
build/
dist/
.venv/
venv/

# Testing
.pytest_cache/
.coverage
coverage.xml
htmlcov/
snapshots/fixtures/*/

# Tooling
.mypy_cache/
.ruff_cache/

# Home Assistant
.storage/
home-assistant_v2*

# Editors / OS
.vscode/
.idea/
.DS_Store

# Local run artifacts
*.log
*.zip
coverage.xml
.coverage
htmlcov/
tests.ods
DiveraControl.code-workspace
Loading
Loading