Перейти к содержимому

← Основное приложение | Содержание | Далее: Web API - GET →

7. Справочник команд ACRouter

Version: 1.0.0
Date: 2025-01-15

Полное руководство по командам Serial-терминала и REST API для ACRouter.




Содержание




Общие команды


help

Вывести полный справочник команд.

bash
help


status

Показать текущий статус роутера: режим, состояние, уровень диммера и потребление мощности.

bash
status

Пример вывода:

text
=== Router Status ===
Mode:    AUTO
State:   INCREASING
Dimmer:  45%
Power:   1250.3 W
Gain:    150.0
Thresh:  50.0 W
=====================



Управление роутером


router-mode <режим>

Установить режим работы роутера.

Modes:
- off or 0 - Router disabled
- auto or 1 - Solar Router mode (minimize grid import/export)
- eco or 2 - Economic mode (avoid grid import, allow export)
- offgrid or 3 - Offgrid mode (solar/battery autonomous)
- manual or 4 - Manual dimmer control
- boost or 5 - Maximum power routing

Использование:

bash
router-mode auto          # Set auto mode
router-mode manual        # Set manual mode
router-mode               # Show current mode

⚠️ Примечание: изменения сохраняются в NVS немедленно.



router-dimmer <значение>

Управление уровнем конкретного выхода диммера.

Parameters:
- ID - Dimmer identifier: 1, 2, or all
- value - Power level (0-100%)

Использование:

bash
router-dimmer 1 75        # Set dimmer 1 to 75%
router-dimmer all 50      # Set all dimmers to 50%
router-dimmer             # Show current level

⚠️ Примечание: установка диммера автоматически переключает в режим MANUAL.



router-status

Показать детальный статус роутера (аналогично команде status).

bash
router-status


router-calibrate

Запустить процедуру калибровки измерителя мощности.

bash
router-calibrate

🚧 Статус: функция в разработке.



debug-adc <период>

Включить/отключить вывод отладочной информации от измерителя мощности (PowerMeterADC).

Использование:

bash
debug-adc             # Set debug output period
debug-adc                     # Show current settings

Параметры:

  • <период> — период вывода отладки в секундах:
  • 0 — отключить вывод
  • >0 — включить с указанным периодом (например, 5 = каждые 5 секунд)

Примеры:

bash
# Enable debug output every 5 seconds
debug-adc 5
# Output: debug-adc = 5 seconds (enabled)

# Disable debug output
debug-adc 0
# Output: debug-adc = DISABLED

# Show current settings
debug-adc
# Output: debug-adc = 5 seconds  (or DISABLED)

Отладочная информация:

При включённом выводе в журнал записывается подробная информация о работе ADC:

Для датчика напряжения:

text
VOLTAGE CH0: rms=230.5V, phase=POSITIVE (pos=12345, neg=-11234)

Для датчиков тока:

text
DEBUG CH1 [GPIO39] CURRENT_GRID: dc_avg=2048.3, rms_adc=145.23, vdc=0.512V, amps=25.60
  Phase: current=POSITIVE (pos=13456, neg=-12345), correlation: same=3850, diff=150 -> CONSUMING

Поля:

  • rms — RMS-напряжение в Вольтах
  • phase — фаза сигнала (POSITIVE/NEGATIVE/BALANCED)
  • pos/neg — сумма положительных/отрицательных полупериодов (для диагностики асимметрии)
  • dc_avg — среднее значение DC (должно быть около 2048 для 12-битного ADC)
  • rms_adc — RMS-значение в единицах ADC
  • vdc — выходное напряжение датчика (В)
  • amps — измеренный ток (А)
  • same/diff — корреляция фаз напряжение-ток:
  • same > diff → CONSUMING (потребление из сети)
  • diff > same → SUPPLYING (отдача в сеть)

Применение:

  • Диагностика датчиков
  • Проверка правильного определения направления тока
  • Анализ асимметрии сигнала (суммы pos/neg)
  • Отладка калибровки датчика
  • Контроль качества измерений

⚠️ Важно: отладочный вывод создаёт значительную нагрузку на Serial-порт. Используйте только для диагностики, отключайте после устранения неполадок.

📝 Примечание: настройка НЕ сохраняется в NVS. После перезагрузки отладка будет отключена.




Управление конфигурацией

Все команды config-* немедленно сохраняют значения в NVS (энергонезависимая память).


config-show

Показать все параметры конфигурации.

bash
config-show


config-reset

Сбросить всю конфигурацию до заводских значений по умолчанию.

bash
config-reset

⚠️ Предупреждение: все пользовательские настройки будут удалены.



config-gain [значение]

Установить коэффициент усиления контура управления (влияет на скорость отклика).

Диапазон: 1–1000 | По умолчанию: 150

bash
config-gain 200           # Set gain
config-gain               # Show current gain

Влияние: большее значение = быстрее реакция, меньшее = более стабильно.



config-threshold [значение]

Установить порог баланса для автоматического режима.

Диапазон: 0–100 Вт | По умолчанию: 50 Вт

bash
config-threshold 30       # Set threshold
config-threshold          # Show current threshold

Влияние: роутер поддерживает мощность сети в пределах ±порога от нуля.



config-manual [значение]

Установить уровень диммера по умолчанию для режима MANUAL.

Диапазон: 0–100% | По умолчанию: 0%

bash
config-manual 50          # Set manual level
config-manual             # Show current level


config-vcoef [значение]

Установить калибровочный коэффициент напряжения.

Диапазон: 0.1–10.0 | По умолчанию: 1.0

bash
config-vcoef 1.05         # Set coefficient
config-vcoef              # Show current value

Влияние: множитель для измерений напряжения (калибровка датчика).



config-icoef [значение]

Установить коэффициент измерения тока.

Диапазон: 0.1–100.0 А/В | По умолчанию: 30.0 А/В

bash
config-icoef 33.0         # Set coefficient
config-icoef              # Show current value

Влияние: преобразует напряжение датчика в измеренный ток.



config-ithresh [значение]

Установить порог обнаружения тока.

Диапазон: 0.01–10.0 А | По умолчанию: 0.1 А

bash
config-ithresh 0.15       # Set threshold
config-ithresh            # Show current value

Влияние: минимальный ток для обнаружения активного потока мощности.



config-pthresh [значение]

Установить порог обнаружения мощности.

Диапазон: 1–1000 Вт | По умолчанию: 10 Вт

bash
config-pthresh 15         # Set threshold
config-pthresh            # Show current value

Влияние: минимальная мощность для обнаружения активного потребления/генерации.




WiFi-сеть


wifi-status

Отобразить статус WiFi-подключения, IP-адреса и сохранённые учётные данные.

bash
wifi-status

Status Fields:
- IDLE - Not initialized
- AP_ONLY - Access Point only
- STA_CONNECTING - Connecting to network
- STA_CONNECTED - Connected as client
- AP+STA - Both AP and STA active
- STA_FAILED - Connection failed

Signal Strength Guide:
- -30 to -50 dBm - Excellent
- -51 to -70 dBm - Good
- -71 to -85 dBm - Fair
- -86 to -100 dBm - Poor



wifi-scan

Сканировать доступные WiFi-сети.

bash
wifi-scan


wifi-connect [пароль]

Подключиться к WiFi-сети и сохранить учётные данные в NVS.

Parameters:
- ssid - Network name (required)
- For SSID with spaces, use double quotes: "My Network"
- password - Network password (optional for open networks)
- For passwords with spaces, use double quotes: "My Pass 123"

Использование:

bash
# Simple connection (no spaces)
wifi-connect MyHomeNetwork MyPassword123
wifi-connect GuestNetwork                    # For open networks

# SSID with spaces (quoted)
wifi-connect "My Home Network" MyPassword123

# Both SSID and password with spaces (both quoted)
wifi-connect "Coffee Shop WiFi" "welcome guest 2024"

Примеры:

bash
# Connect to secured network
wifi-connect MyNetwork SecurePass2024
# Output: Connecting to: MyNetwork
#         Password: ***

# Connect to network with spaces in name
wifi-connect "TP-LINK Home" MyPassword
# Output: Connecting to: TP-LINK Home
#         Password: ***

# Connect to open network
wifi-connect PublicWiFi
# Output: Connecting to: PublicWiFi
#         No password (open network)

Behavior:
1. Connects to specified network
2. On success, credentials are automatically saved to NVS
3. On next boot, router will auto-connect
4. AP mode remains active (AP+STA mode)

⚠️ Замечание по безопасности: пароль передаётся по Serial в открытом виде.



wifi-disconnect

Отключиться от текущей STA-сети (AP остаётся активной).

bash
wifi-disconnect

Результат: роутер переходит в режим только AP. Сохранённые учётные данные остаются в NVS.



wifi-forget

Удалить сохранённые учётные данные WiFi из NVS.

bash
wifi-forget

Результат: роутер не будет автоматически подключаться при следующей загрузке. Текущее подключение остаётся активным.




Веб-сервер


web-status

Отобразить статус веб-сервера, URL доступа и эндпоинты API.

bash
web-status


web-start

Запустить веб-сервер.

bash
web-start

Default Ports:
- HTTP: 80
- WebSocket: 81



web-stop

Остановить веб-сервер.

bash
web-stop


web-urls

Показать все URL для доступа к веб-интерфейсу.

bash
web-urls

Web Pages:
- / - Main control interface (future)
- /wifi - WiFi configuration page
- /ota - Firmware update page




Синхронизация времени


time-status

Отобразить статус синхронизации времени по NTP.

bash
time-status

Default NTP Servers:
- pool.ntp.org
- time.google.com



time-sync

Принудительная немедленная синхронизация с NTP.

bash
time-sync



Обновление прошивки OTA


ota-status

Отобразить статус OTA-обновления и URL для доступа.

bash
ota-status

Update Process:
1. Open OTA URL in web browser
2. Select firmware binary file (.bin)
3. Upload and wait for completion
4. Device will automatically reboot

⚠️ Важно: не отключайте питание во время обновления!

Safety Features:
- Critical tasks suspended during update
- Watchdog protection
- Rollback on failure




Конфигурация железа

Команды для настройки датчиков напряжения и тока, управления версиями NVS и системных операций.


Сброс железа — hardware-reset

Сбросить конфигурацию железа до заводских значений (структура NVS сохраняется).

bash
hardware-reset

Процесс:

  1. Останавливает PowerMeterADC для предотвращения конфликтов DMA
  2. Сбрасывает все настройки железа до заводских
  3. Сохраняет в NVS

Пример вывода:

text
Resetting hardware configuration to factory defaults...
Stopping PowerMeterADC...
Hardware configuration reset successful
IMPORTANT: Reboot required for changes to take effect!
Use 'reboot' command to restart

⚠️ Важно: после этой команды требуется перезагрузка (reboot).



Датчик напряжения — hardware-voltage-show

Отобразить текущую конфигурацию датчика напряжения.

bash
hardware-voltage-show

Пример вывода:

text
========== Voltage Sensor ==========
Channel:  0
GPIO:     35
Type:     VOLTAGE_AC
Driver:   ZMPT107
Nominal VDC:  0.700 V
Multiplier:   321.43
Offset:   0.00
Status:   ENABLED
====================================


Датчик напряжения — hardware-voltage-config-type

Установить тип драйвера датчика напряжения.

bash
hardware-voltage-config-type 

Parameters:
- - Sensor type:
- ZMPT107 - ZMPT107 sensor (0.70V RMS nominal)
- ZMPT101B - ZMPT101B sensor (1.0V RMS nominal)
- CUSTOM - Custom sensor

Пример:

bash
hardware-voltage-config-type ZMPT107


Датчик напряжения — hardware-voltage-config-port

Установить GPIO-пин для датчика напряжения.

bash
hardware-voltage-config-port GPIO

Parameters:
- - GPIO number (32-39 for ESP32 ADC1)

Пример:

bash
hardware-voltage-config-port GPIO35

⚠️ Важно: после изменения GPIO требуется перезагрузка (reboot).


Датчик напряжения — hardware-voltage-calibrate

Автоматическая калибровка датчика напряжения с измерением VDC.

bash
hardware-voltage-calibrate 

Parameters:
- - Grid voltage measured with multimeter (VAC RMS)
- Range: 50-300V

Процесс калибровки:

  1. Измерьте напряжение сети мультиметром (режим AC RMS)
  2. Введите команду с измеренным значением
  3. Система автоматически:
  4. Измеряет выходное напряжение VDC датчика (RMS)
  5. Рассчитывает множитель: multiplier = V_measured / V_sensor
  6. Сохраняет откалиброванные nominal_vdc и multiplier в NVS
  7. Перезагрузите устройство (reboot)

Пример:

bash
# Multimeter shows 230.5V
hardware-voltage-calibrate 230.5

Вывод:

text
========== Voltage Calibration ==========
Measuring sensor VDC output...
Measured grid voltage:  230.50 V AC (from multimeter)
Measured sensor VDC:    0.814 V (auto-measured)
Calculated multiplier:  283.17
=========================================

Calibration saved successfully!
Updated:
  - Nominal VDC: 0.814 V
  - Multiplier:  283.17

IMPORTANT: Reboot required for changes to take effect!
Use 'reboot' command to restart

Преимущества автоматической калибровки:

✅ No need to manually adjust sensor potentiometer
✅ Works with any sensor output voltage
✅ Automatically updates nominal_vdc
✅ More accurate and faster

📝 Примечание: старый метод (ручная регулировка потенциометра до 0.7 В) больше не требуется!


Датчик напряжения — hardware-voltage-config-multiplier

Напрямую задать множитель (для опытных пользователей).

bash
hardware-voltage-config-multiplier 

Parameters:
- - Multiplier (0.1-1000)

⚠️ Рекомендация: используйте hardware-voltage-calibrate вместо ручной установки множителя.




Датчики тока


hardware-current-list

Отобразить все настроенные датчики тока и их привязки.

bash
hardware-current-list

Пример вывода:

text
========== Configured Current Sensors ==========
[CH1] GRID       GPIO39  SCT013-50A    50.00 A/V  Offset: 0.00V
[CH2] SOLAR      GPIO36  SCT013-30A    30.00 A/V  Offset: 0.00V
[CH3] LOAD_1     GPIO34  ACS712-20A    15.15 A/V  Offset: 1.65V
================================================

Поля:

  • CH — номер ADC-канала (0–3)
  • Привязка — функциональная роль (GRID, SOLAR, LOAD_1..LOAD_8)
  • GPIO — GPIO-пин (32–39)
  • Тип датчика — модель датчика тока
  • A/V — калибровочный коэффициент
  • Offset — смещение DC (для датчиков ACS712)


hardware-current-config <привязка> <тип_датчика> GPIO<пин>

Настроить датчик тока: задать тип, GPIO-пин и функциональную привязку.

Параметры:

  • <привязка> — функциональная привязка:
  • GRID — подключение к сети (импорт/экспорт)
  • SOLAR — солнечные панели
  • LOAD_1, LOAD_2, ... LOAD_8 — нагрузки 1–8
  • <тип_датчика> — тип датчика:
  • Серия SCT-013 (токовые трансформаторы AC, выход 0–1 В):
    • SCT013-5A - 0-5A, 1V @ 5A
    • SCT013-10A - 0-10A, 1V @ 10A
    • SCT013-20A - 0-20A, 1V @ 20A
    • SCT013-30A - 0-30A, 1V @ 30A
    • SCT013-50A - 0-50A, 1V @ 50A
    • SCT013-60A - 0-60A, 1V @ 60A
    • SCT013-80A - 0-80A, 1V @ 80A
    • SCT013-100A - 0-100A, 1V @ 100A
  • Серия ACS712 (датчики на эффекте Холла, центр 2.5 В при 5 В):
    • ACS712-5A - ±5A
    • ACS712-20A - ±20A
    • ACS712-30A - ±30A
  • CUSTOM — пользовательский датчик
  • — номер GPIO (32–39, только ADC1)

Использование:

bash
# Configure grid sensor: SCT-013-50A on GPIO39
hardware-current-config GRID SCT013-50A GPIO39

# Configure solar panel: SCT-013-100A on GPIO36
hardware-current-config SOLAR SCT013-100A GPIO36

# Configure load 1: ACS712-20A on GPIO34
hardware-current-config LOAD_1 ACS712-20A GPIO34

Пример вывода:

text
========== Current Sensor Configured ==========
Binding:     GRID
Channel:     1
GPIO:        39
Driver:      SCT013-50A
Nominal:     50.0 A
Multiplier:  50.00
DC Offset:   0.00 V
===============================================

IMPORTANT: Reboot required for changes to take effect!
Use 'reboot' command to restart

NOTE: ACS712 sensors have DC bias (1.65V after divider)
Use 'hardware-current-calibrate-zero GRID' to calibrate zero point

Алгоритм выбора канала:

Система автоматически выбирает ADC-канал по приоритету:

  1. Приоритет 1: канал с совпадающим GPIO (перенастройка существующего датчика)
  2. Приоритет 2: канал с той же привязкой (обновление типа датчика)
  3. Приоритет 3: первый свободный канал (тип = NONE)
  4. Приоритет 4: любой канал с датчиком тока (миграция со старых типов)

⚠️ Важно: для применения изменений требуется перезагрузка (reboot).



hardware-current-show <привязка>

Отобразить детальную информацию о конкретном датчике тока.

Параметры:

  • <привязка> — привязка датчика (GRID, SOLAR, LOAD_1..LOAD_8)

Использование:

bash
hardware-current-show GRID

Пример вывода:

text
========== Current Sensor Configuration ==========
Binding:     GRID
Channel:     1
GPIO:        39
Driver:      SCT013-50A
Multiplier:  50.00
DC Offset:   0.00 V
Status:      ENABLED
===================================================


hardware-current-delete <привязка>

Удалить конфигурацию датчика тока и освободить ADC-канал.

Параметры:

  • <привязка> — привязка датчика (GRID, SOLAR, LOAD_1..LOAD_8)

Использование:

bash
hardware-current-delete GRID

Пример вывода:

text
Successfully deleted sensor: GRID
  Channel: 1
  GPIO: 39
  Driver: SCT013-50A

Channel is now free and can be reassigned.
IMPORTANT: Reboot required for changes to take effect!

Ошибка (датчик не найден):

text
ERROR: No sensor configured for binding: GRID
Use 'hardware-current-list' to see configured sensors


hardware-current-calibrate-zero <привязка>

Откалибровать нулевую точку датчика тока (компенсация смещения DC).

Параметры:

  • <привязка> — привязка датчика для калибровки

Когда использовать:

  • После установки нового датчика
  • При дрейфе показаний (датчик показывает ток при отсутствии нагрузки)
  • После регулировки потенциометра на датчике ACS712

Процесс калибровки:

  1. ВАЖНО: отключите нагрузку от датчика (ток = 0 А)
  2. Введите команду
  3. Система измерит смещение DC тока
  4. Рассчитает и сохранит корректирующее смещение в NVS
  5. Перезагрузите устройство

Использование:

bash
# Disconnect load from GRID sensor
# Ensure current through sensor = 0A

hardware-current-calibrate-zero GRID

Пример вывода:

text
========== Zero-Point Calibration ==========
Ensure NO current is flowing through sensor!
Measuring DC offset...
NOTICE: Auto-calibration not yet implemented
PowerMeterADC automatically compensates DC offset
Manual adjustment not required in most cases
===========================================

📝 Примечание:

  • SCT-013: калибровка обычно не требуется (чистый AC-выход)
  • ACS712: рекомендуется для компенсации дрейфа центральной точки (2.5 В)
  • PowerMeterADC автоматически вычитает смещение DC; эта команда компенсирует остаточный дрейф


Версия NVS — hw-version-show

Отобразить версию формата данных NVS и статус безопасного режима.

bash
hw-version-show

Пример вывода (нормальный режим):

text
========== NVS Version Info ==========
Firmware version:  2
NVS version:       2
Status:            OK
======================================

Пример вывода (безопасный режим):

text
========== NVS Version Info ==========
Firmware version:  2
NVS version:       1
Status:            SAFE MODE
Reason:            NVS version mismatch (NVS: 1, Firmware: 2).
                   Use 'hw-erase-nvs' command to reset.
======================================

WARNING: PowerMeterADC is NOT initialized in safe mode!
System will continue with limited functionality:
  - WiFi and WebServer: WORKING
  - Manual dimmer control: WORKING
  - Power measurements: DISABLED

История версий:

  • v1 — начальная версия (жёстко заданный множитель ZMPT107)
  • v2 — добавлены поля voltage_driver и nominal_vdc

📝 Безопасный режим активируется автоматически при несовпадении версий для предотвращения сбоев системы.


Сброс NVS — hw-erase-nvs

Полностью очистить все данные NVS и сбросить до заводских значений.

bash
hw-erase-nvs

Процесс:

  1. Команда запросит подтверждение
  2. Введите YES (заглавными буквами)
  3. Система очистит все данные из пространства имён hw_config
  4. Загрузит заводские настройки
  5. Сохранит настройки с текущей версией

Пример:

bash
hw-erase-nvs

Вывод:

text
WARNING: This will erase ALL hardware configuration!
Type 'YES' to confirm (timeout: 10s):
YES

Erasing NVS namespace 'hw_config'...
NVS namespace erased successfully
Factory defaults saved (version 2)
Hardware configuration reset complete!

IMPORTANT: Reboot required!
Use 'reboot' command to restart

⚠️ ПРЕДУПРЕЖДЕНИЕ: операция необратима! Все пользовательские настройки датчиков и конфигурации GPIO будут потеряны.

Когда использовать:

  • Переход на новую прошивку с несовместимым форматом NVS
  • Возврат к заводским настройкам железа
  • Устранение проблем с конфигурацией


Перезагрузка — reboot

Перезапустить ESP32.

bash
reboot

Вывод:

text
Rebooting in 1 second...

📝 Примечание: требуется после:

  • Изменения GPIO-пинов
  • Калибровки датчиков
  • Сброса NVS
  • Обновления конфигурации железа



Справочник REST API

⚠️ Примечание: этот раздел содержит краткий справочник по эндпоинтам REST API. Для интеграции с веб-приложениями используйте эти эндпоинты вместе с описанными выше Serial-командами.


URL доступа

Режим точки доступа:

python
http://192.168.4.1/api/

Режим клиента:

python
http:///api/

Используйте команду wifi-status для определения текущего IP-адреса.



Статус и мониторинг

GET /api/status — полный статус роутера

bash
curl http://192.168.4.1/api/status

GET /api/metrics — метрики мощности (лёгкий запрос для опроса)

bash
curl http://192.168.4.1/api/metrics

GET /api/config — все параметры конфигурации

bash
curl http://192.168.4.1/api/config

GET /api/info — информация о системе

bash
curl http://192.168.4.1/api/info


Конфигурация

POST /api/config — обновить конфигурацию

bash
curl -X POST http://192.168.4.1/api/config \
  -H "Content-Type: application/json" \
  -d '{"control_gain": 200, "balance_threshold": 30}'

POST /api/config/reset — сбросить до заводских значений

bash
curl -X POST http://192.168.4.1/api/config/reset


Управление роутером

POST /api/mode — установить режим работы

Допустимые режимы: off, auto, eco, offgrid, manual, boost

bash
# Set AUTO mode (Solar Router)
curl -X POST http://192.168.4.1/api/mode \
  -H "Content-Type: application/json" \
  -d '{"mode": "auto"}'

# Set ECO mode (Economic, avoid import)
curl -X POST http://192.168.4.1/api/mode \
  -H "Content-Type: application/json" \
  -d '{"mode": "eco"}'

# Set OFFGRID mode (Autonomous solar/battery)
curl -X POST http://192.168.4.1/api/mode \
  -H "Content-Type: application/json" \
  -d '{"mode": "offgrid"}'

POST /api/dimmer — установить уровень диммера (переключает в режим MANUAL)

bash
curl -X POST http://192.168.4.1/api/dimmer \
  -H "Content-Type: application/json" \
  -d '{"value": 75}'

POST /api/manual — установить ручной уровень (альтернативный эндпоинт)

bash
curl -X POST http://192.168.4.1/api/manual \
  -H "Content-Type: application/json" \
  -d '{"value": 50}'


Управление WiFi

GET /api/wifi/status — статус WiFi и IP-адреса

bash
curl http://192.168.4.1/api/wifi/status

GET /api/wifi/scan — сканировать сети

bash
curl http://192.168.4.1/api/wifi/scan

POST /api/wifi/connect — подключиться к сети (сохраняется в NVS)

bash
curl -X POST http://192.168.4.1/api/wifi/connect \
  -H "Content-Type: application/json" \
  -d '{"ssid": "MyNetwork", "password": "MyPassword"}'

POST /api/wifi/disconnect — отключиться от STA-сети

bash
curl -X POST http://192.168.4.1/api/wifi/disconnect

POST /api/wifi/forget — удалить сохранённые учётные данные из NVS

bash
curl -X POST http://192.168.4.1/api/wifi/forget


Примеры использования Web API

Python (requests):

python
import requests

base = "http://192.168.4.1/api"

# Get status
status = requests.get(f"{base}/status").json()
print(f"Mode: {status['mode']}, Dimmer: {status['dimmer']}%")

# Set ECO mode
requests.post(f"{base}/mode", json={"mode": "eco"})

# Update gain
requests.post(f"{base}/config", json={"control_gain": 250})

# Monitor metrics (polling)
import time
while True:
    metrics = requests.get(f"{base}/metrics").json()
    print(f"Grid: {metrics['metrics']['power_grid']}W")
    time.sleep(2)

JavaScript (Fetch):

javascript
const base = "http://192.168.4.1/api";

// Get status
fetch(`${base}/status`)
  .then(r => r.json())
  .then(d => console.log(`Mode: ${d.mode}, Dimmer: ${d.dimmer}%`));

// Set OFFGRID mode
fetch(`${base}/mode`, {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({mode: 'offgrid'})
});

// Polling metrics every 2 seconds
setInterval(() => {
  fetch(`${base}/metrics`)
    .then(r => r.json())
    .then(d => console.log(`Grid: ${d.metrics.power_grid}W`));
}, 2000);

Bash (curl + jq):

bash
BASE="http://192.168.4.1/api"

# Get status (formatted with jq)
curl -s "$BASE/status" | jq .

# Set AUTO mode
curl -X POST "$BASE/mode" \
  -H "Content-Type: application/json" \
  -d '{"mode": "auto"}'

# Monitor loop
while true; do
  curl -s "$BASE/metrics" | jq '.metrics'
  sleep 5
done



Примеры быстрого старта


Первоначальная настройка

bash
# Check status
status

# Scan for WiFi networks
wifi-scan

# Connect to WiFi (credentials saved to NVS)
wifi-connect MyNetwork MyPassword

# Check WiFi status
wifi-status

# Set router to auto mode
router-mode auto

# Adjust gain for faster response
config-gain 200


Ручное управление

bash
# Switch to manual mode
router-mode manual

# Set dimmer to 50%
router-dimmer 1 50

# Set all dimmers to 100%
router-dimmer all 100

# Return to auto mode
router-mode auto


Устранение неполадок

bash
# Check all systems
status
wifi-status
web-status
time-status

# Reset configuration if needed
config-reset

# Reconnect WiFi
wifi-connect MyNetwork MyPassword

# Force time sync
time-sync

# Restart web server
web-stop
web-start



Примечания


Формат команд

  • Команды нечувствительны к регистру
  • Параметры разделяются пробелами


Сохранение данных

  • Все команды config-* немедленно сохраняются в NVS
  • Учётные данные WiFi сохраняются автоматически при успешном подключении
  • Настройки сохраняются после перезагрузки


Функции безопасности

  • Ограничение диммера: 0–100%
  • Проверка допустимых диапазонов параметров
  • Защита сторожевым таймером во время OTA
  • Приостановка критических задач во время обновления


Веб-интерфейс

  • Доступ через любой браузер
  • Адаптивный дизайн для мобильных устройств
  • Обновление статуса в реальном времени
  • Без аутентификации (используйте правила брандмауэра)



  • 01_OVERVIEW.md — обзор проекта и возможности
  • 02_COMPILATION.md — инструкции по сборке
  • 03_STRUCTURE.md — архитектура приложения
  • 04_ROUTER_MODES.md — режимы работы роутера
  • 05_API_REFERENCE_EN.md — справочник API компонентов
  • 06_MAIN_APPLICATION.md — основная точка входа приложения
  • Версия прошивки: 1.0.0 Последнее обновление: 2025-01-15

Firmware Version: 1.0.0
Last Updated: 2025-01-15

← Основное приложение | Содержание | Далее: Web API - GET →