Paket je nastao u asp-terminia/serviseri/ ali je sav posao serverski (isti backend i baza kao ASP-Terminia licenciranje), pa se seli ovde - isto obrazlozenje i put kao docs/asp-terminia/. - docs/loggerservice/ - 7 dokumenata: vizija/MVP (merodavan dokument), ZAKLJUCEN RBAC model (stablo orgs, 4 role, invarijante, seme tabela), heartbeat/discovery formati koje uredjaj vec salje, provisioning i katalog firmvera, zadaci S1-S7, pravila rada na produkciji - reference prepravljene: "ASP repo" = https://git.terminia.net/djuka/asp-terminia, link ka docs/asp-terminia/ unutar istog repoa umesto stare "dal-license-server repo:" oznake - CLAUDE.md: sekcija LoggerService + koordinacija sa docs/asp-terminia/ (S1-S2 idu POSLE Z1 da se migracije ne sudare) Firmverska strana (svc.cpp, discovery/heartbeat) ostaje u ASP repou i ne dira se. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Uređaji: šta terminal VEĆ šalje (formati) i šta server treba da primi
Firmware strana je GOTOVA (FW 0.10.0+, modul
firmware/10_terminia/svc.cpp). Server strana (prijemnik) NE postoji — to je zadatak u 04.
1. LAN discovery (za servisera na licu mesta / PC alat)
- Uređaj UVEK sluša UDP port 46464.
- Upit: paket čiji sadržaj počinje ASCII stringom
TERMINIA?(može broadcast). - Odgovor (unicast pošiljaocu), JSON u jednom paketu:
{"app":"TERMINIA","name":"TERM-001","mac":"1C:DB:D4:A6:A4:60",
"ip":"192.168.123.1","fw":"0.11.0","serial":"1CDBD4A6A460"}
serial= korisnički serijski broj ili MAC bez dvotačaka ako serijski nije zadat.ip= adresa interfejsa (ETH ima prednost nad WiFi ako je povezan).- Provereno uživo 2026-07-24 (PowerShell UDP upit → odgovor za <100 ms).
Upotreba: serviserski PC/telefon alat „nađi sve uređaje na mreži" —
broadcast TERMINIA? na 255.255.255.255:46464 i skupi odgovore.
2. Heartbeat (za devices.status / poslednji_heartbeat)
- Uređaj šalje na
cfg.svcLogHost(ip:port, UDP) nacfg.svcHbSecondssekundi (0 = isključeno). Podešava se u SPA: Podešavanja → Servis. - Format = isti identitet kao discovery + oznaka:
{"app":"TERMINIA","name":"...","mac":"...","ip":"...","fw":"...","serial":"...","hb":1}
Server treba: UDP prijemnik (port po dogovoru, npr. 46465 javno) koji:
- parsira JSON, ključ =
mac; - upsert u
devices(fw_verzija,ip,poslednji_heartbeat = NOW()); - status:
onlineako je heartbeat mlađi od 3×interval, inačeoffline(interval po uređaju čuvati ili pretpostaviti default).
⚠️ Heartbeat trenutno gađa LOKALNI prijemnik (LAN). Za javni server preko interneta: NAT izlaz radi (UDP out), ali treba javna IP/port + odluka da li UDP ili prelazak na HTTPS POST uz sync (v. „Zahtevi ka firmveru" u 04 ako se menja).
3. Dnevnik rada (dbg) na server
- Isti
cfg.svcLogHostprima i tok dbg linija (tekst, UDP, više linija po paketu, do ~1 KB) kada je uključeno „Šalji dnevnik rada na server". - Namena: teren-dijagnostika („šta se dešava kad pravi problem").
- Server treba: isti prijemnik upisuje sirove linije u fajl po MAC-u/danu (rotacija!) — NE u bazu (obim). Toggle je na uređaju, podrazumevano isključen — server ne sme pretpostaviti da tok uvek stiže.
4. Identitet uređaja — izvor istine
- MAC iz eFuse (
1C:DB:D4:A6:A4:60je razvojni uređaj) — nepromenljiv, ključ zadevices.maci za licencu. serialje korisnički (promenljiv) — samo za prikaz.- Registracija uređaja u org (ko ga poseduje) ide kroz RBAC/provisioning (03), ne kroz heartbeat — heartbeat samo ažurira POZNATE uređaje (nepoznat MAC: zabeleži u „neregistrovani" listu za kasnije usvajanje, ne pravi org sam).