TapHome

Resi DALI

Modbus RTU
Přidal
Poslední aktualizace: 06. 2026

Vyžaduje externí bránu

Resi RESI-DALI-PS — stránka produktu

Resi DALI

Šablona Resi DALI je runtime provozní protějšek nástroje Resi Dali - Konfigurace na uvedení do provozu. Připojuje TapHome k plně adresované DALI světelné sběrnici přes bránu RESI-DALI-SIO nebo RESI-DALI-ETH (Modbus-DALI) a zpřístupňuje denní řízení pro až 64 individuálně adresovaných DALI ovládacích zařízení (gears) (krátké adresy 0–63) a 16 DALI broadcast skupin (0–15), plus per-gear DALI 1.0 stav, diagnostiku poruch lampy a poruch napájení.

Komunikace s bránou používá Modbus RTU při 9600 baud 8N1. Zápisy jasu jdou do H:510 LAMP LEVEL (per-gear) a H:520 GROUP LEVEL (per-skupinu); per-gear konfigurační příkazy a dotazy jsou tunelovány přes H:511 LAMP COMMAND / H:512 LAMP COMMAND + REPEAT, přičemž registr brány H:550 DALI STATUS se polluje kvůli připravenosti odpovědi.

Tato šablona předpokládá, že DALI krátké adresy jsou již naprogramovány na sběrnici. Pokud gear-y ještě nemají adresu, použijte nejprve šablonu Resi Dali - Konfigurace (nebo bezplatný nástroj výrobce MODBUSConfigurator / DCA) ke spuštění průvodce náhodným adresováním DALI 2.0 — viz Vztah ke konfigurační šabloně níže.

Hardwarové připojení

RESI-DALI-SIO (RS-485) a RESI-DALI-ETH (Ethernet) jsou master brány na DIN lištu, které sedí mezi sériovým/Ethernet hostem a DALI světelnou sběrnicí. SIO je v pouzdře CEM17 (17,5 × 90 × 56,4 mm) a ETH v širším pouzdře CEM35 (35,8 × 90 × 56,4 mm), aby se vešel RJ45 konektor. Žádná z bran nenapájí DALI sběrnici sama — průvodní DALI bus napájecí zdroj (RESI-DALI-PS nebo libovolný kompatibilní 200 mA DALI PSU) je povinný.

Zapojení RESI-DALI-SIO (RS-485)
Schéma zapojení RESI-DALI-SIO — externí DALI PSU (nahoře) a kombinace s RESI-DALI-PS (dole)

Svorky na levé straně RESI-DALI-SIO (shora → dolů): GND, +12..48V=, RS485 DATA+ (A+), RS485 DATA- (B-), RS485 GND, RS232 TX, RS232 RX, RS232 GND. Svorky DALI sběrnice na opačné straně jsou D+ / N/C / D- (3-pinový USLIM blok, prostřední N/C pin zůstává nezapojený).

Pro TapHome instalaci použijte rozhraní RS-485:

  • RS485 DATA+ (A+) → A+/D+ na TapHome RS-485 sběrnici
  • RS485 DATA- (B-) → B-/D- na TapHome RS-485 sběrnici
  • RS485 GND → GND na TapHome napájecím zdroji (doporučeno pro stabilní komunikaci)
  • +12..48V= / GND → 12–48 V DC primární napájení
Zapojení RESI-DALI-ETH (Ethernet)
Schéma zapojení RESI-DALI-ETH — externí DALI PSU (nahoře) a kombinace s RESI-DALI-PS (dole)

Ethernetová varianta má stejné svorky DALI sběrnice (D+ / N/C / D-) a vstupy primárního napájení (GND, +12..48V=), plus jediný RJ45 konektor pro 10/100 Mbit Ethernet. Tovární IP nastavení jsou 192.168.0.191 / 255.255.255.0 / 192.168.0.1 s Modbus Unit ID 255; vestavěné webové UI používá přihlašovací údaje RESI / RESI.

Protože jde o Modbus RTU šablonu, TapHome nekomunikuje s RESI-DALI-ETH přes nativní Modbus/TCP. Použijte ho raději v transparentním režimu RTU-over-Ethernet, nebo umístěte SIO za sériově-IP most (Moxa NPort, USR-TCP232) — viz Konfigurace → Nastavení RTU-over-TCP níže.

DALI bus napájecí zdroj (RESI-DALI-PS)
RESI-DALI-PS — napájení DALI sběrnice samostatně (nahoře) a kombinace se SIO/ETH bránou (dole)

RESI-DALI-PS dodává až 200 mA na DALI sběrnici (zkratový proud ~225 mA, napětí sběrnice typicky 14–18 V) a podporuje až 64 DALI 1.0 předřadníků nebo DALI 2.0 ovládacích zařízení na jedné lince. Primární strana akceptuje stejné 12–48 V DC napájení jako jednotka SIO/ETH. Brána a PSU se připojují na stejný pár D+ / D- — PSU napájí sběrnici, zatímco brána čte a zapisuje DALI rámce.

Tři LED diody na PSU pomáhají při diagnostice poruch: POWER (primární 12–48 V OK, během normálního provozu vždy svítí), DALI (krátce bliká při DALI komunikaci), ERR (trvale svítí při poruše PSU, DALI zkratu nebo přetížení sběrnice — během normálního provozu musí být zhasnutá).

Topologie DALI sběrnice

DALI linka má několik tvrdých omezení, která přímo ovlivňují stabilitu provozu:

Průřez vodičeMax délka DALI kabelu
1,5 mm²300 m
1,0 mm²238 m
0,75 mm²174 m
0,5 mm²116 m

Limit vychází z maximálně povoleného úbytku napětí 2 V na DALI kabelu. Další pravidla:

  • Maximálně 64 DALI 1.0 předřadníků a až 64 DALI 2.0 ovládacích zařízení na sběrnici (oddělené prostory krátkých adres).
  • Pouze stromová topologie — žádné kruhy, žádné smyčky.
  • Skutečný počet gear-ů závisí také na jmenovitém proudu PSU (typicky 200 mA na RESI-DALI-PS; počítejte ~2 mA na gear plus rezervu).

RESI-DALI-PS (nebo ekvivalentní DALI PSU) je povinný. Bez něj brána nemůže napájet sběrnici a každé per-gear čtení skončí timeoutem “Gear not present!”. Pokud se na dlouhou linku přidá druhý PSU, vložte DALI tlumivku nebo rozdělte sběrnici na galvanicky oddělené segmenty.

Konfigurace

Aktivace Modbus komunikace

Sériové parametry hosta na RESI-DALI-SIO se volí 4-polohovým DIP přepínačem na modulu. TapHome šablona je fixně nastavena na 9600 baud 8N1, takže DIP přepínače musí odpovídat.

DIP1DIP2Baud rate
OFFOFF9600 bd (vyžadováno TapHome)
ONOFF19200 bd
OFFON38400 bd
ONONPoužije baud rate z FLASH (tovární default 57600 bd)
DIP4Zdroj Modbus Unit ID
OFFFLASH registr H:65221 je akceptován — vyžadováno, pokud byla během uvedení do provozu naprogramována nestandardní Slave ID
ONHardwarový fallback — Unit ID je vynuceně 255, FLASH hodnota je ignorována

DIP3 je pro produkt vyhrazený rezervní bit; nechejte ho v tovární poloze. Parita je fixní na None a stop bit na 1 (formát rámce 8N1) pro kombinace DIP1/DIP2 baud rate vybrané výše.

RS-485 zakončení: ukončete sběrnici odporem 120 Ω na obou koncích. TapHome Core poskytuje jedno zakončení na svých BUS svorkách; pokud je RESI brána posledním zařízením na lince, přidejte diskrétní 120 Ω rezistor mezi A+ / B- na jejích RS-485 svorkách.

Slave ID

Tovární předvolená Modbus Unit ID je 255 (FLASH registr H:65221 čte 0xFFFF, což brána klampuje na 255). Šablona zpřístupňuje servisní atribut na úrovni modulu Slave ID, který zpětně čte tento registr, takže nakonfigurovanou adresu lze ověřit po importu.

Změna Slave ID je záležitost uvedení do provozu řešená sesterskou šablonou Resi Dali - Konfigurace — tato runtime šablona záměrně nezapisuje do H:65221 ani nespouští softwarový reset, takže může zůstat aktivní v projektu bez rizika náhodné rekonfigurace brány.

Nastavení RTU-over-TCP

Protože šablona používá Modbus RTU spojení, nabízí se také importní parametr IpAddress pro instalace, kde TapHome dosáhne brány přes sériově-IP most (Moxa NPort, USR-TCP232) nebo přes RESI-DALI-ETH v transparentním režimu RTU-over-Ethernet. V tom případě nasměrujte IpAddress na IP mostu / ETH jednotky a všechna ostatní nastavení ponechejte stejná jako u RS-485 varianty. Pro čistý Modbus/TCP by byla přirozenější TCP-based šablona — tato Modbus RTU šablona konkrétně očekává rámcovanou RTU komunikaci.

Pouze jeden Modbus master najednou. Ani DALI ani Modbus RTU nearbitrují mezi souběžnými master-y. Pokud PLC, BMS nebo PC nástroj (například MODBUSConfigurator) také polluje bránu, dotazy gear-ů budou kolidovat a TapHome bude hlásit sporadické chyby “Gear not responding!”.

Vztah ke konfigurační šabloně

Tatáž definice Dali.xml se s RESI bránou dodává jako dvě komplementární TapHome šablony, které pracují na různých fázích životního cyklu stejného hardwaru:

ŠablonaFázeCo děláKdy použít
Resi Dali - Konfigurace (resi-dali-daliconfig)Jednorázové uvedení do provozuPrůvodce DALI 2.0 náhodným adresováním, per-adresa probe device-type, broadcast ON/OFF testy zdraví, Set Slave ID, Reset GatewayNová instalace: přiřaďte krátké adresy 0–63 ovládacím zařízením, ověřte které adresy jsou obsazené
Resi DALI (resi-dali-dali, tato šablona)Denní runtime řízeníPer-gear stmívání (64 gear-ů), skupinové stmívání (16 skupin), per-gear DALI 1.0 diagnostika, správa členství ve skupináchPo uvedení do provozu: koncové řízení osvětlení

Typický průběh projektu:

  1. Zapojte a napájejte DALI sběrnici (RESI-DALI-PS) a bránu.
  2. Importujte šablonu Resi Dali - Konfigurace, spusťte Reset Short AddressesStartScan / SEARCHADDR / COMPARE / PROGRAM SHORT ADDRESS / Check, dokud každý viditelný gear nemá krátkou adresu. Ověřte přes Gear 0..63 a Turn On / Off All Lamps.
  3. Odstraňte modul Resi Dali - Konfigurace z projektu.
  4. Importujte šablonu Resi DALI (tuto) na runtime řízení. Namapujte zařízení Gear N a Group N na TapHome scény, časovače a pravidla.

Obě šablony mohou také dočasně koexistovat — např. při přidávání nového gear-u do živé instalace — ale jen jedna by měla posílat Modbus komunikaci najednou. Runtime šablona záměrně vynechává akce rekonfigurace brány (Reset Gateway, Set Slave ID, broadcast ALL LEVEL), aby mohla zůstat v projektu bez rizika přepsání nastavení uvedení do provozu.

Bezplatný DCA nástroj výrobce MODBUSConfigurator (Windows, dostupný ze stránky RESI) lze také použít pro uvedení do provozu místo TapHome šablony Resi Dali - Konfigurace. Runtime šablona Resi DALI funguje stejně bez ohledu na to, který nástroj byl použit pro přiřazení krátkých adres.

Schopnosti zařízení

Šablona zpřístupňuje 80 DALI zařízení v TapHome, organizovaných ve dvou paralelních skupinách: 64 stmívačů Gear (jeden na každou DALI krátkou adresu) a 16 stmívačů Group (jeden na každou DALI skupinu). Jeden servisní atribut na úrovni modulu doplňuje obraz.

Per-gear stmívání — Gear 0 … Gear 63

Každé z 64 servisních zařízení Gear 0, Gear 1, … Gear 63 je TapHome stmívač, který cílí na jediné DALI ovládací zařízení při odpovídající krátké adrese. Zápisy jasu jdou do H:510 LAMP LEVEL (TapHome 0–100 % je škálováno lineárně do rozsahu DALI arc power, ohraničeného vlastní MIN LEVEL a MAX LEVEL gear-u); skutečná úroveň se zpětně čte z H:511 přes DALI příkaz QUERY ACTUAL LEVEL (0xA0) a přeškáluje se zpět do 0–100 %.

Když šablona importuje gear, init script nejprve probuje gear přes QUERY STATUS (0x91); odpověď 0x8000 „bez odpovědi" označí gear jako nepřítomný (s 1–60 s exponenciálním back-off) a v TapHome logu vypíše „Gear not present!". Pokud gear odpoví, init script dále přečte 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 pro periodický readscript.

Každý gear zpřístupňuje 10 servisních atributů, které na požádání čtou DALI 1.0 / 2.0 dotazy:

Servisní atributDALI příkazHlásí
Short Address(interní)Krátká adresa (0–63), na kterou toto zařízení cílí — fixovaná v čase importu šablony
Device TypeQUERY DEVICE TYPE (0x99)DT{n} (např. DT0 fluorescenční, DT6 LED, DT8 barevný / tunable white) nebo -- když bez odpovědi
Physical Min LevelQUERY PHYSICAL MIN LEVEL (0x9A)Hardwarem vynucená minimální úroveň stmívání v %
Max LevelQUERY MAX LEVEL (0xA1)Nakonfigurovaná horní hranice použitá při škálování 0–100 % na DALI arc power
Min LevelQUERY MIN LEVEL (0xA2)Nakonfigurovaná dolní hranice použitá při škálování 0–100 % na DALI arc power
Power Up LevelQUERY POWER ON LEVEL (0xA3)Jas obnovený po opětovném napájení DALI sběrnice
System Failure LevelQUERY SYSTEM FAILURE LEVEL (0xA4)Jas přijatý, když sběrnice ztratí komunikaci na >500 ms
GroupsQUERY GROUPS 0-7 (0xC0) + QUERY GROUPS 8-15 (0xC1)Čárkami oddělený seznam DALI skupin, do kterých gear patří (None nebo např. 0,3,7)
Support Lamp FailureQUERY LAMP FAILURE (0x92) capability bitYes / No / -- — kontroluje chybu „Lamp failure!" v periodickém readscriptu
Support Power FailureQUERY POWER FAILURE (0x9B) capability bitYes / No / -- — kontroluje chybu „Power failure!" v periodickém readscriptu

Periodický readscript na každém gear-u čte aktuální arc úroveň (0xA0) a, když je podporováno, sleduje příznaky poruch lampy a poruch napájení — vystavené jako TapHome warningy/chyby, takže porucha zářivkové trubice nebo vypadlý LED ovladač se zobrazí v aktivity logu bez manuálního pollování.

Akce konfigurace per-gear

Čtyři servisní akce na každém Gear N zařízení zapisují DALI konfigurační příkazy (auto-opakované do 100 ms přes H:512 LAMP COMMAND + REPEAT, jak vyžadují non-volatile DALI příkazy):

  • Add to Group (parametr Group ID 0–15) — posílá ADD TO GROUP (0x60+grp), takže gear vstoupí do zvolené DALI skupiny a bude poslouchat následné broadcast zápisy skupiny.
  • Remove from Group (parametr Group ID 0–15) — posílá REMOVE FROM GROUP (0x70+grp).
  • Reset to Default Settings — posílá DALI RESET (0x20); obnoví všechny NVM parametry gear-u (max/min/power-on/system-failure level, členství ve skupinách, scény) na tovární default.
  • Set Startup Levels — zachytí aktuální arc power a uloží ji jako Power On Level i System Failure Level v pořadí: 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 mezerou.
Skupinové stmívání — Group 0 … Group 15

Každé z 16 servisních zařízení Group 0, Group 1, … Group 15 je write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u patřícímu do té DALI skupiny, používající H:520 GROUP LEVEL (TapHome 0–100 % se násobí 0xFE → DALI arc power 0–254). DALI nepovoluje bráně zpětně číst úroveň skupiny — sběrnice nese pouze broadcast zápis — takže TapHome drží poslední zapsanou hodnotu jako „aktuální" úroveň. Na zařízeních skupiny nejsou žádné init ani read scripty.

Každé zařízení Group N zpřístupňuje dvě servisní akce pro hromadnou správu členství:

  • Add All Lamps to Group — broadcastuje ADD TO GROUP (0x60+grp) přes H:532 ALL COMMAND + REPEAT. Každý gear na sběrnici vstoupí do skupiny bez ohledu na svou aktuální krátkou adresu.
  • Remove All Lamps from Group — broadcastuje REMOVE FROM GROUP (0x70+grp). Každý gear opustí skupinu.

Použijte skupinové stmívání pro „kuchyňská světla", „obývací downlighty" nebo libovolnou zónu, kde má více gear-ů sledovat jediný stmívač. Skupinové zápisy jsou mnohem efektivnější než paralelní řízení jednotlivých gear-ů — jediná Modbus transakce dosáhne až 64 gear-ů současně.

Diagnostika na úrovni modulu

Modul zpřístupňuje jediný servisní atribut:

  • Slave ID — čte Modbus Unit ID uložené ve FLASH registru H:65221. Aktivní pouze když DIP4 = OFF; při DIP4 = ON brána vynutí adresu 255 bez ohledu na FLASH hodnotu. Použijte k ověření adresy brány před přidáváním dalších zařízení, zejména po kole uvedení do provozu, které zapsalo nestandardní ID.

Řešení problémů

„Gear not present!" na známém adresovaném gear-u
  1. Ověřte napětí DALI sběrnice na gear-u: 11,5–22,5 V (typicky 14–16 V). Nižší hodnoty obvykle indikují zkrat nebo sběrnici, která je příliš dlouhá pro průřez kabelu (viz Topologie DALI sběrnice).
  2. Zkontrolujte LED ERR na RESI-DALI-PS — pokud svítí, sběrnice je ve zkratu, přetížená nebo PSU je vadný.
  3. Spusťte znovu probování Gear N v sesterské šabloně Resi Dali - Konfigurace — runtime šablona zkouší znovu jen každých 1–60 s s exponenciálním back-off, konfigurační šablona dává okamžité pass/fail per adresu.
  4. Ověřte, zda gear vůbec má krátkou adresu. Pokud byl vyměněn nebo továrně resetován na sběrnici, bude bez adresy a musí být znovu uveden do provozu přes Resi Dali - Konfigurace.
Skupinové stmívání nemá efekt
  1. Ověřte, že alespoň jeden gear je členem skupiny — otevřete Gear N → Groups na každém podezřelém členu a zkontrolujte, zda se ID skupiny objevuje v čárkami odděleném seznamu.
  2. Pokud chybí členství, spusťte akci Add to Group na každém gear-u jednotlivě, nebo použijte Add All Lamps to Group na zařízení skupiny pro broadcast po celé sběrnici.
  3. Pamatujte, že Group N je write-only — slider stmívače v TapHome ukládá poslední zapsanou hodnotu, ale neodráží skutečný stav sběrnice. Pokud jsou gear-y vypnuté, příkaz úrovně skupiny na nich nemá efekt.
Porucha lampy / porucha napájení nejsou hlášeny
  1. Otevřete servisní atributy gear-u a zkontrolujte Support Lamp Failure / Support Power Failure. Pokud kterýkoliv čte No, ovladač gear-u neimplementuje ten DALI 1.0 dotaz — periodický readscript blokuje odpovídající chybu a nikdy nebude varovat pro ten gear.
  2. Spusťte Reset to Default Settings na gear-u a znovu importujte zařízení. Init script znovu prověří oba capability bity během dalšího čtecího cyklu.
Sporadické Modbus chyby po uvedení do provozu
  1. Ujistěte se, že žádný jiný Modbus master (MODBUSConfigurator, PLC, BMS) souběžně nepolluje bránu. DALI a Modbus nearbitrují mezi master-y.
  2. Ověřte, že RS485 GND je připojen mezi bránou a společnou zemí TapHome napájecího zdroje — chybějící GND je nejčastější chyba RS-485 na dlouhých linkách.
  3. Pro RTU-over-TCP přes sériový most potvrďte, že most běží v rámcovém RTU režimu (ne raw TCP socket) a že mezi-znaková mezera na sériové straně respektuje časování 9600 baud 8N1.
  4. Pokud se symptomy objevily po změně Slave ID přes šablonu Resi Dali - Konfigurace, znovu importujte tuto runtime šablonu s novým importním parametrem SlaveId — předchozí importovaný modul stále polluje na staré adrese.

Dostupná zařízení

Resi DALI Modul
Servisní atributy
Slave IDČte Modbus Unit ID uložené ve FLASH registru H:65221 — aktivní pouze když DIP4=OFF (tovární default 255). Použijte k ověření adresy brány před přidáním dalších zařízení.

Resi Dali

Servisní atributy
${xml_slave_id}
modbusr(H,65221,uint16)
Gear 0 Stmívač

DALI ovládací zařízení při krátké adrese 0 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 0

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 1 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 1

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 2 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 2

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 3 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 3

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 4 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 4

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 5 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 5

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 6 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 6

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 7 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 7

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 8 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 8

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 9 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 9

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 10 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 10

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 11 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 11

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 12 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 12

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 13 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 13

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 14 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 14

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 15 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 15

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 16 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 16

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 17 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 17

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 18 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 18

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 19 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 19

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 20 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 20

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 21 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 21

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 22 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 22

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 23 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 23

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 24 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 24

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 25 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 25

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 26 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 26

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 27 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 27

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 28 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 28

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 29 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 29

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 30 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 30

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 31 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 31

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 32 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 32

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 33 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 33

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 34 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 34

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 35 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 35

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 36 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 36

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 37 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 37

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 38 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 38

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 39 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 39

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 40 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 40

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 41 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 41

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 42 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 42

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 43 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 43

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 44 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 44

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 45 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 45

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 46 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 46

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 47 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 47

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 48 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 48

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 49 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 49

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 50 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 50

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 51 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 51

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 52 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 52

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 53 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 53

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 54 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 54

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 55 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 55

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 56 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 56

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 57 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 57

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 58 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 58

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 59 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 59

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 60 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 60

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 61 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 61

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 62 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 62

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI ovládací zařízení při krátké adrese 63 — TapHome stmívač namapovaný na DALI arc power 0–100 % přes H:510 LAMP LEVEL (zápis) a QUERY ACTUAL LEVEL přes H:511 (čtení), ohraničený vlastní MIN / MAX LEVEL gear-u.

Registr: H:511H:510 UInt16 Jednotka: % numeric
Servisní atributy
Krátká adresaDALI krátká adresa (0–63) cílená tímto zařízením — fixovaná v čase importu šablony a použitá v horním bytu každého Modbus zápisu.
Device TypeDALI byte device-type vrácený přes QUERY DEVICE TYPE (0x99) — hlásí DT0 (fluorescenční), DT6 (LED ovladač), DT8 (barevný / tunable white) atd., nebo -- když bez odpovědi.
Physical Min LevelHardwarem vynucená minimální úroveň stmívání, kterou gear hlásí — čteno z QUERY PHYSICAL MIN LEVEL (0x9A), v procentech.
Max LevelNakonfigurovaný DALI MAX LEVEL — čteno z QUERY MAX LEVEL (0xA1); použito jako horní hranice při škálování TapHome 0–100 % na DALI arc power.
Min LevelNakonfigurovaný DALI MIN LEVEL — čteno z QUERY MIN LEVEL (0xA2); použito jako dolní hranice při škálování TapHome 0–100 % na DALI arc power.
Power Up LevelJas obnovený po obnově napájení DALI sběrnice — čteno z QUERY POWER ON LEVEL (0xA3).
System Failure LevelJas přijatý, když DALI sběrnice ztratí komunikaci na více než 500 ms — čteno z QUERY SYSTEM FAILURE LEVEL (0xA4).
SkupinyČárkami oddělený seznam DALI skupin (0–15), do kterých gear patří — dekódovaný z QUERY GROUPS 0-7 (0xC0) a QUERY GROUPS 8-15 (0xC1); zobrazuje None nebo např. 0,3,7.
Support Lamp FailureZda lampa / ovladač podporuje detekci poruchy lampy — Yes / No / --. Kontroluje chybu Lamp failure! v periodickém readscriptu.
Support Power FailureZda lampa / ovladač podporuje detekci poruchy napájení — Yes / No / --. Kontroluje chybu Power failure! v periodickém readscriptu.
Servisní akce
Add to GroupPřidá tento gear do DALI skupiny (0–15) přes ADD TO GROUP (0x60+grp) — auto-opakováno do 100 ms, jak vyžadují DALI konfigurační příkazy.
Remove from GroupOdstraní tento gear z DALI skupiny (0–15) přes REMOVE FROM GROUP (0x70+grp).
Reset to Default SettingsPosílá DALI RESET (0x20) — obnoví každý NVM parametr gear-u (max / min / power-on / system-failure level, členství ve skupinách, scény) na tovární default.
Set Startup LevelsZachytí aktuální arc power a uloží ji jako Power On Level a System Failure Level — posloupnost STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).

Gear 63

Čtení (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
Inicializace
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
Čtení úrovně
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 úrovně
var level := 0;
if(Le > 0, level := round(linear(Le, 0.01, minLevel, 1, maxLevel)));
modbusw(SH, 510, uint16, (ShortAddress << 8) + level );
Servisní atributy
${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í akce
${xml_add_to_group}
Parametry: Group ID (0–15 grp)
modbusw(SH, 512, uint16, (ShortAddress << 8) + 0x60 + grp);
${xml_remove_from_group}
Parametry: 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 Stmívač

DALI broadcast skupina 0 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 0

Zápis úrovně
var GroupAddress := 0;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 1 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 1

Zápis úrovně
var GroupAddress := 1;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 2 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 2

Zápis úrovně
var GroupAddress := 2;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 3 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 3

Zápis úrovně
var GroupAddress := 3;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 4 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 4

Zápis úrovně
var GroupAddress := 4;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 5 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 5

Zápis úrovně
var GroupAddress := 5;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 6 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 6

Zápis úrovně
var GroupAddress := 6;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 7 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 7

Zápis úrovně
var GroupAddress := 7;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 8 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 8

Zápis úrovně
var GroupAddress := 8;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 9 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 9

Zápis úrovně
var GroupAddress := 9;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 10 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 10

Zápis úrovně
var GroupAddress := 10;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 11 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 11

Zápis úrovně
var GroupAddress := 11;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 12 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 12

Zápis úrovně
var GroupAddress := 12;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 13 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 13

Zápis úrovně
var GroupAddress := 13;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 14 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 14

Zápis úrovně
var GroupAddress := 14;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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 Stmívač

DALI broadcast skupina 15 (0–15) — write-only TapHome stmívač, který broadcastuje jednu hodnotu arc-power každému gear-u v této skupině přes H:520 GROUP LEVEL. Sběrnice nevrací úrovně skupin, takže TapHome drží poslední zapsanou hodnotu.

UInt16 Jednotka: % numeric
Servisní akce
Add All Lamps to GroupBroadcastuje ADD TO GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici vstoupí do této skupiny bez ohledu na svou aktuální krátkou adresu.
Remove All Lamps from GroupBroadcastuje REMOVE FROM GROUP přes H:532 ALL COMMAND + REPEAT — každý gear na sběrnici opustí tuto skupinu.

Group 15

Zápis úrovně
var GroupAddress := 15;
modbusw(SH, 520, uint16, (GroupAddress << 8) + (Le * 0xFE));
Servisní akce
${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)
Připojení: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Možná vylepšení (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 jste problém s touto šablonou zařízení?

Napište nám, co nefunguje, co chybí, nebo jak by se měla šablona chovat. Vaše zpětná vazba nám pomáhá udržet katalog přesný.

Ověřeno TapHome

Chcete to použít ve svém TapHome jádře?

Otevřete tuto šablonu v zákaznickém portálu a použijte ji ve svém domově, nebo navrhněte úpravu a odešlete ji zpět do katalogu.

Otevřít v portálu