Интеграция умного домашнего устройства с Google Home и Alexa

Я пытаюсь интегрировать устройства умного дома с Google Home и Alexa, но столкнулся со следующей проблемой.

  1. Связь между Google Home / Alexa и облачным сервером нашего устройства осуществляется по протоколу HTTP.
  2. Связь между умным домашним устройством и нашим облачным сервером осуществляется через MQTT.

Как мне отслеживать синхронный запрос-ответ? Есть ли лучший способ реализовать эту систему?


person Pradip Shenolkar    schedule 31.01.2019    source источник


Ответы (2)


Вполне возможно, что это связано с HTTP на MQTT и обратно.

Я сделал это как для Alexa, так и для Google Home для моих узлов Node-RED.

Вам просто нужно отслеживать текущие запросы и включать уникальный идентификатор в сообщения MQTT запроса / ответа, а также запускать таймер, чтобы не обрабатывать ответ от устройства.

person hardillb    schedule 31.01.2019
comment
Хорошо. Можете ли вы указать мне ссылку, по которой я могу передать код? - person Pradip Shenolkar; 31.01.2019
comment
Надежна ли эта техника для производственной среды? - person Pradip Shenolkar; 31.01.2019
comment
Это становится немного сложнее, когда вам нужно масштабировать по горизонтали, но это можно заставить работать - person hardillb; 31.01.2019

Проект gBridge (https://github.com/kservices/gBridge; https://about.gbridge.io) в основном реализует простой мост между Google Assistant / Alexa и MQTT.

Что касается ваших вопросов, есть два момента, которые помогают реализовать эти решения:

  1. Думайте об устройствах или конечных точках, а не о запросах. Когда вы просто хотите «перевести» HTTP в MQTT, вы создаете множество проблем, как вы уже догадались. Вероятно, вы захотите реализовать логику, которая позволяет темам MQTT управлять / запрашивать ваши фактические устройства, а не те, которые отвечают на HTTP-запросы. Это значительно упрощает работу.
  2. Кеширование необходимо. Разрешите вашему мосту иметь локальную копию состояний вашего устройства. При наличии правильно реализованного кеша вам не потребуется никакого ответа. Просто используйте кешированные данные.
person Peter K.    schedule 29.04.2019