Работа с GPIO в проекте (обновлено: 25 Feb 2022, 07:53:49)

Эта документация относиться к новой системе работы с GPIO, внедренной 12.02.22.

Документация работы с локальными GPIO: ESP8266 и ESP32 , Linux.


Отличия от старой версии(до 12.02.22)

Ранее в 2021 году был реализован вывод карты GPIO на вкладке GPIO модуля, но вывод GPIO в системе модуля мог быть не доступен некоторых управляющих GPIO.

В mqtt названия топиков имели вид как outputX и inputX - сейчас gpioX.

Доступ состояниям GPIO через get запрос был по 2 адресам: http://[ip адрес]/gpioprintinput и http://[ip адрес]/gpioprint. Сейчас общий -  http://[ip адрес]/gpioprint.

Новая версия систематизирует работу с GPIO внутри прошивки и позволяет добавлять новые GPIO(например новые расширители портов) быстро, при этом не требуется заботиться о их выводе в системах модуля.


Принцип работы с GPIO в проекте

GPIO в системе - это не только работа с локальными GPIO , но и работа с расширителями портов, управление опциями(например включение термостата) или вызов событий(например отправка sms)

Номера могут иметь диапазон от 0 до 254. Номер 255 зарезервирован  как не активное действие.

Список используемых GPIO можно посмотреть на вкладке GPIO модуля.

Поддерживается 2 режима работы, выбирается нажатием соответствующей кнопки в интерфейсе вкладки GPIO:

Standart (Стандарт) - стандартный классический режим назначения номеров gpio, в некоторых опциях(в шестеренках) можно поменять номер во избежания конфликтов номеров, если есть пересечение номеров, то в списке будет отображена ошибка "Conflict".

Sorted(Сортировка) - новый режим работы, позволяющий назначить номера автоматически строго подряд - в этом случае пересечений номеров  не будет. Номера GPIO могут меняться при изменении списка опций, а так же при изменении числа GPIO в опции D2D.

Номера GPIO использующиеся для вызова событий и не имеющих реализации чтения состояния помечаются в списке GPIO как "Control". Они не доступны по http get и по mqtt для отображения.

Статусы всех GPIO , кроме типов "Control" отправляются в сервисы MQTT, MajorDoMo, narodmon.ru, Zabbix. А в сервисах Domoticz, Wunderground.com, Thingspeak.com, Blynk требуется их выбор в настройках опции.

Отправка GPIO от D2D и VGPIO так же не передаются - исключение опция narodmon.ru(настраивается).


Текстовые метрики

Для отображение состояния в конструкторах строк, в текстовых шаблонах и в других текстовых системах используется метрика _GPIOx_  , которая отображает 1 или 0 в зависимости от состояния, где х - номер GPIO.


Управление и доступ к GPIO через HTTP GET запрос

Для установки значения через GET запрос требуется подать команду вида http://[ip адрес]/gpio?st=1&pin=12 , где st - необходимое состояние, значение равное 2 будет происходить инвертирование выхода. pin - номер GPIO, которым требуется управлять.

Дополнительные параметры для локальных GPIO:

&flash=1 - настройка запишется в энергонезависимую память.

&click=10 - инвертирует состояние через указанный промежуток времени в секундах, &mclick=10 - аналогично в миллисекундах.

Просмотреть состояние GPIO можно по адресу http://[ip адрес]/gpioprint.

GET запросы на данные адреса модуля требует ввод логина/пароля, если включена опция "Full Security".


Управление по MQTT

Топики имеют вид  login/hostname/gpioX , где Х - это номер GPIO.

Топик на запись имеет вид  login/hostname/set/gpioX , если включен отдельный топик на запись. Очень рекомендуется !!!