NZXTSharp¶
Welcome to NZXTSharp’s readthedocs page!
NZXTSharp is a .NET Standard package that facilitates interaction with NZXT devices. You can find NZXTSharp on Nuget.org, and the source on GitHub.
Docs here are organized by namespace.
NZXTSharp’s syntax is designed to be simple and easy to use, almost like python. The structure is built around devices, effects, and params.
Effects are created with params, and effects are applied to devices. Devices are the main point that the user of the SDK will interact with.
A basic getting started example with the Hue+:
using NZXTSharp;
using NZXTSharp.Devices;
using NZXTSharp.Effects;
HuePlus hue = new HuePlus();
Fixed effect = new Fixed(new Color(255, 255, 255)); // Create effect object
hue.ApplyEffect(hue.Both, effect); // Apply the effect
NZXTSharp¶
Table of Contents
Classes¶
Color.cs¶
The Color class is used by all NZXTSharp effects, and represents a Color
Constructors¶
Color(int R, int G, int B)¶
Creates a Color instance from the provided R, G, B values.
Values must be 0 - 255 (inclusive).
Color(string hexColor)¶
Creates a Color instance from the provided hex color code.
Supports color codes with a leading #: #ffffff
, or without: ffffff
.
NZXTSharp.COM¶
The NZXTSharp.COM
namespace contains classes used for facilitating communication between INZXTDevices and their respective hardware.
Nothing in the COM namespace is meant to be accessed by the user of NZXTSharp. All classes serve infrastructural purposes.
Table Of Contents
Interfaces¶
ICOMController.cs¶
Currently empty.
Classes¶
SerialController.cs¶
Inherets ICOMController.cs
Properties¶
SerialPort Port { get; } The serial port operated by the SerialController.
SerialCOMData StartData { get; } The SerialCOMData used to start the SerialController.
bool IsOpen { get => Port.IsOpen; } Whether or not the SerialPort operated by the SerialController is open.
Constructors¶
- SerialController(string[] PossiblePorts, SerialCOMData Data)
- param string[] PossiblePorts - A string array containing the ports to attempt opening. Format: “COM3”.
- param SerialCOMData Data - A SerialCOMData object containing the information needed to open the port.
Methods¶
- byte[] Write(byte[] buffer, int responselength) Writes the bytes in the given buffer, and returns the device’s response.
- param byte[] buffer - The bytes to write to the device.
- param int reponselength - The expected length of the response: dictates the size of the returned buffer. Improper sizing will result in lost data.
- void WriteNoResponse(byte[] buffer) Writes the bytes in the given buffer to the device. Does not return a response.
- param byte[] buffer - The bytes to write to the device.
void Reconnect() Disposes of and reinitializes the SerialController instance.
void Dispose() Disposes of the SerialController instance.
SerialCOMData.cs¶
Properties¶
System.IO.Ports.Parity Parity { get; } The parity type to use.
System.IO.Ports.StopBits StopBits { get; } The stopbits to use.
int WriteTimeout { get; } The write timeout in ms.
int ReadTimeout { get; } The read timeout in ms.
int Baud { get; } The baud rate to open the port with.
int DataBits { get; } The number of databits to use.
Constructors¶
The SerialCOMData class only has one constructor, and takes arguments corresponding to each of the available properties. The name parameter is optional, and defaults to an empty string.
NZXTSharp.HuePlus¶
Table of Contents
HuePlus.cs¶
Represents an NZXT Hue+ device.
inherits: IHueDevice.cs
Properties¶
string Name { get; } The device’s product name.
Channel Both { get; } A Channel object representing both channels on the Hue+
Channel Channel1 { get; } A channel object representing the Channel 1 of the Hue+ device.
Channel Channel2 { get; } A channel object representing the Channel 2 of the Hue+ device.
List<Channel> Channels { get; } A List containing all Channel objects owned by the Hue+ device.
string CustomName { get; set; } A custom name for the HuePlus device instance.
NZXTDeviceType Type { get; } The NZXTDeviceType of the HuePlus device. NZXTDeviceType.HuePlus
Constructors¶
HuePlus() Constructs a basic HuePlus instance.
- HuePlus(int MaxHandshakeRetry = 5, string CustomName = null) Constructs a HuePlus instance with a custom retry count, and a custom name.
- param int MaxHandshakeRetry - Defaults to 5
- param string CustomName - Deafults to null.
Methods¶
void Reconnect() Disposes of and reinitializes to the HuePlus instance’s COMController.
void Dispose() Disposes of the HuePlus instance’s COMController.
- void ApplyEffect(Channel channel, IEffect effect, bool SaveToChannel = true) Applies a given IEffect to a given Channel.
- param Channel channel - The HuePlus Channel to apply the affect to. Must be owned by the same HuePlus instance the effect is being applied to.
- param IEffect effect - The IEffect to apply.
- param bool SaveToChannel - Whether or not to save the given IEffect to the given Channel. Defaults to true.
void ApplyCustom(byte[] Buffer) Writes a custom buffer to the HuePlus instance’s COMController.
void UnitLedOn() Turns on the Hue+ device’s unit led.
void UnitLedOff() Turns off the Hue+ device’s unit led.
- void SetUnitLed(bool State) Sets the Hue+ device’s unit led based on the
State
param. - param bool State - Which state to set the LED to. true: on, false: off.
- void UpdateChannelInfo(Channel Channel) Updates the given Channel’s ChannelInfo.
- param Channel Channel - The Channel instance to update.
HuePlusChannel.cs¶
Channels are “owned” by devices. Channels also “own” a number of ISubDevices, and a ChannelInfo object.
Properties¶
int ChannelByte { get; } The Channel instance’s ChannelByte.
IEffect Effect { get: } The IEffect currently applied to the Channel isntance.
bool State { get; } Whether or not the Channel instance is active (on).
ChannelInfo ChannelInfo { get; } The Channel’s ChannelInfo object.
IHueDevice Parent { get; } The device that owns the Channel.
List<ISubDevice> SubDevices { get; } A list of ISubDevices owned by the Channel.
Constructors¶
- Channel(int ChannelByte) Constructs a Channel instance with the given ChannelByte.
- param int ChannelByte - The Channel’s ChannelByte; 0x00 for both, 0x01 for Channel 1, 0x02 for Channel 2.
- Channel(int ChannelByte, IHueDevice Parent) Constructs a Channel instance with a given ChannelByte, owned by a given Parent.
- param int ChannelByte - The Channel’s ChannelByte; 0x00 for both, 0x01 for Channel 1, 0x02 for Channel 2.
- param IHueDevice Parent - The IHueDevice that will own the Channel object.
- Channel(int ChannelByte, IHueDevice Parent, ChannelInfo Info) Constructs a Channel instance with a given ChannelByte, owned by a given Parent, and a given ChannelInfo instance.
- param int ChannelByte - The Channel’s ChannelByte; 0x00 for both, 0x01 for Channel 1, 0x02 for Channel 2.
- param IHueDevice Parent - The IHueDevice that will own the Channel object.
- param ChannelInfo Info - A ChannelInfo object about the Channel.
Methods¶
void RefreshSubDevices() Refreshes all ISubDevices in the Channel’s SubDevices list.
void On() Turns the Channel on, and re-applies the last applied effect.
void Off() Turns the Channel off, and applies an “#000000” fixed effect.
void UpdateChannelInfo() Updates the Channel instance’s ChannelInfo object.
void SetChannelInfo(ChannelInfo Info) Sets the Channel instance’s ChannelInfo to a given ChannelInfo “Info”.
HuePlusChannelInfo.cs¶
Users of NZXTSharp are generally not meant to construct ChannelInfo instances.
Properites¶
int NumLeds { get; } The total number of LEDs available on a Channel.
int NumSubDevices { get; } The number of ISubDevices available on a given Channel.
NZXTDeviceType Type { get; } The type of ISubDevices available on a Channel.
Constructors¶
ChannelInfo(byte[] data) Constructs a ChannelInfo instance from some data returned from a channel handshake.
CandleLight.cs¶
Inherits from NZXTSharp.IEffect
EffectName = “CandleLight”
Constructors¶
- CandleLight(Color Color) Constructs a CandleLight effect.
- param Color Color - The Color to display.
Direction.cs¶
The direction param is used to specify the direction some effects move in, sometimes defining whether the effect moves smoothly or not.
Inherits from NZXTSharp.IParam
Constructors¶
- Direction(bool isForward, bool withMovement) Constructs a Direction param with the given bool values.
- param bool isForward - Whether or not the effect will move forward or backward.
- param bool withMovement - Whether or not the effect will move smoothly.
NZXTSharp.KrakenX¶
Table of Contents
KrakenX.cs¶
Represents an NZXT KrakenX device.
Inherits: NZXTSharp.INZXTDevice
Properties¶
Type | Name | Access | Description |
HIDDeviceID | DeviceID | { get; } | The HIDDeviceID of the KrakenX device. |
NZXTDeviceType | Type | { get; } | The NZXTDeviceType of the KrakenX device. |
int | ID | { get; } | A unique device ID. |
KrakenXChannel | Both | { get; } | Represents both the Logo, and Ring channels. |
KrakenXChannel | Logo | { get; } | Represents the KrakenX’s logo RGB channel. |
KrakenXChannel | Ring | { get; } | Represents the KrakenX’s ring RGB channel. |
System.Version | FirmwareVersion | { get; } | The KrakenX device’s firmware version. |
Constructors¶
KrakenX() Constructs a KrakenX instance.
NZXTSharp.Exceptions¶
Table of Contents
Classes¶
IncompatibleDeviceTypeException¶
thrown When an NZXTDeviceType is passed to a method or constructor that is not compatible with that method or constructor.
IncompatibleEffectException¶
thrown When an effect passed to a device’s ApplyEffect()
method is not compatible with that device.
IncompatibleParamException¶
thrown When a param object passed to an effect constructor is not compatible with that effect.
InvalidEffectSpeedException¶
thrown When an invalid speed value is passed to a param or effect constructor.
Speed values must be 0 - 4 (inclusive); 0 being slowest, 2 being normal, and 4 being fastest.
MaxHandshakeRetryExceededException¶
thrown When the maximum number of handshake attempts has been exceeded during device intitialization.
Max Retry Count is 5
by default.
SubDeviceDoesNotExistException¶
thrown When a user attempts to reference a subdevice that does not exist.
Ex: If there are only four fans connected to a given channel (SubDevices highest index: 3), and the user attempts to reference
Channel.SubDevices[4]
, this exception will be thrown.
SubDeviceLEDDoesNotExistException¶
thrown When a user attempts to reference a subdevice LED that does not exist.
Ex: If there is only one strip connected to a given channel (SubDevices.Leds highest index: 9), and the user attempts to reference
Channel.SubDevices[0].Leds[10]
, this exception will be thrown.
TooManyColorsProvidedException¶
thrown When a Color[] of length greater than 8 is passed to an effect constructor.
Getting Started with NZXTSharp¶
This page contains getting started examples and code snippets.
NZXTSharp’s syntax is designed to be simple and easy to use, almost like python. The structure is built around devices, subdevices, effects, and params.
Effects are created with params, and effects are applied to devices. Devices can own subdevices.
An example of a subdevice is a fan, or RGB strip. Once Hue 2 support is added, the CableComb and Underglow SubDevices will be added.
Table of Contents
Hue+¶
The Hue+ model consists of the HuePlus class instance. The instance owns three Channel objects, but only Channel1 and Channel2 have SubDevices.
Boilerplate¶
To get started, you’ll need the following:
using NZXTSharp.Devices;
HuePlus hue = new HuePlus();
With this HuePlus instance, you can apply effects, get channel info, toggle the unit LED, etc.
Applying Effects¶
Effects are applied to a Hue+ device with the ApplyEffect()
method. The channel(s) to apply the effect to, and the effect object are passed as params to this method.
Adding on to the last example:
using NZXTSharp;
using NZXTSharp.Devices;
using NZXTSharp.Effects;
HuePlus hue = new HuePlus();
HexColor color = new Color(255, 255, 255); // You can make colors with RGB values
HexColor color = new Color("#ffffff"); // Also works with Hex codes (with or without the leading #)
Fixed effect = new Fixed(color); // Create effect
hue.ApplyEffect(hue.Both, effect); // Apply effect to both channels
hue.ApplyEffect(hue.Channel1, effect); // Or just one
hue.UnitLedOff(); // Turn unit LED off
hue.UnitLedOn(); // And back on again!
SubDevices¶
A HuePlus instance has two Channels that own subdevices: Channel1 and Channel2. The Both Channel does not own any because it is not a “physical” channel. Keep in mind that ALL changes to subdevices need to be “pushed” to the device by setting, or re-setting an effect.
All subdevice classes are held in the NZXTSharp.Devices
namespace.
Building on the Boilerplate example:
using NZXTSharp.Devices;
using NZXTSharp.Effects;
HuePlus hue = new HuePlus();
Fixed effect = new Fixed(new Color("#FFFFFF"));
List<ISubDevice> Ch1Devices = hue.Channel1.SubDevices; // Not necessary, but syntax looks better
Ch1Devices[0].AllLedOff(); // Turn off all LEDs on first subdevice in channel.
hue.ApplyEffect(hue.Channel1, effect); // Apply changes
Ch1Devices[1].ToggleLed(9); // Toggle individual LEDs with the ToggleLed method
Ch1Devices[1].Leds[8] = false; // Or by setting the value.
hue.ApplyEffect(hue.Channel1, effect); // Apply changes
Ch1Devices[1].ToggleLedRange(1, 5); // Or, toggle ranges of LEDs
hue.ApplyEffect(hue.Channel1, effect); // Apply changes
Custom RGB values for a Fixed Effect¶
The fixed effect, being the most versatile, allows the user of NZXTSharp to construct a fixed effect with custom RGB values for each LED. This is done by passing a byte array to a Fixed effect constructor.
Byte array schema: The byte array must have at least 1 RGB value, and at most 120 RGB values. If the length is not within this range, an InvalidParamException will be thrown.
RGB Value formatting: For the effect to display properly, all RGB values MUST be passed in G, R, B format. RGB Values, like all other RGB values in NZXTSharp must be between 0-255 (inclusive).
Building on the Boilerplate example:
using NZXTSharp;
using NZXTSharp.Devices;
using NZXTSharp.Effects;
HuePlus hue = new HuePlus();
// Create RGB array, this will have two LEDs lit: one white, one red.
byte[] colors = new byte[] { 255, 255, 255, 0, 255, 0 };
Fixed effect = new Fixed(colors); // Create Effect
hue.ApplyEffect(hue.Both, effect); // And apply it!
// Also supports subdevice and LED toggling.
hue.Channel1.SubDevices[1].ToggleState(); // Toggle device
hue.ApplyEffect(hue.Both, effect); // Apply changes
Hue+ Protocol¶
Table of Contents
- Basic Protocol Schema: Command Type, ChannelByte, EffectByte, Param1, Param2, LedData
ChannelByte: Both = 00, Channel 1 = 01, Channel 2 = 02
Command Types: Set Effect = 4b, Unit LED = 46, Get Channel Info = 8d
The Hue+ operates on a serial port, and is made to handle discrete commands sent in packets.
To open a connection to a Hue+ device, open a serial connection on whatever COM port your Hue+ is operating on with a baud rate of 256000
, parity set to None
, dataBits set to 8
, and stopBits set to 1
. Then, begin the handshake process.
Effect protocols are made of exactly 125 bytes or less. For all protocols, the first five bits in each packet are what I will call “settings bytes”, and the remaining 120 are LED data in G, R, B format.
Settings bytes (in order) consist of which kind of command is being set, the channels to apply the effect to, which effect to set, and two parameters. See set effect protocol for more information.
Handshakes¶
To begin interaction with a Hue+ device, a handshake must first be completed.
The “Hello” handshake can be completed by continuously sending 0xc0, until the Hue+ unit reponds with 0x01.
There is no trick to a “GoodBye” handshake, just close the serial connection.
Channel Handshakes/ Getting Channel Info¶
To get information about what is connected to a channel, send an 8d ChannelByte
command to the Hue+. Ex: To get channel info for channel 1, send 8d 01
. For channel 2, 8d 02
. The response structure is still being worked out, some of the values are still unclear.
- The response should be 5 bytes long, and follows this schema:
- ? : ? Consistent between devices
- ? : ? Not consistent between devices
- ? : ? Not consistent between devices.
- X : Fan or Strip; 0x00 = strips, 0x01 = fans.
- X : Number of fans or strips connected.
Set Effect¶
Below is a table outlining the settings packets for each effect. Bolded param values are defined below in the Param Scemas Section.
Direction params marked with WM can make use of movement in the effect. See the direction param schema below for more information.
Effect | Packets/ Send | EffectByte | Param1 | Param2 | ||
---|---|---|---|---|---|---|
Fixed | 1 | 0x4b | CB | 0x00 | 0x03 | 0x02 |
Fading | 1/ Color* | 0x4b | CB | 0x01 | 0x03 | CIS/S |
Spectrum Wave | 1 | 0x4b | CB | 0x02 | Direction | CIS/S |
Marquee | 3 | 0x4b | CB | 0x03 | Direction | LS/S |
Covering Marquee | 3/ Color* | 0x4b | CB | 0x04 | Direction | CIS/S |
Alternating | 2 | 0x4b | CB | 0x05 | Direction WM | CIS/S |
Pulse | 1/ Color* | 0x4b | CB | 0x06 | 0x03 | CIS/S |
Breathing | 1/ Color* | 0x4b | CB | 0x07 | 0x03 | CIS/S |
Candle Light | 1 | 0x4b | CB | 0x09 | 0x03 | 0x02 |
Wings | 1 | 0x4b | CB | 0x0c | 0x03 | CIS/S |
Param Schemas¶
CIS/S - Color In Set/ Speed¶
CIS/S params are a composite of a couple values: The index of the current color in a set of colors, and the speed of the effect. Find the values individually, and concatenate them to get the btye to be passed as a param.
- First Digit: Color In Set. If there are multiple colors being applied, this digit denotes the index of the color.
- To Find: digit = x * 2
- x: The color number (Zero Indexed)
- To Find: digit = x * 2
- Second Digit: Speed
- 0 - 4 where 0 is slowest, and 4 is fastest. 2 is normal.
- IF Effect only uses one color, first digit is 0.
- Whole Byte: Concatenate Color In Set (IN HEX), and Speed.
- Ex: If the effect uses one color, and was at normal speed, the resulting byte would be 02.
- Ex: If the color is the third one in the set, and the speed is at fastest, the resulting byte would be 44.
Direction¶
For direction, just like CIS/S, the byte result is a composite of two values: whether or not the effect’s direction is forward or backward, and whether or not the effect should be moving.
If an effect’s param1 byte is marked with WM, it can make use of movement toggling.
- The byte values are as follows:
- Forward: 03
- Backward: 13
- IF marked as WM, the following are also available:
- Forward W/ Movement: 0b
- Backward W/ Movement: 1b
LS/S - LED Size/ Speed¶
To find the desired byte composite, use the table below:
Speed v ; LED Size > | 3 | 4 | 5 | 6 |
---|---|---|---|---|
Slowest | 00 | 08 | 10 | 18 |
Slow | 01 | 09 | 11 | 19 |
Normal | 02 | 0a | 12 | 1a |
Fast | 03 | 0b | 13 | 1b |
Fastest | 04 | 0c | 14 | 1c |
Unit LED Protocols¶
Turning the Hue+ unit’s LED on or off is pretty simple. All of the data needed fits into one packet, and seven bytes.
Just send the desired byte codes over the serial port, and the light should do as instructed.
On: 46 00 c0 00 00 00 ff
Off: 46 00 c0 00 00 ff 00
Special Thanks to Pet0203. for helping me get started and providing base code.
KrakenX Protocol¶
I want to give a special thanks to Jonas Malaco for his help with building out KrakenX support in NZXTSharp, and his work in reverse engineering the KrakenX protocol.
Table of Contents
This document describes the HID communication protocol for NZXT KrakenX (x42, x52, x62, x72) devices. The vendor ID for NZXT is 0x1e71, and the device id for KrakenX devices is 0x170e.
CAM receives device information about once/ second, I call these “status reports”. CAM also consistently sends packets to the Kraken device. The packets sent from CAM are meant to set the pump/ fan speeds based on whatever pump/ fan profile is currently set. Jonas Malaco
Handshakes¶
KrakenX devices have no hello or goodbye handshake process.
Status Reports¶
The Kraken device continuously sends status reports upstream to the PC. These reports are always 0x40 bytes long.
So far, information about how to get pump/ fan speeds, liquid temp, and firmware version. Here is how to get that information from a status report:
In the following examples, data
refers to the array of bytes last received from the device (zero-indexed).
Pump Speed: data[4] << 8 | data[5] - <<
is the bitwise left-shift operator, and |
is the bitwise OR operator.
Fan Speed: data[4] * 0x100 + data[5]
Liquid Temp: data[0] + (data[1] * 0.1) - The liquid temp value in degrees C, unrounded.
- Firmware Version:
- Major: data[10]
- Minor: (int)data[12].ToString() + data[13].ToString()
Overrides¶
If you want custom pump/ fan speeds to be set, the KrakenX device requires “overrides” at least once every 10 seconds, or the device will revert back to the CAM default “performance profile”. The override buffer schema is as follows:
Pump: 0x02, 0x4d, 0x40, 0x00, (byte)Speed - Speed is the desired speed as a percentage.
Fan: 0x02, 0x4d, 0x00, 0x00, (byte)Speed - Speed is the desired speed as a percentage.
Set Effect¶
The process of setting an RGB effect is similar to how it is with the Hue+. RGB Effect packets are always 65 bytes long. There are 5 settings bytes at the beginning, then 9 G, R, B color codes, then padding out to the 65 length with 0x00. The 9 GRB color codes are for the 8 LEDs in the ring, and the one in the logo. Even when effects are set on just the logo or ring, there are still 9 color codes. The first 8 seem to be for the ring, and the last is for the logo.
The settings bytes schema is as follows: 0x02, 0x4c, Param1, EffectByte, Param2
Below is a table outlining the settings packets for each effect. Bolded param values are defined below in the Param Schemas Section.
Effect Name | Packets/ Send | CB/ Param1 | EffectByte | Param2 | Compatible With | ||
Fixed | 1 | 0x02 | 0x4c | CB | 0x00 | 0x02 | Both |
Fading | 1/ Color | 0x02 | 0x4c | CB | 0x01 | CISS | Both |
SpectrumWave | 1 | 0x02 | 0x4c | DCB | 0x02 | Speed | Both |
Marquee | 1 | 0x02 | 0x4c | CB | 0x03 | LSS | Ring Only |
CoveringMarquee | 1/ Color | 0x02 | 0x4c | DCB | 0x04 | CISS | Both (at same time), or Ring Only |
Alternating | 1/ Color | 0x02 | 0x4c | DCBWM | 0x05 | CISS | Ring Only |
Breathing | 1/ Color | 0x02 | 0x4c | CB | 0x06 | CISS | Both |
Pulse | 1/ Color | 0x02 | 0x4c | CB | 0x07 | CISS | Both |
TaiChi | 2 | 0x02 | 0x4c | CB | 0x08 | CISS | Ring Only |
WaterColor | 1 | 0x02 | 0x4c | CB | 0x09 | Speed | Ring Only |
Loading | 1 | 0x02 | 0x4c | CB | 0x0a | Speed | Ring Only |
Wings | 1 | 0x02 | 0x4c | CB | 0x0c | Speed | Ring Only |
Speed refers to the speed the effect will display at: 0 - 4 where 0 is slowest, and 4 is fastest. 2 is normal.
Param Schemas¶
The KrakenX shares the CISS and LSS param with the Hue+. The KrakenX does have a couple of its own unique (for now) params:
DCB - Direction/ ChannelByte¶
- This param is a concatenation of two ints:
- First Byte: Direction – Forward: 0, Backward: 1
- Second Byte: ChannelByte – The ChannelByte of the channel the effect will be applied to.
DCBWM - Direction/ ChannelByte (With Movement)¶
This param is only used for the Alternating RGB effect. The desired value can be found with this table:
Direction v; With Movement > | True | False |
Forward | 0x0A | 0x02 |
Backward | 0x1A | 0x12 |
CIS/S - Color In Set/ Speed¶
CIS/S params are a composite of a couple values: The index of the current color in a set of colors, and the speed of the effect. Find the values individually, and concatenate them to get the btye to be passed as a param.
- First Digit: Color In Set. If there are multiple colors being applied, this digit denotes the index of the color.
- To Find: digit = x * 2
- x: The color number (Zero Indexed)
- To Find: digit = x * 2
- Second Digit: Speed
- 0 - 4 where 0 is slowest, and 4 is fastest. 2 is normal.
- IF Effect only uses one color, first digit is 0.
- Whole Byte: Concatenate Color In Set (IN HEX), and Speed.
- Ex: If the effect uses one color, and was at normal speed, the resulting byte would be 02.
- Ex: If the color is the third one in the set, and the speed is at fastest, the resulting byte would be 44.
LS/S - LED Size/ Speed¶
To find the desired byte composite, use the table below:
Speed v ; LED Size > | 3 | 4 | 5 | 6 |
---|---|---|---|---|
Slowest | 00 | 08 | 10 | 18 |
Slow | 01 | 09 | 11 | 19 |
Normal | 02 | 0a | 12 | 1a |
Fast | 03 | 0b | 13 | 1b |
Fastest | 04 | 0c | 14 | 1c |
Support¶
To get help with NZXTSharp, you can:
- Email me: akmadian@gmail.com
- Create an issue or look into the source code: https://github.com/akmadian/NZXTSharp
- Join the NZXTSharp Discord server: https://discord.gg/yK8m2CU
If you have suggestions for the documentation or the package itself, please let me know using one of the methods above!
Special Thanks To:
Jonas Malaco (github) For his help with the KrakenX protocol
Pet0203 (github) For his help with development, and the Hue+ protocol.
DarkMio (github) For developing Octopede, which contributed to KrakenX support.
Supported Devices and Features¶
This list is the most current resource for checking which devices and features are and are not supported. If a device is not listed, it is not supported.
The Hue+ is supported, KrakenX products are partially supported, the Hue 2 is most likely next. If you would like to request a specific device or feature, please submit an issue at NZXTSharp’s GitHub repo, and tag it with device-request
or feature-request
.
- The supported features tables use the following schema for column values:
- NI - Not Implemented.
- WIP - Work In Progress/ In Process of Implementation.
- ITT - Implemented, To Test.
- TNW - Tested, Not Working.
- TFW - Tested, Fully Working.
Table of Contents
Hue+¶
Device Features¶
Feature | NI | WIP | ITT | TNW | TFW |
Unit LED On | X | ||||
Unit LED Off | X | ||||
Channel On | X | ||||
Channel Off | X | ||||
Channel Handshakes | X | ||||
Subdevices | X | ||||
Subdevice LEDs | X |
KrakenX¶
Device Features¶
Feature | NI | WIP | ITT | TNW | TFW |
Get Pump Speed | X | ||||
Set Pump Speed | X | ||||
Channel On | X | ||||
Channel Off | X | ||||
Get Fan Speed | X | ||||
Set Fan Speed | X | ||||
Get Liquid Temp | X | ||||
Get Firmware Version | X |