-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* EVSE app on esp32 * Restyled by clang-format * Restyled by autopep8 * spelcheck * Address review comments --------- Co-authored-by: PSONALl <[email protected]> Co-authored-by: Restyled.io <[email protected]> Co-authored-by: Rohit Jadhav <[email protected]> Co-authored-by: jamesharrow <[email protected]>
- Loading branch information
Showing
20 changed files
with
1,414 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,4 @@ | ||
/build/ | ||
/sdkconfig | ||
/sdkconfig.old | ||
main/insights_auth_key.txt |
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,87 @@ | ||
# | ||
# Copyright (c) 2021-2023 Project CHIP Authors | ||
# All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
# 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) | ||
|
||
set(PROJECT_VER "v1.0") | ||
set(PROJECT_VER_NUMBER 1) | ||
|
||
include($ENV{IDF_PATH}/tools/cmake/project.cmake) | ||
include(${CMAKE_CURRENT_LIST_DIR}/third_party/connectedhomeip/examples/common/cmake/idf_flashing.cmake) | ||
|
||
set(EXTRA_COMPONENT_DIRS | ||
"${CMAKE_CURRENT_LIST_DIR}/third_party/connectedhomeip/config/esp32/components" | ||
"${CMAKE_CURRENT_LIST_DIR}/third_party/connectedhomeip/examples/common" | ||
) | ||
|
||
if(${IDF_TARGET} STREQUAL "esp32") | ||
list(APPEND EXTRA_COMPONENT_DIRS "${CMAKE_CURRENT_LIST_DIR}/third_party/connectedhomeip/examples/common/m5stack-tft/repo/components") | ||
endif() | ||
|
||
|
||
project(chip-energy-management-app) | ||
|
||
# WARNING: This is just an example for using key for decrypting the encrypted OTA image | ||
# Please do not use it as is. | ||
if(CONFIG_ENABLE_ENCRYPTED_OTA) | ||
target_add_binary_data(chip-energy-management-app.elf "esp_image_encryption_key.pem" TEXT) | ||
endif() | ||
|
||
# C++17 is required for RPC build. | ||
idf_build_set_property(CXX_COMPILE_OPTIONS "-std=gnu++17;-Os;-DCHIP_HAVE_CONFIG_H" APPEND) | ||
idf_build_set_property(C_COMPILE_OPTIONS "-Os" APPEND) | ||
# For the C3, project_include.cmake sets -Wno-format, but does not clear various | ||
# flags that depend on -Wformat | ||
idf_build_set_property(COMPILE_OPTIONS "-Wno-format-nonliteral;-Wno-format-security" APPEND) | ||
|
||
# -Wmaybe-uninitialized has too many false positives, including on std::optional | ||
# and chip::Optional. Make it nonfatal. | ||
# | ||
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80635 | ||
idf_build_set_property(COMPILE_OPTIONS "-Wno-error=maybe-uninitialized" APPEND) | ||
|
||
#For the H2, -Werror=uninitialized will cause an error in "src/lib/support/LambdaBridge.h" | ||
idf_build_set_property(COMPILE_OPTIONS "-Wno-error=uninitialized" APPEND) | ||
|
||
flashing_script() | ||
|
||
if (CONFIG_ENABLE_PW_RPC) | ||
get_filename_component(CHIP_ROOT ./third_party/connectedhomeip REALPATH) | ||
include(third_party/connectedhomeip/third_party/pigweed/repo/pw_build/pigweed.cmake) | ||
include($ENV{PW_ROOT}/pw_assert/backend.cmake) | ||
include($ENV{PW_ROOT}/pw_log/backend.cmake) | ||
include($ENV{PW_ROOT}/pw_sys_io/backend.cmake) | ||
include($ENV{PW_ROOT}/pw_trace/backend.cmake) | ||
|
||
pw_set_module_config(pw_rpc_CONFIG pw_rpc.disable_global_mutex_config) | ||
|
||
pw_set_backend(pw_log pw_log_basic) | ||
pw_set_backend(pw_assert.check pw_assert_log.check_backend) | ||
pw_set_backend(pw_assert.assert pw_assert.assert_compatibility_backend) | ||
pw_set_backend(pw_sys_io pw_sys_io.esp32) | ||
pw_set_backend(pw_trace pw_trace_tokenized) | ||
|
||
add_subdirectory(third_party/connectedhomeip/third_party/pigweed/repo) | ||
add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo) | ||
add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io) | ||
|
||
get_target_property(_target_cxx_flags pw_build.cpp17._public_config INTERFACE_COMPILE_OPTIONS) | ||
list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>) | ||
list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>) | ||
set_target_properties(pw_build.cpp17._public_config PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}") | ||
endif(CONFIG_ENABLE_PW_RPC) |
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,49 @@ | ||
# Matter ESP32 Energy Management Example | ||
|
||
This example demonstrates the Matter Electric Vehicle Supply Equipment | ||
application on ESP platforms. | ||
|
||
Please | ||
[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) | ||
and refer | ||
[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) | ||
guides to get started. | ||
|
||
### Enabling ESP-Insights: | ||
|
||
- Before building the app, enable the option: ESP_INSIGHTS_ENABLED through | ||
menuconfig. | ||
|
||
- Create a file named insights_auth_key.txt in the main directory of the | ||
example. | ||
|
||
- Follow the steps | ||
present[here](https://github.com/espressif/esp-insights/blob/main/examples/README.md#set-up-esp-insights-account) | ||
to set up an insights_account and the auth key created while setting it up | ||
will be used in the example. | ||
|
||
- Download the auth key and copy Auth Key to the example | ||
|
||
``` | ||
cp /path/to/auth/key.txt path/to/connectedhomeip/examples/energy-management-app/esp32/main/insights_auth_key.txt | ||
``` | ||
|
||
--- | ||
|
||
- [Cluster Control](#cluster-control) | ||
- [Matter OTA guide](../../../docs/guides/esp32/ota.md) | ||
|
||
--- | ||
|
||
### Cluster Control | ||
|
||
- After successful commissioning, use the Energy Electric Vehicle Supply | ||
Equipment cluster command to disable/enable charging and discharging. | ||
|
||
``` | ||
$./out/debug/chip-tool energyevse disable <NODE ID> 1 | ||
``` | ||
|
||
``` | ||
$ ./out/debug/chip-tool energyevse enable-charging 0xFFFFFFFF 6000 32000 <NODE ID> 1 --timedInteractionTimeoutMs <Time> | ||
``` |
247 changes: 247 additions & 0 deletions
247
examples/energy-management-app/esp32/main/CMakeLists.txt
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,247 @@ | ||
# | ||
# Copyright (c) 2021-2023 Project CHIP Authors | ||
# All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) | ||
|
||
set(PRIV_INCLUDE_DIRS_LIST | ||
"${APP_GEN_DIR}" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/providers" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/energy-management-app/energy-management-common/include" | ||
"${CMAKE_CURRENT_LIST_DIR}/include" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32" | ||
) | ||
set(SRC_DIRS_LIST | ||
"${CMAKE_CURRENT_LIST_DIR}" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/zzz_generated/app-common/app-common/zap-generated/attributes" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/zzz_generated/app-common/app-common/zap-generated" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/providers" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/energy-management-app/energy-management-common/src" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/ota" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/common" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/shell_extension" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/util" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet-network-diagnostics-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-commissioning-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-diagnostics-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/identify-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/localization-configuration-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/time-format-localization-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/barrier-control-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/energy-evse-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/network-commissioning" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/occupancy-sensor-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/operational-credentials-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ota-requestor" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/power-source-configuration-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software-diagnostics-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/switch-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread-network-diagnostics-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi-network-diagnostics-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ota-requestor" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/groups-server" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/group-key-mgmt-server" | ||
) | ||
|
||
set(PRIV_REQUIRES_LIST chip QRCode bt led_strip app_update openthread driver nvs_flash spi_flash) | ||
|
||
if(${IDF_TARGET} STREQUAL "esp32") | ||
list(APPEND PRIV_REQUIRES_LIST spidriver screen-framework) | ||
endif() | ||
|
||
|
||
if (CONFIG_ENABLE_PW_RPC) | ||
# Append additional directories for RPC build | ||
set(PRIV_INCLUDE_DIRS_LIST "${PRIV_INCLUDE_DIRS_LIST}" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32/pw_sys_io/public" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/common" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/common/pigweed" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/common/pigweed/esp32" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/lib/support" | ||
) | ||
|
||
if (${IDF_VERSION_MAJOR} LESS 5) | ||
list(APPEND PRIV_INCLUDE_DIRS_LIST "${IDF_PATH}/components/freertos/include/freertos") | ||
else() | ||
list(APPEND PRIV_INCLUDE_DIRS_LIST "${IDF_PATH}/components/freertos/FreeRTOS-Kernel/include/freertos") | ||
endif() | ||
|
||
set(SRC_DIRS_LIST "${SRC_DIRS_LIST}" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/platform/esp32" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/common/pigweed" | ||
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/examples/common/pigweed/esp32" | ||
) | ||
endif (CONFIG_ENABLE_PW_RPC) | ||
|
||
idf_component_register(PRIV_INCLUDE_DIRS ${PRIV_INCLUDE_DIRS_LIST} | ||
SRC_DIRS ${SRC_DIRS_LIST} | ||
PRIV_REQUIRES ${PRIV_REQUIRES_LIST}) | ||
get_filename_component(CHIP_ROOT ${CMAKE_SOURCE_DIR}/third_party/connectedhomeip REALPATH) | ||
|
||
include("${CHIP_ROOT}/build/chip/esp32/esp32_codegen.cmake") | ||
|
||
chip_app_component_codegen("${CHIP_ROOT}/examples/energy-management-app/energy-management-common/energy-management-app.matter") | ||
chip_app_component_zapgen("${CHIP_ROOT}/examples/energy-management-app/energy-management-common/energy-management-app.zap") | ||
|
||
if (CONFIG_ENABLE_ESP_INSIGHTS_TRACE) | ||
target_add_binary_data(${COMPONENT_TARGET} "insights_auth_key.txt" TEXT) | ||
endif() | ||
|
||
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17) | ||
target_compile_options(${COMPONENT_LIB} PRIVATE "-DCHIP_HAVE_CONFIG_H") | ||
target_compile_options(${COMPONENT_LIB} PUBLIC | ||
"-DCHIP_ADDRESS_RESOLVE_IMPL_INCLUDE_HEADER=<lib/address_resolve/AddressResolve_DefaultImpl.h>" | ||
) | ||
|
||
if (CONFIG_ENABLE_PW_RPC) | ||
|
||
get_filename_component(CHIP_ROOT ${CMAKE_SOURCE_DIR}/third_party/connectedhomeip REALPATH) | ||
|
||
set(PIGWEED_ROOT "${CHIP_ROOT}/third_party/pigweed/repo") | ||
include(${PIGWEED_ROOT}/pw_build/pigweed.cmake) | ||
include(${PIGWEED_ROOT}/pw_protobuf_compiler/proto.cmake) | ||
set(dir_pw_third_party_nanopb "${CHIP_ROOT}/third_party/nanopb/repo" CACHE STRING "" FORCE) | ||
|
||
pw_proto_library(attributes_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/attributes_service.proto | ||
INPUTS | ||
${CHIP_ROOT}/examples/common/pigweed/protos/attributes_service.options | ||
PREFIX | ||
attributes_service | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
DEPS | ||
pw_protobuf.common_proto | ||
) | ||
|
||
pw_proto_library(button_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/button_service.proto | ||
PREFIX | ||
button_service | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
DEPS | ||
pw_protobuf.common_proto | ||
) | ||
|
||
pw_proto_library(descriptor_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/descriptor_service.proto | ||
PREFIX | ||
descriptor_service | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
DEPS | ||
pw_protobuf.common_proto | ||
) | ||
|
||
pw_proto_library(device_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/device_service.proto | ||
INPUTS | ||
${CHIP_ROOT}/examples/common/pigweed/protos/device_service.options | ||
PREFIX | ||
device_service | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
DEPS | ||
pw_protobuf.common_proto | ||
) | ||
|
||
pw_proto_library(lighting_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/lighting_service.proto | ||
PREFIX | ||
lighting_service | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
DEPS | ||
pw_protobuf.common_proto | ||
) | ||
|
||
pw_proto_library(locking_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/locking_service.proto | ||
PREFIX | ||
locking_service | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
DEPS | ||
pw_protobuf.common_proto | ||
) | ||
|
||
pw_proto_library(wifi_service | ||
SOURCES | ||
${CHIP_ROOT}/examples/common/pigweed/protos/wifi_service.proto | ||
INPUTS | ||
${CHIP_ROOT}/examples/common/pigweed/protos/wifi_service.options | ||
PREFIX | ||
wifi_service | ||
DEPS | ||
pw_protobuf.common_proto | ||
STRIP_PREFIX | ||
${CHIP_ROOT}/examples/common/pigweed/protos | ||
) | ||
|
||
target_link_libraries(${COMPONENT_LIB} PUBLIC | ||
attributes_service.nanopb_rpc | ||
button_service.nanopb_rpc | ||
descriptor_service.nanopb_rpc | ||
device_service.nanopb_rpc | ||
lighting_service.nanopb_rpc | ||
locking_service.nanopb_rpc | ||
wifi_service.nanopb_rpc | ||
pw_checksum | ||
pw_hdlc | ||
pw_log | ||
pw_rpc.server | ||
pw_sys_io | ||
pw_trace | ||
pw_trace_tokenized | ||
pw_trace_tokenized.trace_buffer | ||
pw_trace_tokenized.rpc_service | ||
pw_trace_tokenized.protos.nanopb_rpc | ||
) | ||
|
||
target_link_options(${COMPONENT_LIB} | ||
PUBLIC | ||
"-T${PIGWEED_ROOT}/pw_tokenizer/pw_tokenizer_linker_sections.ld" | ||
"-L${PIGWEED_ROOT}/pw_tokenizer" | ||
) | ||
|
||
target_compile_options(${COMPONENT_LIB} PRIVATE | ||
"-DPW_RPC_ATTRIBUTE_SERVICE=1" | ||
"-DPW_RPC_BUTTON_SERVICE=1" | ||
"-DPW_RPC_DESCRIPTOR_SERVICE=1" | ||
"-DPW_RPC_DEVICE_SERVICE=1" | ||
"-DPW_RPC_LIGHTING_SERVICE=1" | ||
"-DPW_RPC_LOCKING_SERVICE=1" | ||
"-DPW_RPC_TRACING_SERVICE=1" | ||
"-DPW_RPC_WIFI_SERVICE=1" | ||
"-DPW_TRACE_BACKEND_SET=1") | ||
|
||
endif (CONFIG_ENABLE_PW_RPC) |
Oops, something went wrong.