Термостат Nest — интеграция c контроллером LogicMachine

Термостат Nest

Совремтермостат nestенные технологии и скорость их развития никого уже не удивляет. Но масштаб развития настолько огромен, что уследить за всеми тенденциями да еще и во всех сферах просто не возможно. Одно из направлений, которое уже давно бежит вперед семимильными шагами, это системы автоматики или «Умный дом». В таких системах уже никого не удивишь управлением светом через смартфон или регулировкой оконных штор в зависимости от яркости света. Однако на рынке все время появляются новые устройства, которые завоевывают свое место среди потребителей. Одним из таких устройств стал термостат Nest американской компании Nest Labs. Казалось бы, что такое термостат и чем он может удивить потребителя, но оказалось, что может особенно если он еще и умный.

Термостат Nest позиционируется как умное обучаемое устройство способное интегрироваться со множеством климатического оборудования. Он запоминает, какая температура нравится пользователю, и подстраивает общий климат во всем помещение, согласно предпочтением. Термостат способен запоминать предпочитаемую температуру не только по времени, но и по дням недели. Устройство оснащено цифровым дисплеем способным выводить различную полезную информацию в графическом виде (текущая температура, время, погода).

 nest-thermostat-leaf-en-us nest-schedulenest-farsight

По данным компании с 2011 года использование термостата Nest позволило сэкономить более 8 млрд. кВт энергии в миллионах домах по всему миру. Независимые исследования показали, что использование данного устройства позволяет сэкономить до 12% затрат по счетам за отопление и до 15% по счетам за электроэнергию необходимую для работы климатического оборудования.

Взаимодействие с устройством через API

Помимо богатого графического и встроенного функционала в термостат Nest встроен мощный API, который позволяет разрабатывать собственные решения и модули для интеграции со сторонними производителями оборудования.  Программа Nest Developer предоставляет весь необходимый инструментарий, необходимые для проектирования, разработки, продажи и запуска продуктов связных с Nest. Nest API предлагает доступ к данным, совместно используемым устройствами Nest. С помощью Nest API ваш продукт может взаимодействовать с этими данными устройства и реагировать на них. Сам термостат подключается к сети Интернет, для обмена данными, через встроенный модуль Wi-Fi.

Данные всех устройств хранятся в облачной службе Nest, которая предоставляет доступ параметрам устройства в виде объекта JSON. Когда значение данных в термостате изменяется, значения данных в службе Nest мгновенно обновляются. Таким образом разрабатываемый Вами продукт может обновлять содержимое дисплея, значения параметров и состояние устройства.

Доступ к службе Nest можно получить несколькими способами:

REST — получение или отправка данных по запросу через различные интервалы времени;

REST streaming — прямое, постоянное подключение к службе Nest для постоянного взаимодействия с параметрами устройства;

Multiplex REST streaming — прямое подключение типа Cloud-to-Cloud для постоянного обмена данными между сервисами в реальном времени;

Firebase SDK — двунаправленная связь на основе Realtime Database (NoSQL) за счет связывания данных через объекты.

ad-howitworks

 

Например Вам необходимо разработать службу, которая должна отслеживать температуру текущую (current) и заданную (target). При изменении значений на самом термостате данные с него моментально обновляются в службе Nest и Ваш подписанный на объект JSON сервис, также моментально получит обновленные данные для последующей обработки.

Получение доступа к Nest API

API Nest использует протокол OAuth 2.0 для аутентификации и авторизации. Прежде чем получить доступ к закрытым данным с помощью API Nest, необходимо получить ключ доступа (token) доступа, который предоставляет доступ к этому API. Один токен доступа может предоставлять различные степени доступа к нескольким разделам API.

Прежде чем работать с устройством его необходимо привязать к учетной записи на сайте Nest, после чего осуществлять последующие шаги для регистрации в службе Nest Developer.

Шаг — 1 (Настройка продукта «Work with Nest»)

Первым делом необходим зарегистрировать в службе Nest Developer  и создать конфигурацию для своих продуктов

Для регистрации продукта необходимо выбрать  [CREATE NEW PRODUCT]  и заполнить все поля на форме регистрации.

  1. Название продукта :as-product-details-create
  • должно быть уникальным;
  • его видят пользователи
  • не должно включать в название «Nest» или Works with Nest
  1. Опишите, что ваш продукт будет делать и как ваш продукт будет взаимодействовать с устройствами Nest
  2. Маркетинговая информация
  • Выберите целевое количество пользователей
  • Выберите одну или две категории, в которых вы планируете продавать свой продукт
  1. URL-адрес странницы технической поддержки Вашего продукта.
  2. Выберите разрешение для управления устройством.
  • подробнее про разрешения можно ознакомиться на сайте производителя

По окончанию заполнения всех полей необходимо нажать кнопку  [CREATE NEW PRODUCT] 

После настройки продукта вам будет предложено ввести URI переадресации или оставить поле URI-редиректа пустым, чтобы использовать авторизацию на основе PIN-кода. Необходимо оставить пустым!

После сохранения конфигурации, Вашему продукту будет присвоен уникальный идентификатор клиента и секретный ключ клиента («Product ID» и «Product Secret» на вкладке «Обзор» на странице «Продукты»). Кроме того, вашему будет продукту назначена ссылка для авторизации.

Шаг — 2 (Запрос PIN-кода)

После настройки продукта необходимо запросить код авторизации (PIN-код). Код авторизации не является окончательным токеном (ключем), который используется для доступа Nest API. Он используется на следующем этапе потока OAuth 2.0 для обмена на финальный токен доступа. Этот шаг гарантирует пользователю то, что разрешение предоставляется правильному продукту с необходимым доступом.

Для этого необходимо перейти по ссылке Authorization URL (полученный на первом шаге) в браузере, после чего будет запрошено дополнительное согласие на доступ.

После перехода на страницу необходимо нажать кнопку [ACCEPT] и тем самым подтвердить разрешение на доступ и получите необходимый PIN-код.

 

 

 

 

 

 

 

Шаг — 3 (Обмен PIN-кода на Access Token)

На заключительном этапе получения необходимо обменять полученный PIN-код на  токена доступа. Это делается путем выполнения запроса HTTP POST запроса. Выполнить такой запрос можно различными способами, примеры которых подробно описаны по ссылке.

Самым простым способом будет использование бесплатной консольной утилиты curl. Данная утилита по умолчанию присутствует в операционной системе Linux, но для Windows её тоже можно отдельно скачать.

Запрос POST с использованием данной утилиты выглядит следующим образом.

curl -X POST \
  -d 'code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code' \
  "https://api.home.nest.com/oauth2/access_token"
client_id «Product ID» полученный на Шаге — 1
client_secret «Product secret» полученный на Шаге — 1
code authorization code полученный на Шаге — 2
grant_type Значение должно всегда быть: authorization_code

Если запрос выполнен успешно то в ответ должен вернуться объект JSON, содержащий следующие поля:

Access_token — токен доступа для пользователя (не должен распространятся или быть публичным).
Expires_in — срока действия токена в секундах.

Шаг — 4 (Запрос данных объекта)

В конечном итоге для получения и обработки данных с термостата Nest необходимо выполнить следующего вида POST запрос:


curl -v -L
-H "Content-Type: application/json"
-H "Authorization: Bearer Access_token-here" 
-X GET "https://developer-api.nest.com/"

В ответ мы получим объект JSON с параметрами термостата.

Подробнее узнать про запросы POST на чтение и запись можно ознакомиться на сайте производителя.

Получение данных термостата Nest в LogicMachine

LogicMachine — это свободно программируемый контроллер компании EVIKA с множеством различных интерфейсов (KNX, USB, RS-485 и т.д) применяемых в различных сферах. В моем случае данный контроллер управляет климатом в составе системы «Умный Дом», а термостат Nest является внешним элементом управления температурой. Учитывая тот момент, что термостат не имеет физических интерфейсов совместимых KNX, но имеет функциональный, встроенный API, то интеграция осуществлялась через Nest API.

В различных помещениях здания располагаются термостаты Nest с помощью которых регулируется температура. Необходимо чтобы параметры устанавливаемые устройством передавались в LogicMachine, которая в свою очередь отдает команды управления исполнительным механизмам (сервоприводам системы отопления, теплого пола и кондиционерами).

Для этого необходимо создать резидентный скрипт который будет запрашивать данные у облачной службы Nest, получать необходимы значения температуры и обрабатывать их.

Содержание скрипта следующее:


function request()
local auth, url, res, stat, hdrs

require('json')
require('ssl.https')

auth = 'Ваш_AccessToken_здесь' 

url = 'https://developer-api.nest.com/devices.json?auth=' .. auth
res, stat, hdrs = ssl.https.request(url)

if stat == 307 then
res = ssl.https.request(hdrs.location)
end

return json.decode(res)
end

res, data = pcall(request)

temperature_1=data.thermostats.<object1_id_here>.target_temperature_c
temperature_2=data.thermostats.<object2_id_here>.target_temperature_c

grp.write('3/1/102',temperature_1)
grp.write('3/1/101',temperature_2)

Данный скрипт будет запрашивать данные с термостата Nest через определенный интервал и отправлять их в шину KNX для последующей обработки.

В конечном итоге можно сказать, что даже такая незначительная штуковина как термостат  Nest имеет огромный потенциал для роста и применения его в различных системах систем автоматики или отдельных систем управления климатом.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *