forked from me-no-dev/ESPAsyncWebServer
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add integration for IDF Component Manager
- Loading branch information
1 parent
cd3194d
commit f2a2a4c
Showing
20 changed files
with
491 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
name: Publish ESP-IDF Component | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
tag: | ||
description: 'Component version (1.2.3, 1.2.3-rc1 or 1.2.3.4)' | ||
required: true | ||
git_ref: | ||
description: 'Git ref with the source (branch, tag or commit)' | ||
required: true | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
upload_components: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Get the release tag | ||
env: | ||
head_branch: ${{ inputs.tag || github.event.workflow_run.head_branch }} | ||
run: | | ||
# Read and sanitize the branch/tag name | ||
branch=$(echo "$head_branch" | tr -cd '[:alnum:]/_.-') | ||
if [[ $branch == refs/tags/* ]]; then | ||
tag="${branch#refs/tags/}" | ||
elif [[ $branch =~ ^[v]*[0-9]+\.[0-9]+\.[0-9]+.*$ ]]; then | ||
tag=$branch | ||
else | ||
echo "Tag not found in $branch. Exiting..." | ||
exit 1 | ||
fi | ||
echo "Tag: $tag" | ||
echo "RELEASE_TAG=$tag" >> $GITHUB_ENV | ||
- uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ inputs.git_ref || env.RELEASE_TAG }} | ||
submodules: "recursive" | ||
|
||
- name: Upload components to the component registry | ||
uses: espressif/upload-components-ci-action@v1 | ||
with: | ||
name: espasyncwebserver | ||
version: ${{ env.RELEASE_TAG }} | ||
namespace: esp32async | ||
api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
description: "Async Web Server for ESP32 Arduino" | ||
url: "https://github.com/ESP32Async/ESPAsyncWebServer" | ||
license: "LGPL-3.0-or-later" | ||
tags: | ||
- arduino | ||
files: | ||
exclude: | ||
- "idf_component_examples/" | ||
- "idf_component_examples/**/*" | ||
- "examples/" | ||
- "examples/**/*" | ||
- ".gitignore" | ||
- ".clang-format" | ||
- ".gitpod.Dockerfile" | ||
- ".gitpod.yml" | ||
- ".codespellrc" | ||
- ".editorconfig" | ||
- ".pre-commit-config.yaml" | ||
- "CODE_OF_CONDUCT.md" | ||
- "library.json" | ||
- "library.properties" | ||
- "partitions-4MB.csv" | ||
- "platformio.ini" | ||
- "pre-commit.requirements.txt" | ||
dependencies: | ||
esp32async/asynctcp: | ||
version: "^3.3.5" | ||
require: public | ||
examples: | ||
- path: ./idf_component_examples/catchall | ||
- path: ./idf_component_examples/serversentevents | ||
- path: ./idf_component_examples/websocket |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# For more information about build system see | ||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html | ||
# The following five lines of boilerplate have to be in your project's | ||
# CMakeLists in this exact order for cmake to work correctly | ||
cmake_minimum_required(VERSION 3.16) | ||
|
||
include($ENV{IDF_PATH}/tools/cmake/project.cmake) | ||
project(main) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
### Basic example to show how to catch all requests and send a 404 Not Found response |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
idf_component_register(SRCS "main.cpp" | ||
INCLUDE_DIRS ".") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
## IDF Component Manager Manifest File | ||
dependencies: | ||
esp32async/espasyncwebserver: | ||
version: "*" | ||
override_path: "../../../" | ||
pre_release: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
// SPDX-License-Identifier: LGPL-3.0-or-later | ||
// Copyright 2016-2025 Hristo Gochkov, Mathieu Carbou, Emil Muratov | ||
|
||
// | ||
// Shows how to catch all requests and send a 404 Not Found response | ||
// | ||
|
||
#include <Arduino.h> | ||
#include <AsyncTCP.h> | ||
#include <WiFi.h> | ||
|
||
#include <ESPAsyncWebServer.h> | ||
|
||
static AsyncWebServer server(80); | ||
|
||
static const char *htmlContent PROGMEM = R"( | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Sample HTML</title> | ||
</head> | ||
<body> | ||
<h1>Hello, World!</h1> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin euismod, purus a euismod | ||
rhoncus, urna ipsum cursus massa, eu dictum tellus justo ac justo. Quisque ullamcorper | ||
arcu nec tortor ullamcorper, vel fermentum justo fermentum. Vivamus sed velit ut elit | ||
accumsan congue ut ut enim. Ut eu justo eu lacus varius gravida ut a tellus. Nulla facilisi. | ||
Integer auctor consectetur ultricies. Fusce feugiat, mi sit amet bibendum viverra, orci leo | ||
dapibus elit, id varius sem dui id lacus.</p> | ||
</body> | ||
</html> | ||
)"; | ||
|
||
static const size_t htmlContentLength = strlen_P(htmlContent); | ||
|
||
void setup() { | ||
Serial.begin(115200); | ||
|
||
#ifndef CONFIG_IDF_TARGET_ESP32H2 | ||
WiFi.mode(WIFI_AP); | ||
WiFi.softAP("esp-captive"); | ||
#endif | ||
|
||
// curl -v http://192.168.4.1/ | ||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) { | ||
// need to cast to uint8_t* | ||
// if you do not, the const char* will be copied in a temporary String buffer | ||
request->send(200, "text/html", (uint8_t *)htmlContent, htmlContentLength); | ||
}); | ||
|
||
// catch any request, and send a 404 Not Found response | ||
// except for /game_log which is handled by onRequestBody | ||
// | ||
// curl -v http://192.168.4.1/foo | ||
// | ||
server.onNotFound([](AsyncWebServerRequest *request) { | ||
if (request->url() == "/game_log") { | ||
return; // response object already created by onRequestBody | ||
} | ||
|
||
request->send(404, "text/plain", "Not found"); | ||
}); | ||
|
||
// See: https://github.com/ESP32Async/ESPAsyncWebServer/issues/6 | ||
// catch any POST request and send a 200 OK response | ||
// | ||
// curl -v -X POST http://192.168.4.1/game_log -H "Content-Type: application/json" -d '{"game": "test"}' | ||
// | ||
server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { | ||
if (request->url() == "/game_log") { | ||
request->send(200, "application/json", "{\"status\":\"OK\"}"); | ||
} | ||
// note that there is no else here: the goal is only to prepare a response based on some body content | ||
// onNotFound will always be called after this, and will not override the response object if `/game_log` is requested | ||
}); | ||
|
||
server.begin(); | ||
} | ||
|
||
// not needed | ||
void loop() { | ||
delay(100); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# | ||
# Arduino ESP32 | ||
# | ||
CONFIG_AUTOSTART_ARDUINO=y | ||
# end of Arduino ESP32 | ||
|
||
# | ||
# FREERTOS | ||
# | ||
CONFIG_FREERTOS_HZ=1000 | ||
# end of FREERTOS | ||
# end of Component config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# For more information about build system see | ||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html | ||
# The following five lines of boilerplate have to be in your project's | ||
# CMakeLists in this exact order for cmake to work correctly | ||
cmake_minimum_required(VERSION 3.16) | ||
|
||
include($ENV{IDF_PATH}/tools/cmake/project.cmake) | ||
project(main) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
### Basic example to show how to use ServerSentEvents |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
idf_component_register(SRCS "main.cpp" | ||
INCLUDE_DIRS ".") |
6 changes: 6 additions & 0 deletions
6
idf_component_examples/serversentevents/main/idf_component.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
## IDF Component Manager Manifest File | ||
dependencies: | ||
esp32async/espasyncwebserver: | ||
version: "*" | ||
override_path: "../../../" | ||
pre_release: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
// SPDX-License-Identifier: LGPL-3.0-or-later | ||
// Copyright 2016-2025 Hristo Gochkov, Mathieu Carbou, Emil Muratov | ||
|
||
// | ||
// SSE example | ||
// | ||
|
||
#include <Arduino.h> | ||
#include <AsyncTCP.h> | ||
#include <WiFi.h> | ||
|
||
#include <ESPAsyncWebServer.h> | ||
|
||
static const char *htmlContent PROGMEM = R"( | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Server-Sent Events</title> | ||
<script> | ||
if (!!window.EventSource) { | ||
var source = new EventSource('/events'); | ||
source.addEventListener('open', function(e) { | ||
console.log("Events Connected"); | ||
}, false); | ||
source.addEventListener('error', function(e) { | ||
if (e.target.readyState != EventSource.OPEN) { | ||
console.log("Events Disconnected"); | ||
} | ||
}, false); | ||
source.addEventListener('message', function(e) { | ||
console.log("message", e.data); | ||
}, false); | ||
source.addEventListener('heartbeat', function(e) { | ||
console.log("heartbeat", e.data); | ||
}, false); | ||
} | ||
</script> | ||
</head> | ||
<body> | ||
<h1>Open your browser console!</h1> | ||
</body> | ||
</html> | ||
)"; | ||
|
||
static const size_t htmlContentLength = strlen_P(htmlContent); | ||
|
||
static AsyncWebServer server(80); | ||
static AsyncEventSource events("/events"); | ||
|
||
void setup() { | ||
Serial.begin(115200); | ||
|
||
#ifndef CONFIG_IDF_TARGET_ESP32H2 | ||
WiFi.mode(WIFI_AP); | ||
WiFi.softAP("esp-captive"); | ||
#endif | ||
|
||
// curl -v http://192.168.4.1/ | ||
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) { | ||
// need to cast to uint8_t* | ||
// if you do not, the const char* will be copied in a temporary String buffer | ||
request->send(200, "text/html", (uint8_t *)htmlContent, htmlContentLength); | ||
}); | ||
|
||
events.onConnect([](AsyncEventSourceClient *client) { | ||
Serial.printf("SSE Client connected! ID: %" PRIu32 "\n", client->lastId()); | ||
client->send("hello!", NULL, millis(), 1000); | ||
}); | ||
|
||
events.onDisconnect([](AsyncEventSourceClient *client) { | ||
Serial.printf("SSE Client disconnected! ID: %" PRIu32 "\n", client->lastId()); | ||
}); | ||
|
||
server.addHandler(&events); | ||
|
||
server.begin(); | ||
} | ||
|
||
static uint32_t lastSSE = 0; | ||
static uint32_t deltaSSE = 3000; | ||
|
||
static uint32_t lastHeap = 0; | ||
|
||
void loop() { | ||
uint32_t now = millis(); | ||
if (now - lastSSE >= deltaSSE) { | ||
events.send(String("ping-") + now, "heartbeat", now); | ||
lastSSE = millis(); | ||
} | ||
|
||
if (now - lastHeap >= 2000) { | ||
Serial.printf("Free heap: %" PRIu32 "\n", ESP.getFreeHeap()); | ||
lastHeap = now; | ||
} | ||
} |
12 changes: 12 additions & 0 deletions
12
idf_component_examples/serversentevents/sdkconfig.defaults
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# | ||
# Arduino ESP32 | ||
# | ||
CONFIG_AUTOSTART_ARDUINO=y | ||
# end of Arduino ESP32 | ||
|
||
# | ||
# FREERTOS | ||
# | ||
CONFIG_FREERTOS_HZ=1000 | ||
# end of FREERTOS | ||
# end of Component config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# For more information about build system see | ||
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html | ||
# The following five lines of boilerplate have to be in your project's | ||
# CMakeLists in this exact order for cmake to work correctly | ||
cmake_minimum_required(VERSION 3.16) | ||
|
||
include($ENV{IDF_PATH}/tools/cmake/project.cmake) | ||
project(main) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
### Basic example to show how to use WebSockets |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
idf_component_register(SRCS "main.cpp" | ||
INCLUDE_DIRS ".") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
## IDF Component Manager Manifest File | ||
dependencies: | ||
esp32async/espasyncwebserver: | ||
version: "*" | ||
override_path: "../../../" | ||
pre_release: true |
Oops, something went wrong.