Tabela već postoji
Dok neko otvori ETS, adrese su obično već negde zapisane — u projektnoj tabeli, u tenderskoj dokumentaciji, u listi koju je poslao klijent. Ukucati dve hiljade njih ručno košta jedan dan i unosi greške koje isplivaju mesecima kasnije na objektu.
ETS ih uvozi iz CSV datoteke za sekundu. Prepreka je to što datoteka mora da ima tačno oblik koji ETS očekuje, a taj oblik je slabo dokumentovan.
Devet kolona
Datoteka je razdvojena tačkom-zarezom i ima fiksni raspored od devet kolona:
| # | Kolona | Namena |
|---|---|---|
| 1 | Main | Ime, samo u redovima glavne grupe |
| 2 | Middle | Ime, samo u redovima srednje grupe |
| 3 | Sub | Ime, samo u redovima grupne adrese |
| 4 | Address | "1/-/-", "1/0/-" ili "1/0/3" |
| 5 | Central | Oznaka centralne funkcije, obično prazno |
| 6 | Unfiltered | Oznaka rutiranja, obično prazno |
| 7 | Description | Slobodan tekst, opciono |
| 8 | DatapointType | npr. "DPST-1-1" — opciono, ali vidi ispod |
| 9 | Security | "Auto" ili "Off" |
Jedan detalj koji svi pogreše
Nivo unosa je kodiran time koja kolona nosi ime. Ne uvlačenjem, ne posebnim poljem tipa, ne samom adresom. Tri reda pokazuju celo pravilo:
Main group "Lighting"; ; ;"1/-/-";"";"";"";"";"Off"
Middle group ; "Switch"; ;"1/0/-";"";"";"";"";"Auto"
Group address ; ;"Kitchen ceiling";"1/0/3";"";"";"";"";"Auto"Stavite ime u pogrešnu kolonu i ETS će red ili odbiti ili ga napraviti na nivou koji niste želeli. Ovo je najčešći pojedinačni razlog zašto ručno napisan izvoz ne uđe čisto.
Zamke koje vredi znati pre 2 000 redova
- Krajevi redova moraju biti CRLF. Datoteka sa golim LF neće se uvesti.
- Navodnici unutar imena se izbegavaju udvajanjem — uobičajeno CSV pravilo.
- Opsezi: glavna grupa 0–31, srednja grupa 0–7, grupna adresa 0–255. Ništa vas ne upozorava ako ih premašite u tabeli.
- Postavite tip podatka već pri uvozu. Tehnički je opcion, a preskočiti ga znači kasnije se vraćati na svaku adresu u ETS-u — prazan tip je buduća greška.
- Kodiranje: datoteka ispod je UTF-8 bez byte order mark oznake. Ako su vam imena grupa čist ASCII, ovo nikada nije bitno. Ako nose kvačice ili crte, prvo uvezite jednu malu probu i pogledajte kako imena stižu, pre nego što generišete celu datoteku.
Opišite stablo jednom, pa mu dajte adrese
Generator deli posao na dva dela. Šema opisuje oblik stabla grupnih adresa — koje glavne grupe postoje, koje srednje grupe stoje u njima, koji tip podatka svaka nosi. Projektna tabela zatim isporučuje adrese. Ništa o stablu se ne ponavlja po redu.
Upravo to razdvajanje čini imenovanje doslednim bez dodatnog truda: svaka srednja grupa zadržava svoje značenje kroz ceo projekat, jer je deklarisana jednom.
const schema = [{
index: 1,
name: 'Lighting — ground floor',
middle: [
{ index: 0, name: 'Switch', field: 'switch', dpt: 'DPST-1-1', suffix: 'On/Off' },
{ index: 1, name: 'Switch status', field: 'switchStatus', dpt: 'DPST-1-1', suffix: 'On/Off St' },
{ index: 2, name: 'Dimming', field: 'dim', dpt: 'DPST-3-7', suffix: 'Dim' },
],
}];Provera je ono što ručni rad nema
Generisanje datoteke je lakša polovina. Polovina koja se isplati jeste odbijanje da se generiše neispravna. Četiri greške u izvornoj tabeli, i šta se vraća:
- Lighting / Switch / Hall downlights: address 1/0/1 already used by "Kitchen ceiling On/Off"
- Lighting / Switch / Terrace: address 1/9/3 sits in middle group 9, but the schema places it in 0
- Lighting / Switch / ?: missing device name
- Lighting / Switch / Study: address 1/0/999 exceeds the 0–255 sub rangePrva od njih je skupa. Dva grupna objekta na jednoj adresi u KNX-u su legalna i povremeno namerna, ali daleko češće su omaška kopiranja u tabeli. Nađena ovde, ne košta ništa. Nađena na objektu, košta izlazak, jer je simptom to da se dva kruga pale zajedno, a u projektu ništa ne izgleda pogrešno.
Ceo prolaz
Tabela od sedam uređaja, jedna komanda: izlaz ispod je tačno ono što objavljeni primer proizvodi — 26 adresa u dve glavne grupe, provereno bajt po bajt u odnosu na uzorak u repozitorijumu.
"Lighting — ground floor"; ; ;"1/-/-";"";"";"";"";"Off"
;"Switch"; ;"1/0/-";"";"";"";"";"Auto"
; ;"Kitchen ceiling On/Off";"1/0/1";"";"";"";"DPST-1-1";"Auto"
; ;"Kitchen worktop On/Off";"1/0/2";"";"";"";"DPST-1-1";"Auto"
;"Switch status"; ;"1/1/-";"";"";"";"";"Auto"
; ;"Kitchen ceiling On/Off St";"1/1/1";"";"";"";"DPST-1-1";"Auto"U ETS-u: Group Addresses → Import → CSV.
Šta ovo ne radi
Uvoz kreira grupne adrese. Ne povezuje ih sa komunikacionim objektima vaših uređaja — to ostaje ručni posao u ETS-u, a masovno povezivanje je dostupno samo kroz ETS API.
Format opisan ovde je ono što prihvata ETS 6. ETS 5 koristi drugačiji skup kolona, pa nemojte pretpostaviti da datoteka prelazi iz jednog u drugi.
Jedno ograničenje unutar samog alata: obrazac adrese prihvata srednju grupu 0–9, dok KNX dozvoljava 0–7. Pogrešna srednja grupa biva uhvaćena kada se ne slaže sa šemom, kao u primeru gore — ali deklarišite indeks 8 u samoj šemi i ništa neće prigovoriti. Opseg podgrupe 0–255 proverava se eksplicitno.
Uzmite ga
Bez zavisnosti, Node 18 ili noviji, MIT licenca. Prilagodite šemu sopstvenom imenovanju i radiće ovakav kakav jeste.
ets-group-addresses.js — MITŠta staviti u ta imena: strukturiranje 2 000 grupnih adresaProjekat izgrađen na ovoj strukturi, sa kompletnim izvozomKNX programiranje kao usluga