Device to Device(D2D) (обновлено: 22 Jan 2023, 18:09:04)

Обмен данными и управление между модулями по собственному протоколу wifi-iot с возможностью шифрования AES-128. Передача данных датчиков на сразу все модули в сети. Продвинутая замена устаревших опций Virtual sensors и Virtual GPIO.

Тестовая опция: работа D2D через облако wifi-iot - настройка в шестеренке. Работа через облако - это обмен данными и управление между устройствами, находящихся в разных сетях (Например: дом - дача). Устройства в облаке отображаются на специальной страницеНедоступно на ESP8266 noOS.

Практически не требуется настройка опции: Автоматическое добавление найденных устройств в сети, автоматическое определение типа метрики принятых датчиков. Управление удаленными GPIO/PWM.


Локальный обмен основан на протоколе UDP и по этому надежная доставка информации не гарантирована при проблемах сети ! Интервал отправки 10 секунд и по событию INPUT EVENT.

Работа через облако использует постоянное TCP соединение с сервером в Интернете. На данный момент в бета режиме отправка данных установлена в 60 секунд. Управление GPIO и PWM мгновенное как и в локальном обмене.

Настройка опции

Для более надежной работы опции рекомендуется на RTOS прошивках настроить опцию Power saving в режим none и перезагрузить устройство!

В шестеренке включаются:



Передача данных - требуется для отправки другим модулям данных с датчиков и состояния GPIO/PWM, на которых включена опция приема данных D2D. Обмен внутри сети

Прием данных - требуется для приема данных с других модулей датчиков и состояния/управления GPIO/PWM , на которых включена опция передачи данных D2D. Обмен внутри сети

Передача данных поверх облака wifi-iot - аналогично, но обмен идет через облако wifi-iot.

Прием данных поверх облака wifi-iot - аналогично, но обмен идет через облако wifi-iot.

Опции могут использоваться одновременно и передача и причем на одном модуле. Одновременная работа приема и передачи , локального и облачного обмена (включение всех 4 опций) не рекомендуется.

Не стоит включать одновременно и прием и передачу данных в облако, если требуется только принимать или отправлять данные - это уменьшит лишний трафик, особенно актуально, если канал связи дорогой(GPRS).


Там же можно указать максимальное возможное количество принимаемых модулей для приема данных. Чем больше их количество задано, тем меньше на каждый модуль будет доступных GPIO в GPIO MAP!

Шифрование - Опция по умолчанию выключена. Используется алгоритм AES-128. В ESP32/ESP32S2/ESP32C3/ESP32S3 он аппаратный. Алгоритм шифрования закрыт.

Ключ на данный момент один на всех, но с возможностью в будущем его менять пользователю. Требуется включать шифрование сразу на всех модулях в сети. Хотя прием не шифрованных данных на модуле на данный момент допускается.


В веб модуля настраивается:

Настройка передающего модуля - не требуется (Устройство передает все данные с включенных опций модуля).

Настройка принимающего модуля - (Страница настройки опции ниже:)


Enable auto added device -найденные модули автоматически добавляются в список ниже в первое пустое поле. Можно добавить имя удаленного модуля и вручную. В сети не должны быть устройства с одинаковым именами!

Size map step GPIO/PWM - установка задает максимальное количество GPIO/PWM зарезервированных на локальном модуле на каждый удаленный модуль, большой шаг уменьшает свободное количество локальных GPIO и не дает управлять локальными опциями, использующие данные GPIO. Маленький шаг не дает управлять удаленными GPIO выше этого предела - на карте эти GPIO будут с прочерком в локальной нумерации. Использование старой VGPIO смещает номера D2D опции. Установка параметра в ноль выключает управление удаленными модулями. Максимальное количество шага рассчитывается исходя из установленного количества приемных модулей.

Фильтр датчиков - это колонка в списке устройств, где указываются через запятую или дефис номера датчиков, которые требуется скрыть на главной странице. Если датчиков с одного устройства принимается больше чем 64, то выше 64 датчики скрыть не возможно!


Доступ из систем модуля

Вывод данных в текстовых опциях (конструктор строк и прочие):

GPIO - стандартно _GPIOx_, где номер берем со вкладки MAP GPIO колонка local. Аналогично и с pwm.


Датчики - _D2Dxxyy_, где xx - двухзначное число номера устройства, yy - двухзначный номер метрики на устройстве.


Пример: _D2D0202_ - это D2D 2   2: Humidity: 68.0 %

 

Interpreter

Чтение/управление GPIO удаленных модулей - стандартно через функции gpioset и gpioget.

До 6.02.21: Чтение датчиков через переменную  d2d[x][y], где x - номер устройства считая от нуля, y - номер метрики на устройстве считая от нуля.

После 6.02.21: Чтение датчиков через переменную   d2dYYXX , где ХХ - номер метрики считая от 01, YY - номер устройства считая от 01

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

Narodmon.ru

Все данные датчиков и состояние GPIO/PWM передаются на сервер - только в Pro режиме. Доступно управление GPIO/PWM. 

Другие системы модуля

Вывод данных на другие сервисы не предусмотрен.

Метрики доступны на всех дисплеях, а так же в опциях Logic2, Термостат, ПИД.


Ограничения и особенности опции

1. Включение/выключение датчика или gpio на передающих модулях смещает их список, нужно учитывать это на приемных модулях.

2. Не все датчики передают ошибку - это постепенно будет исправлено по отзывам пользователей.

3. Количество метрик датчиков с одного модуля ограничено до 255, а так же размером пакета UDP. Сейчас он установлен в 256 байт.

4. Прием большого количества удаленных датчиков может вызвать перегруз (зависание) главной страницы на модулях ESP8266, на RTOS прошивках этого быть не должно. Включение конструктора главной страницы исключает (контролирует) такую проблему. Так же для ограничения вывода можно воспользоваться фильтром датчиков на вкладке D2D.

5. Качество работы опции зависит от надежности и загруженности сети и возможны потери пакетов приемником, если на нем работают ресурсоёмкие задачи, например - BLE HUB.

6. В отличии от VSENS данная опция может передавать данные даже с модуля, который находится в спящем режиме, но не работает через Интернет.

7. Опция не совместима с VGPIO v2 (расширение VGPIO), т.к. опция его заменяет. С обычной базовой VGPIO проблем в совместимости нет, но он занимает карту GPIO.

8. Локальное управление GPIO и PWM идет по HTTP GET запросу и на удаленном модуле не должна быть включена опция Full Security. На удаленном устройстве веб сервер должен работать на 80 порту. Для Linux приложения требуется настройка !!! Не касается D2D через облако.

9. Отправка метрик D2D в облачные сервисы(сервера MQTT, Majordomo) не предусмотрена. Модули должны сами отправлять эти данные напрямую без посредников. Исключение - опция Narodmon.

Карта GPIO/PWM


Для определения соответствия  номеров GPIO и PWM с удаленного модуля на модуле локальном в веб интерфейсе можно посмотреть их список зайдя в настройки опции D2D на вкладку Map GPIO/PWM.

Кроме обычных GPIO и расширителей портов, там будут присутствовать и GPIO, которые предназначены для вызова определенных функций (тип Control), например вызов SMS шаблона для отправки в Телеграмм или управление радио или камерой. GPIO, использующие эти номера можно посмотреть в документации на эти опции, в некоторых опциях данный параметр может настраиваться в шестеренке.

PWM на удаленных модулях - это могут быть как реальные PWM так и внешние PWM или димер, а так же контроль управления, например громкостью радио. Номера PWM не соответствуют номерам GPIO !!

Возможны совпадения номеров GPIO у нескольких опций и в этом случае требуется настройка данных опций (в шестеренке), если есть возможность, если нет - то сообщаем о конфликте GPIO разработчику проекта.