TapHome

Resi DALI

Modbus RTU
Pridal
Posledná aktualizácia: 05. 2026

Vyžaduje externú bránu

Resi RESI-DALI-PS — stránka produktu

Resi DALI

Šablóna Resi DALI je runtime prevádzkový pendant nástroja Resi Dali - Konfigurácia na uvedenie do prevádzky. Pripája TapHome k plne adresovanej DALI svetelnej zbernici cez bránu RESI-DALI-SIO alebo RESI-DALI-ETH (Modbus-DALI) a sprístupňuje denné ovládanie pre až 64 individuálne adresovaných DALI ovládacích zariadení (gears) (krátke adresy 0–63) a 16 DALI broadcast skupín (0–15), plus per-gear DALI 1.0 stav, diagnostika porúch lampy a porúch napájania.

Komunikácia s bránou používa Modbus RTU pri 9600 baud 8N1. Zápisy jasu idú do H:510 LAMP LEVEL (per-gear) a H:520 GROUP LEVEL (per-skupina); per-gear konfiguračné príkazy a dotazy sú tunelované cez H:511 LAMP COMMAND / H:512 LAMP COMMAND + REPEAT, pričom register brány H:550 DALI STATUS sa pollie kvôli pripravenosti odpovede.

Táto šablóna predpokladá, že DALI krátke adresy sú už naprogramované na zbernici. Ak gear-y ešte nemajú adresu, použite najprv šablónu Resi Dali - Konfigurácia (alebo bezplatný nástroj výrobcu MODBUSConfigurator / DCA) na spustenie sprievodcu náhodným adresovaním DALI 2.0 — pozri Vzťah ku konfiguračnej šablóne nižšie.

Hardvérové pripojenie

RESI-DALI-SIO (RS-485) a RESI-DALI-ETH (Ethernet) sú master brány na DIN lištu, ktoré sú medzi sériovým/Ethernet hostom a DALI svetelnou zbernicou. SIO je v púzdre CEM17 (17,5 × 90 × 56,4 mm) a ETH v širšom púzdre CEM35 (35,8 × 90 × 56,4 mm), aby sa zmestil RJ45 konektor. Žiadna z brán nenapája DALI zbernicu sama — sprievodný DALI bus napájací zdroj (RESI-DALI-PS alebo akýkoľvek kompatibilný 200 mA DALI PSU) je povinný.

Zapojenie RESI-DALI-SIO (RS-485)
Schéma zapojenia RESI-DALI-SIO — externý DALI PSU (hore) a kombinácia s RESI-DALI-PS (dole)

Svorky na ľavej strane RESI-DALI-SIO (zhora → nadol): GND, +12..48V=, RS485 DATA+ (A+), RS485 DATA- (B-), RS485 GND, RS232 TX, RS232 RX, RS232 GND. Svorky DALI zbernice na opačnej strane sú D+ / N/C / D- (3-pinový USLIM blok, prostredný N/C pin zostáva nezapojený).

Pre TapHome inštaláciu použite RS-485 rozhranie:

  • RS485 DATA+ (A+) → A+/D+ na TapHome RS-485 zbernici
  • RS485 DATA- (B-) → B-/D- na TapHome RS-485 zbernici
  • RS485 GND → GND na TapHome napájacom zdroji (odporúčané pre stabilnú komunikáciu)
  • +12..48V= / GND → 12–48 V DC primárne napájanie
Zapojenie RESI-DALI-ETH (Ethernet)
Schéma zapojenia RESI-DALI-ETH — externý DALI PSU (hore) a kombinácia s RESI-DALI-PS (dole)

Ethernetová varianta má rovnaké svorky DALI zbernice (D+ / N/C / D-) a vstupy primárneho napájania (GND, +12..48V=), plus jediný RJ45 konektor pre 10/100 Mbit Ethernet. Továrenské IP nastavenia sú 192.168.0.191 / 255.255.255.0 / 192.168.0.1 s Modbus Unit ID 255; vstavané webové UI používa prihlasovacie údaje RESI / RESI.

Keďže ide o Modbus RTU šablónu, TapHome nekomunikuje s RESI-DALI-ETH cez natívny Modbus/TCP. Použite ho radšej v transparentnom režime RTU-over-Ethernet, alebo umiestnite SIO za sériovo-IP most (Moxa NPort, USR-TCP232) — pozri Konfigurácia → Nastavenie RTU-over-TCP nižšie.

DALI bus napájací zdroj (RESI-DALI-PS)
RESI-DALI-PS — napájanie DALI zbernice samostatne (hore) a kombinácia s SIO/ETH bránou (dole)

RESI-DALI-PS poskytuje až 200 mA na DALI zbernici (skratový prúd ~225 mA, napätie zbernice typicky 14–18 V) a podporuje až 64 DALI 1.0 predradníkov alebo DALI 2.0 ovládacích zariadení na jednej linke. Primárna strana akceptuje rovnaké 12–48 V DC napájanie ako jednotka SIO/ETH. Brána a PSU sa pripájajú na rovnaký pár D+ / D- — PSU napája zbernicu, pričom brána číta a zapisuje DALI rámce.

Tri LED diódy na PSU pomáhajú pri diagnostike porúch: POWER (primárne 12–48 V OK, počas normálnej prevádzky stále svieti), DALI (krátko bliká počas DALI komunikácie), ERR (trvalo svieti pri poruche PSU, DALI skrate alebo preťažení zbernice — počas normálnej prevádzky musí byť zhasnutá).

Topológia DALI zbernice

DALI linka má niekoľko tvrdých obmedzení, ktoré priamo ovplyvňujú stabilitu prevádzky:

Prierez vodičaMax dĺžka DALI kábla
1,5 mm²300 m
1,0 mm²238 m
0,75 mm²174 m
0,5 mm²116 m

Limit vychádza z maximálne povoleného úbytku napätia 2 V na DALI kábli. Ďalšie pravidlá:

  • Maximálne 64 DALI 1.0 predradníkov a až 64 DALI 2.0 ovládacích zariadení na zbernici (oddelené priestory krátkych adries).
  • Iba stromová topológia — žiadne kruhy, žiadne slučky.
  • Skutočný počet gear-ov závisí aj od menovitého prúdu PSU (typicky 200 mA na RESI-DALI-PS; rátajte ~2 mA na gear plus rezervu).

RESI-DALI-PS (alebo ekvivalentný DALI PSU) je povinný. Bez neho brána nemôže napájať zbernicu a každé per-gear čítanie skončí timeoutom “Gear not present!”. Ak sa na dlhú linku pridá druhý PSU, vložte DALI tlmivku alebo rozdeľte zbernicu na galvanicky oddelené segmenty.

Konfigurácia

Aktivácia Modbus komunikácie

Sériové parametre hosta na RESI-DALI-SIO sa volia 4-polohovým DIP prepínačom na module. TapHome šablóna je fixne nastavená na 9600 baud 8N1, takže DIP prepínače musia zodpovedať.

DIP1DIP2Baud rate
OFFOFF9600 bd (vyžadované TapHome)
ONOFF19200 bd
OFFON38400 bd
ONONPoužije baud rate z FLASH (továrenský default 57600 bd)
DIP4Zdroj Modbus Unit ID
OFFFLASH register H:65221 je akceptovaný — vyžadované, ak bola počas uvedenia do prevádzky naprogramovaná neštandardná Slave ID
ONHardvérový fallback — Unit ID je vynútene 255, FLASH hodnota je ignorovaná

DIP3 je pre produkt vyhradený rezervný bit; nechajte ho v továrenskej polohe. Parita je fixná na None a stop bit na 1 (formát rámca 8N1) pre kombinácie DIP1/DIP2 baud rate vybrané vyššie.

RS-485 zakončenie: ukončte zbernicu odporom 120 Ω na oboch koncoch. TapHome Core poskytuje jedno zakončenie na svojich BUS svorkách; ak je RESI brána posledným zariadením na linke, pridajte diskrétny 120 Ω rezistor medzi A+ / B- na jej RS-485 svorkách.

Slave ID

Továrensky predvolená Modbus Unit ID je 255 (FLASH register H:65221 číta 0xFFFF, čo brána klampuje na 255). Šablóna sprístupňuje servisný atribút na úrovni modulu Slave ID, ktorý spätne číta tento register, takže nakonfigurovanú adresu možno overiť po importe.

Zmena Slave ID je záležitosťou uvedenia do prevádzky riešená sesterskou šablónou Resi Dali - Konfigurácia — táto runtime šablóna zámerne nezapisuje do H:65221 ani nespúšťa softvérový reset, takže môže ostať aktívna v projekte bez rizika náhodnej rekonfigurácie brány.

Nastavenie RTU-over-TCP

Keďže šablóna používa Modbus RTU pripojenie, ponúka sa aj importný parameter IpAddress pre inštalácie, kde TapHome dosiahne bránu cez sériovo-IP most (Moxa NPort, USR-TCP232) alebo cez RESI-DALI-ETH v transparentnom režime RTU-over-Ethernet. V tom prípade nasmerujte IpAddress na IP mosta / ETH jednotky a všetky ostatné nastavenia ponechajte rovnaké ako pri RS-485 variante. Pre čistý Modbus/TCP by bola prirodzenejšia TCP-based šablóna — táto Modbus RTU šablóna konkrétne očakáva rámcovanú RTU komunikáciu.

Iba jeden Modbus master naraz. Ani DALI ani Modbus RTU nearbitrujú medzi súbežnými master-mi. Ak PLC, BMS alebo PC nástroj (napríklad MODBUSConfigurator) tiež pollie bránu, dotazy gear-ov budú kolidovať a TapHome bude hlásiť sporadické chyby “Gear not responding!”.

Vzťah ku konfiguračnej šablóne

Tá istá definícia Dali.xml sa s RESI bránou dodáva ako dve komplementárne TapHome šablóny, ktoré pracujú na rôznych fázach životného cyklu rovnakého hardvéru:

ŠablónaFázaČo robíKedy použiť
Resi Dali - Konfigurácia (resi-dali-daliconfig)Jednorazové uvedenie do prevádzkySprievodca DALI 2.0 náhodným adresovaním, per-adresa probe device-type, broadcast ON/OFF testy zdravia, Set Slave ID, Reset GatewayNová inštalácia: priraďte krátke adresy 0–63 ovládacím zariadeniam, overte ktoré adresy sú obsadené
Resi DALI (resi-dali-dali, táto šablóna)Denné runtime ovládaniePer-gear stmievanie (64 gear-ov), skupinové stmievanie (16 skupín), per-gear DALI 1.0 diagnostika, správa členstva v skupináchPo uvedení do prevádzky: koncové ovládanie osvetlenia

Typický priebeh projektu:

  1. Zapojte a napájajte DALI zbernicu (RESI-DALI-PS) a bránu.
  2. Importujte šablónu Resi Dali - Konfigurácia, spustite Reset Short AddressesStartScan / SEARCHADDR / COMPARE / PROGRAM SHORT ADDRESS / Check, kým každý viditeľný gear nemá krátku adresu. Overte cez Gear 0..63 a Turn On / Off All Lamps.
  3. Odstráňte modul Resi Dali - Konfigurácia z projektu.
  4. Importujte šablónu Resi DALI (túto) na runtime ovládanie. Namapujte zariadenia Gear N a Group N na TapHome scény, časovače a pravidlá.

Obe šablóny môžu aj dočasne koexistovať — napr. pri pridávaní nového gear-u do živej inštalácie — ale len jedna by mala posielať Modbus komunikáciu naraz. Runtime šablóna zámerne vynecháva akcie rekonfigurácie brány (Reset Gateway, Set Slave ID, broadcast ALL LEVEL), aby mohla zostať v projekte bez rizika prepísania nastavení uvedenia do prevádzky.

Bezplatný DCA nástroj výrobcu MODBUSConfigurator (Windows, dostupný zo stránky RESI) možno tiež použiť na uvedenie do prevádzky namiesto TapHome šablóny Resi Dali - Konfigurácia. Runtime šablóna Resi DALI funguje rovnako bez ohľadu na to, ktorý nástroj bol použitý na priradenie krátkych adries.

Schopnosti zariadenia

Šablóna sprístupňuje 80 DALI zariadení v TapHome, organizovaných v dvoch paralelných skupinách: 64 stmievačov Gear (jeden na každú DALI krátku adresu) a 16 stmievačov Group (jeden na každú DALI skupinu). Jeden servisný atribút na úrovni modulu dopĺňa obraz.

Per-gear stmievanie — Gear 0 … Gear 63

Každé zo 64 servisných zariadení Gear 0, Gear 1, … Gear 63 je TapHome stmievač, ktorý cieli na jediné DALI ovládacie zariadenie pri zodpovedajúcej krátkej adrese. Zápisy jasu idú do H:510 LAMP LEVEL (TapHome 0–100 % je škálované lineárne do rozsahu DALI arc power, ohraničeného vlastnou MIN LEVEL a MAX LEVEL gear-u); skutočná úroveň sa spätne číta z H:511 cez DALI príkaz QUERY ACTUAL LEVEL (0xA0) a preškáluje sa späť do 0–100 %.

Keď šablóna importuje gear, init skript najprv probuje gear cez QUERY STATUS (0x91); odpoveď 0x8000 „bez odpovede" označí gear ako neprítomný (s 1–60 s exponenciálnym back-off) a v TapHome logu vypíše „Gear not present!". Ak gear odpovie, init skript ďalej prečíta QUERY LAMP FAILURE (0x92), QUERY POWER FAILURE (0x9B), QUERY MIN LEVEL (0xA2) a QUERY MAX LEVEL (0xA1) a uloží výsledky do interného stavu pre periodický readscript.

Každý gear sprístupňuje 10 servisných atribútov, ktoré na požiadanie čítajú DALI 1.0 / 2.0 dotazy:

Servisný atribútDALI príkazHlási
Short Address(interné)Krátka adresa (0–63), na ktorú toto zariadenie cieli — fixovaná v čase importu šablóny
Device TypeQUERY DEVICE TYPE (0x99)DT{n} (napr. DT0 fluorescenčný, DT6 LED, DT8 farebný / tunable white) alebo -- keď bez odpovede
Physical Min LevelQUERY PHYSICAL MIN LEVEL (0x9A)Hardvérom vynútená minimálna úroveň stmievania v %
Max LevelQUERY MAX LEVEL (0xA1)Nakonfigurovaná horná hranica použitá pri škálovaní 0–100 % na DALI arc power
Min LevelQUERY MIN LEVEL (0xA2)Nakonfigurovaná dolná hranica použitá pri škálovaní 0–100 % na DALI arc power
Power Up LevelQUERY POWER ON LEVEL (0xA3)Jas obnovený po opätovnom napájaní DALI zbernice
System Failure LevelQUERY SYSTEM FAILURE LEVEL (0xA4)Jas prijatý, keď zbernica stratí komunikáciu na >500 ms
GroupsQUERY GROUPS 0-7 (0xC0) + QUERY GROUPS 8-15 (0xC1)Čiarkami oddelený zoznam DALI skupín, do ktorých gear patrí (None alebo napr. 0,3,7)
Support Lamp FailureQUERY LAMP FAILURE (0x92) capability bitYes / No / -- — kontroluje chybu „Lamp failure!" v periodickom readscripte
Support Power FailureQUERY POWER FAILURE (0x9B) capability bitYes / No / -- — kontroluje chybu „Power failure!" v periodickom readscripte

Periodický readscript na každom gear-i číta aktuálnu arc úroveň (0xA0) a, keď je podporované, sleduje príznaky porúch lampy a porúch napájania — vystavené ako TapHome warningy/chyby, takže porucha žiarivkovej trubice alebo vypadnutý LED ovládač sa zobrazí v aktivity logu bez manuálneho pollovania.

Akcie konfigurácie per-gear

Štyri servisné akcie na každom Gear N zariadení zapisujú DALI konfiguračné príkazy (auto-opakované do 100 ms cez H:512 LAMP COMMAND + REPEAT, ako vyžadujú non-volatile DALI príkazy):

  • Add to Group (parameter Group ID 0–15) — posiela ADD TO GROUP (0x60+grp), takže gear vstúpi do zvolenej DALI skupiny a bude poslúchať následné broadcast zápisy skupiny.
  • Remove from Group (parameter Group ID 0–15) — posiela REMOVE FROM GROUP (0x70+grp).
  • Reset to Default Settings — posiela DALI RESET (0x20); obnoví všetky NVM parametre gear-u (max/min/power-on/system-failure level, členstvo v skupinách, scény) na továrenský default.
  • Set Startup Levels — zachytí aktuálnu arc power a uloží ju ako Power On Level aj System Failure Level v poradí: STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D), každý s 10 ms medzerou.
Skupinové stmievanie — Group 0 … Group 15

Každé zo 16 servisných zariadení Group 0, Group 1, … Group 15 je write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u patriacemu do tej DALI skupiny, používajúc H:520 GROUP LEVEL (TapHome 0–100 % sa násobí 0xFE → DALI arc power 0–254). DALI nepovoľuje bráne spätne čítať úroveň skupiny — zbernica nesie iba broadcast zápis — takže TapHome drží poslednú zapísanú hodnotu ako „aktuálnu" úroveň. Na zariadeniach skupiny nie sú žiadne init ani read skripty.

Každé zariadenie Group N sprístupňuje dve servisné akcie pre hromadnú správu členstva:

  • Add All Lamps to Group — broadcastuje ADD TO GROUP (0x60+grp) cez H:532 ALL COMMAND + REPEAT. Každý gear na zbernici vstúpi do skupiny bez ohľadu na svoju aktuálnu krátku adresu.
  • Remove All Lamps from Group — broadcastuje REMOVE FROM GROUP (0x70+grp). Každý gear opustí skupinu.

Použite skupinové stmievanie pre „kuchynské svetlá", „obývacie downlighty" alebo akúkoľvek zónu, kde má viacero gear-ov sledovať jediný stmievač. Skupinové zápisy sú oveľa efektívnejšie ako paralelné ovládanie jednotlivých gear-ov — jediná Modbus transakcia dosiahne až 64 gear-ov súčasne.

Diagnostika na úrovni modulu

Modul sprístupňuje jediný servisný atribút:

  • Slave ID — číta Modbus Unit ID uložené vo FLASH registri H:65221. Aktívne iba keď DIP4 = OFF; pri DIP4 = ON brána vynúti adresu 255 bez ohľadu na FLASH hodnotu. Použite na overenie adresy brány pred pridávaním ďalších zariadení, najmä po kole uvedenia do prevádzky, ktoré zapísalo neštandardnú ID.

Riešenie problémov

„Gear not present!" na známom adresovanom gear-i
  1. Overte napätie DALI zbernice na gear-i: 11,5–22,5 V (typicky 14–16 V). Nižšie hodnoty zvyčajne indikujú skrat alebo zbernicu, ktorá je príliš dlhá pre prierez kábla (pozri Topológia DALI zbernice).
  2. Skontrolujte LED ERR na RESI-DALI-PS — ak svieti, zbernica je v skrate, preťažená alebo PSU je chybný.
  3. Spustite znova probovanie Gear N v sesterskej šablóne Resi Dali - Konfigurácia — runtime šablóna skúša znova iba každých 1–60 s s exponenciálnym back-off, konfiguračná šablóna dáva okamžité pass/fail per adresu.
  4. Overte, či gear vôbec má krátku adresu. Ak bol vymenený alebo továrensky resetovaný na zbernici, bude bez adresy a musí byť znova uvedený do prevádzky cez Resi Dali - Konfigurácia.
Skupinové stmievanie nemá efekt
  1. Overte, že aspoň jeden gear je členom skupiny — otvorte Gear N → Groups na každom podozrivom členovi a skontrolujte, či sa ID skupiny objavuje v čiarkami oddelenom zozname.
  2. Ak chýba členstvo, spustite akciu Add to Group na každom gear-i jednotlivo, alebo použite Add All Lamps to Group na zariadení skupiny pre broadcast po celej zbernici.
  3. Pamätajte, že Group N je write-only — slider stmievača v TapHome ukladá poslednú zapísanú hodnotu, ale nereflektuje skutočný stav zbernice. Ak sú gear-y vypnuté, príkaz úrovne skupiny na nich nemá efekt.
Porucha lampy / porucha napájania nie sú hlásené
  1. Otvorte servisné atribúty gear-u a skontrolujte Support Lamp Failure / Support Power Failure. Ak ktorýkoľvek číta No, ovládač gear-u neimplementuje ten DALI 1.0 dotaz — periodický readscript blokuje zodpovedajúcu chybu a nikdy nebude varovať pre ten gear.
  2. Spustite Reset to Default Settings na gear-i a znova importujte zariadenie. Init skript znova preverí oba capability bity počas ďalšieho čítacieho cyklu.
Sporadické Modbus chyby po uvedení do prevádzky
  1. Uistite sa, že žiadny iný Modbus master (MODBUSConfigurator, PLC, BMS) súbežne nepollie bránu. DALI a Modbus nearbitrujú medzi master-mi.
  2. Overte, že RS485 GND je pripojený medzi bránou a spoločnou zemou TapHome napájacieho zdroja — chýbajúca GND je najčastejšia chyba RS-485 na dlhých linkách.
  3. Pre RTU-over-TCP cez sériový most potvrďte, že most beží v rámcovom RTU režime (nie raw TCP socket) a že medzi-znaková medzera na sériovej strane rešpektuje časovanie 9600 baud 8N1.
  4. Ak sa symptómy objavili po zmene Slave ID cez šablónu Resi Dali - Konfigurácia, znova importujte túto runtime šablónu s novým importným parametrom SlaveId — predchádzajúci importovaný modul stále pollie na starej adrese.

Dostupné zariadenia

Resi DALI Modul
Servisné atribúty
Slave IDČíta Modbus Unit ID uložené vo FLASH registri H:65221 — aktívne iba keď DIP4=OFF (továrenský default 255). Použite na overenie adresy brány pred pridaním ďalších zariadení.

Resi Dali

Servisné atribúty
${xml_slave_id}
modbusr(H,65221,uint16)
Gear 0 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 0 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 0

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 1 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 1 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 1

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 2 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 2 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 2

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 3 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 3 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 3

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 4 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 4 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 4

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 5 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 5 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 5

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 6 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 6 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 6

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 7 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 7 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 7

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 8 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 8 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 8

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 9 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 9 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 9

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 10 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 10 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 10

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 11 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 11 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 11

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 12 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 12 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 12

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 13 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 13 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 13

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 14 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 14 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 14

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 15 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 15 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 15

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 16 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 16 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 16

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 17 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 17 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 17

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 18 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 18 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 18

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 19 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 19 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 19

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 20 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 20 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 20

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 21 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 21 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 21

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 22 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 22 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 22

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 23 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 23 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 23

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 24 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 24 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 24

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 25 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 25 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 25

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 26 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 26 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 26

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 27 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 27 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 27

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 28 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 28 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 28

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 29 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 29 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 29

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 30 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 30 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 30

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 31 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 31 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 31

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 32 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 32 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 32

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 33 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 33 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 33

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 34 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 34 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 34

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 35 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 35 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 35

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 36 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 36 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 36

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 37 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 37 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 37

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 38 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 38 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 38

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 39 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 39 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 39

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 40 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 40 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 40

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 41 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 41 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 41

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 42 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 42 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 42

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 43 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 43 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 43

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 44 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 44 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 44

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 45 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 45 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 45

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 46 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 46 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 46

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 47 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 47 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 47

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 48 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 48 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 48

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 49 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 49 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 49

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 50 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 50 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 50

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 51 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 51 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 51

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 52 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 52 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 52

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 53 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 53 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 53

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 54 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 54 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 54

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 55 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 55 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 55

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 56 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 56 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 56

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 57 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 57 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 57

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 58 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 58 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 58

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 59 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 59 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 59

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 60 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 60 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 60

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 61 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 61 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 61

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 62 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 62 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 62

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Gear 63 Stmievač

DALI ovládacie zariadenie pri krátkej adrese 63 — TapHome stmievač namapovaný na DALI arc power 0–100 % cez H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL cez H:511 (čítanie), ohraničený vlastnou MIN / MAX LEVEL gear-u.

Register: H:511H:510 UInt16 Jednotka: % numeric
Servisné atribúty
Krátka adresaDALI krátka adresa (0–63) cielená týmto zariadením — fixovaná v čase importu šablóny a použitá v hornom byte každého Modbus zápisu.
Device TypeDALI byte device-type vrátený cez QUERY DEVICE TYPE (0x99) — hlási DT0 (fluorescenčný), DT6 (LED ovládač), DT8 (farebný / tunable white) atď., alebo -- keď bez odpovede.
Physical Min LevelHardvérom vynútená minimálna úroveň stmievania, ktorú gear hlási — čítané z QUERY PHYSICAL MIN LEVEL (0x9A), v percentách.
Max LevelNakonfigurovaný DALI MAX LEVEL — čítané z QUERY MAX LEVEL (0xA1); použité ako horná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čítané z QUERY MIN LEVEL (0xA2); použité ako dolná hranica pri škálovaní TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnove napájania DALI zbernice — čítané z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas prijatý, keď DALI zbernica stratí komunikáciu na viac ako 500 ms — čítané z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČiarkami oddelený zoznam DALI skupín (0–15), do ktorých gear patrí — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None alebo napr. 0,3,7.
Support Lamp FailureČi lampa / ovládač podporuje detekciu poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickom readscripte.
Support Power FailureČi lampa / ovládač podporuje detekciu poruchy napájania — Yes / No / --. Kontroluje chybu Power failure! v periodickom readscripte.
Servisné akcie
Add to GroupPridá tento gear do DALI skupiny (0–15) cez ADD TO GROUP (0x60+grp) — auto-opakované do 100 ms, ako vyžadujú DALI konfiguračné príkazy.
Remove from GroupOdstráni tento gear z DALI skupiny (0–15) cez REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosiela DALI RESET (0x20) — obnoví každý NVM parameter gear-u (max / min / power-on / system-failure level, členstvo v skupinách, scény) na továrenský default.
Set Startup LevelsZachytí aktuálnu arc power a uloží ju ako Power On Level a System Failure Level — postupnosť STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 63

Čítanie (modul)
var x := 0; var rx := 0;
if Status > 0
    Status := Status -1;
    adderror("Gear not responding!");
    return(0);
end

checkStatus := checkStatus -1;
if checkStatus < 1
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if x != 0x8000
        if x != 0xFF
        Status := RANDINT(10, 60);
            adderror("Gear not present!");
        else
            Status := 0;
            checkStatus := 60;
        end
    else
        Status := RANDINT(10, 60);
        adderror("Gear not responding!");
    end
end
    
if suppLampFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end

if suppPowerFailure
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);       
end
Inicializácia
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
    if x != 0xFF
    Status := RANDINT(1, 60);
    else
        Status := 0;
    end
else
    Status := RANDINT(1, 60);
end

if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, minLevel := x );
    
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000, maxLevel := x );
end
Čítanie úrovne
var x := 0; var rx := 0;
if Status = 0
    if minLevel = 0
        modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 511, uint16);
        if (x != 0x8000, minLevel := x );
    end
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x != 0x8000 or rx, checkStatus := 60);
    if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1))  ), return (Le));
else
    return(NaN);
end
Zápis úrovne
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisné atribúty
${xml_short_address}
ShortAddress
${xml_device_type}
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return("DT" + x));
end

return("--")
Physical Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Max Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Min Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
Power Up Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
System Failure Level
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, return(round((x / 0xFE) * 100) + " %"));
end

return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g1 := modbusr(SH, 511, uint16);
    if (g1 = 0x8000, return("--")); 

    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var g2 := modbusr(SH, 511, uint16);
    if (g2 = 0x8000, return("--")); 

    var ret := "";

    if (getbit(g1, 0), ret := ret + "0");
    if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
    if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
    if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
    if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
    if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
    if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
    if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
    if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
    if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
    if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
    if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
    if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
    if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
    if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
    if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));

    if (ret = "", return("None"), return(ret));
else
    return("--");
end
Support Lamp Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);

    if (suppLampFailure, return("Yes"), return("No"));
end

return("--")
Support Power Failure
if Status = 0
    modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
    sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    var x := modbusr(SH, 511, uint16);
    if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);

    if (suppPowerFailure, return("Yes"), return("No"));
end

return("--")
Servisné akcie
${xml_add_to_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametre: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x70 + grp);
${xml_reset_to_default_settings}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x20);
${xml_set_startup_levels}
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x21);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2c);
sleep(10);
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x2d);
Group 0 Stmievač

DALI broadcast skupina 0 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 0

Zápis úrovne
var GroupAddress := 0;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 0;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 0;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 1 Stmievač

DALI broadcast skupina 1 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 1

Zápis úrovne
var GroupAddress := 1;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 1;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 1;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 2 Stmievač

DALI broadcast skupina 2 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 2

Zápis úrovne
var GroupAddress := 2;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 2;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 2;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 3 Stmievač

DALI broadcast skupina 3 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 3

Zápis úrovne
var GroupAddress := 3;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 3;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 3;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 4 Stmievač

DALI broadcast skupina 4 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 4

Zápis úrovne
var GroupAddress := 4;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 4;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 4;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 5 Stmievač

DALI broadcast skupina 5 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 5

Zápis úrovne
var GroupAddress := 5;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 5;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 5;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 6 Stmievač

DALI broadcast skupina 6 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 6

Zápis úrovne
var GroupAddress := 6;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 6;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 6;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 7 Stmievač

DALI broadcast skupina 7 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 7

Zápis úrovne
var GroupAddress := 7;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 7;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 7;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 8 Stmievač

DALI broadcast skupina 8 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 8

Zápis úrovne
var GroupAddress := 8;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 8;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 8;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 9 Stmievač

DALI broadcast skupina 9 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 9

Zápis úrovne
var GroupAddress := 9;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 9;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 9;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 10 Stmievač

DALI broadcast skupina 10 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 10

Zápis úrovne
var GroupAddress := 10;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 10;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 10;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 11 Stmievač

DALI broadcast skupina 11 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 11

Zápis úrovne
var GroupAddress := 11;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 11;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 11;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 12 Stmievač

DALI broadcast skupina 12 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 12

Zápis úrovne
var GroupAddress := 12;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 12;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 12;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 13 Stmievač

DALI broadcast skupina 13 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 13

Zápis úrovne
var GroupAddress := 13;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 13;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 13;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 14 Stmievač

DALI broadcast skupina 14 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 14

Zápis úrovne
var GroupAddress := 14;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 14;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 14;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 15 Stmievač

DALI broadcast skupina 15 (0–15) — write-only TapHome stmievač, ktorý broadcastuje jednu hodnotu arc-power každému gear-u v tejto skupine cez H:520 GROUP LEVEL. Zbernica nezvracia úrovne skupín, takže TapHome drží poslednú zapísanú hodnotu.

UInt16 Jednotka: % numeric
Servisné akcie
Add All Lamps to GroupBroadcastuje ADD TO GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici vstúpi do tejto skupiny bez ohľadu na svoju aktuálnu krátku adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP cez H:532 ALL COMMAND + REPEAT — každý gear na zbernici opustí túto skupinu.

Group 15

Zápis úrovne
var GroupAddress := 15;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisné akcie
${xml_add_to_group_all_lamps}
var GroupAddress := 15;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 15;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Pripojenie: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Možné vylepšenia (23)
  • H:531 ALL COMMAND (broadcast DALI command) — Single-shot broadcast DALI command (no repeat). Template uses H:532 (ALL COMMAND + REPEAT) for group membership but never exposes plain ALL OFF / ALL ON / ALL ARC POWER as a service action — turn-on/off-all are not present (sibling daliconfig template has them via H:530)
  • H:530 ALL LEVEL (broadcast arc power) — Sets brightness for every gear in one Modbus write. Convenient 'turn off all lamps' / 'turn on all lamps' shortcut — implemented in the sibling daliconfig template, missing in this operational template
  • H:521 GROUP COMMAND (per-group DALI command) — Per-group DALI command (single-shot). Could expose group-level OFF / RECALL MIN / RECALL MAX / GO TO SCENE as service actions on each Group device, but template only writes H:520 GROUP LEVEL
  • H:522 GROUP COMMAND + REPEAT — Per-group DALI configuration command (auto-repeated within 100 ms). Required for STORE DTR AS GROUP SCENE etc. — not exposed as a service action
  • H:541 DIRECT 16-BIT FRAME — Raw DALI 1.0 frame send. Used by sibling daliconfig template for the DALI 2.0 random-addressing algorithm; not needed for runtime brightness control
  • I:10020-I:10027 DALI 24-BIT FRAME — DALI 2.0 24-bit frames — required for DT8 colour control (XY, colour temperature, RGBW), DALI 2.0 control gear queries, and DALI-2 input devices (push-buttons, presence detectors). Template exposes only DALI 1.0 brightness layer per gear
  • I:10030-I:10047 DALI 25-BIT eDALI FRAME — Lunatone-proprietary 25-bit eDALI frames (auto and user redundant-bit variants). Not used by any DALI 1.0 gear
  • I:10050-I:10067 DALI 28-BIT / 32-BIT FRAME — Extended DALI 2.0 frames (memory bank access, DALI-2 application controllers). Template scope is single-channel arc power per gear
  • H:500 (DSI VALUE) DSI 8-bit value send — Send a raw 8-bit DSI/DALI value with no addressing (bus-level diagnostics). Bypassed by every TapHome script
  • C:0 / H:551 DALI Bus Error — 1 = DALI bus fault / short circuit / missing PSU. Useful diagnostic — could be added as a module-level service attribute. Currently bus errors only surface indirectly through 'Gear not responding!' errors emitted by per-gear readscripts
  • H:100 DALI PRIORITY SLOT — 0..4 → 12-16 ms forward-frame timing. Default 2 (configuration). Bus-tuning parameter; template runs at default
  • H:6000 DIP SWITCH / SOFTWARE RESET — Read returns the 4 DIP switch values; write 1 reboots the gateway. Sibling daliconfig template exposes Reset Gateway / Set Slave ID; this runtime template intentionally does not (commissioning concern)
  • H:65222 / H:65224 / H:65225 BAUD_RATE / PARITY / STOP_BITS (FLASH) — FLASH-stored serial parameters. Template hard-codes 9600 8N1 in connection_details, so these are out of scope
  • I:0 / I:50-I:53 / scenes DALI 1.0 scenes (recall / store / query) — DALI 1.0 standard supports 16 stored scenes per gear/group recallable via GO TO SCENE (0x10..0x1F) and storable via STORE DTR AS SCENE (0x40..0x4F). Template exposes per-gear ADD/REMOVE FROM GROUP and RESET, but no scene recall/store/remove/query actions
  • H:512 (RECALL MAX/MIN/GOTO LAST/UP/DOWN/STEP) DALI 1.0 high-level commands per gear — RECALL MAX LEVEL (0x05), RECALL MIN LEVEL (0x06), UP (0x01), DOWN (0x02), STEP UP (0x03), STEP DOWN (0x04), GO TO LAST ACTIVE LEVEL (0x0A) — useful as service actions for visual feedback / smooth dimming. Not exposed; brightness goes only through linear scaling
  • H:512 (STORE DTR AS MAX/MIN/POWER ON/SYSTEM FAILURE LEVEL) Per-gear configuration write commands — STORE DTR AS MAX LEVEL (0x2A), STORE DTR AS MIN LEVEL (0x2B), STORE DTR AS POWER ON LEVEL (0x2C), STORE DTR AS SYSTEM FAILURE LEVEL (0x2D), STORE DTR AS FADE TIME / FADE RATE — template has 'Set Startup Levels' (combines 0x21, 0x2C, 0x2D) but does NOT expose individual writes for max/min/fade-time/fade-rate
  • H:511 (QUERY FADE TIME / FADE RATE / RANDOM ADDRESS / EXT VERSION) Additional DALI queries — QUERY FADE TIME / FADE RATE (0xA5), QUERY VERSION NUMBER (0x97), QUERY RANDOM ADDRESS H/M/L (0x98/0xC2/0xC3), QUERY CONTENT DTR/DTR1/DTR2 — not exposed in service attributes, only the 10 attributes listed per gear are populated
  • H:511 (QUERY CONTROL GEAR / RESET STATE / LIMIT ERROR / LAMP POWER ON / MISSING SHORT ADDRESS) DALI gear health / topology queries — QUERY CONTROL GEAR (0x90), QUERY RESET STATE (0x95), QUERY LIMIT ERROR (0x94), QUERY LAMP POWER ON (0x93), QUERY MISSING SHORT ADDRESS (0x96, broadcast) — diagnostic queries. Could be useful as module-level diagnostics; template exposes only QUERY STATUS / LAMP FAILURE / POWER FAILURE / DEVICE TYPE / MIN-MAX-PHYSICAL MIN-POWER UP-SYSTEM FAILURE LEVEL / GROUPS
  • H:511 (READ MEMORY LOCATION 0xC5) DALI memory bank read — READ MEMORY LOCATION (0xC5) is required to read DALI 2.0 memory banks (Bank 0 device GTIN, FW version, serial number; Bank 1 for emergency lighting). Not used
  • ASCII protocol commands Parallel ASCII text protocol — RESI gateway also exposes a CR-terminated text protocol (#LARC, #GARC, #AARC, #LGS, #LCMD, #LCMDA, #DALI CMDxx etc.). Template uses Modbus exclusively — ASCII would only matter for diagnostics/terminal access
  • DT6 fade time / fade rate / DAPC sequence Smooth dimming primitives — DAPC (Direct Arc Power Control) sequence allows fast continuous level updates for smooth dimming. Each gear has stored fade time / fade rate that affect transitions. Template writes raw arc power without configuring fade behaviour
  • DT8 colour control (XY, colour temperature, RGBW) DALI DT8 tunable white / RGB / RGBW — DT8 colour control gears (tunable white CCT, XY colour, RGBW) require DALI 2.0 24-bit frames sent via H:541 / I:10020. Template exposes plain ModbusDimmer per gear — for DT8 lamps use a dedicated DT8 template
  • DT1 emergency lighting DALI DT1 self-contained emergency lights — Emergency-luminaire device type with periodic self-tests (function/duration test) and battery state queries. Out of scope — template is general-purpose dimming

Zdroje

Našli ste problém s touto šablónou zariadenia?

Napíšte nám, čo nefunguje, čo chýba, alebo ako by sa mala šablóna správať. Vaša spätná väzba nám pomáha udržiavať katalóg presný.

Overené TapHomom

Chcete to použiť vo svojom TapHome jadre?

Otvorte túto šablónu v Customer Portali a aplikujte ju na svoj domov, alebo navrhnite zmenu a odošlite ju späť do katalógu.

Otvoriť v portáli