Support Big Ass Fans es6 fan: uplight, mood light, UVC (and improve BAF support generally)

heyyy, ur big ass fans support is rly good but could b better if it did es6 w/uplight + rgb mood lighting + uvc??

maybe this xtra info will help??? :100: lolz

message RemoteCommandData
{
    string address = 2;
}

message SystemAction
{
    enum Command
    {
        NoAction           = 0;
        Reboot             = 2;
        StartAudibleSignal = 4;
        StartVisibleSignal = 5;
        ForgetRemote       = 8;
        ResumeFanMode      = 11;
        ResumeLightMode    = 12;
    }

    Command command = 1;
    reserved 2;

    oneof field
    {
        RemoteCommandData       remoteData               = 3;
    }
}

enum Direction
{
    Forward = 0;
    Reverse = 1;
}

enum OperatingMode
{
    Off     = 0;
    On      = 1;
    Auto    = 2;
}

enum MultipleLightMode
{
    AllLights   = 0;
    Downlight   = 1;
    Uplight     = 2;
}

enum Day
{
    NoDay       = 0;
    Sunday      = 1;
    Monday      = 2;
    Tuesday     = 3;
    Wednesday   = 4;
    Thursday    = 5;
    Friday      = 6;
    Saturday    = 7;
}

enum RebootReason
{
    Unknown             = 0;
    Other               = 1;
    PowerOn             = 2;
    Software            = 3;
    IndependentWatchdog = 4;
    TaskWatchdog        = 5;
    BrownOut            = 6;
    LowPower            = 7;
    Lockup              = 8;
    Pin                 = 9;
}

message Network
{
    bytes ssid = 1;
}

enum AssistWith
{
    Nothing = 0;
    Heating = 1;
    Cooling = 2;
    All     = 3;
}

message WallControlConfiguration
{
    enum Function
    {
        NoFunction  = 0;
        LightLevel  = 1;
        LightColor  = 2;
        FanSpeed    = 3;
    }

    Function topButtonFunction    = 1;
    Function bottomButtonFunction = 2;
}

message DebugInfo
{
    uint32            uptimeMinutes         = 1;
    uint32            rebootCountTotal      = 2;
    uint32            rebootCountSincePor   = 3;
    RebootReason      lastRebootReason      = 4;
    uint32            lastRebootDetails     = 5;
    uint32            softwareError         = 6;
    uint32            softwareErrorDetails  = 7;
}

enum FirmwareType
{
    Host    = 0;
    Wifi    = 1;
    Light   = 2;
    Motor   = 3;
}

enum ExternalDeviceType
{
    BleRemote       = 0;
    BleWallControl  = 1;
    UnknownDevice   = 2;
}

message DetailedVersion
{
    FirmwareType type              = 1;
    string       appVersion        = 2;
    string       bootloaderVersion = 3;
}

message ExternalDeviceVersion
{
    ExternalDeviceType type               = 1;
    string             packageVersion     = 2;
    string             bootloaderVersion  = 3;
    string             macAddress         = 4;
    RebootReason       rebootReason       = 7;
}

message GroupContainer
{
    bytes  uuid = 2;
    string name = 3;
}

message StandbyLed
{
    enum ColorPreset
    {
        Custom  = 0;
        Red     = 1;
        Green   = 2;
        Blue    = 3;
        Teal    = 4;
        Yellow  = 5;
        Violet  = 6;
        White   = 7;
        Orange  = 8;
        Pink    = 9;
    }

    ColorPreset colorPreset     = 1;
    bool        enabled         = 2;
    uint32      percent         = 3;
    uint32      red             = 4;
    uint32      green           = 5;
    uint32      blue            = 6;
}

message DeviceCapabilities
{
    bool hasTempSensor       = 1;
    bool hasHumiditySensor   = 2;
    bool hasOccupancySensor  = 3;
    bool hasLight            = 4;
    bool hasLightSensor      = 5;
    bool hasColorTempControl = 6;
    bool hasFan              = 7;
    bool hasSpeaker          = 8;
    bool hasPiezo            = 9;
    bool hasLedIndicators    = 10;
    bool hasUplight          = 11;
    bool hasUvcLight         = 12;
    bool hasStandbyLed       = 13;
    bool hasEcoMode          = 14;
}

message Property
{
    oneof field
    {
        string          name              = 1;
        string          model             = 2;
        string          localTime         = 4;
        string          utcTime           = 5;
        string          timeZone          = 6;
        string          fwVersion         = 7;
        string          macAddress        = 8;
        string          cloudId           = 9;
        string          deviceId          = 10;
        string          cloudServerUrl    = 11;
        string          apiVersion        = 13;
        uint32          deviceTypeId      = 15;
        DetailedVersion detailedVersion   = 16;

        DeviceCapabilities    deviceCapabilities     = 17;

        string pcbaPartNumber   = 37;
        string pcbaRevision     = 38;

        OperatingMode   fanMode                         = 43;
        Direction       fanDirection                    = 44;
        uint32          fanPercent                      = 45;
        uint32          fanSpeed                        = 46;
        bool            comfortSenseEnabled             = 47;
        uint32          comfortSenseIdealTemp           = 48;
        uint32          comfortSenseMinSpeed            = 50;
        uint32          comfortSenseMaxSpeed            = 51;
        bool            fanOccupancyEnabled             = 52;
        uint32          fanOccupancyTimeout             = 53;
        bool            fanReturnToAutoEnabled          = 54;
        uint32          fanReturnToAutoTimeout          = 55;
        bool            whooshEnabled                   = 58;
        bool            comfortSenseHeatAssistEnabled   = 60;
        uint32          comfortSenseHeatAssistSpeed     = 61;
        Direction       comfortSenseHeatAssistDirection = 62;
        uint32          commandedRpm                    = 63;
        uint32          actualRpm                       = 64;
        bool            ecoModeEnabled                  = 65;
        bool            fanOccupied                     = 66;
        bool            fanOnMeansAuto                  = 67;

        OperatingMode       lightMode                     = 68;
        uint32              lightPercent                  = 69;
        uint32              lightLevel                    = 70;
        uint32              lightColorTemperature         = 71;
        bool                lightOccupancyEnabled         = 72;
        uint32              lightOccupancyTimeout         = 73;
        bool                lightReturnToAutoEnabled      = 74;
        uint32              lightReturnToAutoTimeout      = 75;
        bool                lightDimToWarmEnabled         = 77;
        uint32              lightColorTemperatureMin      = 78;
        uint32              lightColorTemperatureMax      = 79;
        MultipleLightMode   multipleLightMode             = 82;
        StandbyLed          standbyLed                    = 83;
        bool                lightOccupied                 = 85;

        uint32 temperature       = 86;
        uint32 humidity          = 87;
        
        bool   lightOnMeansAuto  = 109;

        bytes           ipAddress      = 120;
        Network         network        = 124;

        bool                     indicatorsEnabled       = 134;
        bool                     audibleIndicatorEnabled = 135;
        bool                     legacyIrEnabled         = 136;
        WallControlConfiguration wallControlConfiguration =
            139;

        AssistWith assistWith  = 140;

        bool                  remoteDiscoveryEnabled = 150;
        uint32                externalDeviceCount    = 151;
        ExternalDeviceVersion externalDeviceVersion  = 152;
        bool                  bleRemoteSupported  = 153;

        DebugInfo   debugInfo       = 156;

        GroupContainer groupContainer = 171;

        bool   uvcEnabled               = 172;
        uint32 uvcLife                  = 173;
    }
}

message ScheduleProperty
{
    oneof field
    {
        OperatingMode fanMode      = 1;
        Direction     fanDirection = 2;
        uint32        fanSpeed     = 4;
        uint32        fanPercent   = 3;

        OperatingMode     lightMode             = 5;
        uint32            lightLevel            = 7;
        uint32            lightColorTemperature = 8;
        uint32            lightPercent          = 6;
        uint32            uplightPercent        = 9;
        MultipleLightMode multipleLightMode     = 10;

        bool   comfortSenseEnabled   = 11;
        uint32 comfortSenseIdealTemp = 12;
        uint32 comfortSenseMinSpeed  = 13;
        uint32 comfortSenseMaxSpeed  = 14;
        bool   fanOccupancyEnabled   = 15;
        uint32 fanOccupancyTimeout   = 16;
        bool   lightOccupancyEnabled = 17;
        uint32 lightOccupancyTimeout = 18;
    }
}

message ScheduleJob
{
    enum Action
    {
        NoAction    = 0;
        Update      = 1;
        Remove      = 2;
        Read        = 3;
    }

    message Schedule
    {
        message ScheduleEvent
        {
            string                    time       = 1;
            repeated ScheduleProperty properties = 2;
        }

        uint32         id           = 1;
        string         name         = 2;
        repeated bytes devices      = 3;
        repeated Day   days         = 4;
        bool           isEnabled    = 6;
        ScheduleEvent  startEvent   = 7;
        ScheduleEvent  endEvent     = 8;
    }

    Action   action         = 1;
    Schedule schedule       = 2;
    uint32   schedulesCount = 3;
    uint32   schedulesMax   = 4;
}
message Job
{
    SystemAction systemAction                       = 2;
    repeated Property commands                      = 3;
    repeated ScheduleJob scheduleJob                = 4;
}

message Update
{
    repeated Property properties         = 2;
    ScheduleJob scheduleJob              = 3;
}

message Query
{
    enum Type
    {
        All             = 0;
        Fan             = 1;
        Light           = 2;
        Device          = 3;
        Network         = 4;
        Schedules       = 5;
        Sensor          = 6;
    }

    Type type = 1;
}

message ApiMessage
{
    oneof  payload
    {
        Job    job    = 2;
        Query  query  = 3;
        Update update = 4;
    }
}

Dude @StinkyMcGee… What kind of source code access do you have XD

This is pretty awesome. Currently making a Typescript library for HomeBridge, but I’ll get to HA soon.