How to make custom smart devices able to connect to smart home assistants (google assistant, alexa or Siri for example)?

Hello to you all,

One of my life goals is to make my home smart and have all the electronics designed by me. So far I’ve designed an smart WiFi AC dimmer based on ESP32. Currently I’m studying network mesh technologies in order to make my smart devices low power and more reliable with current wireless network protocols. I’m focusing on BLE mesh and Thread (especially thread, looks pretty good and I’m pretty sure it will be widespreaded in both smart devices market and IoT community).

One important requirement is that I want to be able to make my devices compatible with most smart assistants in the market. Or at least have a complete hardware design where the firmware can be upgraded in the long run. As far as my understanding goes, in order to be able to control your devices with your voice using current assistants (google, alexa or Siri), is mandatory to have internet connection (WiFi/Ethernet). I haven’t studied amazon alexa API or whatever documentation yet, but I’ve seen google’s and I need a cloud server. The diagram can be found in here IoT & google assistant

So far I have a few questions:

1) there are several ways to implement google assistant compatibility. For my smart dimmer, I used adafruit iot as cloud server and IFTTT. I want to use google cloud server and make my own actions for google home. The codelabs given by google make use of a virtual smart device. My question is, how does the Google home app (Android or IOS) recognize devices to be connected to the google home? My custom smart device has to be connected to the same wifi network? Can this device be recognized by google home mini (or Google home hub, google nest device, whatever device compatible) through BLE for example? Can this custom smart device be controlled using BLE so a WiFi chip is no longer necessary? I’m asking that because I realized that phillips hue lights for example, can be controlled directly by google home using bluetooth (only up to 6 devices) and if you need more, you need to buy the bridge or hub.

2) Most smart assistant devices have multi wireless connectivity. Google home mini has WiFi and Bluetooth (BLE, at least 5.0, don’t recall if it’s 5.1 or 5.2). The last amazon echo 4th generation, has WiFi, BLE and zigbee. Home pod mini has WiFi, BLE and thread. It would be awesome that those smart assistant devices could be able to join my mesh network and control devices inside the network (my main options are BLE mesh and Thread, zigbee as second choice). I’m guessing that I need to know how those smart assistant devices present themselves to the network. Is it mandatory that I need proper documentation and access to any SDK or API from companies, even paying for them? (I would expect this from Apple, but I would like to know about google or Amazon). Or I could sniff those devices and reverse engineer their attributes and configuration, so I can join them to the network and control my custom smart devices with them?

I’m asking all of this because I want to use the nRF52840 chip, with BLE, zigbee and Thread capabilities, but I don’t want to add a WiFi chip to my custom smart devices, because it increases size, power consumption and firmware complexity. Also I don’t want to rely on a hub, gateway, border router or bridge INITIALLY. Mind that doesn’t mean I don’t want to design a hub, I just want to test initially and make at the same time my devices scalable. I know that for thread I must have a border router, unless I figure it out how to use the home pod as a thread border router. Initially it would be awesome to explore BLE capabilities from google home devices or BLE and Zigbee from Amazon echo or alexa.

Thanks a lot for your help!

submitted by /u/mjhenriquez
[link] [comments]

Original article: How to make custom smart devices able to connect to smart home assistants (google assistant, alexa or Siri for example)?
Author: /u/mjhenriquez