Apple HomeKit Accessory Protocol in D
Vladimir
va.shabunin at yandex.ru
Thu Oct 15 21:14:06 UTC 2020
Hi,
implemented Proof of Concept for HomeKit Accessory Protocol for D
on Linux.
a lot of stuff was ported from HAP-NodeJS project and
homekit_python.
https://github.com/shabunin/hap-d
Works: pairing procedure and basic lightbulb accessory control -
[GET /characteristics] and [PUT /characteristics] method. Not
implemented: persisted pairing(at a moment no info is saved),
better abstractions to work with accessories(callbacks, etc).
Dependencies are only libsodium for cryptographic methods.
Multicast DNS advertisement is implemented in pure D.
I didn't use vibe-d or some other HTTP-server framework due to
nature of HomeKit protocol. At first, when pairing was not
established yet, HTTP-requests are pretty normal. But when
pairing is done all communications become encrypted. Socket is
still open(like keep-alive session) but now every message has no
HTTP structure - you should decrypt it first. So, kind of
middleware function is required for vibe-d. I couldn't find the
way to do it and used own HTTP-server.
---
First things I would like to do next is to review code with fresh
look, create better file structures and think about general app
architecture - how abstractions for accessories should be done -
classes, callbacks, etc.
Debugging pairing procedure was hard part but it is done at this
moment. I'm asking now community to join me in next development.
Critiques, advises, propositions, code commits will help in
making great project.
More information about the Digitalmars-d
mailing list