2026-08-06
etsknxtooling

Format CSV uvoza grupnih adresa u ETS 6

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:

#KolonaNamena
1MainIme, samo u redovima glavne grupe
2MiddleIme, samo u redovima srednje grupe
3SubIme, samo u redovima grupne adrese
4Address"1/-/-", "1/0/-" ili "1/0/3"
5CentralOznaka centralne funkcije, obično prazno
6UnfilteredOznaka rutiranja, obično prazno
7DescriptionSlobodan tekst, opciono
8DatapointTypenpr. "DPST-1-1" — opciono, ali vidi ispod
9Security"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 range

Prva 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

Razgovarajte o projektu

Razgovarajte o projektu