initial commit
This commit is contained in:
commit
18a57c6aa2
9 changed files with 193 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
75
domestic-climate-monitor/.gitignore
vendored
Normal file
75
domestic-climate-monitor/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
# ESP-IDF Build Output
|
||||||
|
build/
|
||||||
|
sdkconfig
|
||||||
|
sdkconfig.old
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
dependencies.lock
|
||||||
|
managed_components/
|
||||||
|
|
||||||
|
# Flash Download Tool
|
||||||
|
flash_project_args
|
||||||
|
|
||||||
|
# VS Code
|
||||||
|
.vscode/
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
|
# Eclipse
|
||||||
|
.cproject
|
||||||
|
.project
|
||||||
|
.settings/
|
||||||
|
|
||||||
|
# CLion
|
||||||
|
.idea/
|
||||||
|
cmake-build-*/
|
||||||
|
|
||||||
|
# Emacs
|
||||||
|
*~
|
||||||
|
\#*\#
|
||||||
|
.\#*
|
||||||
|
|
||||||
|
# Vim
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Python virtual environments (for ESP-IDF)
|
||||||
|
venv/
|
||||||
|
.venv/
|
||||||
|
env/
|
||||||
|
.env/
|
||||||
|
|
||||||
|
# Component build artifacts
|
||||||
|
**/*.o
|
||||||
|
**/*.a
|
||||||
|
**/*.so
|
||||||
|
**/*.elf
|
||||||
|
**/*.bin
|
||||||
|
**/*.map
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Menuconfig backups
|
||||||
|
sdkconfig.defaults.*
|
||||||
|
!sdkconfig.defaults
|
||||||
|
|
||||||
|
# pytest cache
|
||||||
|
.pytest_cache/
|
||||||
|
__pycache__/
|
||||||
|
|
||||||
|
# Coverage files
|
||||||
|
*.gcno
|
||||||
|
*.gcda
|
||||||
|
*.gcov
|
||||||
|
|
||||||
|
# Secrets
|
||||||
|
|
||||||
|
secrets.h
|
||||||
7
domestic-climate-monitor/CMakeLists.txt
Normal file
7
domestic-climate-monitor/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
# This env var is sourced from:
|
||||||
|
# . /opt/esp-idf/export.sh
|
||||||
|
# when the compilation terminal session starts
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
project(domestic-climate-monitor)
|
||||||
2
domestic-climate-monitor/main/CMakeLists.txt
Normal file
2
domestic-climate-monitor/main/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
idf_component_register(SRCS "main.c" "wifi.c"
|
||||||
|
INCLUDE_DIRS ".")
|
||||||
26
domestic-climate-monitor/main/main.c
Normal file
26
domestic-climate-monitor/main/main.c
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/event_groups.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "nvs_flash.h"
|
||||||
|
|
||||||
|
#include "wifi.h"
|
||||||
|
|
||||||
|
static const char *TAG = "main";
|
||||||
|
void setup(void) {
|
||||||
|
ESP_ERROR_CHECK(nvs_flash_init());
|
||||||
|
wifi_connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(void) {
|
||||||
|
ESP_LOGI(TAG, "Loop running...");
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_main(void) {
|
||||||
|
setup();
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
loop();
|
||||||
|
}
|
||||||
|
}
|
||||||
77
domestic-climate-monitor/main/wifi.c
Normal file
77
domestic-climate-monitor/main/wifi.c
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
#include "esp_event.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "esp_wifi.h"
|
||||||
|
#include "freertos/event_groups.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "secrets.h"
|
||||||
|
|
||||||
|
// `TAG` is common naming convention for logs in ESP-IDF
|
||||||
|
static const char *TAG = "wifi"; // Logs are coming from this wifi module. TAG =
|
||||||
|
// common naming convention for logs in ESP-IDF
|
||||||
|
static EventGroupHandle_t s_wifi_event_group;
|
||||||
|
static int s_retry_num = 0;
|
||||||
|
|
||||||
|
#define WIFI_CONNECTED_BIT BIT0
|
||||||
|
#define WIFI_FAIL_BIT BIT1
|
||||||
|
#define MAX_RETRY 5
|
||||||
|
|
||||||
|
static void wifi_event_handler(void *arg, esp_event_base_t event_base,
|
||||||
|
int32_t event_id, void *event_data) {
|
||||||
|
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
|
||||||
|
esp_wifi_connect();
|
||||||
|
} else if (event_base == WIFI_EVENT &&
|
||||||
|
event_id == WIFI_EVENT_STA_DISCONNECTED) {
|
||||||
|
if (s_retry_num < MAX_RETRY) {
|
||||||
|
esp_wifi_connect();
|
||||||
|
s_retry_num++;
|
||||||
|
ESP_LOGI(TAG, "Retrying connection...");
|
||||||
|
} else {
|
||||||
|
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
|
||||||
|
}
|
||||||
|
} else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
|
||||||
|
ESP_LOGI(TAG, "Connected! Got IP");
|
||||||
|
s_retry_num = 0;
|
||||||
|
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wifi_connect(void) {
|
||||||
|
s_wifi_event_group = xEventGroupCreate();
|
||||||
|
ESP_ERROR_CHECK(esp_netif_init());
|
||||||
|
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
||||||
|
esp_netif_create_default_wifi_sta();
|
||||||
|
|
||||||
|
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
|
||||||
|
|
||||||
|
esp_event_handler_instance_t instance_any_id;
|
||||||
|
esp_event_handler_instance_t instance_got_ip;
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_instance_register(
|
||||||
|
WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL,
|
||||||
|
&instance_any_id));
|
||||||
|
ESP_ERROR_CHECK(esp_event_handler_instance_register(
|
||||||
|
IP_EVENT, IP_EVENT_STA_GOT_IP, &wifi_event_handler, NULL,
|
||||||
|
&instance_got_ip));
|
||||||
|
|
||||||
|
wifi_config_t wifi_config = {
|
||||||
|
.sta =
|
||||||
|
{
|
||||||
|
.ssid = SECRETS_WIFI_SSID,
|
||||||
|
.password = SECRETS_WIFI_PASS,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
|
||||||
|
ESP_ERROR_CHECK(esp_wifi_start());
|
||||||
|
|
||||||
|
// Wait for connection
|
||||||
|
EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group,
|
||||||
|
WIFI_CONNECTED_BIT | WIFI_FAIL_BIT,
|
||||||
|
pdFALSE, pdFALSE, portMAX_DELAY);
|
||||||
|
|
||||||
|
if (bits & WIFI_CONNECTED_BIT) {
|
||||||
|
ESP_LOGI(TAG, "WiFi connected successfully");
|
||||||
|
} else {
|
||||||
|
ESP_LOGE(TAG, "WiFi connection failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
6
domestic-climate-monitor/main/wifi.h
Normal file
6
domestic-climate-monitor/main/wifi.h
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef WIFI_H
|
||||||
|
#define WIFI_H
|
||||||
|
|
||||||
|
void wifi_connect(void);
|
||||||
|
|
||||||
|
#endif // WIFI_H
|
||||||
Loading…
Add table
Reference in a new issue