-
Notifications
You must be signed in to change notification settings - Fork 11
Added support for CO2-sensors #21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
Hi, Thanks for contributing!!! I do not have a CO2 sensor. Maybe you could enable debug logs and share We are using mobile app API as this one on the web is very unclear; if someone could find out how to work with that API, I would help implement it as it has many more fields. I wrote to Brink for the documentation 2 years ago, but they said they cant share that information. |
|
Makes sense that you would like to validate! I have an older debug statement, I think below is what you need. Regarding the web api, I'm down to put in some work to get the v1.1 API to work, but that might take a bit of a longer time as I'm quite busy at the moment! Logs (I've formatted the json to be more readable):
{
"menuItems": [
{
"guiId": 32000,
"pages": [
{
"name": "Home",
"imageName": "ic_home",
"pageType": 1,
"parameterDescriptors": [
{
"uiId": "Status Filtermeldung",
"valueId": 741417,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24006,
"readWrite": 1,
"noDataPoint": false,
"name": "Status Filtermeldung",
"controlType": 0,
"value": "0",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [
{
"value": "0",
"displayText": "Not dirty",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "1",
"displayText": "Dirty",
"isSelectable": true,
"highlightIfSelected": false
}
]
},
{
"uiId": "Lüftungsstufe",
"valueId": 741421,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24011,
"readWrite": 3,
"noDataPoint": false,
"name": "Lüftungsstufe",
"controlType": 0,
"value": "3",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [
{
"value": "0",
"displayText": "Stufe 0",
"imageName": "Icon_Lueftungsstufe_0.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "1",
"displayText": "Stufe 1",
"imageName": "Icon_Lueftungsstufe_1.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "2",
"displayText": "Stufe 2",
"imageName": "Icon_Lueftungsstufe_2.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "3",
"displayText": "Stufe 3",
"imageName": "Icon_Lueftungsstufe_3.png",
"isSelectable": true,
"highlightIfSelected": false
}
]
},
{
"uiId": "Betriebsart",
"valueId": 741422,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24012,
"readWrite": 3,
"noDataPoint": false,
"name": "Betriebsart",
"controlType": 0,
"value": "0",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [
{
"value": "0",
"displayText": "Automatikbetrieb",
"imageName": "ic_automatic.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "1",
"displayText": "Handbetrieb",
"imageName": "ic_hand.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "2",
"displayText": "Urlaubbetrieb",
"imageName": "ic_vacation.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "3",
"displayText": "Partybetrieb",
"imageName": "ic_party.png",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "4",
"displayText": "Nachtlüftungsbetrieb",
"imageName": "ic_night.png",
"isSelectable": true,
"highlightIfSelected": false
}
]
},
{
"uiId": "Restlaufzeit Betriebsartfunktion",
"valueId": 741423,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24013,
"readWrite": 1,
"noDataPoint": false,
"name": "Restlaufzeit Betriebsartfunktion",
"controlType": 6,
"value": "0",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [],
"minValue": 0,
"maxValue": 480,
"stepWidth": 1,
"decimals": 0
}
]
},
{
"name": "Info",
"imageName": "ic_info",
"pageType": 0,
"parameterDescriptors": [
{
"valueId": 741440,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24024,
"readWrite": 1,
"noDataPoint": false,
"name": "Status Bypassklappe",
"controlType": 0,
"value": "4",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [
{
"value": "0",
"displayText": "Initialisierung",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "1",
"displayText": "Öffnet",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "2",
"displayText": "Schließt",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "3",
"displayText": "Geöffnet",
"isSelectable": true,
"highlightIfSelected": false
},
{
"value": "4",
"displayText": "Geschlossen",
"isSelectable": true,
"highlightIfSelected": false
}
]
},
{
"valueId": 741443,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24027,
"readWrite": 1,
"noDataPoint": false,
"name": "PPM eBus CO2-sensor 1",
"controlType": 6,
"value": "577",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [],
"decimals": 0
},
{
"valueId": 741444,
"sortId": 0,
"subBundleId": 0,
"parameterId": 24028,
"readWrite": 1,
"noDataPoint": false,
"name": "PPM eBus CO2-sensor 2",
"controlType": 6,
"value": "632",
"valueState": 1,
"hasDependentParameter": false,
"listItems": [],
"decimals": 0
}
]
}
]
}
]
} |
|
It took me quite a bit longer to work on this, apologies for that! I think I have updated the PR with all the comments you had :) |
|
Thanks for the effort @yunusdemir. Any update on this? |
- Move SENSOR_TYPES from sensor.py to const.py to break circular import - Change absolute imports to relative imports in all platform files - Fix .pattern attribute access on dict (should be ["pattern"]) The circular import chain was: config_flow.py -> brink_home_cloud.py -> sensor.py -> __init__.py This prevented the config flow handler from being registered, causing "Invalid handler specified" error in Home Assistant.
…iolqD Claude/fix config flow handler iolq d
|
Have you already tested the integration on your Home Assistant instance? |
This commit adds support for all remaining sensors provided by the Brink API, achieving 100% API coverage. New sensors: - Bypass damper status: Shows if heat recovery bypass is active (open/closed/opening/closing) - Operating mode timer: Shows remaining time in minutes for temporary modes (Party/Holiday/Night) Changes: - Added sensor type definitions for bypass and mode_timer in const.py - Updated brink_home_cloud.py to extract all sensor types using pattern matching - Enhanced sensor.py to translate bypass status values from codes to readable text - Fixed sensor duplication issue by adding break after match The bypass sensor is useful for understanding ventilation behavior in warm weather, and the timer sensor enables better automation and awareness of temporary mode duration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Changes: - Bumped version from 1.0.1 to 1.1.0 (new features added) - Updated documentation and issue tracker URLs to point to fork - Added @yunusdemir as codeowner 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
|
My apologies for the delay! There were some issues indeed but I just fixed and tested it locally. It all seems to work now |
This reverts commit 1a21495.
Closes #20
I've been able to confirm the CO2-sensor data in HA, but the temperature and humidity aren't shown for me. I think we'd need to use a different API route for that. It seems there is a v1.1 API available, but I currently don't have the time to refactor and implement that.
Quick screenshot from the data that is available for me:

Full disclosure: this PR was quickly made with https://claude.ai