Podsistemi sistema¶
Strujomerko treba posmatrati kao sistem sastavljen od više podsistema. Svaki podsistem ima jasnu odgovornost, ulaze, izlaze i mesto u procesu izrade.
1. Merni hardverski podsistem¶
Namena:
- merenje napona,
- merenje struje,
- računanje aktivne snage,
- akumulacija aktivne energije,
- obezbeđivanje sirovih mernih podataka firmware-u.
Glavne komponente:
- ATM90E26,
- naponski delitelj,
- strujni transformator,
- SPI veza ka ESP32-C6,
- kalibracioni elementi.
Kako treba da se odradi:
- Definisati šemu mernog front-end-a.
- Potvrditi ulazne opsege za napon i struju.
- Implementirati realni ATM90E26 driver.
- Uvesti kalibracioni postupak.
- Validirati očitavanja referentnim instrumentom.
2. Firmware podsistem¶
Namena:
- čitanje mernog hardvera,
- formiranje mernog snapshot-a,
- lokalna obrada tarifa,
- prikaz na LCD-u,
- lokalni servisni režim,
- skladištenje kritičnog stanja,
- priprema telemetrije za backend.
Glavni servisi:
svc_metering,svc_storage,svc_display,svc_uplink,svc_wifi,svc_matter,svc_tamper,power_guard_task.
Kako treba da se odradi:
- Stabilizovati komunikaciju između servisa.
- Završiti realno očitavanje mernog IC-a.
- Završiti perzistentno čuvanje konfiguracije.
- Povezati power-fail i tamper tokove.
- Izložiti dijagnostiku kroz servisni API.
- Dodati testove za kritične tokove.
3. Lokalni korisnički podsistem¶
Namena:
- prikaz trenutne potrošnje,
- prikaz ukupne energije,
- prikaz aktivne tarife,
- signalizacija grešaka i upozorenja,
- osnovna interakcija preko tastera.
Elementi:
- LCD 2x16,
- UI taster,
- statusne ikone,
- servisni režim.
Kako treba da se odradi:
- Definisati osnovne ekrane.
- Definisati ponašanje tastera.
- Definisati poruke grešaka.
- Povezati UI sa mernim snapshot-om i statusnim događajima.
- Proveriti čitljivost i ponašanje pri greškama.
4. Servisni podsistem uređaja¶
Namena:
- lokalna dijagnostika,
- kalibracija,
- pregled statusa,
- očitavanje mernog loga,
- servisne akcije.
Elementi:
- Wi-Fi AP servisni režim,
- lokalni HTTP API,
- captive portal,
- servisna autentifikacija.
Kako treba da se odradi:
- Definisati servisne endpoint-e.
- Zaštititi akcije koje menjaju stanje.
- Omogućiti pregled merenja i statusa.
- Omogućiti kalibraciju i proveru NVS-a.
- Obezbediti jasan model grešaka.
5. Komunikacioni podsistem¶
Namena:
- GSM/GPRS komunikacija sa backend-om,
- slanje telemetrije,
- heartbeat,
- preuzimanje konfiguracije,
- rad u offline režimu.
Elementi:
- Quectel M65,
- UART komunikacija,
- AT komande,
- uplink queue,
- retry i buffering logika.
Kako treba da se odradi:
- Stabilizovati modem init.
- Definisati HTTP payload limite.
- Implementirati retry politiku.
- Implementirati offline buffer.
- Potvrditi slanje telemetrije u realnim mrežnim uslovima.
6. Backend podsistem¶
Namena:
- identitet uređaja,
- provisioning,
- prijem telemetrije,
- čuvanje merenja,
- konfiguracija uređaja,
- tarife,
- obračun,
- admin i korisnički portali.
Detaljna backend dokumentacija je u ../backend/pregled-backenda.md.
Kako treba da se odradi:
- Napraviti osnovu backend projekta.
- Implementirati registar uređaja i provisioning.
- Implementirati telemetrijski ingestion.
- Implementirati konfiguracione revizije.
- Implementirati tarife i verifikaciju.
- Implementirati obračun.
- Dodati admin i korisnički portal.
7. Proizvodni podsistem¶
Namena:
- flash firmware-a,
- upis fleet i unit konfiguracije,
- kalibracija,
- verifikacija fabričkog stanja,
- zaključavanje uređaja za isporuku.
Elementi:
- USB Serial/JTAG,
- proizvodni protokol,
- PC CLI alat,
- fabrički web UI,
- fabrički izveštaj.
Kako treba da se odradi:
- Definisati USB protokol.
- Implementirati PC fabrički alat.
- Implementirati kalibracioni tok.
- Generisati fabrički izveštaj.
- Definisati politiku proizvodnog zaključavanja.
8. Obračunski podsistem¶
Namena:
- provera potrošnje,
- razdvajanje potrošnje po tarifama,
- generisanje računa,
- audit obračuna.
Ovaj podsistem se implementira na backend-u, ali zavisi od ispravne telemetrije sa uređaja.
Kako treba da se odradi:
- Definisati tarifne planove.
- Definisati ugovore i obračunske periode.
- Verifikovati uređajem prijavljene tarife.
- Izračunati potrošnju po tarifnim opsezima.
- Generisati račun i stavke računa.