Vad är komponenter?
RGB-styrenheter — fläkthubbar, ARGB-huvuden, LED-stripstyrenheter — hanterar sina utgångar sekventiellt som en enkel LED-kedja. Styrenheten vet inte eller bryr sig inte om vad som är fysiskt anslutit; den skickar bara färger längs kabeln en LED i taget.
Problemet är att olika produkter ordnar dessa lysdioder på väldigt olika sätt. En fläkt med 16 lysdioder placerar dem i en cirkel. En strip med 30 lysdioder placerar dem linjärt. En fläkt med dubbla ringar kan ha 8 lysdioder inuti och 16 utanpå. Om du vill att dessa lysdioder ska sitta på rätt plats på SignalRGB:s canvas — så att belysningseffekter justeras korrekt över hela systemet — behöver du känna till formen, inte bara antalet.
Komponenter löser det här. En komponent är en JSON-beskrivning av en specifik RGB-produkt: hur många lysdioder den har, var var och en sitter i 2D-rummet och varje lysdiods namn. SignalRGB använder den här beskrivningen för att mappa canvas-färger till rätt plats i LED-kedjan, oavsett vilken styrenhet som hanterar det.
Komponentbiblioteket
Section titled “Komponentbiblioteket”SignalRGB levereras med ett stort inbyggt komponentbibliotek som täcker fläktar, strips, pumphuvar och andra RGB-tillbehör från ett brett utbud av tillverkare. Biblioteket är också öppet för bidrag från communityn — om en produkt inte täcks ännu kan du skapa och skicka in en komponent-JSON-fil för den.
Se sidan Komponentstruktur för JSON-formatet.
Hur komponenter används
Section titled “Hur komponenter används”Användaren tilldelar komponenter till kanaler på styrenhetens enheter via ett väljar-UI i SignalRGB. En användare med tre Corsair LL120-fläktar anslutna till en Corsair Lighting Node Pro kan till exempel konfigurera:
- Kanal 1 → Corsair LL120 · Corsair LL120 · Corsair LL120
SignalRGB staplar komponenterna sekventiellt längs kanalens LED-kedja och positionerar varje komponent på canvas enligt LED-koordinater. Användaren kan arrangera dem hur de vill — tre fläktar sida vid sida, i L-form, baserat på var de fysiskt sitter i chassit.
Pluginet behöver inte veta vilka produkter som är anslutna. Det anropar bara device.channel("Channel 1").getColors() och får tillbaka korrekt mappade färgdata för allt användaren har konfigurerat. Abstraktionen håller oavsett om kanalen har en 16-lysdiodsfläkt eller en 30-lysdiods-strip.
Varför det här spelar roll för pluginskribenter
Section titled “Varför det här spelar roll för pluginskribenter”Om du skriver ett plugin för en belysningsstyrenhet (en enhet med en eller flera utgångskanaler som hanterar generella LED-kedjor) behöver du inte bädda in produktspecifika LED-mappningar i ditt plugin. Du definierar kanalerna; komponentssystemet tar hand om resten.
Det innebär:
- Ditt plugin fungerar automatiskt med vilken produkt som helst i komponentbiblioteket
- Användare kan blanda och matcha olika produkter på samma styrenhet
- Nya produkter kan stödjas bara genom att lägga till en komponent-JSON-fil — ingen pluginändring krävs
Se sidan Använda komponenter för API:t på pluginsidan, och sidan Komponentstruktur för hur man skapar en komponentfil.