bigassfans
Version: 
A library for discovering and controlling BigAssFans
142 lines (141 loc) • 5.86 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PropertiesSchema = exports.StandbyLed = exports.GroupContainer = exports.DebugInfo = exports.Capabilities = exports.ExternalDeviceVersion = exports.WallControlConfiguration = exports.Version = exports.Percent = exports.Speed = exports.Uint = void 0;
const zod_1 = require("zod");
const fan_1 = require("./proto/fan");
exports.Uint = zod_1.z.number().int().nonnegative().safe();
exports.Speed = exports.Uint.max(7);
exports.Percent = exports.Uint.max(100);
const ZodUint8Array = zod_1.z.custom((data) => {
    return (data instanceof Uint8Array);
});
const BytesToString = ZodUint8Array.transform(buffer => buffer.toString());
exports.Version = zod_1.z.object({
    "type": zod_1.z.nativeEnum(fan_1.FirmwareType),
    "appVersion": zod_1.z.string(),
    "bootloaderVersion": zod_1.z.string()
});
exports.WallControlConfiguration = zod_1.z.object({
    "topButtonFunction": zod_1.z.nativeEnum(fan_1.WallControlConfiguration_Function),
    "bottomButtonFunction": zod_1.z.nativeEnum(fan_1.WallControlConfiguration_Function)
});
exports.ExternalDeviceVersion = zod_1.z.object({
    "type": zod_1.z.nativeEnum(fan_1.ExternalDeviceType),
    "packageVersion": zod_1.z.string(),
    "bootloaderVersion": zod_1.z.string(),
    "macAddress": zod_1.z.string(),
    "rebootReason": zod_1.z.nativeEnum(fan_1.RebootReason)
});
exports.Capabilities = zod_1.z.object({
    "hasTempSensor": zod_1.z.boolean(),
    "hasHumiditySensor": zod_1.z.boolean(),
    "hasOccupancySensor": zod_1.z.boolean(),
    "hasLight": zod_1.z.boolean(),
    "hasLightSensor": zod_1.z.boolean(),
    "hasColorTempControl": zod_1.z.boolean(),
    "hasFan": zod_1.z.boolean(),
    "hasSpeaker": zod_1.z.boolean(),
    "hasPiezo": zod_1.z.boolean(),
    "hasLedIndicators": zod_1.z.boolean(),
    "hasUplight": zod_1.z.boolean(),
    "hasUvcLight": zod_1.z.boolean(),
    "hasStandbyLed": zod_1.z.boolean(),
    "hasEcoMode": zod_1.z.boolean(),
});
exports.DebugInfo = zod_1.z.object({
    "uptimeMinutes": exports.Uint,
    "rebootCountTotal": exports.Uint,
    "rebootCountSincePor": exports.Uint,
    "lastRebootReason": zod_1.z.nativeEnum(fan_1.RebootReason),
    "lastRebootDetails": exports.Uint,
    "softwareError": exports.Uint,
    "softwareErrorDetails": exports.Uint
});
exports.GroupContainer = zod_1.z.object({
    "uuid": BytesToString,
    "name": zod_1.z.string()
});
//RGB Should probably be 8 bit...
exports.StandbyLed = zod_1.z.object({
    "colorPreset": zod_1.z.nativeEnum(fan_1.StandbyLed_ColorPreset),
    "enabled": zod_1.z.boolean(),
    "percent": exports.Percent,
    "red": exports.Uint,
    "green": exports.Uint,
    "blue": exports.Uint
});
exports.PropertiesSchema = zod_1.z.object({
    "name": zod_1.z.string(),
    "model": zod_1.z.string(),
    "localTime": zod_1.z.string(), // Not ISO 8601 Compliant
    "utcTime": zod_1.z.string().datetime(),
    "timeZone": zod_1.z.string(),
    "fwVersion": zod_1.z.string(),
    "macAddress": zod_1.z.string(),
    "cloudId": zod_1.z.string(),
    "deviceId": zod_1.z.string(),
    "cloudServerUrl": zod_1.z.string(),
    "apiVersion": zod_1.z.string(),
    "deviceTypeId": exports.Uint,
    "detailedVersion": exports.Version,
    "deviceCapabilities": exports.Capabilities,
    "pcbaPartNumber": zod_1.z.string(),
    "pcbaRevision": zod_1.z.string(),
    "fanMode": zod_1.z.nativeEnum(fan_1.OperatingMode),
    "fanDirection": zod_1.z.nativeEnum(fan_1.Direction),
    "fanPercent": exports.Percent,
    "fanSpeed": exports.Speed,
    "comfortSenseEnabled": zod_1.z.boolean(),
    "comfortSenseIdealTemp": exports.Uint,
    "comfortSenseMinSpeed": exports.Speed,
    "comfortSenseMaxSpeed": exports.Speed,
    "fanOccupancyEnabled": zod_1.z.boolean(),
    "fanOccupancyTimeout": exports.Uint,
    "fanReturnToAutoEnabled": zod_1.z.boolean(),
    "fanReturnToAutoTimeout": exports.Uint,
    "whooshEnabled": zod_1.z.boolean(),
    "comfortSenseHeatAssistEnabled": zod_1.z.boolean(),
    "comfortSenseHeatAssistSpeed": exports.Speed,
    "comfortSenseHeatAssistDirection": zod_1.z.nativeEnum(fan_1.Direction),
    "commandedRpm": exports.Uint,
    "actualRpm": exports.Uint,
    "ecoModeEnabled": zod_1.z.boolean(),
    "fanOccupied": zod_1.z.boolean(),
    "fanOnMeansAuto": zod_1.z.boolean(),
    "lightMode": zod_1.z.nativeEnum(fan_1.OperatingMode),
    "lightPercent": exports.Uint,
    "lightLevel": exports.Uint,
    "lightColorTemperature": exports.Uint,
    "lightOccupancyEnabled": zod_1.z.boolean(),
    "lightOccupancyTimeout": exports.Uint,
    "lightReturnToAutoEnabled": zod_1.z.boolean(),
    "lightReturnToAutoTimeout": exports.Uint,
    "lightDimToWarmEnabled": zod_1.z.boolean(),
    "lightColorTemperatureMin": exports.Uint,
    "lightColorTemperatureMax": exports.Uint,
    "multipleLightMode": zod_1.z.nativeEnum(fan_1.MultipleLightMode),
    "standbyLed": exports.StandbyLed,
    "lightOccupied": zod_1.z.boolean(),
    "temperature": exports.Uint,
    "humidity": exports.Uint,
    "fanTimerMinutes": exports.Uint,
    "fanTimerUtcExpiration": zod_1.z.number().safe(),
    "lightOnMeansAuto": zod_1.z.boolean(),
    "ipAddress": BytesToString,
    "network": zod_1.z.object({
        "ssid": BytesToString
    }),
    "indicatorsEnabled": zod_1.z.boolean(),
    "audibleIndicatorEnabled": zod_1.z.boolean(),
    "legacyIrEnabled": zod_1.z.boolean(),
    "wallControlConfiguration": exports.WallControlConfiguration,
    "assistWith": zod_1.z.nativeEnum(fan_1.AssistWith),
    "remoteDiscoveryEnabled": zod_1.z.boolean(),
    "externalDeviceCount": exports.Uint,
    "externalDeviceVersion": exports.ExternalDeviceVersion,
    "bleRemoteSupported": zod_1.z.boolean(),
    "debugInfo": exports.DebugInfo,
    "groupContainer": exports.GroupContainer,
    "uvcEnabled": zod_1.z.boolean(),
    "uvcLife": exports.Uint
});