Ga naar inhoud

Wat zijn componenten?

RGB-controllers — ventilatoren-hubs, ARGB-headers, LED-strip-controllers — besturen hun outputs als een eenvoudige keten van LED’s in volgorde. De controller weet niet en geeft niet om wat er fysiek is aangesloten; het stuurt gewoon kleuren per LED over de draad.

Het probleem is dat verschillende producten die LED’s heel anders rangschikken. Een ventilator met 16 LED’s plaatst ze in een cirkel. Een strip met 30 LED’s plaatst ze in een lijn. Een ventilator met dubbele ring heeft misschien een binnenste ring van 8 en een buitenste ring van 16. Als u wilt dat die LED’s op de juiste positie op het SignalRGB-canvas staan — zodat verlichtingseffecten correct uitlijnen over uw hele systeem — moet u de vorm kennen, niet alleen het aantal.

Componenten lossen dit op. Een component is een JSON-beschrijving van een specifiek RGB-product: hoeveel LED’s het heeft, waar elke LED in 2D-ruimte staat en hoe elke LED heet. SignalRGB gebruikt die beschrijving om canvaskleuren correct te koppelen aan de juiste positie in de LED-keten, ongeacht welke controller het aanstuurt.


SignalRGB wordt geleverd met een grote ingebouwde bibliotheek van componenten voor ventilatoren, strips, pomphoofden en andere RGB-accessoires van een breed scala aan leveranciers. De bibliotheek staat ook open voor bijdragen van de gemeenschap — als een product nog niet is opgenomen, kunt u een component-JSON-bestand aanmaken en indienen.

Zie Componentstructuur voor het JSON-formaat.


De gebruiker wijst componenten toe aan kanalen op hun controllerapparaat via een kiezer-UI in SignalRGB. Een gebruiker met drie Corsair LL120-ventilatoren verbonden aan een Corsair Lighting Node Pro kan bijvoorbeeld instellen:

  • Kanaal 1 → Corsair LL120 · Corsair LL120 · Corsair LL120

SignalRGB stapelt de componenten in volgorde langs de LED-keten van het kanaal en positioneert elke component op het canvas op basis van de LED-coördinaten. De gebruiker kan ze naar wens rangschikken — drie ventilatoren op een rij, in een L-vorm, waar ze ook fysiek in de behuizing zitten.

De plugin hoeft niet te weten welke producten zijn aangesloten. Het roept gewoon device.channel("Kanaal 1").getColors() aan en krijgt de correct gekoppelde kleurgegevens terug voor wat de gebruiker ook heeft geconfigureerd. De abstractie werkt ongeacht of er een ventilator met 16 LED’s of een strip met 30 LED’s op dat kanaal zit.


Waarom dit belangrijk is voor plugin-auteurs

Section titled “Waarom dit belangrijk is voor plugin-auteurs”

Als u een plugin schrijft voor een verlichtingscontroller (een apparaat met één of meer uitgangskanalen die generieke LED-ketens besturen), hoeft u geen productspecifieke LED-koppelingen in uw plugin te bouwen. U definieert de kanalen en het componentensysteem regelt de rest.

Dit betekent:

  • Uw plugin werkt automatisch met elk product in de componentenbibliotheek
  • Gebruikers kunnen verschillende producten op dezelfde controller combineren
  • Nieuwe producten kunnen worden ondersteund door simpelweg een component-JSON-bestand toe te voegen — er zijn geen pluginwijzigingen nodig

Zie Componenten gebruiken voor de plugin-API, en Componentstructuur voor het maken van een componentbestand.