API Options (обновлено: 21 Feb 2022, 15:55:36)

Опция  полного управления модулем через API используя GET запрос или MQTT. Функция позволяет так же создавать и восстанавливать резервную копию настроек. Основана на JSON формате.

Данную опцию использует конфигуратор модулей.



5.08.21 - глобальное обновление опции, возможны ошибки в работе.

В целях безопасности, если модуль находится в публичном доступе, то необходимо обязательно включать опцию Full Security.

Управление через GET запросы

http://[ip_adr]/jsonoptions?select=XXXXX, где ХХХХ - имя вкладки (main, hardware, servers и прочие... all - выведет все настройки). В ответ откроются настройки в json формате.

Пример 1: 

http://192.168.100.1/jsonoptions?select=thermostat - выдаст содержимое настроек термостата.

Пример 2:

http://192.168.100.1/jsonoptions?select=all - выдаст содержимое всех настроек модуля.

http://[ip_adr]/jsonoptions?write=XXXXX, где ХХХХ параметры в json формате (можно отправлять только параметры, которые требуется изменить). После отправки покажет OK и число измененных параметров.

Пример 3: 

http://192.168.100.1/jsonoptions?write={"hardware":{"interval":2,"i2c":{"scl":5,"sda":4},"ds18b20":{"en":1,"gpio":13}} - установит настройки секции hardware.

При попытке чтения или отправки чрезмерно большого пакета данных возможен отказ или сбой в работе прошивки. Используйте вместо секции all чтение секций по раздельности.


Управление через MQTT

При включенной опции модуль ESP подписывается на MQTT брокере на топики login/hostname[/set]/optionsget и login/hostname[/set]/optionsset и публикует ответы в топик login/hostname/optionsdata

Если в топик login/hostname[/set]/optionsget отправить 0, в ответ в топик login/hostname/optionsdata в json формате придет список вкладок, доступных для конфигурации на модуле. 

Если в топик login/hostname[/set]/optionsget отправить название вкладки, в ответ в топик login/hostname/optionsdata в json формате придет список параметров вкладки, доступных для конфигурации на модуле, и их текущие значения.

Если в топик login/hostname[/set]/optionsset отправить настройки в json формате (аналогичном полученному на предыдущем шаге), настройки на модуле будут изменены. Допускается публикация только тех параметров, значения которых должны быть изменены.

Топик set добавляется, если включен отдельный топик на запись. Рекомендуется !


На данный момент добавлена поддержка вкладок/опций:

main (не реализована установка времени)

servers (настройка серверов)

hardware

gpiomode (режимы работы GPIO: out , outinv , input, inputev, outf, outinvf)

interrupt (прерывания, режимы: counter , activesend , key , timekey)

linesdesigner (конструктор строк)

thermostat

ping (ping тест)

phoneaccess (список доступа телефонов для GSM control)

ipsecurity

display (Работа с дисплеями)

vgpio

vsens

template (sms/email шаблоны)

wol

mp3 (mp3 uart конструктор фраз)

scheduler (планировщик задач)

promode (активация ключа)

ddns (myddns.ru)

logic2 (Логический модуль 2, не отображается в секции all , ограничено до 5 шагов)

notifications (настройки уведомлений от gsm и sms сервисов)

emailnotice (emeil уведомления)

gsmcontrol

pwm

irrec (ИК приемник)

rcrec (RCswitch приёмник)

mcpgpio (MCP23017 только одна микросхема)

mcp8gpio (MCP23008 только одна микросхема)

narodmonget ( Narodmon GET)

telegram 

webkey

Interpreter 

gpiokeys

pid (не все параметры записываются)

d2d

cron

domoticz

camera

Функции, которые пока не поддерживаются:

NooLite MPR121, NooLite MR1132, FM радио, NRF24 хаб, RCswitch датчики, Led матрицы, Remap ADC, Коррекция датчиков, RFID замок, Wiegand26/34,  iButton, SD логгер, SPIFFS, Email check, VirtualWire 433/315, APDS9960, Lora, Энкодер, BT HUB,  ICQ, ModBus, Merсury 1 и 3.

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


Пример json пакета настроек:

Прошивка выдает и принимает json только одной строкой ! Ниже текст с форматированием для удобства примера.
{
   "main":{
      "hostname":"esptest",
      "admin":{
         "login":"",
         "passw":"",
         "security":0
      },
      "wifi":{
         "apname":"megarouter",
         "appassw":"20100100",
         "apmode":0,
         "ip":"192.168.1.200",
         "gw":"192.168.1.1",
         "staticip":1
      },
      "ntp":{
         "utc":3,
         "ip":"85.114.26.194"
      }
   },
   "hardware":{
      "interval":2,
      "i2c":{
         "scl":5,
         "sda":4
      },
      "ds18b20":{
         "en":1,
         "gpio":13
      }
   },
   "servers":{
      "mjd":{
         "en":1,
         "ip":"192.168.1.154",
         "interval":300
      },
      "narodmon":{
         "en":1,
         "interval":5
      },
      "flymon":{
         "en":1
      },
      "mqtt":{
         "en":0,
         "interval":60,
         "server":"mqtt.wifi-iot.com",
         "port":1883,
         "login":"maksms",
         "passw":"pass"
      }
   },
   "promode":{
      "en":1,
      "key":"78J7941000"
   },
   "gpiomode":{
      "0":"",
      "1":"",
      "2":"",
      "3":"",
      "4":"",
      "5":"",
      "12":"",
      "13":"",
      "14":"",
      "15":"",
      "16":"out" // возможные варианты: out , outinv , input , outf , outinvf
   },
   "display":{
      "mode":"oled", // выбран тип дисплея oled, возможны варианты: lcd1602, lcd2004, tft
      "backlight":1,
      "dislogo":0
   },
   "phoneaccess":{
      "1":"79091441234",
      "2":""
   },
   "interrupt":{
      "divider":10,
      "mode":"neg",
      "1":{
         "intgpio":0,
         "keygpio":5,
         "mode":"",
         "timeforkey":10
      },
      "2":{
         "intgpio":0,
         "keygpio":193,
         "mode":"key" // возможные варианты: counter , activesend , key , timekey
      },
      "3":{
         "intgpio":255,
         "keygpio":2,
         "mode":""
      },
      "4":{
         "intgpio":255,
         "keygpio":2,
         "mode":""
      }
   },
   "scheduler":{
      "1":{
         "hour":6,
         "min":0,
         "week":"1,2", // дни недели, тут только понедельник и вторник
         "mode":"display",
         "num":1,
         "state":1
      },
      "2":{
         "hour":22,
         "min":0,
         "week":"1,2,3,4,5,6,7",
         "mode":"display",
         "num":0,
         "state":0
      }
   },
   "linesdesigner":{
      "1":"_DSW1_ !! _VDD_ ! _GPIO16_ !",
      "2":"_CNT1I_",
      "3":"Сегодня _DATE_ _WEEK_ . дома _DSW1_ градусов",
      "4":"_DATE_ _WEEK_"
   },
   "ping":{
      "en":0,
      "ip":"8.8.8.8",
      "gpio":255
   },
   "ipsecurity":{
      "en":1,
      "homeen":1,
      "ipaccess":{
         "1":"192.168.1.255",
         "2":"109.194.190.101",
         "3":"255.255.255.255",
         "4":"192.168.100.255",
         "5":"255.255.255.255"
      }
   },
   "vgpio":{
      "20":154,
      "40":170,
      "60":177
   },
   "vsens":{
      "1":{
         "ip":"192.168.1.177",
         "sens":{
            "1":2,
            "2":3,
            "3":7,
            "4":5,
            "5":6
         }
      },
      "2":{
         "ip":"192.168.1.153",
         "sens":{
            "1":2,
            "2":3,
            "3":0,
            "4":0,
            "5":0
         }
      },
      "3":{
         "ip":"255.255.255.255",
         "sens":{
            "1":31,
            "2":31,
            "3":31,
            "4":31,
            "5":31
         }
      }
   },
   "notifications":{
      "interrupt":0,
      "pingalarm":1,
      "gsmen":1,
      "fone":"79005123456"
   },
   "emailnotice":{
      "emailen":1,
      "mailfrom":"mail@wifi-iot.ru",
      "server":"smtp-devices.yandex.com",
      "port":25,
      "login":"mail@wifi-iot.ru",
      "passw":"12345",
      "mailto":"mail@ya.ru"
   },
   "template":{ // тексты шаблонов уведомлений
    "1":{
         "txt":"DS: _DSW1_ VS: _VS11_ IP: _IP_",
         "cmd":"cmd1"
      },
      "2":{
         "txt":"no sms text",
         "cmd":"cmd2"
      },
      "3":{
         "txt":"no sms text",
         "cmd":"cmd3"
      }
   },
   "mp3":{
      "1":"0,0,41,T111",
      "2":"0",
      "3":"0"
   }
}