Опция полного управления модулем через API используя GET запрос или MQTT. Функция позволяет так же создавать и восстанавливать резервную копию настроек. Основана на JSON формате.
Данную опцию использует конфигуратор модулей.
5.08.21 - глобальное обновление опции, возможны ошибки в работе.
В целях безопасности, если модуль находится в публичном доступе, то необходимо обязательно включать опцию Full Security.
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 чтение секций по раздельности.
При включенной опции модуль 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.
В списке выше могут находиться не все опции, которые пока не добавлены в поддержку. Возможно добавление поддержки по запросу к разработчику проекта.
{ "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" } }