Legrand Netatmo Home Control
Legrand Netatmo Home Control - модуль для работы с оборудованием Legrand Netatmo (умные розетки, обогреватели, диммеры и др.).
документация обновлена 01.01.2024
C 01.09.22 поддержка Legrand Netatmo Home Control приостановлена. Навык отозван, в связи со сменой API у производителя Legrand.
Legrand Netatmo Home Control - модуль, разработанный для работы с оборудованием Legrand Netatmo (умные розетки, обогреватели, диммеры и др.). Данный модуль можно встроить в проект и управлять оборудованием из приложения i3pro на панели управления (iOS, Android, Windows, Mac).
Требуется лицензия:*
Подключение
Модуль работает по HTTP протоколу. Статус онлайн приобретает только во время передачи данных, в остальное время статус всегда офлайн. Для подключения к оборудованию необходимо:
-
Скачать приложение Home+Control в Play Market или App Store;
-
В приложении Home+Control добавить и настроить необходимые устройства;
-
Настроить модуль и добавить в проект необходимые команды и фидбеки.
Интеграция модуля в проект
Мы подготовили специальный панельный проект, с помощью которого можно узнать все добавленные в приложении устройства и необходимые команды и фидбеки к ним. Для добавления модуля в ваш проект достаточно совместить вкладки проектов и подтвердить слияние.
Модуль содержит в себе (основные элементы):
- Java Script:
- "Driver" - в этом скрипте прописана основная логика модуля (не требует изменений);
- Script 1 - скрипт с примерами функций для дополнительной логики проекта (все пояснения к драйверу указаны в комментариях скрипта).
- Devices: Office (имя дома) - пример драйвера с командами и фидбэками для управления оборудования. Его можно удалить после импорта устройств из json файла. Так же в добавленный импортом файл можно добавить дополнительные команды и фидбэки из таблицы . Auth - драйвер, отвечающий за авторизацию на облаке производителя.
Получение ключа активации Legrand
Для получения ключа активации Legrand необходимо выполнить следующие шаги:
-
Зарегистрируйтесь на официальном сайте Legrand;
-
Перейдите на вкладку MY APPLICATIONS и нажмите Create new ;

- Заполните все необходимые поля в бланке регистрации нового приложения.
Обязательно в поле Type of the application выбираем Mobile application , поле First Reply Url автоматически заполнится этой ссылкой: https://eliotclouduamprd.b2clogin.com/oauth2/nativeclient

Для корректной работы приложения желательно выбрать все пункты в разделе Scopes .
-
После регистрации приложения, как только его одобрят, на почту придет письмо в котором укажут client id и client secret , необходимые ключи, которые нужно скопировать в скрипт проекта (см. описание в разделе Работа в iRidi Studio ).
-
Оформим подписку на Api Legrand, для этого перейдите на вкладку Api > SUBSCRIPTIONS > Stater Kit .

- Нажмите на кнопку Subscribe .

- Введите имя подписки и нажмите кнопку Confirm .

- Подписка оформлена. На странице My Subscriptions вы можете посмотреть или изменить ключи, а так же удалить подписку.

Работа в iRidi studio
Настройка модуля производится в несколько этапов:
- Открываем в iRidi Studio приложенный выше пример панельного проекта и вставляем в скрипт Driver client id и client secret .
-
Запускаем приложенный выше панельный проект с помощью эмулятора;
-
В окне приложения отобразится страница авторизации, где необходимо ввести адрес электронной почты и пароль, используя существующую учетную запись Legrand (эта учетная запись используется также для авторизации в приложении Home+Control );

- Подтвердите, что вы предоставляете приложению доступ к вашим данным Legrand;

- После предоставления доступа откроется страница проекта. Нажмите кнопку "Get JSON" для получения списка команд и фидбеков добавленного оборудования. Список формируется в логах проекта iRidi Log в формате JSON.

Пример:
Commands":[{"Name":"Офис Светильник|Set value", "Direction":1}, {"Name":"Офис Светильник|Get value", "Direction":1}]
"Feedbacks":[{"Name":"Офис Светильник|Reachable", "Direction":2}, {"Name":"Офис Светильник|Value", "Direction":2}, {"Name":"Офис Светильник|Status", "Direction":2}, {"Name":"Офис Светильник|Consumption type", "Direction":2}, {"Name":"Офис Светильник|Consumption value", "Direction":2}]
- Name - имя команды / фидбэка. Команда / фидбэк формируется по принципу:
имя комнаты + пробел (" ") + имя устройства + вертикальная черта ("|") + тип команды / фидбэка.
- Direction - тип (1 - команда, 2 - фидбэк).
-
Скопируйте полученную информацию в текстовый файл и сохраните его в формате *.json.
-
В iRidi Studio на вкладке Device нажмите кнопку Scanner / Import > **Universal import from JS (.js, .json) и выберите сохраненный ранее файл (п.6). В проект добавится драйвер с командами и фидбэками всех устройств.

Commands & Feedbacks
Так как драйвер работает по HTTP протоколу, для получения актуального статуса оборудования необходимо отправить, в соответствующий фидбеку канал, Get запрос.
Для каждой учетной записи Legrand ограничивает число запросов в сутки до 1000. Для уменьшения количества запросов используйте команду Get plant или Get ambient , так как эти команды опрашивают все фидбеки устройств за раз, таким образом экономится количество запросов..
Все добавленные команды и фидбэки подразделены по типам:
CommandType
| Имя команды или обратной связи | Value* | Описание |
|---|---|---|
| Run scene | не использует | Запустить конкретную сцену (используется только со сценами). Пример: Scene1|Run scene Название сцены должно полностью соответствовать тому, которое указано в приложении Home+Control. |
| Get plant | не использует | Получить актуальные значения всех фидбэков. Пример: Get plant |
| Get ambient | не использует | Получить актуальные значения фидбеков только в одной комнате. Пример: Кухня|Get ambient |
| Set value | Value | Установить значение для выбранного устройства. Пример: Офис Светильник|Set value |
| Get value | не использует | Получить актуальное значение для выбранного устройства. Пример: Офис Светильник|Get value |
| Get json | не использует | Получить информацию о всех командах и фидбэках оборудования в формате json (информация выводится в лог проекта). Пример: Get json |
| Authorize | не использует | Авторизоваться в приложении под учетной записью Legrand. Пример: Authorize |
| Get token | не использует | Cлужебная команда, которая отправляет запрос на получение токена от панельного проекта (для серверного проекта). Пример: Get token |
| Refresh token | не использует | Cлужебная команда, которая принудительно обновляет текущий токен. Пример: Refresh token |
Value — значение, которое необходимо указать при перетягивании команды на элемент. Если элемент не использует указанное значение, то его можно задать любое.
FeedbackType
| Имя команды или обратной связи | Value* | Описание |
|---|---|---|
| Value | Value | Текущее значение. Пример: Офис Светильник|Value |
| Status | 0 / 1 | Текущий статус. Пример: Офис Светильник|Status |
| Reachable | 0 / 1 | Текущее состояние подключения устройства. Пример: Офис Светильник|Reachable |
| Mode | Text | Текущий режим (только для автоматических устройств). Пример: Офис Device1|Mode |
| Battery | 0-100 | Текущий заряд батареи (для пульта управления). Пример: Беспроводной выключатель|Battery |
| Consumption type | Text | Тип потребления тока (Ватт, Ватт в час). Пример: Electrical cabinet Светильник|Consumption type |
| Consumption value | Value | Текущее значение потребления тока. Пример: Electrical cabinet Светильник|Consumption value |
| Out of commands | 0 / 1 | Сообщение о превышении лимита запросов на сутки (0 - не превышен, 1 - превышен). Пример: Out of commands |
| Out of commands message | Text | Сообщение о превышении лимита запросов на сутки. Пример: Out of commands message |
| Need authorize | Text | Сообщение с требованием авторизации. Пример: Need authorize |
Value — значение, которое будет отображать фидбэк на графическом элементе.
Настройка команд и фидбеков

Для управления оборудованием настройте команды (Commands) и каналы обратной связи (Feedbacks). Чтобы отправить команду, перетяните ее на графический элемент и укажите значение (Value), которое необходимо отправить. Чтобы отобразить значение с канала обратной связи, перетащите Feedback на графический элемент, и укажите, каким образом вывести значение (Value).
Подробнее о работе с графическими элементами написано в статье "Типы графических элементов".
Создание скрипта
В Script 1 указаны шаблоны функций, которые можно использовать для переопределения значений фидбэков (перевод текстового значения фидбэка в числовое или наоборот) и создания дополнительной логики проекта (например, отправка push-уведомлений по истечению кол-ва запросов).
Для этого необходимо:
- В первой строке заменить название драйвера "Office", на имя вашего дома, который был добавлен с помощью импорта устройств;
var l_oTest = new Legrand.Netatmo(IR.GetDevice("Office"), IR.GetDevice("Auth"), true);
- Воспользуйтесь шаблоном данных функций для написания логики:
l_oTest.onCommandsLimit = function() {
//do something
}
l_oTest.onModeReceive = function(in_sName, in_sText) {
return in_sText
}
l_oTest.onBatteryReceive = function(in_sName, in_sText) {
return in_sText
}
- .onCommandsLimit - действия по ограничению попыток получения значений;
- .onModeReceive - служит для преобразования полученных значений (для оборудования типа "Heater");
- .onBatteryReceive(in_sText) - служит для преобразования полученных значений (для оборудования типа "Battery").
Пример 1 (отправка push-уведомления на панель при окончании лимита запросов):
l_oTest.onCommandsLimit = function() {
IR.SendPush('You have reached limit for commands', '', 1);
}
Пример 2 (переопределение текстового значения в числовое):
- in_sName - имя устройства (до вертикальной черты);
- in_sText - полученное значение.
l_oTest.onBatteryReceive = function(in_sName, in_sText) {
var l_Value = in_sText;
if(in_sName == 'Room 1 Light 1') {
l_Value = 0;
switch(in_sText) {
case "full":
l_Value = 0;
break;
case "high":
l_Value = 1;
break;
case "medium":
l_Value = 2;
break;
case "low":
l_Value = 3;
break;
case "very_low":
l_Value = 4;
break;
case "unknown":
l_Value = 5;
break;
}
}
return l_Value;
}