From 70d62b1a54f2965c812163dfcbba0434be187dcf Mon Sep 17 00:00:00 2001 From: morris Date: Thu, 17 Jul 2025 23:26:12 +0800 Subject: [PATCH] feat(restful_server): upgrade the example to use vue3+vuetify3 also cleaned up the backend firmware to use littlefs filesystem. --- .../protocols/esp_http_server.rst | 2 +- .../protocols/esp_http_server.rst | 2 +- .../http_server/restful_server/CMakeLists.txt | 1 - .../http_server/restful_server/README.md | 131 ++++++---------- .../front/web-demo/.browserslistrc | 3 +- .../front/web-demo/.eslintrc-auto-import.json | 82 ++++++++++ .../front/web-demo/.eslintrc.js | 17 -- .../restful_server/front/web-demo/.gitignore | 7 +- .../restful_server/front/web-demo/README.md | 44 ++++++ .../front/web-demo/babel.config.js | 5 - .../front/web-demo/eslint.config.js | 3 + .../restful_server/front/web-demo/index.html | 13 ++ .../front/web-demo/jsconfig.json | 20 +++ .../front/web-demo/package.json | 49 +++--- .../front/web-demo/postcss.config.js | 5 - .../front/web-demo/public/favicon.ico | Bin 6429 -> 15406 bytes .../front/web-demo/public/index.html | 19 --- .../restful_server/front/web-demo/src/App.vue | 54 +------ .../front/web-demo/src/assets/logo.png | Bin 37327 -> 228354 bytes .../front/web-demo/src/components/README.md | 35 +++++ .../front/web-demo/src/composables/useApi.js | 141 +++++++++++++++++ .../front/web-demo/src/layouts/README.md | 5 + .../front/web-demo/src/layouts/default.vue | 72 +++++++++ .../restful_server/front/web-demo/src/main.js | 31 ++-- .../front/web-demo/src/pages/README.md | 5 + .../front/web-demo/src/pages/chart.vue | 85 ++++++++++ .../front/web-demo/src/pages/index.vue | 59 +++++++ .../front/web-demo/src/pages/light.vue | 144 +++++++++++++++++ .../front/web-demo/src/plugins/README.md | 3 + .../front/web-demo/src/plugins/alova.js | 10 ++ .../front/web-demo/src/plugins/index.js | 19 +++ .../front/web-demo/src/plugins/vuetify.js | 48 +++++- .../front/web-demo/src/router.js | 29 ---- .../front/web-demo/src/router/index.js | 36 +++++ .../front/web-demo/src/services/api.js | 70 +++++++++ .../front/web-demo/src/store.js | 28 ---- .../front/web-demo/src/stores/README.md | 5 + .../front/web-demo/src/stores/app.js | 8 + .../front/web-demo/src/stores/chart.js | 25 +++ .../front/web-demo/src/stores/index.js | 4 + .../front/web-demo/src/styles/README.md | 3 + .../front/web-demo/src/styles/settings.scss | 10 ++ .../front/web-demo/src/views/Chart.vue | 41 ----- .../front/web-demo/src/views/Home.vue | 40 ----- .../front/web-demo/src/views/Light.vue | 62 -------- .../front/web-demo/vite.config.mjs | 145 ++++++++++++++++++ .../front/web-demo/vue.config.js | 11 -- .../restful_server/main/CMakeLists.txt | 10 +- .../restful_server/main/Kconfig.projbuild | 43 +----- .../restful_server/main/esp_rest_main.c | 105 ++++--------- .../restful_server/main/idf_component.yml | 6 +- .../restful_server/main/rest_server.c | 58 ++++--- .../restful_server/partitions_example.csv | 3 +- .../restful_server/sdkconfig.defaults | 2 - tools/ci/check_copyright_ignore.txt | 2 - 55 files changed, 1263 insertions(+), 597 deletions(-) create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/.eslintrc-auto-import.json delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/.eslintrc.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/README.md delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/babel.config.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/eslint.config.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/index.html create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/jsconfig.json delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/postcss.config.js delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/public/index.html create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/components/README.md create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/composables/useApi.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/layouts/README.md create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/layouts/default.vue create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/pages/README.md create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/pages/chart.vue create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/pages/index.vue create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/pages/light.vue create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/plugins/README.md create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/plugins/alova.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/plugins/index.js delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/router.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/router/index.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/services/api.js delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/store.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/stores/README.md create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/stores/app.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/stores/chart.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/stores/index.js create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/styles/README.md create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/styles/settings.scss delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/views/Chart.vue delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/views/Home.vue delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/src/views/Light.vue create mode 100644 examples/protocols/http_server/restful_server/front/web-demo/vite.config.mjs delete mode 100644 examples/protocols/http_server/restful_server/front/web-demo/vue.config.js diff --git a/docs/en/api-reference/protocols/esp_http_server.rst b/docs/en/api-reference/protocols/esp_http_server.rst index 458ed327e2..88078305da 100644 --- a/docs/en/api-reference/protocols/esp_http_server.rst +++ b/docs/en/api-reference/protocols/esp_http_server.rst @@ -106,7 +106,7 @@ Asynchronous Handlers RESTful API ----------- -:example:`protocols/http_server/restful_server` demonstrates how to implement a RESTful API server and HTTP server, with a frontend browser UI, and designs several APIs to fetch resources, using mDNS to parse the domain name, and deploying the webpage to host PC via semihost technology or to SPI flash or SD Card. +:example:`protocols/http_server/restful_server` demonstrates how to implement a RESTful API server and web server, with a modern frontend UI, and designs several APIs to fetch resources, using mDNS to parse the domain name, and deploying the webpage to SPI flash. URI Handlers ------------ diff --git a/docs/zh_CN/api-reference/protocols/esp_http_server.rst b/docs/zh_CN/api-reference/protocols/esp_http_server.rst index 842719283e..4fa545f442 100644 --- a/docs/zh_CN/api-reference/protocols/esp_http_server.rst +++ b/docs/zh_CN/api-reference/protocols/esp_http_server.rst @@ -106,7 +106,7 @@ ESP HTTP 服务器有各种事件,当特定事件发生时,:doc:`事件循 RESTful API ----------- -:example:`protocols/http_server/restful_server` 演示了如何实现 RESTful API 服务器和 HTTP 服务器,并结合前端浏览器 UI,设计了多个 API 来获取资源,使用 mDNS 解析域名,并通过半主机技术将网页部署到主机 PC、SPI flash 或 SD 卡上。 +:example:`protocols/http_server/restful_server` 演示了如何实现 RESTful API 服务器和网页服务器,设计了多个 API 服务端点,使用 mDNS 解析域名,以及将网页部署到 SPI flash 中。 URI 处理程序 ------------ diff --git a/examples/protocols/http_server/restful_server/CMakeLists.txt b/examples/protocols/http_server/restful_server/CMakeLists.txt index 0ea48face2..e619339e99 100644 --- a/examples/protocols/http_server/restful_server/CMakeLists.txt +++ b/examples/protocols/http_server/restful_server/CMakeLists.txt @@ -1,6 +1,5 @@ cmake_minimum_required(VERSION 3.16) - include($ENV{IDF_PATH}/tools/cmake/project.cmake) # "Trim" the build. Include the minimal set of components, main, and anything it depends on. idf_build_set_property(MINIMAL_BUILD ON) diff --git a/examples/protocols/http_server/restful_server/README.md b/examples/protocols/http_server/restful_server/README.md index 512a5531b0..1f92712d83 100644 --- a/examples/protocols/http_server/restful_server/README.md +++ b/examples/protocols/http_server/restful_server/README.md @@ -7,135 +7,102 @@ ## Overview -This example mainly introduces how to implement a RESTful API server and HTTP server on ESP32, with a frontend browser UI. +This example demonstrates on the implementation of both the RESTful API server and web server on ESP32, with a modern UI made by Vue.js and Vuetify frameworks. Please note, using the Vue is not a must, we're just using it as an example to show how to build a modern web UI with the latest web technologies in an IoT application. -This example designs several APIs to fetch resources as follows: +This example exposes several APIs for the clients to fetch resources as follows: -| API | Method | Resource Example | Description | Page URL | -| -------------------------- | ------ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------- | -------- | -| `/api/v1/system/info` | `GET` | {
version:"v4.0-dev",
cores:2
} | Used for clients to get system information like IDF version, ESP32 cores, etc | `/` | -| `/api/v1/temp/raw` | `GET` | {
raw:22
} | Used for clients to get raw temperature data read from sensor | `/chart` | -| `/api/v1/light/brightness` | `POST` | {
red:160,
green:160,
blue:160
} | Used for clients to upload control values to ESP32 in order to control LED’s brightness | `/light` | - -**Page URL** is the URL of the webpage which will send a request to the API. +| API | Method | Resource Example | Description | +| -------------------------- | ------ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `/api/v1/system/info` | `GET` | {
version:"v6.0-dev",
cores:2
} | Return system information like IDF version, CPU cores, etc | +| `/api/v1/temp/raw` | `GET` | {
raw:22
} | Return temperature data (note, this API returns a random number just for illustration) | +| `/api/v1/light/brightness` | `POST` | {
red:160,
green:160,
blue:160
} | Set the RGB value of the LED light | ### About mDNS -The IP address of an IoT device may vary from time to time, so it’s impracticable to hard code the IP address in the webpage. In this example, we use the `mDNS` to parse the domain name `esp-home.local`, so that we can always get access to the web server by this URL no matter what the real IP address behind it. See [here](https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/protocols/mdns.html) for more information about mDNS. +The IP address of an IoT device may vary from time to time, so it’s impracticable to hard code the IP address in the webpage. In this example, we use the `mDNS` to parse the domain name `dashboard.local`, so that we can always get access to the web server by this URL no matter what the real IP address behind it. See [here](https://docs.espressif.com/projects/esp-protocols/mdns/docs/latest/en/index.html) for more information about mDNS. **Notes: mDNS is installed by default on most operating systems or is available as separate package.** -### About deploy mode - -In development mode, it would be awful to flash the whole webpages every time we update the html, js or css files. So it is highly recommended to deploy the webpage to host PC via `semihost` technology. Whenever the browser fetch the webpage, ESP32 can forward the required files located on host PC. By this mean, it will save a lot of time when designing new pages. - -After developing, the pages should be deployed to one of the following destinations: - -* SPI Flash - which is recommended when the website after built is small (e.g. less than 2MB). -* SD Card - which would be an option when the website after built is very large that the SPI Flash have not enough space to hold (e.g. larger than 2MB). - ### About frontend framework -Many famous frontend frameworks (e.g. Vue, React, Angular) can be used in this example. Here we just take [Vue](https://vuejs.org/) as example and adopt the [vuetify](https://vuetifyjs.com/) as the UI library. +Many famous frontend frameworks (e.g. Vue, React, Svelte) can be used in this example. Here we just take [Vue](https://vuejs.org/) as example and adopt the [vuetify](https://vuetifyjs.com/) as the UI component library. -## How to use example +### About developing frontend and backend independently + +In this example, the webpage files (html, js, css, images, etc) are stored in the filesystem on the ESP chip (we use the littlefs as an example). You can, however, develop the frontend without flashing the filesystem to the ESP every time: + +1. First, disable the `EXAMPLE_DEPLOY_WEB_PAGES` from the menuconfig, implement the endpoints in the backend (the application running on the ESP) and flash it to the device. +2. Start developing the frontend on the PC, using Vite dev mode: `pnpm dev`. In dev mode, you can edit the source code of the frontend and see the changes in the web browser immediately. The frontend will be served from your PC, while the Vite proxy will automatically forward the HTTP requests to the `/api` endpoints to the ESP chip. +3. Once the frontend development and debugging is done, build the web pages by running `pnpm build`, which will generate the static files in the `dist` directory. +4. Finally, enable the `EXAMPLE_DEPLOY_WEB_PAGES` option in the menuconfig, and flash the webpages with the backend firmware together to the ESP chip again. + +This way, you can develop the frontend and backend independently, which is very convenient for web developers. + +## How to use the example ### Hardware Required -To run this example, you need an ESP32 dev board (e.g. ESP32-WROVER Kit, ESP32-Ethernet-Kit) or ESP32 core board (e.g. ESP32-DevKitC). An extra JTAG adapter might also needed if you choose to deploy the website by semihosting. For more information about supported JTAG adapter, please refer to [select JTAG adapter](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/index.html#jtag-debugging-selecting-jtag-adapter). Or if you choose to deploy the website to SD card, an extra SD slot board is needed. - -#### Pin Assignment: - -Only if you deploy the website to SD card, then the following pin connection is used in this example. - -| ESP32 | SD Card | -| ------ | ------- | -| GPIO2 | D0 | -| GPIO4 | D1 | -| GPIO12 | D2 | -| GPIO13 | D3 | -| GPIO14 | CLK | -| GPIO15 | CMD | - +To run this example, you need an ESP32 dev board (e.g. ESP32-WROVER Kit, ESP32-Ethernet-Kit) with Wi-Fi or Ethernet connection. ### Configure the project Open the project configuration menu (`idf.py menuconfig`). -In the `Example Connection Configuration` menu: - -* Choose the network interface in `Connect using` option based on your board. Currently we support both Wi-Fi and Ethernet. -* If you select the Wi-Fi interface, you also have to set: - * Wi-Fi SSID and Wi-Fi password that your esp32 will connect to. -* If you select the Ethernet interface, you also have to set: - * PHY model in `Ethernet PHY` option, e.g. IP101. - * PHY address in `PHY Address` option, which should be determined by your board schematic. - * EMAC Clock mode, GPIO used by SMI. - In the `Example Configuration` menu: * Set the domain name in `mDNS Host Name` option. -* Choose the deploy mode in `Website deploy mode`, currently we support deploy website to host PC, SD card and SPI Nor flash. - * If we choose to `Deploy website to host (JTAG is needed)`, then we also need to specify the full path of the website in `Host path to mount (e.g. absolute path to web dist directory)`. * Set the mount point of the website in `Website mount point in VFS` option, the default value is `/www`. +* Enable the `Deploy web pages to device's filesystem` option to deploy the web pages to the device's filesystem. This will flash the files from `front/web-demo/dist` to the device's filesystem. -### Build and Flash +### Build the web project After the webpage design work has been finished, you should compile them by running following commands: ```bash cd path_to_this_example/front/web-demo -npm install -npm run build +pnpm install +pnpm build ``` -> **_NOTE:_** This example needs `nodejs` version `v10.19.0` After a while, you will see a `dist` directory which contains all the website files (e.g. html, js, css, images). -Run `idf.py -p PORT flash monitor` to build and flash the project.. +Refer to [front/web-demo/README.md](front/web-demo/README.md) for more information about the front-end development. + +### Build and Flash to ESP32 device + +Then, you can Run `idf.py -p PORT flash monitor` to build and flash the project (including the webpage bundle) to ESP32; (To exit the serial monitor, type ``Ctrl-]``.) See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html) for full steps to configure and use ESP-IDF to build projects. -### Extra steps to do for deploying website by semihost - -We need to run the latest version of OpenOCD which should support semihost feature when we test this deploy mode: - -```bash -openocd-esp32/bin/openocd -s openocd-esp32/share/openocd/scripts -f board/esp32-wrover-kit-3.3v.cfg -``` - ## Example Output -### Render webpage in browser +### Check the webpage in browser -In your browser, enter the URL where the website located (e.g. `http://esp-home.local`). You can also enter the IP address that ESP32 obtained if your operating system currently don't have support for mDNS service. +In your browser, enter the URL where the website located (e.g. `http://dashboard.local`). You can also enter the IP address that ESP32 obtained if your operating system currently don't have support for mDNS service. -Besides that, this example also enables the NetBIOS feature with the domain name `esp-home`. If your OS supports NetBIOS and has enabled it (e.g. Windows has native support for NetBIOS), then the URL `http://esp-home` should also work. - -![esp_home_local](https://dl.espressif.com/dl/esp-idf/docs/_static/esp_home_local.gif) +Besides that, this example also enables the NetBIOS feature with the domain name `dashboard`. If your OS supports NetBIOS and has enabled it (e.g. Windows has native support for NetBIOS), then the URL `http://dashboard` should also work. ### ESP monitor output -In the *Light* page, after we set up the light color and click on the check button, the browser will send a post request to ESP32, and in the console, we just print the color value. +In the *Light* page, after we set up the light color and click on the check button, the browser will send a post request to ESP32, and the RGB value will be printed in the ESP32's console. ```bash -I (6115) example_connect: Connected to Ethernet -I (6115) example_connect: IPv4 address: 192.168.2.151 -I (6325) esp-home: Partition size: total: 1920401, used: 1587575 -I (6325) esp-rest: Starting HTTP Server -I (128305) esp-rest: File sending complete -I (128565) esp-rest: File sending complete -I (128855) esp-rest: File sending complete -I (129525) esp-rest: File sending complete -I (129855) esp-rest: File sending complete -I (137485) esp-rest: Light control: red = 50, green = 85, blue = 28 +I (422) main_task: Calling app_main() +I (422) mdns_mem: mDNS task will be created from internal RAM +I (422) example_connect: Start example_connect. +I (612) example_connect: Connecting to TP-LINK_CB59... +I (622) example_connect: Waiting for IP(s) +I (4792) esp_netif_handlers: example_netif_sta ip: 192.168.0.112, mask: 255.255.255.0, gw: 192.168.0.1 +I (4792) example_connect: Got IPv4 event: Interface "example_netif_sta" address: 192.168.0.112 +I (4792) example_common: Connected to example_netif_sta +I (4802) example_common: - IPv4 address: 192.168.0.112, +I (4832) example: Partition size: total: 2097152, used: 770048 +I (4832) esp-rest: Starting HTTP Server +I (4832) main_task: Returned from app_main() +I (49052) esp-rest: File sending complete +I (67352) esp-rest: Light control: red = 160, green = 160, blue = 48 ``` -## Troubleshooting - -1. Error occurred when building example: `...front/web-demo/dist doesn't exit. Please run 'npm run build' in ...front/web-demo`. - * When you choose to deploy website to SPI flash, make sure the `dist` directory has been generated before you building this example. - (For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you as soon as possible.) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/.browserslistrc b/examples/protocols/http_server/restful_server/front/web-demo/.browserslistrc index 9dee646463..dc3bc09a24 100644 --- a/examples/protocols/http_server/restful_server/front/web-demo/.browserslistrc +++ b/examples/protocols/http_server/restful_server/front/web-demo/.browserslistrc @@ -1,3 +1,4 @@ > 1% last 2 versions -not ie <= 8 +not dead +not ie 11 diff --git a/examples/protocols/http_server/restful_server/front/web-demo/.eslintrc-auto-import.json b/examples/protocols/http_server/restful_server/front/web-demo/.eslintrc-auto-import.json new file mode 100644 index 0000000000..7ea7de726a --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/.eslintrc-auto-import.json @@ -0,0 +1,82 @@ +{ + "globals": { + "Component": true, + "ComponentPublicInstance": true, + "ComputedRef": true, + "DirectiveBinding": true, + "EffectScope": true, + "ExtractDefaultPropTypes": true, + "ExtractPropTypes": true, + "ExtractPublicPropTypes": true, + "InjectionKey": true, + "MaybeRef": true, + "MaybeRefOrGetter": true, + "PropType": true, + "Ref": true, + "Slot": true, + "Slots": true, + "VNode": true, + "WritableComputedRef": true, + "computed": true, + "createApp": true, + "customRef": true, + "defineAsyncComponent": true, + "defineComponent": true, + "defineStore": true, + "effectScope": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "inject": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeRouteLeave": true, + "onBeforeRouteUpdate": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onUnmounted": true, + "onUpdated": true, + "onWatcherCleanup": true, + "provide": true, + "reactive": true, + "readonly": true, + "ref": true, + "resolveComponent": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "storeToRefs": true, + "toRaw": true, + "toRef": true, + "toRefs": true, + "toValue": true, + "triggerRef": true, + "unref": true, + "useAttrs": true, + "useCssModule": true, + "useCssVars": true, + "useId": true, + "useModel": true, + "useRoute": true, + "useRouter": true, + "useSlots": true, + "useTemplateRef": true, + "watch": true, + "watchEffect": true, + "watchPostEffect": true, + "watchSyncEffect": true + } +} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/.eslintrc.js b/examples/protocols/http_server/restful_server/front/web-demo/.eslintrc.js deleted file mode 100644 index 98d043169d..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - root: true, - env: { - node: true - }, - 'extends': [ - 'plugin:vue/essential', - '@vue/standard' - ], - rules: { - 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' - }, - parserOptions: { - parser: 'babel-eslint' - } -} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/.gitignore b/examples/protocols/http_server/restful_server/front/web-demo/.gitignore index d0d94890c3..46c09f8138 100644 --- a/examples/protocols/http_server/restful_server/front/web-demo/.gitignore +++ b/examples/protocols/http_server/restful_server/front/web-demo/.gitignore @@ -10,6 +10,7 @@ node_modules npm-debug.log* yarn-debug.log* yarn-error.log* +pnpm-debug.log* # Editor directories and files .idea @@ -20,7 +21,5 @@ yarn-error.log* *.sln *.sw? -# APIs used in this example is simple and stable enough. -# There shouldn't be risk of compatibility unless the major version of some library changed. -# To compress the package size, just exclude the package-lock.json file. -package-lock.json +# Ignore pnpm lock file +pnpm-lock.yaml diff --git a/examples/protocols/http_server/restful_server/front/web-demo/README.md b/examples/protocols/http_server/restful_server/front/web-demo/README.md new file mode 100644 index 0000000000..637719eca2 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/README.md @@ -0,0 +1,44 @@ +# Dashboard + +This is a modernized version of the dashboard web interface. + +## Features + +- **Home**: Display ESP system information (IDF version, CPU name) +- **Chart**: Real-time temperature data visualization with spark-line chart +- **Light**: RGB light control with color sliders + +## Technology Stack + +- **Vue 3**: Modern Vue.js framework with Composition API +- **Vuetify 3**: Material Design component library +- **Alova**: Modern HTTP client with better performance and features +- **Pinia**: State management +- **Vite**: Fast build tool and development server + +## Performance Optimizations + +- **Tree-shaking for icons**: Only imports specific MDI icons used in the app (this is important for deploying web pages to embedded devices like ESP32) +- **Modern bundle size**: Smaller bundle with Vite and modern dependencies +- **Composition API**: Better performance and code organization + +## API Endpoints + +The application expects the following endpoints from ESP32 device: + +- `GET /api/v1/system/info` - System information +- `GET /api/v1/temp/raw` - Temperature sensor data +- `POST /api/v1/light/brightness` - Set RGB LED colors + +## Development + +```bash +# Install dependencies +pnpm install + +# Start development server +pnpm dev + +# Build for production +pnpm build +``` diff --git a/examples/protocols/http_server/restful_server/front/web-demo/babel.config.js b/examples/protocols/http_server/restful_server/front/web-demo/babel.config.js deleted file mode 100644 index ba179669a1..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/app' - ] -} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/eslint.config.js b/examples/protocols/http_server/restful_server/front/web-demo/eslint.config.js new file mode 100644 index 0000000000..bb027414d0 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/eslint.config.js @@ -0,0 +1,3 @@ +import vuetify from 'eslint-config-vuetify' + +export default vuetify() diff --git a/examples/protocols/http_server/restful_server/front/web-demo/index.html b/examples/protocols/http_server/restful_server/front/web-demo/index.html new file mode 100644 index 0000000000..94fa3fe5f4 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/index.html @@ -0,0 +1,13 @@ + + + + + + + Welcome to Dashboard + + +
+ + + diff --git a/examples/protocols/http_server/restful_server/front/web-demo/jsconfig.json b/examples/protocols/http_server/restful_server/front/web-demo/jsconfig.json new file mode 100644 index 0000000000..dad0634ca4 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/jsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "allowJs": true, + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "bundler", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/package.json b/examples/protocols/http_server/restful_server/front/web-demo/package.json index 0872008e61..6068615ee1 100644 --- a/examples/protocols/http_server/restful_server/front/web-demo/package.json +++ b/examples/protocols/http_server/restful_server/front/web-demo/package.json @@ -1,32 +1,35 @@ { - "name": "web-demo", - "version": "0.1.0", + "name": "dashboard", "private": true, + "type": "module", + "version": "0.1.0", "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint": "eslint . --fix" }, "dependencies": { - "axios": "^0.21.1", - "core-js": "^2.6.5", - "vue": "^2.6.10", - "vue-router": "^3.0.3", - "vuetify": "^1.5.14", - "vuex": "^3.0.1" + "@fontsource/roboto": "5.2.6", + "@mdi/js": "7.4.47", + "alova": "3.3.4", + "vue": "3.5.17", + "vuetify": "3.9.2" }, "devDependencies": { - "@vue/cli-plugin-babel": "^3.7.0", - "@vue/cli-plugin-eslint": "^3.7.0", - "@vue/cli-service": "^3.7.0", - "@vue/eslint-config-standard": "^4.0.0", - "babel-eslint": "^10.0.1", - "eslint": "^5.16.0", - "eslint-plugin-vue": "^5.0.0", - "stylus": "^0.54.5", - "stylus-loader": "^3.0.1", - "vue-cli-plugin-vuetify": "^0.5.0", - "vue-template-compiler": "^2.5.21", - "vuetify-loader": "^1.0.5" + "@vitejs/plugin-vue": "6.0.0", + "eslint": "9.31.0", + "eslint-config-vuetify": "4.0.0", + "globals": "16.3.0", + "pinia": "3.0.3", + "sass-embedded": "1.89.2", + "unplugin-auto-import": "19.3.0", + "unplugin-fonts": "1.3.1", + "unplugin-vue-components": "28.8.0", + "unplugin-vue-router": "0.14.0", + "vite": "7.0.5", + "vite-plugin-vue-layouts-next": "1.0.0", + "vite-plugin-vuetify": "2.1.1", + "vue-router": "4.5.1" } } diff --git a/examples/protocols/http_server/restful_server/front/web-demo/postcss.config.js b/examples/protocols/http_server/restful_server/front/web-demo/postcss.config.js deleted file mode 100644 index 961986e2b1..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/postcss.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - plugins: { - autoprefixer: {} - } -} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/public/favicon.ico b/examples/protocols/http_server/restful_server/front/web-demo/public/favicon.ico index 17b8ff3cb6c3c920c732f563c2507c8472dfb95c..8fb9f91b3aab4eec0c76ffc5342528033c61e247 100644 GIT binary patch literal 15406 zcmeHO3v5%@8NNVarCoU?zSqezmT6npu}xxXJJhY(x=s~hQ>SSYYSncU&|(|9Y?QVX z@}TB1G8mASM;tRKYgJkrAW)&g7${B%c>oE7;)O>NNO_bu4G-IdNB({PbTkJL{ZGDJe2DLL+vq#sL?l$jZPe_*I2y@|4sBRjso zUy`aUlJo$60})6B%aMKN&yMG1Qvjth%4dDy{HM^34) z&_TyGJg3UC{J|n2-wr)LDYwhNWBH4VL-JgYz;erTEKiMF20`|$Cf~GysBU40j@&)u zboK>@(yL25%R|RmS~6@99bG>PviV`j>&k~M@~J%cn{`uCzUOyY^23rlWt6DH=aut3 zlZo^g63xIXwP(4)hgT<|I>hSGqh7YbLP$jL+%p0>vM2Su?wmOV;-uyLFww=KN5Ox{j<% zmi}mZc22bZyxbmI!x+Ch3+qsk+#YbHJ{CdQjDh~;LRJB63Pq&~p

*N){PEn7FA;EAwj=|b_AUGw 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 - - - - - - - ESP-HOME - - - - - -

- - - diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/App.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/App.vue index 0d79bb1819..64618cdf22 100644 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/App.vue +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/App.vue @@ -1,55 +1,9 @@ - diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/assets/logo.png b/examples/protocols/http_server/restful_server/front/web-demo/src/assets/logo.png index c19919e5cafb7933aa0815c044461ddde4f765ac..ac7ee75badf2dc47e26d20e9e55ac0ea4f01924d 100644 GIT binary patch literal 228354 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

7xU2?q_|6wqU)O2mPz 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ℑL#2IG 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 VA6IZ=$1VT>002ovPDHLkV1j=+)7bz3 literal 37327 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

hB-DHf$}=oQdIfrhPXj4tbqj#Pa=cE6wDP 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 +

+ +
+ + + +``` + +When your template is rendered, the component's import will automatically be inlined, which renders to this: + +```vue + + + +``` diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/composables/useApi.js b/examples/protocols/http_server/restful_server/front/web-demo/src/composables/useApi.js new file mode 100644 index 0000000000..3f101f243b --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/composables/useApi.js @@ -0,0 +1,141 @@ +/** + * Composables for dashboard application + */ +import { onUnmounted, ref, watch } from 'vue' +import { lightApi, systemApi, tempApi } from '@/services/api' + +/** + * Composable for system information + */ +export function useSystemInfo () { + const systemInfo = ref(null) + const loading = ref(false) + const error = ref(null) + + const fetchSystemInfo = async () => { + loading.value = true + error.value = null + try { + const response = await systemApi.getInfo().send() + systemInfo.value = response + } catch (error_) { + error.value = error_ + console.error('Failed to fetch system info:', error_) + } finally { + loading.value = false + } + } + + return { + systemInfo, + loading, + error, + fetchSystemInfo, + } +} + +/** + * Composable for temperature data polling + */ +export function useTemperaturePolling (interval = 1000) { + const isPolling = ref(false) + const error = ref(null) + let timer = null + + const startPolling = callback => { + if (isPolling.value) { + return + } + + isPolling.value = true + timer = setInterval(async () => { + try { + // Force fresh request by bypassing cache + const response = await tempApi.getRaw().send({ force: true }) + callback(response.raw) + error.value = null + } catch (error_) { + error.value = error_ + console.error('Failed to fetch temperature data:', error_) + } + }, interval) + } + + const stopPolling = () => { + if (timer) { + clearInterval(timer) + timer = null + } + isPolling.value = false + } + + onUnmounted(() => { + stopPolling() + }) + + return { + isPolling, + error, + startPolling, + stopPolling, + } +} + +/** + * Composable for light control + */ +export function useLightControl () { + // Load saved RGB values from localStorage or use defaults + const savedRed = localStorage.getItem('lightControl.red') + const savedGreen = localStorage.getItem('lightControl.green') + const savedBlue = localStorage.getItem('lightControl.blue') + + const red = ref(savedRed ? Number.parseInt(savedRed) : 160) + const green = ref(savedGreen ? Number.parseInt(savedGreen) : 160) + const blue = ref(savedBlue ? Number.parseInt(savedBlue) : 160) + const loading = ref(false) + const error = ref(null) + + // Watch for changes and save to localStorage + watch(red, newValue => { + localStorage.setItem('lightControl.red', newValue.toString()) + }) + + watch(green, newValue => { + localStorage.setItem('lightControl.green', newValue.toString()) + }) + + watch(blue, newValue => { + localStorage.setItem('lightControl.blue', newValue.toString()) + }) + + const setColor = async () => { + loading.value = true + error.value = null + try { + // Ensure RGB values are integers (0-255) + const colorData = { + red: Math.round(Math.max(0, Math.min(255, red.value || 0))), + green: Math.round(Math.max(0, Math.min(255, green.value || 0))), + blue: Math.round(Math.max(0, Math.min(255, blue.value || 0))), + } + console.log('Setting color:', colorData) + const response = await lightApi.setBrightness(colorData).send() + console.log('Light control response:', response) + } catch (error_) { + error.value = error_ + console.error('Failed to set color:', error_) + } finally { + loading.value = false + } + } + + return { + red, + green, + blue, + loading, + error, + setColor, + } +} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/layouts/README.md b/examples/protocols/http_server/restful_server/front/web-demo/src/layouts/README.md new file mode 100644 index 0000000000..78f68b6028 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/layouts/README.md @@ -0,0 +1,5 @@ +# Layouts + +Layouts are reusable components that wrap around pages. They are used to provide a consistent look and feel across multiple pages. + +Full documentation for this feature can be found in the Official [vite-plugin-vue-layouts-next](https://github.com/loicduong/vite-plugin-vue-layouts-next) repository. diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/layouts/default.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/layouts/default.vue new file mode 100644 index 0000000000..0b9ca0050b --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/layouts/default.vue @@ -0,0 +1,72 @@ + + + diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/main.js b/examples/protocols/http_server/restful_server/front/web-demo/src/main.js index ef8f1c5cba..1b839a98b6 100644 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/main.js +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/main.js @@ -1,16 +1,23 @@ -import Vue from 'vue' -import './plugins/vuetify' +/** + * main.js + * + * Bootstraps Vuetify and other plugins then mounts the App` + */ + +// Composables +import { createApp } from 'vue' + +// Plugins +import { registerPlugins } from '@/plugins' + +// Components import App from './App.vue' -import router from './router' -import axios from 'axios' -import store from './store' -Vue.config.productionTip = false +// Styles +import 'unfonts.css' -Vue.prototype.$ajax = axios +const app = createApp(App) -new Vue({ - router, - store, - render: h => h(App) -}).$mount('#app') +registerPlugins(app) + +app.mount('#app') diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/pages/README.md b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/README.md new file mode 100644 index 0000000000..341536c2ff --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/README.md @@ -0,0 +1,5 @@ +# Pages + +Vue components created in this folder will automatically be converted to navigatable routes. + +Full documentation for this feature can be found in the Official [unplugin-vue-router](https://github.com/posva/unplugin-vue-router) repository. diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/pages/chart.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/chart.vue new file mode 100644 index 0000000000..6fe6000418 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/chart.vue @@ -0,0 +1,85 @@ + + + diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/pages/index.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/index.vue new file mode 100644 index 0000000000..ee1910c3bb --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/pages/light.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/light.vue new file mode 100644 index 0000000000..33e0bd830c --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/pages/light.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/README.md b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/README.md new file mode 100644 index 0000000000..62201c7cfc --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/README.md @@ -0,0 +1,3 @@ +# Plugins + +Plugins are a way to extend the functionality of your Vue application. Use this folder for registering plugins that you want to use globally. diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/alova.js b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/alova.js new file mode 100644 index 0000000000..8f14c858df --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/alova.js @@ -0,0 +1,10 @@ +/** + * plugins/alova.js + * + * Alova HTTP client configuration + */ +import { alova } from '@/services/api' + +export default function alovaPlugin (app) { + app.config.globalProperties.$alova = alova +} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/index.js b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/index.js new file mode 100644 index 0000000000..3f444c602f --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/index.js @@ -0,0 +1,19 @@ +/** + * plugins/index.js + * + * Automatically included in `./src/main.js` + */ + +import router from '@/router' +import pinia from '@/stores' +import alova from './alova' +// Plugins +import vuetify from './vuetify' + +export function registerPlugins (app) { + app + .use(vuetify) + .use(router) + .use(pinia) + .use(alova) +} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/vuetify.js b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/vuetify.js index 975696e792..8c110af03e 100644 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/vuetify.js +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/plugins/vuetify.js @@ -1,7 +1,45 @@ -import Vue from 'vue' -import Vuetify from 'vuetify/lib' -import 'vuetify/src/stylus/app.styl' +/** + * plugins/vuetify.js + * + * Framework documentation: https://vuetifyjs.com` + */ -Vue.use(Vuetify, { - iconfont: 'md', +import { + mdiChartLine, + mdiCheck, + mdiHome, + mdiLightbulb, + mdiMenu, +} from '@mdi/js' + +// Composables +import { createVuetify } from 'vuetify' + +// Icons +import { aliases, mdi } from 'vuetify/iconsets/mdi-svg' +// Styles +import 'vuetify/styles' + +// Custom icon aliases for on-demand loading +const customAliases = { + ...aliases, + 'home': mdiHome, + 'chart-line': mdiChartLine, + 'lightbulb': mdiLightbulb, + 'check': mdiCheck, + 'menu': mdiMenu, +} + +// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides +export default createVuetify({ + icons: { + defaultSet: 'mdi', + aliases: customAliases, + sets: { + mdi, + }, + }, + theme: { + defaultTheme: 'light', + }, }) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/router.js b/examples/protocols/http_server/restful_server/front/web-demo/src/router.js deleted file mode 100644 index 2e6ce9440b..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/router.js +++ /dev/null @@ -1,29 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import Home from './views/Home.vue' -import Chart from './views/Chart.vue' -import Light from './views/Light.vue' - -Vue.use(Router) - -export default new Router({ - mode: 'history', - base: process.env.BASE_URL, - routes: [ - { - path: '/', - name: 'home', - component: Home - }, - { - path: '/chart', - name: 'chart', - component: Chart - }, - { - path: '/light', - name: 'light', - component: Light - } - ] -}) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/router/index.js b/examples/protocols/http_server/restful_server/front/web-demo/src/router/index.js new file mode 100644 index 0000000000..dc0f31a4ab --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/router/index.js @@ -0,0 +1,36 @@ +/** + * router/index.ts + * + * Automatic routes for `./src/pages/*.vue` + */ + +import { setupLayouts } from 'virtual:generated-layouts' +// Composables +import { createRouter, createWebHistory } from 'vue-router/auto' +import { routes } from 'vue-router/auto-routes' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: setupLayouts(routes), +}) + +// Workaround for https://github.com/vitejs/vite/issues/11804 +router.onError((err, to) => { + if (err?.message?.includes?.('Failed to fetch dynamically imported module')) { + if (localStorage.getItem('vuetify:dynamic-reload')) { + console.error('Dynamic import error, reloading page did not fix it', err) + } else { + console.log('Reloading page to fix dynamic import error') + localStorage.setItem('vuetify:dynamic-reload', 'true') + location.assign(to.fullPath) + } + } else { + console.error(err) + } +}) + +router.isReady().then(() => { + localStorage.removeItem('vuetify:dynamic-reload') +}) + +export default router diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/services/api.js b/examples/protocols/http_server/restful_server/front/web-demo/src/services/api.js new file mode 100644 index 0000000000..a625dcb72b --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/services/api.js @@ -0,0 +1,70 @@ +/** + * API service using Alova + * + * CORS Solution: Use empty baseURL to leverage Vite proxy (no CORS issues) + * + * The Vite proxy in vite.config.mjs handles '/api' routes by forwarding them + * to the ESP32, avoiding CORS issues during development. + */ +import { createAlova } from 'alova' +import fetch from 'alova/fetch' +import VueHook from 'alova/vue' + +export const alova = createAlova({ + statesHook: VueHook, + requestAdapter: fetch(), + baseURL: '', + beforeRequest (method) { + // Minimize headers to avoid ESP32 431 error + const essentialHeaders = {} + + // Only add Content-Type for POST requests + if (method.type === 'POST') { + essentialHeaders['Content-Type'] = 'application/json' + } + + // Clear any existing headers and set only essential ones + method.config.headers = essentialHeaders + }, + responded: { + onSuccess: async response => { + if (response.status >= 400) { + throw new Error(`HTTP Error: ${response.status}`) + } + + // Check if response has content and is JSON + const contentType = response.headers.get('content-type') + if (contentType && contentType.includes('application/json')) { + return response.json() + } else { + // For non-JSON responses (like light control), return text or empty object + const text = await response.text() + console.log('Non-JSON response:', text) + return text || { success: true } + } + }, + onError: error => { + console.error('API Error:', error) + throw error + }, + }, +}) + +// API endpoints +export const systemApi = { + getInfo: () => alova.Get('/api/v1/system/info'), +} + +export const tempApi = { + getRaw: () => { + // Create a fresh request each time with timestamp to prevent caching + return alova.Get(`/api/v1/temp/raw?_t=${Date.now()}`, { + localCache: 0, // Disable local cache + hitSource: 'network', // Always fetch from network + }) + }, +} + +export const lightApi = { + setBrightness: data => alova.Post('/api/v1/light/brightness', data), +} diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/store.js b/examples/protocols/http_server/restful_server/front/web-demo/src/store.js deleted file mode 100644 index 62f44f6515..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/store.js +++ /dev/null @@ -1,28 +0,0 @@ -import Vue from 'vue' -import Vuex from 'vuex' -import axios from 'axios' - -Vue.use(Vuex) - -export default new Vuex.Store({ - state: { - chart_value: [8, 2, 5, 9, 5, 11, 3, 5, 10, 0, 1, 8, 2, 9, 0, 13, 10, 7, 16], - }, - mutations: { - update_chart_value(state, new_value) { - state.chart_value.push(new_value); - state.chart_value.shift(); - } - }, - actions: { - update_chart_value({ commit }) { - axios.get("/api/v1/temp/raw") - .then(data => { - commit("update_chart_value", data.data.raw); - }) - .catch(error => { - console.log(error); - }); - } - } -}) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/stores/README.md b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/README.md new file mode 100644 index 0000000000..54f8e03b69 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/README.md @@ -0,0 +1,5 @@ +# Store + +Pinia stores are used to store reactive state and expose actions to mutate it. + +Full documentation for this feature can be found in the Official [Pinia](https://pinia.esm.dev/) repository. diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/stores/app.js b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/app.js new file mode 100644 index 0000000000..74295436ec --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/app.js @@ -0,0 +1,8 @@ +// Utilities +import { defineStore } from 'pinia' + +export const useAppStore = defineStore('app', { + state: () => ({ + // + }), +}) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/stores/chart.js b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/chart.js new file mode 100644 index 0000000000..06eda7927f --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/chart.js @@ -0,0 +1,25 @@ +/** + * Chart data store using Pinia + */ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { tempApi } from '@/services/api' + +export const useChartStore = defineStore('chart', () => { + const chartValue = ref([8, 2, 5, 9, 5, 11, 3, 5, 10, 0, 1, 8, 2, 9, 0, 13, 10, 7, 16]) + + const updateChartValue = async () => { + try { + const response = await tempApi.getRaw().send() + chartValue.value.push(response.raw) + chartValue.value.shift() + } catch (error) { + console.error('Failed to update chart value:', error) + } + } + + return { + chartValue, + updateChartValue, + } +}) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/stores/index.js b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/index.js new file mode 100644 index 0000000000..153625250d --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/stores/index.js @@ -0,0 +1,4 @@ +// Utilities +import { createPinia } from 'pinia' + +export default createPinia() diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/styles/README.md b/examples/protocols/http_server/restful_server/front/web-demo/src/styles/README.md new file mode 100644 index 0000000000..ea861794d6 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/styles/README.md @@ -0,0 +1,3 @@ +# Styles + +This directory is for configuring the styles of the application. diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/styles/settings.scss b/examples/protocols/http_server/restful_server/front/web-demo/src/styles/settings.scss new file mode 100644 index 0000000000..3e36a279b3 --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/src/styles/settings.scss @@ -0,0 +1,10 @@ +/** + * src/styles/settings.scss + * + * Configures SASS variables and Vuetify overwrites + */ + +// https://vuetifyjs.com/features/sass-variables/` +// @use 'vuetify/settings' with ( +// $color-pack: false +// ); diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/views/Chart.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/views/Chart.vue deleted file mode 100644 index 7d75477cfd..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/views/Chart.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/views/Home.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/views/Home.vue deleted file mode 100644 index f3ab672878..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/views/Home.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - diff --git a/examples/protocols/http_server/restful_server/front/web-demo/src/views/Light.vue b/examples/protocols/http_server/restful_server/front/web-demo/src/views/Light.vue deleted file mode 100644 index b3742bb0da..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/src/views/Light.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/examples/protocols/http_server/restful_server/front/web-demo/vite.config.mjs b/examples/protocols/http_server/restful_server/front/web-demo/vite.config.mjs new file mode 100644 index 0000000000..819c3ff98e --- /dev/null +++ b/examples/protocols/http_server/restful_server/front/web-demo/vite.config.mjs @@ -0,0 +1,145 @@ +import { fileURLToPath, URL } from 'node:url' +import Vue from '@vitejs/plugin-vue' +// Plugins +import AutoImport from 'unplugin-auto-import/vite' +import Fonts from 'unplugin-fonts/vite' +import Components from 'unplugin-vue-components/vite' +import { VueRouterAutoImports } from 'unplugin-vue-router' +import VueRouter from 'unplugin-vue-router/vite' +// Utilities +import { defineConfig } from 'vite' + +import Layouts from 'vite-plugin-vue-layouts-next' +import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + VueRouter(), + Layouts(), + Vue({ + template: { transformAssetUrls }, + }), + // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme + Vuetify({ + autoImport: true, + styles: { + configFile: 'src/styles/settings.scss', + }, + }), + Components(), + Fonts({ + google: { + families: [{ + name: 'Roboto', + styles: 'wght@100;300;400;500;700;900', + }], + }, + }), + AutoImport({ + imports: [ + 'vue', + VueRouterAutoImports, + { + pinia: ['defineStore', 'storeToRefs'], + }, + ], + eslintrc: { + enabled: true, + }, + vueTemplate: true, + }), + ], + optimizeDeps: { + exclude: [ + 'vuetify', + 'vue-router', + 'unplugin-vue-router/runtime', + 'unplugin-vue-router/data-loaders', + 'unplugin-vue-router/data-loaders/basic', + ], + }, + define: { 'process.env': {} }, + resolve: { + alias: { + '@': fileURLToPath(new URL('src', import.meta.url)), + }, + extensions: [ + '.js', + '.json', + '.jsx', + '.mjs', + '.ts', + '.tsx', + '.vue', + ], + }, + server: { + port: 3000, + // Proxy configuration to avoid CORS issues during development + // All requests to /api/* will be forwarded to the ESP32 + // IMPORTANT: Also strips large headers (especially cookies) to avoid HTTP 431 errors + proxy: { + '/api': { + target: 'http://dashboard.local', // Replace with your ESP32's actual IP + changeOrigin: true, + ws: true, + // Configure proxy to minimize headers for ESP32 compatibility + configure: (proxy, options) => { + proxy.on('proxyReq', (proxyReq, req, res) => { + // CRITICAL: Remove cookies - this is often the largest header! + proxyReq.removeHeader('cookie') + + // Remove other large/unnecessary headers that might cause 431 error + proxyReq.removeHeader('user-agent') + proxyReq.removeHeader('accept-encoding') + proxyReq.removeHeader('accept-language') + proxyReq.removeHeader('cache-control') + proxyReq.removeHeader('pragma') + proxyReq.removeHeader('referer') + proxyReq.removeHeader('origin') + proxyReq.removeHeader('sec-fetch-dest') + proxyReq.removeHeader('sec-fetch-mode') + proxyReq.removeHeader('sec-fetch-site') + proxyReq.removeHeader('sec-fetch-user') + proxyReq.removeHeader('sec-ch-ua') + proxyReq.removeHeader('sec-ch-ua-mobile') + proxyReq.removeHeader('sec-ch-ua-platform') + proxyReq.removeHeader('sec-ch-ua-full-version') + proxyReq.removeHeader('sec-ch-ua-full-version-list') + proxyReq.removeHeader('upgrade-insecure-requests') + proxyReq.removeHeader('x-requested-with') + proxyReq.removeHeader('dnt') + proxyReq.removeHeader('te') + + // Keep only absolutely essential headers + proxyReq.setHeader('host', 'dashboard.local') + proxyReq.setHeader('accept', 'application/json') + + // For POST requests, keep content-type if it exists + if (req.method === 'POST' && req.headers['content-type']) { + proxyReq.setHeader('content-type', req.headers['content-type']) + } + + const finalHeaders = proxyReq.getHeaders() + + // Log header info for monitoring ESP32 compatibility + const headerSize = Object.entries(finalHeaders) + .reduce((size, [key, value]) => size + key.length + value.length + 4, 0) + console.log(`ESP32 Request: ${req.method} ${req.url} (${Object.keys(finalHeaders).length} headers, ~${headerSize} bytes)`) + }) + }, + }, + }, + }, + css: { + preprocessorOptions: { + sass: { + api: 'modern-compiler', + }, + scss: { + api: 'modern-compiler', + }, + }, + }, +}) diff --git a/examples/protocols/http_server/restful_server/front/web-demo/vue.config.js b/examples/protocols/http_server/restful_server/front/web-demo/vue.config.js deleted file mode 100644 index 0322551512..0000000000 --- a/examples/protocols/http_server/restful_server/front/web-demo/vue.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - devServer: { - proxy: { - '/api': { - target: 'http://esp-home.local:80', - changeOrigin: true, - ws: true - } - } - } -} diff --git a/examples/protocols/http_server/restful_server/main/CMakeLists.txt b/examples/protocols/http_server/restful_server/main/CMakeLists.txt index fdc6a82515..8a224abc04 100644 --- a/examples/protocols/http_server/restful_server/main/CMakeLists.txt +++ b/examples/protocols/http_server/restful_server/main/CMakeLists.txt @@ -1,13 +1,13 @@ idf_component_register(SRCS "esp_rest_main.c" "rest_server.c" - PRIV_REQUIRES esp_http_server esp_driver_gpio fatfs json spiffs nvs_flash - INCLUDE_DIRS ".") + PRIV_REQUIRES esp_http_server json nvs_flash + INCLUDE_DIRS ".") -if(CONFIG_EXAMPLE_WEB_DEPLOY_SF) +if(CONFIG_EXAMPLE_DEPLOY_WEB_PAGES) set(WEB_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../front/web-demo") if(EXISTS ${WEB_SRC_DIR}/dist) - spiffs_create_partition_image(www ${WEB_SRC_DIR}/dist FLASH_IN_PROJECT) + littlefs_create_partition_image(www ${WEB_SRC_DIR}/dist FLASH_IN_PROJECT) else() - message(FATAL_ERROR "${WEB_SRC_DIR}/dist doesn't exit. Please run 'npm run build' in ${WEB_SRC_DIR}") + message(FATAL_ERROR "'${WEB_SRC_DIR}/dist' doesn't exist. Please run 'pnpm build' under '${WEB_SRC_DIR}'") endif() endif() diff --git a/examples/protocols/http_server/restful_server/main/Kconfig.projbuild b/examples/protocols/http_server/restful_server/main/Kconfig.projbuild index e184b936e2..4252949242 100644 --- a/examples/protocols/http_server/restful_server/main/Kconfig.projbuild +++ b/examples/protocols/http_server/restful_server/main/Kconfig.projbuild @@ -2,50 +2,21 @@ menu "Example Configuration" config EXAMPLE_MDNS_HOST_NAME string "mDNS Host Name" - default "esp-home" + default "dashboard" help Specify the domain name used in the mDNS service. Note that webpage also take it as a part of URL where it will send GET/POST requests to. - choice EXAMPLE_WEB_DEPLOY_MODE - prompt "Website deploy mode" - default EXAMPLE_WEB_DEPLOY_SEMIHOST - help - Select website deploy mode. - You can deploy website to host, and ESP32 will retrieve them in a semihost way (JTAG is needed). - You can deploy website to SD card or SPI flash, and ESP32 will retrieve them via SDIO/SPI interface. - Detailed operation steps are listed in the example README file. - config EXAMPLE_WEB_DEPLOY_SEMIHOST - bool "Deploy website to host (JTAG is needed)" - help - Deploy website to host. - It is recommended to choose this mode during developing. - config EXAMPLE_WEB_DEPLOY_SD - depends on IDF_TARGET_ESP32 - bool "Deploy website to SD card" - help - Deploy website to SD card. - Choose this production mode if the size of website is too large (bigger than 2MB). - config EXAMPLE_WEB_DEPLOY_SF - bool "Deploy website to SPI Nor Flash" - help - Deploy website to SPI Nor Flash. - Choose this production mode if the size of website is small (less than 2MB). - endchoice - - if EXAMPLE_WEB_DEPLOY_SEMIHOST - config EXAMPLE_HOST_PATH_TO_MOUNT - string "Host path to mount (e.g. absolute path to web dist directory)" - default "PATH-TO-WEB-DIST_DIR" - help - When using semihost in ESP32, you should specify the host path which will be mounted to VFS. - Note that only absolute path is acceptable. - endif - config EXAMPLE_WEB_MOUNT_POINT string "Website mount point in VFS" default "/www" help Specify the mount point in VFS. + config EXAMPLE_DEPLOY_WEB_PAGES + bool "Deploy web pages to device's filesystem" + default n + help + If enabled, the example will deploy web pages to the device's filesystem. + Ensure that the necessary files (html, css, js, etc.) are available in the `front/web-demo/dist` directory. endmenu diff --git a/examples/protocols/http_server/restful_server/main/esp_rest_main.c b/examples/protocols/http_server/restful_server/main/esp_rest_main.c index 5bf2e3cbe5..aa7cb00113 100644 --- a/examples/protocols/http_server/restful_server/main/esp_rest_main.c +++ b/examples/protocols/http_server/restful_server/main/esp_rest_main.c @@ -1,17 +1,11 @@ -/* HTTP Restful API Server Example +/* + * SPDX-FileCopyrightText: 2010-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ - This example code is in the Public Domain (or CC0 licensed, at your option.) - - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. -*/ #include "sdkconfig.h" -#include "driver/gpio.h" -#include "esp_vfs_semihost.h" -#include "esp_vfs_fat.h" -#include "esp_spiffs.h" -#include "sdmmc_cmd.h" +#include "esp_littlefs.h" #include "nvs_flash.h" #include "esp_netif.h" #include "esp_event.h" @@ -19,24 +13,23 @@ #include "mdns.h" #include "lwip/apps/netbiosns.h" #include "protocol_examples_common.h" -#if CONFIG_EXAMPLE_WEB_DEPLOY_SD -#include "driver/sdmmc_host.h" -#endif -#define MDNS_INSTANCE "esp home web server" +#define MDNS_INSTANCE "dashboard web server" +#define MDNS_HOST_NAME CONFIG_EXAMPLE_MDNS_HOST_NAME +#define WEB_PAGE_MOUNT_POINT_IN_FS CONFIG_EXAMPLE_WEB_MOUNT_POINT -static const char *TAG = "example"; +[[maybe_unused]] static const char *TAG = "example"; -esp_err_t start_rest_server(const char *base_path); +extern esp_err_t start_rest_server(const char *base_path); static void initialise_mdns(void) { mdns_init(); - mdns_hostname_set(CONFIG_EXAMPLE_MDNS_HOST_NAME); + mdns_hostname_set(MDNS_HOST_NAME); mdns_instance_name_set(MDNS_INSTANCE); mdns_txt_item_t serviceTxtData[] = { - {"board", "esp32"}, + {"chip", CONFIG_IDF_TARGET}, {"path", "/"} }; @@ -44,84 +37,38 @@ static void initialise_mdns(void) sizeof(serviceTxtData) / sizeof(serviceTxtData[0]))); } -#if CONFIG_EXAMPLE_WEB_DEPLOY_SEMIHOST esp_err_t init_fs(void) { - esp_err_t ret = esp_vfs_semihost_register(CONFIG_EXAMPLE_WEB_MOUNT_POINT); - if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to register semihost driver (%s)!", esp_err_to_name(ret)); - return ESP_FAIL; - } - return ESP_OK; -} -#endif - -#if CONFIG_EXAMPLE_WEB_DEPLOY_SD -esp_err_t init_fs(void) -{ - sdmmc_host_t host = SDMMC_HOST_DEFAULT(); - sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT(); - - gpio_set_pull_mode(15, GPIO_PULLUP_ONLY); // CMD - gpio_set_pull_mode(2, GPIO_PULLUP_ONLY); // D0 - gpio_set_pull_mode(4, GPIO_PULLUP_ONLY); // D1 - gpio_set_pull_mode(12, GPIO_PULLUP_ONLY); // D2 - gpio_set_pull_mode(13, GPIO_PULLUP_ONLY); // D3 - - esp_vfs_fat_sdmmc_mount_config_t mount_config = { +#if CONFIG_EXAMPLE_DEPLOY_WEB_PAGES + esp_vfs_littlefs_conf_t conf = { + .base_path = WEB_PAGE_MOUNT_POINT_IN_FS, + .partition_label = "www", .format_if_mount_failed = true, - .max_files = 4, - .allocation_unit_size = 16 * 1024 }; - - sdmmc_card_t *card; - esp_err_t ret = esp_vfs_fat_sdmmc_mount(CONFIG_EXAMPLE_WEB_MOUNT_POINT, &host, &slot_config, &mount_config, &card); - if (ret != ESP_OK) { - if (ret == ESP_FAIL) { - ESP_LOGE(TAG, "Failed to mount filesystem."); - } else { - ESP_LOGE(TAG, "Failed to initialize the card (%s)", esp_err_to_name(ret)); - } - return ESP_FAIL; - } - /* print card info if mount successfully */ - sdmmc_card_print_info(stdout, card); - return ESP_OK; -} -#endif - -#if CONFIG_EXAMPLE_WEB_DEPLOY_SF -esp_err_t init_fs(void) -{ - esp_vfs_spiffs_conf_t conf = { - .base_path = CONFIG_EXAMPLE_WEB_MOUNT_POINT, - .partition_label = NULL, - .max_files = 5, - .format_if_mount_failed = false - }; - esp_err_t ret = esp_vfs_spiffs_register(&conf); + esp_err_t ret = esp_vfs_littlefs_register(&conf); if (ret != ESP_OK) { if (ret == ESP_FAIL) { ESP_LOGE(TAG, "Failed to mount or format filesystem"); } else if (ret == ESP_ERR_NOT_FOUND) { - ESP_LOGE(TAG, "Failed to find SPIFFS partition"); + ESP_LOGE(TAG, "Failed to find LittleFS partition"); } else { - ESP_LOGE(TAG, "Failed to initialize SPIFFS (%s)", esp_err_to_name(ret)); + ESP_LOGE(TAG, "Failed to initialize LittleFS (%s)", esp_err_to_name(ret)); } return ESP_FAIL; } size_t total = 0, used = 0; - ret = esp_spiffs_info(NULL, &total, &used); + ret = esp_littlefs_info(conf.partition_label, &total, &used); if (ret != ESP_OK) { - ESP_LOGE(TAG, "Failed to get SPIFFS partition information (%s)", esp_err_to_name(ret)); + ESP_LOGE(TAG, "Failed to get LittleFS partition information (%s)", esp_err_to_name(ret)); + esp_littlefs_format(conf.partition_label); } else { ESP_LOGI(TAG, "Partition size: total: %d, used: %d", total, used); } +#endif // CONFIG_EXAMPLE_DEPLOY_WEB_PAGES return ESP_OK; } -#endif void app_main(void) { @@ -130,9 +77,9 @@ void app_main(void) ESP_ERROR_CHECK(esp_event_loop_create_default()); initialise_mdns(); netbiosns_init(); - netbiosns_set_name(CONFIG_EXAMPLE_MDNS_HOST_NAME); + netbiosns_set_name(MDNS_HOST_NAME); ESP_ERROR_CHECK(example_connect()); ESP_ERROR_CHECK(init_fs()); - ESP_ERROR_CHECK(start_rest_server(CONFIG_EXAMPLE_WEB_MOUNT_POINT)); + ESP_ERROR_CHECK(start_rest_server(WEB_PAGE_MOUNT_POINT_IN_FS)); } diff --git a/examples/protocols/http_server/restful_server/main/idf_component.yml b/examples/protocols/http_server/restful_server/main/idf_component.yml index 7bddebc1aa..fcd8e1f611 100644 --- a/examples/protocols/http_server/restful_server/main/idf_component.yml +++ b/examples/protocols/http_server/restful_server/main/idf_component.yml @@ -1,8 +1,6 @@ ## IDF Component Manager Manifest File dependencies: - espressif/mdns: "^1.0.3" - ## Required IDF version - idf: - version: ">=5.0" + espressif/mdns: "^1.8.0" + joltwallet/littlefs: "^1.20.0" protocol_examples_common: path: ${IDF_PATH}/examples/common_components/protocol_examples_common diff --git a/examples/protocols/http_server/restful_server/main/rest_server.c b/examples/protocols/http_server/restful_server/main/rest_server.c index 23f90ad83c..b5a7dd5727 100644 --- a/examples/protocols/http_server/restful_server/main/rest_server.c +++ b/examples/protocols/http_server/restful_server/main/rest_server.c @@ -1,30 +1,20 @@ -/* HTTP Restful API Server +/* + * SPDX-FileCopyrightText: 2010-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ - This example code is in the Public Domain (or CC0 licensed, at your option.) - - Unless required by applicable law or agreed to in writing, this - software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. -*/ #include #include #include "esp_http_server.h" #include "esp_chip_info.h" #include "esp_random.h" #include "esp_log.h" +#include "esp_check.h" #include "esp_vfs.h" #include "cJSON.h" -static const char *REST_TAG = "esp-rest"; -#define REST_CHECK(a, str, goto_tag, ...) \ - do \ - { \ - if (!(a)) \ - { \ - ESP_LOGE(REST_TAG, "%s(%d): " str, __FUNCTION__, __LINE__, ##__VA_ARGS__); \ - goto goto_tag; \ - } \ - } while (0) +static const char *TAG = "esp-rest"; #define FILE_PATH_MAX (ESP_VFS_PATH_MAX + 128) #define SCRATCH_BUFSIZE (10240) @@ -36,6 +26,7 @@ typedef struct rest_server_context { #define CHECK_FILE_EXTENSION(filename, ext) (strcasecmp(&filename[strlen(filename) - strlen(ext)], ext) == 0) +#if CONFIG_EXAMPLE_DEPLOY_WEB_PAGES /* Set HTTP response content type according to file extension */ static esp_err_t set_content_type_from_file(httpd_req_t *req, const char *filepath) { @@ -70,7 +61,7 @@ static esp_err_t rest_common_get_handler(httpd_req_t *req) } int fd = open(filepath, O_RDONLY, 0); if (fd == -1) { - ESP_LOGE(REST_TAG, "Failed to open file : %s", filepath); + ESP_LOGE(TAG, "Failed to open file : %s", filepath); /* Respond with 500 Internal Server Error */ httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Failed to read existing file"); return ESP_FAIL; @@ -84,12 +75,12 @@ static esp_err_t rest_common_get_handler(httpd_req_t *req) /* Read file in chunks into the scratch buffer */ read_bytes = read(fd, chunk, SCRATCH_BUFSIZE); if (read_bytes == -1) { - ESP_LOGE(REST_TAG, "Failed to read file : %s", filepath); + ESP_LOGE(TAG, "Failed to read file : %s", filepath); } else if (read_bytes > 0) { /* Send the buffer contents as HTTP response chunk */ if (httpd_resp_send_chunk(req, chunk, read_bytes) != ESP_OK) { close(fd); - ESP_LOGE(REST_TAG, "File sending failed!"); + ESP_LOGE(TAG, "File sending failed!"); /* Abort sending file */ httpd_resp_sendstr_chunk(req, NULL); /* Respond with 500 Internal Server Error */ @@ -100,11 +91,12 @@ static esp_err_t rest_common_get_handler(httpd_req_t *req) } while (read_bytes > 0); /* Close file after sending complete */ close(fd); - ESP_LOGI(REST_TAG, "File sending complete"); + ESP_LOGI(TAG, "File sending complete"); /* Respond with an empty chunk to signal HTTP response completion */ httpd_resp_send_chunk(req, NULL, 0); return ESP_OK; } +#endif // CONFIG_EXAMPLE_DEPLOY_WEB_PAGES /* Simple handler for light brightness control */ static esp_err_t light_brightness_post_handler(httpd_req_t *req) @@ -133,7 +125,7 @@ static esp_err_t light_brightness_post_handler(httpd_req_t *req) int red = cJSON_GetObjectItem(root, "red")->valueint; int green = cJSON_GetObjectItem(root, "green")->valueint; int blue = cJSON_GetObjectItem(root, "blue")->valueint; - ESP_LOGI(REST_TAG, "Light control: red = %d, green = %d, blue = %d", red, green, blue); + ESP_LOGI(TAG, "Light control: red = %d, green = %d, blue = %d", red, green, blue); cJSON_Delete(root); httpd_resp_sendstr(req, "Post control value successfully"); return ESP_OK; @@ -146,7 +138,8 @@ static esp_err_t system_info_get_handler(httpd_req_t *req) cJSON *root = cJSON_CreateObject(); esp_chip_info_t chip_info; esp_chip_info(&chip_info); - cJSON_AddStringToObject(root, "version", IDF_VER); + cJSON_AddStringToObject(root, "chip", CONFIG_IDF_TARGET); + cJSON_AddStringToObject(root, "idf_version", IDF_VER); cJSON_AddNumberToObject(root, "cores", chip_info.cores); const char *sys_info = cJSON_Print(root); httpd_resp_sendstr(req, sys_info); @@ -160,6 +153,7 @@ static esp_err_t temperature_data_get_handler(httpd_req_t *req) { httpd_resp_set_type(req, "application/json"); cJSON *root = cJSON_CreateObject(); + // Note: we're simulating temperature data with a random number for demonstration purposes cJSON_AddNumberToObject(root, "raw", esp_random() % 20); const char *sys_info = cJSON_Print(root); httpd_resp_sendstr(req, sys_info); @@ -170,17 +164,18 @@ static esp_err_t temperature_data_get_handler(httpd_req_t *req) esp_err_t start_rest_server(const char *base_path) { - REST_CHECK(base_path, "wrong base path", err); + esp_err_t ret = ESP_OK; + ESP_RETURN_ON_FALSE(base_path && strlen(base_path) < ESP_VFS_PATH_MAX, ESP_ERR_INVALID_ARG, TAG, "Invalid base path"); rest_server_context_t *rest_context = calloc(1, sizeof(rest_server_context_t)); - REST_CHECK(rest_context, "No memory for rest context", err); + ESP_RETURN_ON_FALSE(rest_context, ESP_ERR_NO_MEM, TAG, "No memory for rest context"); strlcpy(rest_context->base_path, base_path, sizeof(rest_context->base_path)); httpd_handle_t server = NULL; httpd_config_t config = HTTPD_DEFAULT_CONFIG(); config.uri_match_fn = httpd_uri_match_wildcard; - ESP_LOGI(REST_TAG, "Starting HTTP Server"); - REST_CHECK(httpd_start(&server, &config) == ESP_OK, "Start server failed", err_start); + ESP_LOGI(TAG, "Starting HTTP Server"); + ESP_GOTO_ON_ERROR(httpd_start(&server, &config), err, TAG, "Failed to start http server"); /* URI handler for fetching system info */ httpd_uri_t system_info_get_uri = { @@ -209,6 +204,7 @@ esp_err_t start_rest_server(const char *base_path) }; httpd_register_uri_handler(server, &light_brightness_post_uri); +#if CONFIG_EXAMPLE_DEPLOY_WEB_PAGES /* URI handler for getting web server files */ httpd_uri_t common_get_uri = { .uri = "/*", @@ -217,10 +213,12 @@ esp_err_t start_rest_server(const char *base_path) .user_ctx = rest_context }; httpd_register_uri_handler(server, &common_get_uri); +#endif // CONFIG_EXAMPLE_DEPLOY_WEB_PAGES return ESP_OK; -err_start: - free(rest_context); err: - return ESP_FAIL; + if (rest_context) { + free(rest_context); + } + return ret; } diff --git a/examples/protocols/http_server/restful_server/partitions_example.csv b/examples/protocols/http_server/restful_server/partitions_example.csv index 2ec5676bb1..3e9814c5a3 100644 --- a/examples/protocols/http_server/restful_server/partitions_example.csv +++ b/examples/protocols/http_server/restful_server/partitions_example.csv @@ -1,6 +1,5 @@ # Name, Type, SubType, Offset, Size, Flags -# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 1M, -www, data, spiffs, , 2M, +www, data, littlefs, , 2M, diff --git a/examples/protocols/http_server/restful_server/sdkconfig.defaults b/examples/protocols/http_server/restful_server/sdkconfig.defaults index eb1da321ec..7bea778984 100644 --- a/examples/protocols/http_server/restful_server/sdkconfig.defaults +++ b/examples/protocols/http_server/restful_server/sdkconfig.defaults @@ -1,5 +1,3 @@ -CONFIG_SPIFFS_OBJ_NAME_LEN=64 -CONFIG_FATFS_LFN_HEAP=y CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_example.csv" diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index db9fa67b24..3b5b0eeedc 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -870,8 +870,6 @@ examples/protocols/http_server/advanced_tests/main/tests.c examples/protocols/http_server/async_handlers/main/main.c examples/protocols/http_server/captive_portal/main/main.c examples/protocols/http_server/persistent_sockets/main/main.c -examples/protocols/http_server/restful_server/main/esp_rest_main.c -examples/protocols/http_server/restful_server/main/rest_server.c examples/protocols/http_server/simple/main/main.c examples/protocols/http_server/ws_echo_server/main/ws_echo_server.c examples/protocols/https_server/simple/main/main.c