UNPKG

bigassfans

Version:

A library for discovering and controlling BigAssFans

142 lines (141 loc) 5.86 kB
"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 });