Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ on:
paths-ignore:
- '**.md'
- 'docs/**'
release:
types: [published] # 手动发布 Release 时也自动构建并上传 bin
workflow_dispatch: # 允许手动触发

env:
IDF_VERSION: v5.5
IDF_VERSION: v5.5.2
TARGET: esp32s3

jobs:
Expand Down Expand Up @@ -120,11 +122,11 @@ jobs:
build/config/sdkconfig.h
retention-days: 7

# 编译成功后自动创建 Release:tag 推送main 分支推送
# 编译成功后自动创建或更新 Release:tag 推送main 推送或手动发布 Release
release:
name: Create Release
name: Create or Update Release
needs: build
if: startsWith(github.ref, 'refs/tags/v') || (github.ref == 'refs/heads/main' && github.event_name == 'push')
if: github.event_name == 'release' || startsWith(github.ref, 'refs/tags/v') || (github.ref == 'refs/heads/main' && github.event_name == 'push')
runs-on: ubuntu-latest
permissions:
contents: write # 创建 Release 需要写权限
Expand All @@ -149,12 +151,15 @@ jobs:
fi

- name: Create Release
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main' && steps.check.outputs.skip != 'true')
if: github.event_name == 'release' || startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main' && steps.check.outputs.skip != 'true')
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || format('v{0}', needs.build.outputs.version) }}
name: ${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || format('v{0}', needs.build.outputs.version) }}
files: firmware/**/*.bin
tag_name: ${{ github.event_name == 'release' && github.event.release.tag_name || startsWith(github.ref, 'refs/tags/') && github.ref_name || format('v{0}', needs.build.outputs.version) }}
name: ${{ github.event_name == 'release' && github.event.release.tag_name || startsWith(github.ref, 'refs/tags/') && github.ref_name || format('v{0}', needs.build.outputs.version) }}
files: |
firmware/**/*.bin
firmware/**/flasher_args.json
fail_on_unmatched_files: true
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ set(EXTRA_COMPONENT_DIRS
"${CMAKE_CURRENT_SOURCE_DIR}/components/ts_core/ts_service"
)

# 使用 OTA 分区表(16MB Flash, 双 OTA 分区)
set(PARTITION_TABLE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/partitions_ota.csv" CACHE STRING "" FORCE)
# 使用项目自定义分区表(16MB Flash, 双 OTA 分区 + WebUI 分区)
set(PARTITION_TABLE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/partitions.csv" CACHE STRING "" FORCE)

# 包含 ESP-IDF
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ git clone https://github.com/thomas-hiddenpeak/TianshanOS.git
cd TianshanOS

# 设置 ESP-IDF 环境
. $HOME/esp/v5.5/esp-idf/export.sh
. $HOME/esp/v5.5.2/esp-idf/export.sh

# 设置目标芯片
idf.py set-target esp32s3
Expand Down Expand Up @@ -157,8 +157,8 @@ esptool.py --chip esp32s3 -p /dev/ttyACM0 write_flash \

## 当前状态

**版本**: 0.4.5
**阶段**: Phase 38 完成 - WebUI 多语言支持
**版本**: 0.4.6
**阶段**: Phase 39 完成 - LPMU 接入上层网络

### 已完成功能

Expand All @@ -170,13 +170,13 @@ esptool.py --chip esp32s3 -p /dev/ttyACM0 write_flash \
| 硬件抽象 | GPIO、PWM、I2C、SPI、UART、ADC |
| LED 系统 | WS2812 驱动、多设备多图层、特效引擎、BMP/PNG/JPG/GIF |
| 控制台 | 命令系统、多语言、脚本引擎、配置持久化 |
| 网络 | WiFi、以太网 W5500、HTTP/HTTPS 服务器 |
| 网络 | WiFi、以太网 W5500、HTTP/HTTPS 服务器、LPMU 接入上层网络 |
| 安全 | 会话管理、Token 认证、AES-GCM、RSA/EC、SSH 客户端、PKI 证书管理 |
| 驱动 | 风扇控制、电源监控 (ADC/INA3221/PZEM)、AGX/LPMU 电源控制、USB MUX |
| WebUI | REST API 网关、WebSocket 广播、前端仪表盘、认证系统、中英文国际化 |
| OTA | 双分区升级、版本检测、完整性校验、自动回滚 |
| 自动化引擎 | 触发器-条件-动作系统、SSH 远程执行、正则解析、变量系统、电压保护集成 |
| CI/CD | GitHub Actions 自动编译、Tag 触发 Release 发布 |
| CI/CD | GitHub Actions 自动编译、Tag/Release 触发固件发布 |

### 配置包加密系统 (Config Pack)

Expand Down
8 changes: 4 additions & 4 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ git clone https://github.com/thomas-hiddenpeak/TianshanOS.git
cd TianshanOS

# Set up ESP-IDF environment
. $HOME/esp/v5.5/esp-idf/export.sh
. $HOME/esp/v5.5.2/esp-idf/export.sh

# Set target chip
idf.py set-target esp32s3
Expand Down Expand Up @@ -139,8 +139,8 @@ For detailed instructions, please refer to the [Quick Start Guide](docs/QUICK_ST

## Current Status

**Version**: 0.3.0
**Phase**: Phase 20 Complete - Automation Engine, SSH Remote Execution, Variable System
**Version**: 0.4.6
**Phase**: Phase 39 Complete - LPMU Upstream Network Access

### Completed Features

Expand All @@ -151,7 +151,7 @@ For detailed instructions, please refer to the [Quick Start Guide](docs/QUICK_ST
| Hardware Abstraction | GPIO, PWM, I2C, SPI, UART, ADC |
| LED System | WS2812 driver, multi-device multi-layer, effects engine, BMP/PNG/JPG/GIF |
| Console | Command system, multi-language, script engine, configuration persistence |
| Networking | WiFi, Ethernet W5500, HTTP/HTTPS server |
| Networking | WiFi, Ethernet W5500, HTTP/HTTPS server, LPMU upstream network access |
| Security | Session management, Token authentication, AES-GCM, RSA/EC, SSH client, PKI certificate management |
| Drivers | Fan control, power monitoring (ADC/INA3221/PZEM), AGX/LPMU power control, USB MUX |
| WebUI | REST API gateway, WebSocket broadcast, frontend dashboard |
Expand Down
6 changes: 6 additions & 0 deletions components/ts_api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ set(TS_API_SRCS
"src/ts_api_wifi.c"
"src/ts_api_dhcp.c"
"src/ts_api_nat.c"
"src/ts_api_lpmu_access.c"
"src/ts_api_hosts.c"
"src/ts_api_key.c"
"src/ts_api_ssh.c"
Expand All @@ -31,9 +32,14 @@ set(TS_API_SRCS
"src/ts_api_ui.c"
)

set(TS_API_EMBED_FILES
"assets/lpmu-agx-network-setup.tar.gz"
)

idf_component_register(
SRCS ${TS_API_SRCS}
INCLUDE_DIRS "include"
EMBED_FILES ${TS_API_EMBED_FILES}
REQUIRES ts_core ts_drivers ts_led ts_net json ts_storage ts_security ts_ota ts_automation ts_cert ts_webui ts_config_pack
PRIV_REQUIRES ts_hal esp_timer esp_app_format spi_flash bootloader_support esp_wifi app_update esp_https_ota esp_http_client espressif__esp_websocket_client
)
6 changes: 6 additions & 0 deletions components/ts_api/assets/lpmu-agx-network-setup.manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
repo: RMinte/lpmu-agx-network-setup
ref: main
commit: 9ee3c51de5c9612e6e2c68d271ae329bd67b66ce
archive: lpmu-agx-network-setup.tar.gz
sha256: 77ac9410a62eea50b2a5079d3a7adb1012deee1188c03e0a5cfb4609e4e5f636
size: 12874
Binary file not shown.
5 changes: 5 additions & 0 deletions components/ts_api/include/ts_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,11 @@ esp_err_t ts_api_dhcp_register(void);
*/
esp_err_t ts_api_nat_register(void);

/**
* @brief Register LPMU upper-network access APIs
*/
esp_err_t ts_api_lpmu_access_register(void);

/**
* @brief Register SSH known hosts APIs
*/
Expand Down
7 changes: 7 additions & 0 deletions components/ts_api/src/ts_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -632,6 +632,13 @@ esp_err_t ts_api_register_all(void)
TS_LOGE(TAG, "Failed to register NAT APIs: %s", esp_err_to_name(ret));
return ret;
}

/* LPMU upper network access APIs */
ret = ts_api_lpmu_access_register();
if (ret != ESP_OK) {
TS_LOGE(TAG, "Failed to register LPMU access APIs: %s", esp_err_to_name(ret));
return ret;
}

/* SSH Known Hosts APIs */
ret = ts_api_hosts_register();
Expand Down
Loading
Loading