Passa al contenuto

← Applicazione principale | Indice | Avanti: Web API - GET →

7. Riferimento comandi ACRouter

Version: 1.0.0
Date: 2025-01-15

Guida completa ai comandi del terminale seriale e dell'API REST di ACRouter.




Indice




Comandi generali


help

Mostra il riferimento completo dei comandi.

bash
help


status

Mostra lo stato attuale del router, inclusi modalità, stato, livello del dimmer e consumo di potenza.

bash
status

Esempio di output:

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



Controllo del router


router-mode

Impostare la modalità operativa del router.

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

Utilizzo:

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

⚠️ Nota: Le modifiche vengono salvate immediatamente nel NVS.



router-dimmer

Controllare il livello di uscita di un dimmer specifico.

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

Utilizzo:

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

⚠️ Nota: L'impostazione del dimmer passa automaticamente alla modalità MANUAL.



router-status

Mostrare lo stato dettagliato del router (uguale al comando status).

bash
router-status


router-calibrate

Eseguire la routine di calibrazione del misuratore di potenza.

bash
router-calibrate

🚧 Stato: Funzionalità in fase di sviluppo.



debug-adc

Attivare/disattivare l'output di debug del misuratore di potenza (PowerMeterADC).

Utilizzo:

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

Parametri:

  • - Periodo di output di debug in secondi:
  • 0 - Disattivare output di debug
  • >0 - Attivare con il periodo specificato (es. 5 = ogni 5 secondi)

Esempi:

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)

Informazioni di debug:

Quando l'output di debug è attivato, vengono registrate informazioni dettagliate sul funzionamento dell'ADC:

Per il sensore di tensione:

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

Per i sensori di corrente:

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

Campi:

  • rms - Tensione RMS in volt
  • phase - Fase del segnale (POSITIVE/NEGATIVE/BALANCED)
  • pos/neg - Somma dei semiperiodi positivi/negativi (per la diagnostica di asimmetria)
  • dc_avg - Valore DC medio (dovrebbe essere circa 2048 per ADC a 12 bit)
  • rms_adc - Valore RMS in unità ADC
  • vdc - Tensione di uscita del sensore (V)
  • amps - Corrente misurata (A)
  • same/diff - Correlazione di fase tensione/corrente:
  • same > diff → CONSUMING (importazione dalla rete)
  • diff > same → SUPPLYING (esportazione verso la rete)

Applicazioni:

  • Risoluzione dei problemi dei sensori
  • Verifica del corretto rilevamento della direzione della corrente
  • Analisi dell'asimmetria del segnale (somme pos/neg)
  • Debug della calibrazione dei sensori
  • Monitoraggio della qualità di misura

⚠️ Importante: L'output di debug genera un carico significativo sulla porta seriale. Usare solo per la diagnostica, disattivare dopo la risoluzione dei problemi.

📝 Nota: Questa impostazione NON viene salvata nel NVS. L'output di debug verrà disattivato dopo il riavvio.




Gestione della configurazione

Tutti i comandi di configurazione salvano i valori nel NVS (Non-Volatile Storage) immediatamente.


config-show

Mostrare tutti i parametri di configurazione.

bash
config-show


config-reset

Ripristinare tutta la configurazione ai valori di fabbrica.

bash
config-reset

⚠️ Avviso: Tutte le impostazioni personalizzate verranno cancellate.



config-gain [value]

Impostare il parametro di guadagno del loop di controllo (influisce sulla velocità di risposta).

Intervallo: 1-1000 | Predefinito: 150

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

Effetto: Valori più alti = risposta più rapida, valori più bassi = più stabile.



config-threshold [value]

Impostare la soglia di bilanciamento per la modalità auto.

Intervallo: 0-100 W | Predefinito: 50 W

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

Effetto: Il router cerca di mantenere la potenza di rete entro ±soglia rispetto allo zero.



config-manual [value]

Impostare il livello predefinito del dimmer in modalità manuale.

Intervallo: 0-100% | Predefinito: 0%

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


config-vcoef [value]

Impostare il coefficiente di calibrazione della tensione.

Intervallo: 0.1-10.0 | Predefinito: 1.0

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

Effetto: Moltiplicatore per le misurazioni di tensione (calibrazione del sensore).



config-icoef [value]

Impostare il coefficiente di misurazione della corrente.

Intervallo: 0.1-100.0 A/V | Predefinito: 30.0 A/V

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

Effetto: Converte la tensione del sensore in misurazione di corrente.



config-ithresh [value]

Impostare la soglia di rilevamento della corrente.

Intervallo: 0.01-10.0 A | Predefinito: 0.1 A

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

Effetto: Corrente minima per rilevare un flusso di potenza attivo.



config-pthresh [value]

Impostare la soglia di rilevamento della potenza.

Intervallo: 1-1000 W | Predefinito: 10 W

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

Effetto: Potenza minima per rilevare consumo/generazione attiva.




Rete WiFi


wifi-status

Mostrare lo stato della connessione WiFi, gli indirizzi IP e le credenziali salvate.

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

Cercare le reti WiFi disponibili.

bash
wifi-scan


wifi-connect [password]

Connettersi a una rete WiFi e salvare le credenziali nel 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"

Utilizzo:

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"

Esempi:

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)

⚠️ Nota di sicurezza: La password viene trasmessa in chiaro sulla porta seriale.



wifi-disconnect

Disconnettersi dalla rete STA corrente (l'AP rimane attivo).

bash
wifi-disconnect

Effetto: Il router torna alla modalità solo AP. Le credenziali salvate rimangono nel NVS.



wifi-forget

Cancellare le credenziali WiFi salvate dal NVS.

bash
wifi-forget

Effetto: Il router non si connetterà automaticamente al prossimo avvio. La connessione corrente rimane attiva.




Server web


web-status

Mostrare lo stato del server web, gli URL di accesso e gli endpoint API.

bash
web-status


web-start

Avviare il server web.

bash
web-start

Default Ports:
- HTTP: 80
- WebSocket: 81



web-stop

Arrestare il server web.

bash
web-stop


web-urls

Mostrare tutti gli URL di accesso all'interfaccia web.

bash
web-urls

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




Sincronizzazione oraria


time-status

Mostrare lo stato di sincronizzazione NTP.

bash
time-status

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



time-sync

Forzare una sincronizzazione NTP immediata.

bash
time-sync



Aggiornamenti firmware OTA


ota-status

Mostrare lo stato dell'aggiornamento OTA e gli URL di accesso.

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

⚠️ Importante: Non spegnere né disconnettere durante l'aggiornamento!

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




Configurazione hardware

Comandi per la configurazione dei sensori di tensione e corrente, la gestione delle versioni NVS e le operazioni di sistema.


Reset hardware - hardware-reset

Ripristinare la configurazione hardware ai valori di fabbrica (la struttura NVS viene mantenuta).

bash
hardware-reset

Processo:

  1. PowerMeterADC viene arrestato per evitare conflitti DMA
  2. Tutte le impostazioni hardware vengono ripristinate ai valori di fabbrica
  3. Salvataggio nel NVS

Esempio di output:

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

⚠️ Importante: Riavvio necessario dopo questo comando (reboot).



Sensore di tensione - hardware-voltage-show

Mostrare la configurazione attuale del sensore di tensione.

bash
hardware-voltage-show

Esempio di output:

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
====================================


Sensore di tensione - hardware-voltage-config-type

Impostare il tipo di driver del sensore di tensione.

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

Esempio:

bash
hardware-voltage-config-type ZMPT107


Sensore di tensione - hardware-voltage-config-port

Impostare il pin GPIO per il sensore di tensione.

bash
hardware-voltage-config-port GPIO

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

Esempio:

bash
hardware-voltage-config-port GPIO35

⚠️ Importante: Riavvio necessario dopo la modifica dei GPIO (reboot).


Sensore di tensione - hardware-voltage-calibrate

Calibrazione automatica del sensore di tensione con misurazione VDC.

bash
hardware-voltage-calibrate 

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

Processo di calibrazione:

  1. Misurare la tensione di rete con un multimetro (modalità AC RMS)
  2. Inserire il comando con il valore misurato
  3. Il sistema automaticamente:
  4. Misura l'uscita VDC attuale del sensore (RMS)
  5. Calcola il moltiplicatore: multiplier = V_measured / V_sensor
  6. Salva i valori calibrati nominal_vdc e multiplier nel NVS
  7. Riavviare il dispositivo (reboot)

Esempio:

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

Output:

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

Vantaggi della calibrazione automatica:

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

📝 Nota: Il vecchio metodo (regolazione manuale del potenziometro a 0,7V) non è più necessario!


Sensore di tensione - hardware-voltage-config-multiplier

Impostare direttamente il moltiplicatore (per utenti avanzati).

bash
hardware-voltage-config-multiplier 

Parameters:
- - Multiplier (0.1-1000)

⚠️ Raccomandazione: Usare hardware-voltage-calibrate anziché l'impostazione manuale del moltiplicatore.




Sensori di corrente


hardware-current-list

Mostrare tutti i sensori di corrente configurati con le relative assegnazioni.

bash
hardware-current-list

Esempio di output:

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
================================================

Campi:

  • CH - Numero canale ADC (0-3)
  • Assegnazione - Ruolo funzionale (GRID, SOLAR, LOAD_1..LOAD_8)
  • GPIO - Pin GPIO (32-39)
  • Tipo di sensore - Modello del sensore di corrente
  • A/V - Moltiplicatore di calibrazione
  • Offset - Offset DC (per sensori ACS712)


hardware-current-config GPIO

Configurare un sensore di corrente: impostare tipo, pin GPIO e assegnazione funzionale.

Parametri:

  • - Assegnazione funzionale:
  • GRID - Collegamento alla rete (importazione/esportazione)
  • SOLAR - Pannello solare
  • LOAD_1, LOAD_2, ... LOAD_8 - Carichi 1-8
  • - Tipo di sensore:
  • Serie SCT-013 (trasformatori di corrente AC, uscita 0-1V):
    • 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
  • Serie ACS712 (sensori ad effetto Hall, 2,5V al centro a 5V):
    • ACS712-5A - ±5A
    • ACS712-20A - ±20A
    • ACS712-30A - ±30A
  • CUSTOM - Sensore personalizzato
  • - Numero GPIO (32-39, solo ADC1)

Utilizzo:

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

Esempio di output:

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

Algoritmo di selezione del canale:

Il sistema seleziona automaticamente il canale ADC per priorità:

  1. Priorità 1: Canale con GPIO corrispondente (riconfigurare sensore esistente)
  2. Priorità 2: Canale con stesso tipo di assegnazione (aggiornare tipo di sensore)
  3. Priorità 3: Primo canale libero (tipo = NONE)
  4. Priorità 4: Qualsiasi canale con sensore di corrente (migrazione da vecchi tipi)

⚠️ Importante: Riavvio necessario (reboot) perché le modifiche abbiano effetto.



hardware-current-show

Mostrare informazioni dettagliate su un sensore di corrente specifico.

Parametri:

  • - Assegnazione del sensore (GRID, SOLAR, LOAD_1..LOAD_8)

Utilizzo:

bash
hardware-current-show GRID

Esempio di output:

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

Eliminare la configurazione di un sensore di corrente e liberare il canale ADC.

Parametri:

  • - Assegnazione del sensore (GRID, SOLAR, LOAD_1..LOAD_8)

Utilizzo:

bash
hardware-current-delete GRID

Esempio di output:

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!

Errore (sensore non trovato):

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


hardware-current-calibrate-zero

Calibrare il punto zero del sensore di corrente (compensazione dell'offset DC).

Parametri:

  • - Assegnazione del sensore da calibrare

Quando usare:

  • Dopo l'installazione di un nuovo sensore
  • Quando le letture derivano (il sensore mostra corrente senza carico)
  • Dopo la regolazione del potenziometro del sensore ACS712

Processo di calibrazione:

  1. IMPORTANTE: Scollegare il carico dal sensore (corrente = 0A)
  2. Inserire il comando
  3. Il sistema misura l'offset DC attuale
  4. Calcola e salva l'offset di correzione nel NVS
  5. Riavviare il dispositivo

Utilizzo:

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

hardware-current-calibrate-zero GRID

Esempio di output:

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
===========================================

📝 Nota:

  • SCT-013: Calibrazione generalmente non necessaria (uscita AC pura)
  • ACS712: Consigliata per compensare la deriva del punto centrale (2,5V)
  • PowerMeterADC sottrae automaticamente l'offset DC; questo comando compensa la deriva residua


Versione NVS - hw-version-show

Mostrare la versione del formato dati NVS e lo stato della modalità sicura.

bash
hw-version-show

Esempio di output (modalità normale):

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

Esempio di output (modalità sicura):

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

Cronologia delle versioni:

  • v1 - Versione iniziale (moltiplicatore ZMPT107 codificato)
  • v2 - Aggiunti i campi voltage_driver e nominal_vdc

📝 La modalità sicura viene attivata automaticamente in caso di incompatibilità di versione per prevenire crash di sistema.


Reset NVS - hw-erase-nvs

Cancellare completamente tutti i dati NVS e ripristinare i valori di fabbrica.

bash
hw-erase-nvs

Processo:

  1. Il comando chiederà una conferma
  2. Inserire YES (in maiuscolo)
  3. Il sistema cancella tutti i dati dal namespace hw_config
  4. Carica i valori di fabbrica predefiniti
  5. Salva le impostazioni con la versione attuale

Esempio:

bash
hw-erase-nvs

Output:

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

⚠️ AVVISO: Questa operazione è irreversibile! Tutte le impostazioni personalizzate dei sensori e le configurazioni GPIO andranno perse.

Quando usare:

  • Aggiornamento a nuovo firmware con formato NVS incompatibile
  • Ritorno alle impostazioni hardware di fabbrica
  • Risoluzione dei problemi di configurazione


Riavvio del sistema - reboot

Riavviare ESP32.

bash
reboot

Output:

text
Rebooting in 1 second...

📝 Nota: Necessario dopo:

  • Modifica dei pin GPIO
  • Calibrazione dei sensori
  • Reset NVS
  • Aggiornamenti della configurazione hardware



Riferimento API REST

⚠️ Nota: Questa sezione fornisce un riferimento rapido per gli endpoint dell'API REST. Per l'integrazione con applicazioni web, usare questi endpoint insieme ai comandi seriali descritti sopra.


URL di accesso

Modalità Access Point:

python
http://192.168.4.1/api/

Modalità Station:

python
http:///api/

Usare il comando wifi-status per trovare l'indirizzo IP attuale.



Stato e monitoraggio

GET /api/status - Stato completo del router

bash
curl http://192.168.4.1/api/status

GET /api/metrics - Metriche di potenza (leggero, per polling)

bash
curl http://192.168.4.1/api/metrics

GET /api/config - Tutti i parametri di configurazione

bash
curl http://192.168.4.1/api/config

GET /api/info - Informazioni di sistema

bash
curl http://192.168.4.1/api/info


Configurazione

POST /api/config - Aggiornare la configurazione

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 - Ripristinare i valori di fabbrica

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


Controllo del router

POST /api/mode - Impostare la modalità operativa

Modalità valide: 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 - Impostare livello del dimmer (passa a modalità MANUAL)

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

POST /api/manual - Impostare livello manuale (endpoint alternativo)

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


Gestione WiFi

GET /api/wifi/status - Stato WiFi e indirizzi IP

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

GET /api/wifi/scan - Cercare reti

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

POST /api/wifi/connect - Connettersi alla rete (salvato nel 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 - Disconnettersi dalla rete STA

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

POST /api/wifi/forget - Cancellare le credenziali salvate dal NVS

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


Esempi di utilizzo dell'API Web

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



Esempi di avvio rapido


Configurazione iniziale

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


Controllo manuale

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


Risoluzione dei problemi

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



Note


Formato dei comandi

  • I comandi non distinguono tra maiuscole e minuscole
  • I parametri sono separati da spazi


Persistenza dei dati

  • Tutti i comandi config-* vengono salvati nel NVS immediatamente
  • Le credenziali WiFi vengono salvate automaticamente dopo una connessione riuscita
  • Le impostazioni persistono tra i riavvii


Funzioni di sicurezza

  • Limiti del dimmer: 0-100%
  • Validazione dell'intervallo dei parametri
  • Protezione tramite watchdog durante l'OTA
  • Sospensione delle attività critiche durante gli aggiornamenti


Interfaccia web

  • Accesso da qualsiasi browser
  • Design responsive per dispositivi mobili
  • Aggiornamenti di stato in tempo reale
  • Nessuna autenticazione (usare regole firewall)



  • 01_OVERVIEW.md - Panoramica del progetto e funzionalità
  • 02_COMPILATION.md - Istruzioni di compilazione
  • 03_STRUCTURE.md - Architettura dell'applicazione
  • 04_ROUTER_MODES.md - Modalità operative del router
  • 05_API_REFERENCE_EN.md - Riferimento API dei componenti
  • 06_MAIN_APPLICATION.md - Punto di ingresso dell'applicazione principale
  • 07_COMMANDS.md - Versione russa (Команды и REST API)

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

← Applicazione principale | Indice | Avanti: Web API - GET →