- UDP prijemnik (podrazumevano 46465, NE 46464 gde uredjaji slusaju discovery): dnevnik rada sa zaglavljem #TERMINIA, heartbeat JSON, sve ostalo se odbacuje - paket bez zaglavlja (FW < 0.13.4) se vodi kao "nepoznat uredjaj" po izvornoj IP adresi i tako je i oznacen u prikazu - dnevnik u fajlove po uredjaju i danu, rotacija po velicini + tri kvote (starost, po uredjaju, ukupno); otvoren fajl se nikad ne brise - heartbeat u memoriji; interval se meri iz razmaka javljanja, "tih" = 3x interval - web stranica (podrazumevano 127.0.0.1:8081): spisak uredjaja, crveno za tihe, poslednjih N linija sa pretragom, /dnevnik.txt i /api/uredjaji - bez baze i bez spoljnih zavisnosti; ne dira licencni servis, njegovu bazu, rute ni nginx - sanitizacija svega iz paketa (duzine, kontrolni znaci, ime foldera) — bez izlaska iz foldera dnevnika - systemd unit + primer env fajla + README sa uputstvom za pustanje na server - testovi: parsiranje (zaglavlje/JSON/bez zaglavlja/smece), registar, rotacija i kvote, web rute Nije pusteno na server — puštanje radi vlasnik po logger/README.md.
3.1 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.UDP prijemnik je NAPISAN 2026-07-25:logger/(Go, bez baze, zaseban proces i systemd unit; dnevnik u fajlove sa rotacijom, heartbeat u memoriji, mala web stranica). Nije još pušten na server — puštanje radi vlasnik po uputstvu ulogger/README.md. Upis udevicestabelu (tačka 2 ispod) ostaje za RBAC fazu.
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).