copied from https server example, changed wifi info and certs
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
build
|
||||||
|
sdkconfig*
|
||||||
10
CMakeLists.txt
Normal file
10
CMakeLists.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# The following 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.5)
|
||||||
|
|
||||||
|
# (Not part of the boilerplate)
|
||||||
|
# This example uses an extra component for common functions such as Wi-Fi and Ethernet connection.
|
||||||
|
set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common)
|
||||||
|
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
project(bme280)
|
||||||
11
Makefile
Normal file
11
Makefile
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#
|
||||||
|
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
|
||||||
|
# project subdirectory.
|
||||||
|
#
|
||||||
|
|
||||||
|
PROJECT_NAME := bme280
|
||||||
|
|
||||||
|
EXTRA_COMPONENT_DIRS = $(IDF_PATH)/examples/common_components/protocol_examples_common
|
||||||
|
|
||||||
|
include $(IDF_PATH)/make/project.mk
|
||||||
|
|
||||||
4
main/CMakeLists.txt
Normal file
4
main/CMakeLists.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
idf_component_register(SRCS "main.c"
|
||||||
|
INCLUDE_DIRS "."
|
||||||
|
EMBED_TXTFILES "certs/cacert.pem"
|
||||||
|
"certs/prvtkey.pem")
|
||||||
23
main/certs/cacert.pem
Normal file
23
main/certs/cacert.pem
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDvTCCAqWgAwIBAgIUVxPiiPnOj/z8TyrXxhHaa4V4Yi0wDQYJKoZIhvcNAQEL
|
||||||
|
BQAwbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMQwwCgYDVQQHDANOL0ExITAf
|
||||||
|
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEhMB8GCSqGSIb3DQEJARYS
|
||||||
|
dGhuYW0ubWVAZ21haWwuY29tMB4XDTIwMDkxMzE2NDk0NVoXDTMwMDkxMTE2NDk0
|
||||||
|
NVowbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMQwwCgYDVQQHDANOL0ExITAf
|
||||||
|
BgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEhMB8GCSqGSIb3DQEJARYS
|
||||||
|
dGhuYW0ubWVAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||||
|
AQEAzlOmB9ioTyA4U2J9rxfTDzgizhF6UtB6p9sbmvG2lakTPhXSHfPYQAzZNT6J
|
||||||
|
oKvXWHQZ2zf8QtBXsz08nJsamblXfcBw9NVnnUHYMaP9PI+DyR9pzPv3JZVtdIpp
|
||||||
|
wrjAzvfh3oP6Uh2LwNUgTwwFlVGwut2rFISRSfiWBC5Q1DZyHgNJXxsFxRFQ61xl
|
||||||
|
EhUsatD4dF49mLjLo2jCRpCB5P/oSzJYqP5Ix9p5Ol0HDg/3R5Ltw8ZvVDcmbRRU
|
||||||
|
Gw76Mb4zt/89oCOTNI7XCsJ5Q5FTCz2FZ/m/IzDb4m4POYuIHDjnGVSZdfeZ6D1z
|
||||||
|
OpsfKjiUyrpo5I9KDccqQ2TrqQIDAQABo1MwUTAdBgNVHQ4EFgQU/Ytzpowejmfk
|
||||||
|
a/KcYxeRRjB5nF4wHwYDVR0jBBgwFoAU/Ytzpowejmfka/KcYxeRRjB5nF4wDwYD
|
||||||
|
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAcJ4463CUefQZ6JwI3UPN
|
||||||
|
TjgSrX/Swe3AxpnYy6J+LnC1qUXJdUrQSp8hG1Qi82xy6x380usR7ZC7SSu3z6O2
|
||||||
|
JGhg0/eB7v+sArmXO4K2uelkMWTuPdBkA7eTP5EUT7uFhyrQQxcy0l94aK+y6rHx
|
||||||
|
JYxe4dyvwHP9t0WUYVVIHvdtd6+7PfLV8nWEDhPBP+Wv8mhvIX4k9ZVZQVfoYxmw
|
||||||
|
odK2ylBkLeP3uC9GNp2DOVxiDEvBjWC4ZUYGsi8lycQibY05+suRhNslDc/dTd3T
|
||||||
|
xLP24dbQ/VeeTXudJRjoHh19A7pCZ64ihJKWPT6n10ws8ju5tb8uGKTDh9TZXtJV
|
||||||
|
Xw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
28
main/certs/prvtkey.pem
Normal file
28
main/certs/prvtkey.pem
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOU6YH2KhPIDhT
|
||||||
|
Yn2vF9MPOCLOEXpS0Hqn2xua8baVqRM+FdId89hADNk1Pomgq9dYdBnbN/xC0Fez
|
||||||
|
PTycmxqZuVd9wHD01WedQdgxo/08j4PJH2nM+/cllW10imnCuMDO9+Heg/pSHYvA
|
||||||
|
1SBPDAWVUbC63asUhJFJ+JYELlDUNnIeA0lfGwXFEVDrXGUSFSxq0Ph0Xj2YuMuj
|
||||||
|
aMJGkIHk/+hLMlio/kjH2nk6XQcOD/dHku3Dxm9UNyZtFFQbDvoxvjO3/z2gI5M0
|
||||||
|
jtcKwnlDkVMLPYVn+b8jMNvibg85i4gcOOcZVJl195noPXM6mx8qOJTKumjkj0oN
|
||||||
|
xypDZOupAgMBAAECggEBAMLHaw0rNrEEHMhzSW17U0+h0hGxpEX79F70VRowKAsf
|
||||||
|
Q0AwP1zxb2v/9SnzsN+SekhRynsOXkIBB1n5bHf3YORQeU0I2Fn6AMgPefZa9t0u
|
||||||
|
Kt46npnaIBZF+7+yT2d5HOQGVR/Ifg75P466ZLbbBYZSSUIPs8s53yLy30RxKPM8
|
||||||
|
BP5KQ+u6s2TpKX5xk9i72wPmx9ZAMbzBXb+Q6yAJRs9ncp54zm6HxNEjGsa2cdKZ
|
||||||
|
UG3aMgrkVMFP6Qd0gQbJLzcu07cKpMUxx0X8ZaLZfIoiOuuWLo/6vAkcD+aoYMew
|
||||||
|
R8Ntruvb0+2CRI/pe+CmZtRLrSg94i9GxDn4iP1zVFECgYEA6ddIjOfmJYAOuke7
|
||||||
|
jqzR7iDMkpnbr0NETOGz591vdqTxOD65ZKIPAPLsNziVpO+42GPxsIP8lrRBk/9b
|
||||||
|
+suI7ciqGyvWyT4aMnEFjDmmzTKrTopCXfGriDrrkJ/kwiO04nX30vxr4fiO1cTo
|
||||||
|
R4be6b9XVmD23WYSR52KZqFy5h0CgYEA4eDm4InuebZYeXxtO+1PT2MuCZGRtFXZ
|
||||||
|
BCNb/MmYcsdXQpFSf0UlMtD++Y0WqjtCN2ztSbDsBYNNa2/UAxUUsKMhnUrAMAcP
|
||||||
|
rYl9IxSsXlboDqq+QxTDuA1S9PWhZ+5Qbq0Yo34sMT0GT8h1bPAM5b3jynGt4tI4
|
||||||
|
dPkevZuptf0CgYEAxqRSxR/ZqdF2sVduRG0aiCbkoUSCEggaZRT2NuksXqUPJLBj
|
||||||
|
3NCt3ih98QroVAwwAeIk1cXJNFw7uPUbtZhg4V2s4xgChUF0D5VjGROAVp/MVhOs
|
||||||
|
/RDmnfsvUNQDB8g9SILd2yUCoBr9eyqiBuDTS81267HDA6BJtvxlLXnImSECgYAc
|
||||||
|
e4eheMMhheTSLOZ5UAtYL2F2w2xkGQ8sfmjzD1ix4IEYW8rTUZzHM6NzRF8/SAmp
|
||||||
|
g4rIaA7bAxuYGJnbaaUaQPfUJcDmTX2knFmzOsAhhUPt1Yn4W33yj3uOeArKWDq8
|
||||||
|
OgeJVjesXc2V8ekcu4hkz/URahRLLccAuQkvT5mu4QKBgEQdwTaSP+nY36aw+/aj
|
||||||
|
7bu/GTgfusV9tHTFo5+/WuxM5hFSh+N8oTeEK1j9zBYo2QtTFxG83xKGZuKUJlzB
|
||||||
|
0zcC7F9af8xoRxfYF5fu7KOj8OHyoP5VATuU5/1THwk74H0lnYPgUG4dbsQhHP48
|
||||||
|
VMJof+bmDAu36d8dFAyiHolS
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
7
main/component.mk
Normal file
7
main/component.mk
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#
|
||||||
|
# "main" pseudo-component makefile.
|
||||||
|
#
|
||||||
|
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
|
||||||
|
|
||||||
|
COMPONENT_EMBED_TXTFILES := certs/cacert.pem
|
||||||
|
COMPONENT_EMBED_TXTFILES += certs/prvtkey.pem
|
||||||
127
main/main.c
Normal file
127
main/main.c
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/* Simple HTTP + SSL Server Example
|
||||||
|
|
||||||
|
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 <esp_wifi.h>
|
||||||
|
#include <esp_event.h>
|
||||||
|
#include <esp_log.h>
|
||||||
|
#include <esp_system.h>
|
||||||
|
#include <nvs_flash.h>
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include "esp_netif.h"
|
||||||
|
#include "esp_eth.h"
|
||||||
|
#include "protocol_examples_common.h"
|
||||||
|
|
||||||
|
#include <esp_https_server.h>
|
||||||
|
|
||||||
|
/* A simple example that demonstrates how to create GET and POST
|
||||||
|
* handlers and start an HTTPS server.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const char *TAG = "example";
|
||||||
|
|
||||||
|
|
||||||
|
/* An HTTP GET handler */
|
||||||
|
static esp_err_t root_get_handler(httpd_req_t *req)
|
||||||
|
{
|
||||||
|
httpd_resp_set_type(req, "text/html");
|
||||||
|
httpd_resp_send(req, "<h1>Hello Secure World!</h1>", -1); // -1 = use strlen()
|
||||||
|
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const httpd_uri_t root = {
|
||||||
|
.uri = "/",
|
||||||
|
.method = HTTP_GET,
|
||||||
|
.handler = root_get_handler
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static httpd_handle_t start_webserver(void)
|
||||||
|
{
|
||||||
|
httpd_handle_t server = NULL;
|
||||||
|
|
||||||
|
// Start the httpd server
|
||||||
|
ESP_LOGI(TAG, "Starting server");
|
||||||
|
|
||||||
|
httpd_ssl_config_t conf = HTTPD_SSL_CONFIG_DEFAULT();
|
||||||
|
|
||||||
|
extern const unsigned char cacert_pem_start[] asm("_binary_cacert_pem_start");
|
||||||
|
extern const unsigned char cacert_pem_end[] asm("_binary_cacert_pem_end");
|
||||||
|
conf.cacert_pem = cacert_pem_start;
|
||||||
|
conf.cacert_len = cacert_pem_end - cacert_pem_start;
|
||||||
|
|
||||||
|
extern const unsigned char prvtkey_pem_start[] asm("_binary_prvtkey_pem_start");
|
||||||
|
extern const unsigned char prvtkey_pem_end[] asm("_binary_prvtkey_pem_end");
|
||||||
|
conf.prvtkey_pem = prvtkey_pem_start;
|
||||||
|
conf.prvtkey_len = prvtkey_pem_end - prvtkey_pem_start;
|
||||||
|
|
||||||
|
esp_err_t ret = httpd_ssl_start(&server, &conf);
|
||||||
|
if (ESP_OK != ret) {
|
||||||
|
ESP_LOGI(TAG, "Error starting server!");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set URI handlers
|
||||||
|
ESP_LOGI(TAG, "Registering URI handlers");
|
||||||
|
httpd_register_uri_handler(server, &root);
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stop_webserver(httpd_handle_t server)
|
||||||
|
{
|
||||||
|
// Stop the httpd server
|
||||||
|
httpd_ssl_stop(server);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void disconnect_handler(void* arg, esp_event_base_t event_base,
|
||||||
|
int32_t event_id, void* event_data)
|
||||||
|
{
|
||||||
|
httpd_handle_t* server = (httpd_handle_t*) arg;
|
||||||
|
if (*server) {
|
||||||
|
stop_webserver(*server);
|
||||||
|
*server = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void connect_handler(void* arg, esp_event_base_t event_base,
|
||||||
|
int32_t event_id, void* event_data)
|
||||||
|
{
|
||||||
|
httpd_handle_t* server = (httpd_handle_t*) arg;
|
||||||
|
if (*server == NULL) {
|
||||||
|
*server = start_webserver();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_main(void)
|
||||||
|
{
|
||||||
|
static httpd_handle_t server = NULL;
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
|
ESP_ERROR_CHECK(esp_netif_init());
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
|
||||||
|
/* Register event handlers to start server when Wi-Fi or Ethernet is connected,
|
||||||
|
* and stop server when disconnection happens.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_EXAMPLE_CONNECT_WIFI
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &connect_handler, &server));
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &disconnect_handler, &server));
|
||||||
|
#endif // CONFIG_EXAMPLE_CONNECT_WIFI
|
||||||
|
#ifdef CONFIG_EXAMPLE_CONNECT_ETHERNET
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &connect_handler, &server));
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ETHERNET_EVENT_DISCONNECTED, &disconnect_handler, &server));
|
||||||
|
#endif // CONFIG_EXAMPLE_CONNECT_ETHERNET
|
||||||
|
|
||||||
|
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
|
||||||
|
* Read "Establishing Wi-Fi or Ethernet Connection" section in
|
||||||
|
* examples/protocols/README.md for more information about this function.
|
||||||
|
*/
|
||||||
|
ESP_ERROR_CHECK(example_connect());
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user