Apple has proven me wrong about HomeKit
theverge.com
theverge.com
The review process is very cumbersome as well, the company I work for wants users using the Home app, but apple requires we create a homekit compliant app to certify the hardware. I don't understand why Apple can't certify the products with their own Home app.
Lastly there is no way to make our hub present itself for remote connections in Homekit, despite Apple requiring us to use chips certified to their standard. The user has to have an ipad or apple tv in the house to act as a gateway. This is a confusing concept to explain to users if they've been using our protocol for the last 2 years and now want to migrate to Homekit.
Perhaps SmartThings needs to provide another scripting language besides Apache Groovy, one that's pleasurable to write, not painful. Gradle 3.0 added Kotlin, which works seamlessly with the IntelliJ IDE -- SmartThings could do the same!
At WWDC in May, Apple quietly announced that it planned to relax some of those restrictions. The biggest change was the introduction of software-based authentication. In other words, you won’t have to replace your stuff to make it Apple-compatible going forward, and you’ll get HomeKit’s lauded security thrown in for free — provided the device maker actually goes in and implements it.
The linked HomeKit FAQ says that software authentication is only for non-commercial devices, and that commercial/shipping products are still required to use the hardware authentication chip. So Apple's own docs clearly refute the notion that non-HomeKit hardware can receive a software update to become HomeKit compatible.
Ikea Tradfri is an exception here. They plan to add HomeKit support via a software update, but they do in fact already ship their hardware with an MFI HomeKit authentication chip.
It is possible to add a software authenticated device to a HomeKit network, though you get warned when doing so. This is not new (though official support for it is). But it still sounds like commercial products can't just add HomeKit compatibility via software without breaking Apple's terms.
https://developer.apple.com/homekit/specification/
Edit: also confirmed this in the WWDC video at 28:20 https://developer.apple.com/videos/play/wwdc2017/705/?time=1...
And let's say you come up with a really cool prototype? And now, you want to develop a HomeKit accessory for commercial sale. You need to join the Apple MFi Program. You need to join the Apple MFi Program and go through self-certification before you can begin your manufacturing or sale of your accessories. And this is really exciting.
i was doing some research recently about having wifi-connected smoke alarm/CO listening device that can recognize [1] off-the-shelf alarm beeps (which are standardized) and send me an SMS & email. this turned out to be surprisingly difficult to achieve. ideally, i could hook up a microphone to a BeagleBoard of Raspberry Pi, run some daemon that monitors audio, does beep recognition and lets me hook into notifications.
instead, there are proprietary listening devices (ok, fine) that all work by sending notifications via third-party service (not fine) to some android or iphone app (not fine).
[1]: https://techtutorialsx.com/2016/12/11/esp8266-external-inter...
[0]: http://www.mcscs.jus.gov.on.ca/english/FireMarshal/MakeitSto...
The put an ESP8266 in each device approach puts the complexity in hardware, and in interfacing the hardware to the smoke detector. If you ever replace a smoke detector with one from a different manufacturer you may have to change the interface method.
In addition to that, the ESP8266 approach is harder to manage. Whenever you change your wifi network in a way that requires updating login parameters you have to update the firmware on all your smoke alarm monitors.
With the listening approach, you just have to change login parameters on the device that is doing the listening (if it is using wifi...I'd probably actually have it on ethernet)
Furthermore, the listening approach can be expanded to listen for other things besides smoke detectors just be changing software. You could add listening for your doorbell, or your telephone, or your dog barking, or glass breaking.
Or a whistling gas kettle, which is an actual use case for me.
Generally, I very like the approach of listening and trying to recognize sounds. It's much more flexible than trying to put a brain in every other thing you have at home.
Pro's
- No internet required, can run entirely on a Rasberry Pi
- Integrates with most everything thanks to the huge component library (https://home-assistant.io/components/)
- Easy to write your own Python component to integrate with new stuff
- Can use existing SmartThings/etc hubs or Z-wave usb stick to talk to most anything
- Fairly easy to write automations
- Well written Python 3 code-base that's fairly easy to read and see what's going on yourself
Con's
- Definitely more for the DIY tinkerer
- Need to write YAML for the automations, though a new GUI makes this easier for many cases
Setting up an SMS to me when a motion sensor tripped was pretty easy, my automation was:
- alias: Alerting on bedroom motion
initial_state: False
trigger:
platform: numeric_state
entity_id: sensor.bedroom_burglar
above: 0
action:
- service: notify.aws_sns
data:
message: "Bedroom alarm sensor has been tripped!"
target: HassAlert
I've had it running for over a year now, and it's been quite nice.Admittedly I'm definitely a tinkerer myself, but I honestly like the config just being a bunch of YAML files. It's really easy to back up that way.
[1] https://github.com/moflo/homekit-accessory-emulator [2] https://github.com/wolfSSL/wolfssl [3] https://developer.apple.com/homekit/
Disclosure: Ex-Apple employee, but had no interaction with HomeKit.
But you can just pick up a standalone sensor like: https://www.apple.com/shop/product/HL232LL/A/ihome-control-i...
For the two dumb window AC units, I plugged them into a HomeKit smart plug like: https://www.apple.com/shop/product/HKEH2VC/A/elgato-eve-ener... With that plug you also get actual energy use and cost in real-time/historical as well.
Since they are all HomeKit all that sensor and state data is shared with all other HomeKit devices. So I created a HomeKit Automation that triggers the start of the window A/C units when temp triggers a certain threshold and during a certain time of day. Similar trigger to turn the AC off.
I found this HomeKit app to offer much more fine grained automation rules: https://itunes.apple.com/us/app/home-smart-home-automation/i...
It's designed with security in mind, so your HomeKit fridge isn't going to take part in a DDOS attack [1], and it doesn't require an internet connection. Some people viewed this as the same ol' Apple focused on devices while the world moves on to cloud services, but it turns out that's a big advantage too [2].
[1] https://arstechnica.com/information-technology/2016/10/doubl...
[2] http://www.businessinsider.com/nest-thermostats-go-down-2016...
1) turn off a light in the app
2) physically disconnect and reconnect power to a light (e.g. unplug and plug in)
3) note that light is on by default (at least for Hue lightstrips, not sure about others)
4) note that you cannot turn the light off without turning it on in the app
However, are you sure about 4?
I had power outages sometimes, when the power comes back, all the hue lights gets on (Not cool when it's 4 am by the way), but then I'd just press "Off" on my hue light app and they'd all turn off.
If I remember the Hue API, you can send a new state to the lights not matter what the previous state was, so I'm not surprised this works correctly, which is why I'm confused about your step 4).
Are you trying to turn them off via a Echo command specifically?
I suspect that even the vanilla Hue app on Android does that - given the way I often manage to switch the lights before the app UI figures out what's their current state.
--
4) is not true, I just tested it. If I leave the app open it does take a few seconds to sync. If I close the app and reopen it, it displays the correct status. This is using the official Phillips app. Some other apps may not read the status, but they clearly could.
Just because item 1 is cheaper than item 2 doesn't mean item 2 is overpriced.
In that respect many apple products are very overpriced for many people.
I also would not say that "great software" does not cost that much. It costs Apple billions of dollars annually to create that software.
Also note that not all parts that seem comparable are. For some parts like LCD panels that have more variance in quality, Apple has deals with suppliers to get the best panels while Dell and others have to buy the ones that don't hit quite as stringent QC.
Both of these are why looking at margins alone doesn't give you a complete picture.
...so, it at least seems plausible to me that Apple may be setting the prices for their PCs and "post-PC" products more correctly than most of their competitors. Even if that's true, the Apple Tax could still be a thing -- but the premium may be magnified by the "lose money on every unit and make it up in volume" tactic so many PC makers seem to have had through the 2000s.
Not just hating here either. I've owned numerous Apple machines, and still use a Macbook (with Ubuntu).
My concern with requiring a specific hardware solution was that it leaves you utterly at the mercy of Apple; if you get rejected by their program (which they do quite capriciously with apps) then you're completely sunk by having committed to an Apple-specific expense. Allowing a software security solution lets people justify a good product by appealing to Apple without being quite as beholden to their opaque decision making.
http://appleinsider.com/articles/15/07/22/homekit-market-hel...
However, getting the fundamentals correct definitely includes using high level encryption protocols, and we've seen what happens with devices that do not do so.
Just part of "apple needs to connect more with its (3rd party) devs" I guess.
Being tied to a cloud service is unacceptable. Cloud services only have lives of a few years before they disappear or change incompatibly. Houses need 20 to 50 years of support.
Below is an example using RDF, SPARQL, and some made-up ontologies.
Here's my kitchen light.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix lightBulb: <http://example.org/models/lightbulb/> .
<http://example.org/people/9876543210> _:me
<http://example.org/things/0123456789> _:kitchen-light
_:kitchen-light rdf:type <http://example.org/models/lightbulb>
_:kitchen-light lightBulb:hasOwner _:me .
_:kitchen-light lightBulb:hasName "Kitchen light" .
Let's turn it on. _:kitchen-light lightBulb:isOn true .
Which of my lights are turned on? SELECT ?light ?name
{
?light rdf:type <http://example.org/models/lightbulb> .
?light lightBulb:hasOwner _:me .
?light lightBulb:isOn ?isOn .
?light lightBulb:hasName ?name
}And make it work for low power/battery driven electronics which don't have the power budget for WiFi.
Oh and they don't have a whole lot of RAM and CPU cycles to spare, so pulling in an XML library isn't really the option of choice.
And how should authentication work, including initial setup?
It's a lot more complicated when you drill into the details. You might be willing to accept a bunch of trade-offs, but that will limit this to a niche product.
Several years ago I was helping a guy that had a home automation product with a scriptable interface. This was when X10 was prevalent.
He was very proud of it and described all the behaviors he'd coded in loving detail. But one stuck out in my mind: "When I get into bed, the lights go out!" "But", I said, "what if you wanted to read in bed?" He glared at me: "The Bed is for SLEEPING."
These systems need to work for us, and not require us to bend to what they're capable of.