Comments (6)
I'm in the process of descending the same rabbit hole - what specific dump mechanism did you use to pull the raw device capabilities?
I'm getting very close to returning a Honeywell T9 thermostat since the HomeKit integration is so minimal - but from what I've discovered as I begin descending the rabbit hole, these missing features may be on the HomeAssistant side, in which case it seems like it may be time to familiarize myself with HA development.
At least based on the descriptions of this project, it appears that modifications would likely be needed both here AND in HA core for both your use case and mine.
from aiohomekit.
@Entropy512 when homekit_controller pairs a device it stores a copy of what it calls the "entity map". This is JSON. In the case of the IP backend, this is pretty much the JSON returned by the device, so we know there is no data missing. We might normalize it though.
You should find it in /config/.storage/homekit_controller-entity-map
(where /config is the directory that your configuration.yaml lives).
I haven't seen this data for a T9. If you posted a new ticket with it I can give it a quick once over. I can tell you that the T6 was very basic.
In general, the climate interface is very limited compared to the manufacturers own interface. In the case of Ecobee, the vendor implemented their own horrible barely functional extensions to homekit. These are so bad and cause so many issues that i'm tempted to remove support from them again. So if you find something that isn't documented in the apple documentation, we'll need some convincing to add it upstream.
from aiohomekit.
The easy thing first.
The doorbell button has been supported for.. probably over a year. There wasn't really a way for home assistant to have entities for it though. Entities are about state, and a button press is an event, not state. So it was exposed through device automations.
On Wednesday in 2023.8, HA got an event entity. This was designed to handle things like doorbells and buttons. And in the same release we added support to homekit controller for the doorbell as an event entity.
I'll need to get back to you about the rest.
Think about it from the HA side as well as the characteristics. What entity in HA do you map the speaker to? what features does that HA entity require?
from aiohomekit.
@LukasGrebe some here, and some in homekit_controller. From what I recall, the hard part is setting up an RTSP stream and interfacing it with the ffmpeg stuff in HA core. Have you got a copy of the Apple protocol documentation?
https[://]pdfcoffee.com/hap-specification-non-commercial-version-pdf-free.html
If you post your thinking here happy to help.
from aiohomekit.
OK, pulled the entity map, will file a separate ticket tomorrow. Thanks for the info on how to do so!
from aiohomekit.
thanks for the pdf @Jc2k.
I've never done any serious python programming or any video stream interaction, so this may spread out to be quite a long project with a steep learning curve 😃
ill start with baby steps maybe. im thinking the characteristics of a device, as listed in the debug json by HA, should be represented as entities in HA.
In the HAP spec, I found the service "8.12 Doorbell" which requires nothing more than the characteristic "9.75 Programmable Switch" I found the corresponding UUID 00000073-0000-1000-8000-0026BB765291 of it in the dump of my HA connected device.
Section 11.3.2 of the HAP spec defines a "video doorbell Profile" – a "11.3 Service" of an "11 IP Camera" – as
a "8.12 Doorbell" service with
secondary, required, services: "8.6 Camera RTP Stream Management", ”8.36 Speaker” & ”8.27 Microphone”
I think this would make for a nice roadmap:
- start with the button
- add the speaker function, this should be an easier start into streaming application(?) and would enable the neat automation of playing a sound file telling people at the door to go around back with home assistant
- maybe microphone function because it would be audio again or Video.first.. we'll see.
so let me know what you think of these assumptions:
- Device Characteristics should map 1:1 to HA entities (possibly the new events with 2023.8)
- implement Spec 9.75 Programmable Switch, and have it create an entity in HA (yay we could have doobell presses in HA)
- Continue with Audio, then Video
from aiohomekit.
Related Issues (20)
- Sleepy Thread devices HOT 8
- Avoid BlueZ mtu warning by setting `_mtu_size`
- Always subscribe to all available encrypted notifications
- Characteristics for Fibaro Wall Plug (Homekit version)
- Slow response and warn logs for Nuki HOT 5
- Don't fetch programmable switch events on reconnect without getting a GATT notify for them HOT 5
- There is a race where we can be waiting for the device to be detected at startup and we get it more than once because we don't clear it before its detected again
- Fetching friendly_name does a linear search
- Using aiohomekit standalone: transport not supported HOT 2
- Eve Degree: Various BLE errors HOT 1
- asyncio.exceptions.TimeoutError during zeroconf search needs to be re-raised as AccessoryNotFoundError
- Log says "pairing established" but any interaction throws "is no known alias" HOT 4
- `first` to get accessory_info at startup is unexpectedly expensive
- Connection refused HOT 2
- BLE Pairing can fail due to race
- BLE callbacks can error if a device is unpairing because the cache has been deleted
- Missing Service cache clear is missing from pairing process
- Many callback to Called async_set_available_state with True at startup HOT 1
- BLE Events might still be read when processing disconnected notifications
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aiohomekit.