export declare const channelsSchema: { readonly air_quality: { readonly category: "air_quality"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["aqi", "level"]]; }; readonly properties: { readonly aqi: { readonly category: "aqi"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "ushort"; readonly unit: any; readonly format: readonly [0, 500]; }; readonly level: { readonly category: "level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["excellent", "good", "fair", "inferior", "poor", "unknown"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly air_particulate: { readonly category: "air_particulate"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["detected", "concentration"]]; }; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "µg/m³"; readonly format: readonly [0, 1000]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["pm1", "pm2_5", "pm10"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly carbon_dioxide: { readonly category: "carbon_dioxide"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["detected", "concentration"]]; }; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "ppm"; readonly format: readonly [0, 100000]; }; readonly peak_level: { readonly category: "peak_level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "ppm"; readonly format: readonly [0, 100000]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly carbon_monoxide: { readonly category: "carbon_monoxide"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["detected", "concentration"]]; }; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "ppm"; readonly format: readonly [0, 100]; }; readonly peak_level: { readonly category: "peak_level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "ppm"; readonly format: readonly [0, 100]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly flow: { readonly category: "flow"; readonly properties: { readonly rate: { readonly category: "rate"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "m³/h"; readonly format: readonly [0, 65533]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly humidity: { readonly category: "humidity"; readonly properties: { readonly humidity: { readonly category: "humidity"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly illuminance: { readonly category: "illuminance"; readonly properties: { readonly illuminance: { readonly category: "illuminance"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "lx"; readonly format: readonly [0, 100000]; }; readonly level: { readonly category: "level"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["bright", "moderate", "dusky", "dark"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly nitrogen_dioxide: { readonly category: "nitrogen_dioxide"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["detected", "concentration"]]; }; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "µg/m³"; readonly format: readonly [0, 100000]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["annual", "1_hour"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly ozone: { readonly category: "ozone"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["detected", "concentration", "level"]]; readonly oneOf: readonly [readonly ["concentration", "level"]]; }; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "µg/m³"; readonly format: readonly [0, 100000]; }; readonly level: { readonly category: "level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["low", "medium", "high"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly pressure: { readonly category: "pressure"; readonly properties: { readonly pressure: { readonly category: "pressure"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "kPa"; readonly format: readonly [0, 32767]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly sulphur_dioxide: { readonly category: "sulphur_dioxide"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "µg/m³"; readonly format: readonly [0, 100000]; }; readonly level: { readonly category: "level"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["low", "medium", "high"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly temperature: { readonly category: "temperature"; readonly properties: { readonly temperature: { readonly category: "temperature"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "°C"; readonly format: readonly [0, 100]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly volatile_organic_compounds: { readonly category: "volatile_organic_compounds"; readonly constraints: { readonly oneOrMoreOf: readonly [readonly ["detected", "concentration", "level"]]; readonly oneOf: readonly [readonly ["concentration", "level"]]; }; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "µg/m³"; readonly format: readonly [0, 1000]; }; readonly level: { readonly category: "level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["low", "medium", "high"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly alarm: { readonly category: "alarm"; readonly properties: { readonly state: { readonly category: "state"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["disarmed", "armed_home", "armed_away", "armed_night"]; }; readonly alarm_state: { readonly category: "alarm_state"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["idle", "pending", "triggered", "silenced"]; }; readonly triggered: { readonly category: "triggered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly siren: { readonly category: "siren"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly fault_description: { readonly category: "fault_description"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly last_event: { readonly category: "last_event"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; }; }; readonly contact: { readonly category: "contact"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly gas: { readonly category: "gas"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["normal", "warning", "alarm"]; }; readonly concentration: { readonly category: "concentration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uint"; readonly unit: "ppm"; readonly format: readonly [0, 65535]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly leak: { readonly category: "leak"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly level: { readonly category: "level"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["low", "medium", "high"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly lock: { readonly category: "lock"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["locked", "unlocked"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly motion: { readonly category: "motion"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly distance: { readonly category: "distance"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "m"; readonly format: readonly [0, 100]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly occupancy: { readonly category: "occupancy"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly distance: { readonly category: "distance"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "m"; readonly format: readonly [0, 100]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly smoke: { readonly category: "smoke"; readonly properties: { readonly detected: { readonly category: "detected"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly cooler: { readonly category: "cooler"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly temperature: { readonly category: "temperature"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: "°C"; readonly format: readonly [0, 100]; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly dehumidifier: { readonly category: "dehumidifier"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly humidity: { readonly category: "humidity"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["auto", "manual", "continuous", "laundry", "quiet"]; }; readonly status: { readonly category: "status"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["idle", "dehumidifying", "defrosting"]; }; readonly water_tank_full: { readonly category: "water_tank_full"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly water_tank_level: { readonly category: "water_tank_level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly defrost_active: { readonly category: "defrost_active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly timer: { readonly category: "timer"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "duration"; readonly data_type: "ushort"; readonly unit: "s"; readonly format: readonly [0, 86400]; readonly step: 60; readonly description: { readonly en: "Timer duration in seconds (0-86400)"; }; }, { readonly id: "preset"; readonly data_type: "enum"; readonly format: readonly ["off", "30m", "1h", "2h", "4h", "8h", "12h"]; readonly description: { readonly en: "Preset timer intervals"; }; }]; }; readonly locked: { readonly category: "locked"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly door: { readonly category: "door"; readonly properties: { readonly obstruction: { readonly category: "obstruction"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["opened", "closed", "opening", "closing", "stopped"]; }; readonly position: { readonly category: "position"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["open", "close", "stop"]; }; readonly type: { readonly category: "type"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["door", "garage"]; }; readonly percentage: { readonly category: "percentage"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 100]; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly fan: { readonly category: "fan"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly swing: { readonly category: "swing"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly speed: { readonly category: "speed"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Speed as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["off", "low", "medium", "high", "turbo", "auto"]; readonly description: { readonly en: "Speed as discrete levels"; }; }]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["auto", "manual", "eco", "sleep", "natural", "turbo"]; }; readonly direction: { readonly category: "direction"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["clockwise", "counter_clockwise"]; }; readonly natural_breeze: { readonly category: "natural_breeze"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly timer: { readonly category: "timer"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "duration"; readonly data_type: "ushort"; readonly unit: "s"; readonly format: readonly [0, 86400]; readonly step: 60; readonly description: { readonly en: "Timer duration in seconds (0-86400)"; }; }, { readonly id: "preset"; readonly data_type: "enum"; readonly format: readonly ["off", "30m", "1h", "2h", "4h", "8h", "12h"]; readonly description: { readonly en: "Preset timer intervals"; }; }]; }; readonly locked: { readonly category: "locked"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly heater: { readonly category: "heater"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly temperature: { readonly category: "temperature"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: "°C"; readonly format: readonly [0, 100]; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly position: { readonly category: "position"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Position as percentage (0-100%)"; }; }, { readonly id: "state"; readonly data_type: "enum"; readonly format: readonly ["closed", "quarter", "half", "three_quarter", "open"]; readonly description: { readonly en: "Position as discrete states"; }; }]; }; }; }; readonly humidifier: { readonly category: "humidifier"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly humidity: { readonly category: "humidity"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["auto", "manual", "sleep", "baby"]; }; readonly status: { readonly category: "status"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["idle", "humidifying"]; }; readonly mist_level: { readonly category: "mist_level"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Mist level as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["off", "low", "medium", "high"]; readonly description: { readonly en: "Mist level as discrete levels"; }; }]; }; readonly warm_mist: { readonly category: "warm_mist"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly water_tank_empty: { readonly category: "water_tank_empty"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly water_tank_level: { readonly category: "water_tank_level"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly timer: { readonly category: "timer"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "duration"; readonly data_type: "ushort"; readonly unit: "s"; readonly format: readonly [0, 86400]; readonly step: 60; readonly description: { readonly en: "Timer duration in seconds (0-86400)"; }; }, { readonly id: "preset"; readonly data_type: "enum"; readonly format: readonly ["off", "30m", "1h", "2h", "4h", "8h", "12h"]; readonly description: { readonly en: "Preset timer intervals"; }; }]; }; readonly locked: { readonly category: "locked"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly light: { readonly category: "light"; readonly constraints: { readonly mutuallyExclusiveGroups: readonly [readonly [readonly ["color_red", "color_green", "color_blue"], readonly ["hue", "saturation"]]]; }; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly brightness: { readonly category: "brightness"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Brightness as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["off", "low", "medium", "high", "full"]; readonly description: { readonly en: "Brightness as discrete levels"; }; }]; }; readonly color_red: { readonly category: "color_red"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly color_green: { readonly category: "color_green"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly color_blue: { readonly category: "color_blue"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly color_white: { readonly category: "color_white"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly color_temperature: { readonly category: "color_temperature"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "ushort"; readonly unit: "K"; readonly format: readonly [2000, 10000]; }; readonly hue: { readonly category: "hue"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "ushort"; readonly unit: "deg"; readonly format: readonly [0, 360]; }; readonly saturation: { readonly category: "saturation"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; }; }; readonly outlet: { readonly category: "outlet"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly in_use: { readonly category: "in_use"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly robot_vacuum: { readonly category: "robot_vacuum"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["idle", "cleaning", "vacuuming", "mopping", "docking", "charging"]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["auto", "spot", "manual"]; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly switcher: { readonly category: "switcher"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly child_lock: { readonly category: "child_lock"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly timer: { readonly category: "timer"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "duration"; readonly data_type: "ushort"; readonly unit: "s"; readonly format: readonly [0, 86400]; readonly step: 60; readonly description: { readonly en: "Timer duration in seconds (0-86400)"; }; }, { readonly id: "preset"; readonly data_type: "enum"; readonly format: readonly ["off", "30m", "1h", "2h", "4h", "8h", "12h"]; readonly description: { readonly en: "Preset timer intervals"; }; }]; }; }; }; readonly thermostat: { readonly category: "thermostat"; readonly properties: { readonly locked: { readonly category: "locked"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly valve: { readonly category: "valve"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly type: { readonly category: "type"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["generic", "irrigation", "shower_head", "water_faucet"]; }; readonly duration: { readonly category: "duration"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "ushort"; readonly unit: "s"; readonly format: readonly [0, 3600]; }; readonly remaining: { readonly category: "remaining"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "ushort"; readonly unit: "s"; readonly format: readonly [0, 3600]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["manual", "scheduled"]; }; readonly position: { readonly category: "position"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Position as percentage (0-100%)"; }; }, { readonly id: "state"; readonly data_type: "enum"; readonly format: readonly ["closed", "quarter", "half", "three_quarter", "open"]; readonly description: { readonly en: "Position as discrete states"; }; }]; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly window_covering: { readonly category: "window_covering"; readonly properties: { readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["opened", "closed", "opening", "closing", "stopped"]; }; readonly position: { readonly category: "position"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Position as percentage (0-100%)"; }; }, { readonly id: "state"; readonly data_type: "enum"; readonly format: readonly ["closed", "quarter", "half", "three_quarter", "open"]; readonly description: { readonly en: "Position as discrete states"; }; }]; }; readonly type: { readonly category: "type"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["curtain", "roller", "blind", "venetian_blind", "vertical_blind", "shutter", "outdoor_blind", "awning"]; }; readonly command: { readonly category: "command"; readonly required: true; readonly permissions: readonly ["wo"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["open", "close", "stop"]; }; readonly obstruction: { readonly category: "obstruction"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly tilt: { readonly category: "tilt"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: "°"; readonly format: readonly [-90, 90]; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly battery: { readonly category: "battery"; readonly properties: { readonly percentage: { readonly category: "percentage"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Battery as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["critical", "low", "medium", "high", "full"]; readonly description: { readonly en: "Battery as discrete levels"; }; }]; }; readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["ok", "low", "charging"]; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly electrical_energy: { readonly category: "electrical_energy"; readonly properties: { readonly consumption: { readonly category: "consumption"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "kWh"; readonly format: readonly [0, any]; readonly measurement_kind: "cumulative"; readonly reset_behavior: "unknown"; }; readonly average_power: { readonly category: "average_power"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "W"; readonly format: readonly [0, 100000]; readonly measurement_kind: "interval_average"; }; readonly grid_import: { readonly category: "grid_import"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "kWh"; readonly format: readonly [0, any]; readonly measurement_kind: "cumulative"; readonly reset_behavior: "unknown"; }; readonly grid_export: { readonly category: "grid_export"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "kWh"; readonly format: readonly [0, any]; readonly measurement_kind: "cumulative"; readonly reset_behavior: "unknown"; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly electrical_generation: { readonly category: "electrical_generation"; readonly properties: { readonly production: { readonly category: "production"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "kWh"; readonly format: readonly [0, any]; readonly measurement_kind: "cumulative"; readonly reset_behavior: "unknown"; }; readonly power: { readonly category: "power"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "W"; readonly format: readonly [0, 100000]; readonly measurement_kind: "instantaneous"; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly electrical_power: { readonly category: "electrical_power"; readonly properties: { readonly power: { readonly category: "power"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "W"; readonly format: readonly [0, 10000]; readonly measurement_kind: "instantaneous"; }; readonly voltage: { readonly category: "voltage"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "V"; readonly format: readonly [0, 500]; readonly measurement_kind: "instantaneous"; }; readonly current: { readonly category: "current"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "A"; readonly format: readonly [0, 100]; readonly measurement_kind: "instantaneous"; }; readonly frequency: { readonly category: "frequency"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "Hz"; readonly format: readonly [40, 70]; readonly measurement_kind: "instantaneous"; }; readonly over_current: { readonly category: "over_current"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly over_voltage: { readonly category: "over_voltage"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly over_power: { readonly category: "over_power"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly camera: { readonly category: "camera"; readonly properties: { readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["available", "in_use", "unavailable", "offline", "initializing", "error"]; }; readonly source: { readonly category: "source"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly zoom: { readonly category: "zoom"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: any; readonly format: readonly [1, 10]; }; readonly pan: { readonly category: "pan"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: "°"; readonly format: readonly [-180, 180]; }; readonly tilt: { readonly category: "tilt"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: "°"; readonly format: readonly [-90, 90]; }; readonly infrared: { readonly category: "infrared"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly doorbell: { readonly category: "doorbell"; readonly properties: { readonly event: { readonly category: "event"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["single_press", "double_press", "long_press"]; }; readonly brightness: { readonly category: "brightness"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Brightness as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["off", "low", "medium", "high", "full"]; readonly description: { readonly en: "Brightness as discrete levels"; }; }]; }; readonly tampered: { readonly category: "tampered"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly media_input: { readonly category: "media_input"; readonly properties: { readonly source: { readonly category: "source"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "standard"; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["hdmi1", "hdmi2", "hdmi3", "hdmi4", "hdmi5", "hdmi6", "arc", "earc", "tv", "cable", "satellite", "antenna", "av1", "av2", "component", "vga", "dvi", "usb", "bluetooth", "wifi", "airplay", "cast", "dlna", "miracast", "app_netflix", "app_youtube", "app_spotify", "app_prime_video", "app_disney_plus", "app_hbo_max", "app_apple_tv", "app_plex", "app_kodi", "other"]; readonly step: any; readonly description: { readonly en: "Standardized input/source identifier (recommended for UI)."; }; }, { readonly id: "custom"; readonly data_type: "string"; readonly unit: any; readonly format: any; readonly step: any; readonly description: { readonly en: "Integration-specific input/source value (fallback)."; }; }]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly source_label: { readonly category: "source_label"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; }; }; readonly media_playback: { readonly category: "media_playback"; readonly properties: { readonly status: { readonly category: "status"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["playing", "paused", "stopped"]; }; readonly track: { readonly category: "track"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly duration: { readonly category: "duration"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uint"; readonly unit: "s"; readonly format: readonly [0, 86400]; }; readonly position: { readonly category: "position"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uint"; readonly unit: "s"; readonly format: readonly [0, 86400]; }; readonly shuffle: { readonly category: "shuffle"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly repeat: { readonly category: "repeat"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["off", "one", "all"]; }; readonly command: { readonly category: "command"; readonly required: false; readonly permissions: readonly ["wo"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["play", "pause", "stop", "next", "previous", "rewind", "fast_forward"]; }; readonly artist: { readonly category: "artist"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly album: { readonly category: "album"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly artwork_url: { readonly category: "artwork_url"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly media_type: { readonly category: "media_type"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["music", "tvshow", "movie", "video", "playlist", "podcast", "audiobook", "radio", "unknown"]; }; }; }; readonly microphone: { readonly category: "microphone"; readonly properties: { readonly active: { readonly category: "active"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly volume: { readonly category: "volume"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Volume as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["mute", "low", "medium", "high", "max"]; readonly description: { readonly en: "Volume as discrete levels"; }; }]; }; }; }; readonly speaker: { readonly category: "speaker"; readonly properties: { readonly active: { readonly category: "active"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly volume: { readonly category: "volume"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Volume as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["mute", "low", "medium", "high", "max"]; readonly description: { readonly en: "Volume as discrete levels"; }; }]; }; readonly mode: { readonly category: "mode"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["stereo", "mono", "surround"]; }; readonly mute: { readonly category: "mute"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly balance: { readonly category: "balance"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: any; readonly format: readonly [-1, 1]; }; readonly bass: { readonly category: "bass"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: any; readonly format: readonly [-10, 10]; }; readonly treble: { readonly category: "treble"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "float"; readonly unit: any; readonly format: readonly [-10, 10]; }; }; }; readonly television: { readonly category: "television"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly brightness: { readonly category: "brightness"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Brightness as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["off", "low", "medium", "high", "full"]; readonly description: { readonly en: "Brightness as discrete levels"; }; }]; }; readonly remote_key: { readonly category: "remote_key"; readonly required: false; readonly permissions: readonly ["wo"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["rewind", "fast_forward", "next", "previous", "arrow_up", "arrow_down", "arrow_left", "arrow_right", "select", "back", "exit", "info", "play", "pause"]; }; }; }; readonly projector: { readonly category: "projector"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly brightness: { readonly category: "brightness"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_types: readonly [{ readonly id: "percentage"; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; readonly step: 1; readonly description: { readonly en: "Brightness as percentage (0-100%)"; }; }, { readonly id: "level"; readonly data_type: "enum"; readonly format: readonly ["off", "low", "medium", "high", "full"]; readonly description: { readonly en: "Brightness as discrete levels"; }; }]; }; readonly remote_key: { readonly category: "remote_key"; readonly required: false; readonly permissions: readonly ["wo"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["rewind", "fast_forward", "next", "previous", "arrow_up", "arrow_down", "arrow_left", "arrow_right", "select", "back", "exit", "info", "play", "pause"]; }; }; }; readonly device_information: { readonly category: "device_information"; readonly properties: { readonly manufacturer: { readonly category: "manufacturer"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly model: { readonly category: "model"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly serial_number: { readonly category: "serial_number"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly firmware_revision: { readonly category: "firmware_revision"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly hardware_revision: { readonly category: "hardware_revision"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "string"; readonly unit: any; readonly format: any; }; readonly link_quality: { readonly category: "link_quality"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly connection_type: { readonly category: "connection_type"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["wired", "wifi", "zigbee", "bluetooth"]; }; readonly status: { readonly category: "status"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["connected", "disconnected", "init", "ready", "running", "sleeping", "stopped", "lost", "alert", "unknown"]; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly filter: { readonly category: "filter"; readonly properties: { readonly life_remaining: { readonly category: "life_remaining"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: "%"; readonly format: readonly [0, 100]; }; readonly status: { readonly category: "status"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["good", "replace_soon", "replace_now"]; }; readonly change_needed: { readonly category: "change_needed"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly reset: { readonly category: "reset"; readonly required: false; readonly permissions: readonly ["wo"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly fault: { readonly category: "fault"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; }; }; readonly button: { readonly category: "button"; readonly properties: { readonly event: { readonly category: "event"; readonly required: true; readonly permissions: readonly ["ev"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["press", "long_press", "double_press"]; }; readonly detected: { readonly category: "detected"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly indicator: { readonly category: "indicator"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly brightness: { readonly category: "brightness"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uchar"; readonly unit: any; readonly format: readonly [0, 255]; }; readonly color: { readonly category: "color_red"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["red", "green", "blue", "yellow", "white", "off"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly buzzer: { readonly category: "buzzer"; readonly properties: { readonly on: { readonly category: "on"; readonly required: true; readonly permissions: readonly ["rw"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; readonly frequency: { readonly category: "frequency"; readonly required: false; readonly permissions: readonly ["rw"]; readonly data_type: "uint"; readonly unit: "Hz"; readonly format: readonly [100, 10000]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly accelerometer: { readonly category: "accelerometer"; readonly properties: { readonly acceleration_x: { readonly category: "acceleration_x"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "g"; readonly format: readonly [-16, 16]; readonly step: 0.001; }; readonly acceleration_y: { readonly category: "acceleration_y"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "g"; readonly format: readonly [-16, 16]; readonly step: 0.001; }; readonly acceleration_z: { readonly category: "acceleration_z"; readonly required: true; readonly permissions: readonly ["ro"]; readonly data_type: "float"; readonly unit: "g"; readonly format: readonly [-16, 16]; readonly step: 0.001; }; readonly orientation: { readonly category: "orientation"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "enum"; readonly unit: any; readonly format: readonly ["landscape", "portrait", "landscape_inverted", "portrait_inverted", "face_up", "face_down"]; }; readonly active: { readonly category: "active"; readonly required: false; readonly permissions: readonly ["ro"]; readonly data_type: "bool"; readonly unit: any; readonly format: any; }; }; }; readonly generic: { readonly category: "generic"; readonly properties: { readonly generic: { readonly category: "generic"; readonly required: false; }; }; }; }; export type ChannelCategory = keyof typeof channelsSchema; export type ChannelDefinition = typeof channelsSchema[ChannelCategory];