From 354e5eadfc2665cc9cdebeb6de4687490e4b8dc8 Mon Sep 17 00:00:00 2001 From: Dinesh Harjani Date: Tue, 16 Jan 2024 12:03:46 +0000 Subject: [PATCH] Fix: Appearance(s) now use Decimal value(s) and categories This matches how company_ids work as well. They're decimals, even though Bluetooth SIG defines them as hex. --- README.md | 4 +- decimal_ids.js | 36 +- v1/gap_appearance.json | 1334 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 1318 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index ae1af1c..1a639c6 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Appearance is a new addition to this database prompted by user [eriklins](https: | Field | Type | Description | Required | | ------|------|----------| --- | -| category | `Int` | Decimal value identifying the Category, corresponding to reversed bits 15 to 6 of Appearance Data | **Yes** | +| category | `Integer` | Decimal value identifying the Category, corresponding to reversed bits 15 to 6 of Appearance Data | **Yes** | | name | `String` | Name of the Category | **Yes** | | subcategory | `[Sub-Category]` | Array of Sub-Categories within an Appearance Category | **No** | @@ -71,7 +71,7 @@ Appearance is a new addition to this database prompted by user [eriklins](https: | Field | Type | Description | Required | | ------|------|----------| --- | -| value | `Int` | Decimal value identifying the sub-category within a parent category, corresponding to the reversed bits 5 to 0 from Appearance Data | **Yes** | +| value | `Integer` | Decimal value identifying the sub-category within a parent category, corresponding to the reversed bits 5 to 0 from Appearance Data | **Yes** | | name | `String` | Name of the Sub-Category | **Yes** | ## Rules and Contributions diff --git a/decimal_ids.js b/decimal_ids.js index 85f79e7..5b8c235 100644 --- a/decimal_ids.js +++ b/decimal_ids.js @@ -15,6 +15,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND const version = require('./package.json').version; const pathForJson = filename => `${__dirname}/v${version.split('.')[0]}/${filename}.json`; +// Task 1: Fix Company IDs + const companyIdsFile = pathForJson('company_ids') console.debug(companyIdsFile) @@ -68,4 +70,36 @@ readlineInterface.on('close', () => { } }); console.log(`Hex Company IDs Fix-up completed. ${modificationsCount} IDs modified.`); -}); \ No newline at end of file +}); + +// Task 2: Fix Appearances values / categories + +const appearancesFile = pathForJson('gap_appearance') +const rawData = fs.readFileSync(appearancesFile); +let jsonData = JSON.parse(rawData); + +// Helper function to convert hex to decimal for the subcategories +function convertHexToDecimal(subcategories) { + subcategories.forEach(subcategory => { + if (subcategory.hasOwnProperty('value')) { + subcategory.value = parseInt(subcategory.value, 16); + } + }); +} + +// Iterate through the main categories +jsonData.forEach(category => { + // Convert hex to decimal for the main category + if (category.hasOwnProperty('category')) { + category.category = parseInt(category.category, 16); + } + + // Check if subcategories exist and convert hex to decimal for them + if (category.hasOwnProperty('subcategory')) { + convertHexToDecimal(category.subcategory); + } +}); + +// Write the updated data back to the file +const updatedData = JSON.stringify(jsonData, null, 2); +fs.writeFileSync(appearancesFile, updatedData); \ No newline at end of file diff --git a/v1/gap_appearance.json b/v1/gap_appearance.json index 426d9b4..74a7506 100644 --- a/v1/gap_appearance.json +++ b/v1/gap_appearance.json @@ -1,54 +1,1282 @@ [ -{"category": "000", "name": "Unknown"}, -{"category": "001", "name": "Phone"}, -{"category": "002", "name": "Computer", "subcategory": [{"value": "01", "name": "Desktop Workstation"}, {"value": "02", "name": "Server-class Computer"}, {"value": "03", "name": "Laptop"}, {"value": "04", "name": "Handheld PC/PDA (clamshell)"}, {"value": "05", "name": "Palm-size PC/PDA"}, {"value": "06", "name": "Wearable computer (watch size)"}, {"value": "07", "name": "Tablet"}, {"value": "08", "name": "Docking Station"}, {"value": "09", "name": "All in One"}, {"value": "0A", "name": "Blade Server"}, {"value": "0B", "name": "Convertible"}, {"value": "0C", "name": "Detachable"}, {"value": "0D", "name": "IoT Gateway"}, {"value": "0E", "name": "Mini PC"}, {"value": "0F", "name": "Stick PC"}]}, -{"category": "003", "name": "Watch", "subcategory": [{"value": "01", "name": "Sports Watch"}, {"value": "02", "name": "Smartwatch"}]}, -{"category": "004", "name": "Clock"}, -{"category": "005", "name": "Display"}, -{"category": "006", "name": "Remote Control"}, -{"category": "007", "name": "Eye-glasses"}, -{"category": "008", "name": "Tag"}, -{"category": "009", "name": "Keyring"}, -{"category": "00A", "name": "Media Player"}, -{"category": "00B", "name": "Barcode Scanner"}, -{"category": "00C", "name": "Thermometer", "subcategory": [{"value": "01", "name": "Ear Thermometer"}]}, -{"category": "00D", "name": "Heart Rate Sensor", "subcategory": [{"value": "01", "name": "Heart Rate Belt"}]}, -{"category": "00E", "name": "Blood Pressure", "subcategory": [{"value": "01", "name": "Arm Blood Pressure"}, {"value": "02", "name": "Wrist Blood Pressure"}]}, -{"category": "00F", "name": "Human Interface Device", "subcategory": [{"value": "01", "name": "Keyboard"}, {"value": "02", "name": "Mouse"}, {"value": "03", "name": "Joystick"}, {"value": "04", "name": "Gamepad"}, {"value": "05", "name": "Digitizer Tablet"}, {"value": "06", "name": "Card Reader"}, {"value": "07", "name": "Digital Pen"}, {"value": "08", "name": "Barcode Scanner"}, {"value": "09", "name": "Touchpad"}, {"value": "0A", "name": "Presentation Remote"}]}, -{"category": "010", "name": "Glucose Meter"}, -{"category": "011", "name": "Running Walking Sensor", "subcategory": [{"value": "01", "name": "In-Shoe Running Walking Sensor"}, {"value": "02", "name": "On-Shoe Running Walking Sensor"}, {"value": "03", "name": "On-Hip Running Walking Sensor"}]}, -{"category": "012", "name": "Cycling", "subcategory": [{"value": "01", "name": "Cycling Computer"}, {"value": "02", "name": "Speed Sensor"}, {"value": "03", "name": "Cadence Sensor"}, {"value": "04", "name": "Power Sensor"}, {"value": "05", "name": "Speed and Cadence Sensor"}]}, -{"category": "013", "name": "Control Device", "subcategory": [{"value": "01", "name": "Switch"}, {"value": "02", "name": "Multi-switch"}, {"value": "03", "name": "Button"}, {"value": "04", "name": "Slider"}, {"value": "05", "name": "Rotary Switch"}, {"value": "06", "name": "Touch Panel"}, {"value": "07", "name": "Single Switch"}, {"value": "08", "name": "Double Switch"}, {"value": "09", "name": "Triple Switch"}, {"value": "0A", "name": "Battery Switch"}, {"value": "0B", "name": "Energy Harvesting Switch"}, {"value": "0C", "name": "Push Button"}, {"value": "0D", "name": "Dial"}]}, -{"category": "014", "name": "Network Device", "subcategory": [{"value": "01", "name": "Access Point"}, {"value": "02", "name": "Mesh Device"}, {"value": "03", "name": "Mesh Network Proxy"}]}, -{"category": "015", "name": "Sensor", "subcategory": [{"value": "01", "name": "Motion Sensor"}, {"value": "02", "name": "Air quality Sensor"}, {"value": "03", "name": "Temperature Sensor"}, {"value": "04", "name": "Humidity Sensor"}, {"value": "05", "name": "Leak Sensor"}, {"value": "06", "name": "Smoke Sensor"}, {"value": "07", "name": "Occupancy Sensor"}, {"value": "08", "name": "Contact Sensor"}, {"value": "09", "name": "Carbon Monoxide Sensor"}, {"value": "0A", "name": "Carbon Dioxide Sensor"}, {"value": "0B", "name": "Ambient Light Sensor"}, {"value": "0C", "name": "Energy Sensor"}, {"value": "0D", "name": "Color Light Sensor"}, {"value": "0E", "name": "Rain Sensor"}, {"value": "0F", "name": "Fire Sensor"}, {"value": "10", "name": "Wind Sensor"}, {"value": "11", "name": "Proximity Sensor"}, {"value": "12", "name": "Multi-Sensor"}, {"value": "13", "name": "Flush Mounted Sensor"}, {"value": "14", "name": "Ceiling Mounted Sensor"}, {"value": "15", "name": "Wall Mounted Sensor"}, {"value": "16", "name": "Multisensor"}, {"value": "17", "name": "Energy Meter"}, {"value": "18", "name": "Flame Detector"}, {"value": "19", "name": "Vehicle Tire Pressure Sensor"}]}, -{"category": "016", "name": "Light Fixtures", "subcategory": [{"value": "01", "name": "Wall Light"}, {"value": "02", "name": "Ceiling Light"}, {"value": "03", "name": "Floor Light"}, {"value": "04", "name": "Cabinet Light"}, {"value": "05", "name": "Desk Light"}, {"value": "06", "name": "Troffer Light"}, {"value": "07", "name": "Pendant Light"}, {"value": "08", "name": "In-ground Light"}, {"value": "09", "name": "Flood Light"}, {"value": "0A", "name": "Underwater Light"}, {"value": "0B", "name": "Bollard with Light"}, {"value": "0C", "name": "Pathway Light"}, {"value": "0D", "name": "Garden Light"}, {"value": "0E", "name": "Pole-top Light"}, {"value": "0F", "name": "Spotlight"}, {"value": "10", "name": "Linear Light"}, {"value": "11", "name": "Street Light"}, {"value": "12", "name": "Shelves Light"}, {"value": "13", "name": "Bay Light"}, {"value": "14", "name": "Emergency Exit Light"}, {"value": "15", "name": "Light Controller"}, {"value": "16", "name": "Light Driver"}, {"value": "17", "name": "Bulb"}, {"value": "18", "name": "Low-bay Light"}, {"value": "19", "name": "High-bay Light"}]}, -{"category": "017", "name": "Fan", "subcategory": [{"value": "01", "name": "Ceiling Fan"}, {"value": "02", "name": "Axial Fan"}, {"value": "03", "name": "Exhaust Fan"}, {"value": "04", "name": "Pedestal Fan"}, {"value": "05", "name": "Desk Fan"}, {"value": "06", "name": "Wall Fan"}]}, -{"category": "018", "name": "HVAC", "subcategory": [{"value": "01", "name": "Thermostat"}, {"value": "02", "name": "Humidifier"}, {"value": "03", "name": "De-humidifier"}, {"value": "04", "name": "Heater"}, {"value": "05", "name": "Radiator"}, {"value": "06", "name": "Boiler"}, {"value": "07", "name": "Heat Pump"}, {"value": "08", "name": "Infrared Heater"}, {"value": "09", "name": "Radiant Panel Heater"}, {"value": "0A", "name": "Fan Heater"}, {"value": "0B", "name": "Air Curtain"}]}, -{"category": "019", "name": "Air Conditioning"}, -{"category": "01A", "name": "Humidifier"}, -{"category": "01B", "name": "Heating", "subcategory": [{"value": "01", "name": "Radiator"}, {"value": "02", "name": "Boiler"}, {"value": "03", "name": "Heat Pump"}, {"value": "04", "name": "Infrared Heater"}, {"value": "05", "name": "Radiant Panel Heater"}, {"value": "06", "name": "Fan Heater"}, {"value": "07", "name": "Air Curtain"}]}, -{"category": "01C", "name": "Access Control", "subcategory": [{"value": "01", "name": "Access Door"}, {"value": "02", "name": "Garage Door"}, {"value": "03", "name": "Emergency Exit Door"}, {"value": "04", "name": "Access Lock"}, {"value": "05", "name": "Elevator"}, {"value": "06", "name": "Window"}, {"value": "07", "name": "Entrance Gate"}, {"value": "08", "name": "Door Lock"}, {"value": "09", "name": "Locker"}]}, -{"category": "01D", "name": "Motorized Device", "subcategory": [{"value": "01", "name": "Motorized Gate"}, {"value": "02", "name": "Awning"}, {"value": "03", "name": "Blinds or Shades"}, {"value": "04", "name": "Curtains"}, {"value": "05", "name": "Screen"}]}, -{"category": "01E", "name": "Power Device", "subcategory": [{"value": "01", "name": "Power Outlet"}, {"value": "02", "name": "Power Strip"}, {"value": "03", "name": "Plug"}, {"value": "04", "name": "Power Supply"}, {"value": "05", "name": "LED Driver"}, {"value": "06", "name": "Fluorescent Lamp Gear"}, {"value": "07", "name": "HID Lamp Gear"}, {"value": "08", "name": "Charge Case"}, {"value": "09", "name": "Power Bank"}]}, -{"category": "01F", "name": "Light Source", "subcategory": [{"value": "01", "name": "Incandescent Light Bulb"}, {"value": "02", "name": "LED Lamp"}, {"value": "03", "name": "HID Lamp"}, {"value": "04", "name": "Fluorescent Lamp"}, {"value": "05", "name": "LED Array"}, {"value": "06", "name": "Multi-Color LED Array"}, {"value": "07", "name": "Low voltage halogen"}, {"value": "08", "name": "Organic light emitting diode (OLED)"}]}, -{"category": "020", "name": "Window Covering", "subcategory": [{"value": "01", "name": "Window Shades"}, {"value": "02", "name": "Window Blinds"}, {"value": "03", "name": "Window Awning"}, {"value": "04", "name": "Window Curtain"}, {"value": "05", "name": "Exterior Shutter"}, {"value": "06", "name": "Exterior Screen"}]}, -{"category": "021", "name": "Audio Sink", "subcategory": [{"value": "01", "name": "Standalone Speaker"}, {"value": "02", "name": "Soundbar"}, {"value": "03", "name": "Bookshelf Speaker"}, {"value": "04", "name": "Standmounted Speaker"}, {"value": "05", "name": "Speakerphone"}]}, -{"category": "022", "name": "Audio Source", "subcategory": [{"value": "01", "name": "Microphone"}, {"value": "02", "name": "Alarm"}, {"value": "03", "name": "Bell"}, {"value": "04", "name": "Horn"}, {"value": "05", "name": "Broadcasting Device"}, {"value": "06", "name": "Service Desk"}, {"value": "07", "name": "Kiosk"}, {"value": "08", "name": "Broadcasting Room"}, {"value": "09", "name": "Auditorium"}]}, -{"category": "023", "name": "Motorized Vehicle", "subcategory": [{"value": "01", "name": "Car"}, {"value": "02", "name": "Large Goods Vehicle"}, {"value": "03", "name": "2-Wheeled Vehicle"}, {"value": "04", "name": "Motorbike"}, {"value": "05", "name": "Scooter"}, {"value": "06", "name": "Moped"}, {"value": "07", "name": "3-Wheeled Vehicle"}, {"value": "08", "name": "Light Vehicle"}, {"value": "09", "name": "Quad Bike"}, {"value": "0A", "name": "Minibus"}, {"value": "0B", "name": "Bus"}, {"value": "0C", "name": "Trolley"}, {"value": "0D", "name": "Agricultural Vehicle"}, {"value": "0E", "name": "Camper / Caravan"}, {"value": "0F", "name": "Recreational Vehicle / Motor Home"}]}, -{"category": "024", "name": "Domestic Appliance", "subcategory": [{"value": "01", "name": "Refrigerator"}, {"value": "02", "name": "Freezer"}, {"value": "03", "name": "Oven"}, {"value": "04", "name": "Microwave"}, {"value": "05", "name": "Toaster"}, {"value": "06", "name": "Washing Machine"}, {"value": "07", "name": "Dryer"}, {"value": "08", "name": "Coffee maker"}, {"value": "09", "name": "Clothes iron"}, {"value": "0A", "name": "Curling iron"}, {"value": "0B", "name": "Hair dryer"}, {"value": "0C", "name": "Vacuum cleaner"}, {"value": "0D", "name": "Robotic vacuum cleaner"}, {"value": "0E", "name": "Rice cooker"}, {"value": "0F", "name": "Clothes steamer"}]}, -{"category": "025", "name": "Wearable Audio Device", "subcategory": [{"value": "01", "name": "Earbud"}, {"value": "02", "name": "Headset"}, {"value": "03", "name": "Headphones"}, {"value": "04", "name": "Neck Band"}]}, -{"category": "026", "name": "Aircraft", "subcategory": [{"value": "01", "name": "Light Aircraft"}, {"value": "02", "name": "Microlight"}, {"value": "03", "name": "Paraglider"}, {"value": "04", "name": "Large Passenger Aircraft"}]}, -{"category": "027", "name": "AV Equipment", "subcategory": [{"value": "01", "name": "Amplifier"}, {"value": "02", "name": "Receiver"}, {"value": "03", "name": "Radio"}, {"value": "04", "name": "Tuner"}, {"value": "05", "name": "Turntable"}, {"value": "06", "name": "CD Player"}, {"value": "07", "name": "DVD Player"}, {"value": "08", "name": "Bluray Player"}, {"value": "09", "name": "Optical Disc Player"}, {"value": "0A", "name": "Set-Top Box"}]}, -{"category": "028", "name": "Display Equipment", "subcategory": [{"value": "01", "name": "Television"}, {"value": "02", "name": "Monitor"}, {"value": "03", "name": "Projector"}]}, -{"category": "029", "name": "Hearing aid", "subcategory": [{"value": "01", "name": "In-ear hearing aid"}, {"value": "02", "name": "Behind-ear hearing aid"}, {"value": "03", "name": "Cochlear Implant"}]}, -{"category": "02A", "name": "Gaming", "subcategory": [{"value": "01", "name": "Home Video Game Console"}, {"value": "02", "name": "Portable handheld console"}]}, -{"category": "02B", "name": "Signage", "subcategory": [{"value": "01", "name": "Digital Signage"}, {"value": "02", "name": "Electronic Label"}]}, -{"category": "031", "name": "Pulse Oximeter", "subcategory": [{"value": "01", "name": "Fingertip Pulse Oximeter"}, {"value": "02", "name": "Wrist Worn Pulse Oximeter"}]}, -{"category": "032", "name": "Weight Scale"}, -{"category": "033", "name": "Personal Mobility Device", "subcategory": [{"value": "01", "name": "Powered Wheelchair"}, {"value": "02", "name": "Mobility Scooter"}]}, -{"category": "034", "name": "Continuous Glucose Monitor"}, -{"category": "035", "name": "Insulin Pump", "subcategory": [{"value": "01", "name": "Insulin Pump, durable pump"}, {"value": "04", "name": "Insulin Pump, patch pump"}, {"value": "08", "name": "Insulin Pen"}]}, -{"category": "036", "name": "Medication Delivery"}, -{"category": "037", "name": "Spirometer", "subcategory": [{"value": "01", "name": "Handheld Spirometer"}]}, -{"category": "051", "name": "Outdoor Sports Activity", "subcategory": [{"value": "01", "name": "Location Display"}, {"value": "02", "name": "Location and Navigation Display"}, {"value": "03", "name": "Location Pod"}, {"value": "04", "name": "Location and Navigation Pod"}]} -] + { + "category": 0, + "name": "Unknown" + }, + { + "category": 1, + "name": "Phone" + }, + { + "category": 2, + "name": "Computer", + "subcategory": [ + { + "value": 1, + "name": "Desktop Workstation" + }, + { + "value": 2, + "name": "Server-class Computer" + }, + { + "value": 3, + "name": "Laptop" + }, + { + "value": 4, + "name": "Handheld PC/PDA (clamshell)" + }, + { + "value": 5, + "name": "Palm-size PC/PDA" + }, + { + "value": 6, + "name": "Wearable computer (watch size)" + }, + { + "value": 7, + "name": "Tablet" + }, + { + "value": 8, + "name": "Docking Station" + }, + { + "value": 9, + "name": "All in One" + }, + { + "value": 10, + "name": "Blade Server" + }, + { + "value": 11, + "name": "Convertible" + }, + { + "value": 12, + "name": "Detachable" + }, + { + "value": 13, + "name": "IoT Gateway" + }, + { + "value": 14, + "name": "Mini PC" + }, + { + "value": 15, + "name": "Stick PC" + } + ] + }, + { + "category": 3, + "name": "Watch", + "subcategory": [ + { + "value": 1, + "name": "Sports Watch" + }, + { + "value": 2, + "name": "Smartwatch" + } + ] + }, + { + "category": 4, + "name": "Clock" + }, + { + "category": 5, + "name": "Display" + }, + { + "category": 6, + "name": "Remote Control" + }, + { + "category": 7, + "name": "Eye-glasses" + }, + { + "category": 8, + "name": "Tag" + }, + { + "category": 9, + "name": "Keyring" + }, + { + "category": 10, + "name": "Media Player" + }, + { + "category": 11, + "name": "Barcode Scanner" + }, + { + "category": 12, + "name": "Thermometer", + "subcategory": [ + { + "value": 1, + "name": "Ear Thermometer" + } + ] + }, + { + "category": 13, + "name": "Heart Rate Sensor", + "subcategory": [ + { + "value": 1, + "name": "Heart Rate Belt" + } + ] + }, + { + "category": 14, + "name": "Blood Pressure", + "subcategory": [ + { + "value": 1, + "name": "Arm Blood Pressure" + }, + { + "value": 2, + "name": "Wrist Blood Pressure" + } + ] + }, + { + "category": 15, + "name": "Human Interface Device", + "subcategory": [ + { + "value": 1, + "name": "Keyboard" + }, + { + "value": 2, + "name": "Mouse" + }, + { + "value": 3, + "name": "Joystick" + }, + { + "value": 4, + "name": "Gamepad" + }, + { + "value": 5, + "name": "Digitizer Tablet" + }, + { + "value": 6, + "name": "Card Reader" + }, + { + "value": 7, + "name": "Digital Pen" + }, + { + "value": 8, + "name": "Barcode Scanner" + }, + { + "value": 9, + "name": "Touchpad" + }, + { + "value": 10, + "name": "Presentation Remote" + } + ] + }, + { + "category": 16, + "name": "Glucose Meter" + }, + { + "category": 17, + "name": "Running Walking Sensor", + "subcategory": [ + { + "value": 1, + "name": "In-Shoe Running Walking Sensor" + }, + { + "value": 2, + "name": "On-Shoe Running Walking Sensor" + }, + { + "value": 3, + "name": "On-Hip Running Walking Sensor" + } + ] + }, + { + "category": 18, + "name": "Cycling", + "subcategory": [ + { + "value": 1, + "name": "Cycling Computer" + }, + { + "value": 2, + "name": "Speed Sensor" + }, + { + "value": 3, + "name": "Cadence Sensor" + }, + { + "value": 4, + "name": "Power Sensor" + }, + { + "value": 5, + "name": "Speed and Cadence Sensor" + } + ] + }, + { + "category": 19, + "name": "Control Device", + "subcategory": [ + { + "value": 1, + "name": "Switch" + }, + { + "value": 2, + "name": "Multi-switch" + }, + { + "value": 3, + "name": "Button" + }, + { + "value": 4, + "name": "Slider" + }, + { + "value": 5, + "name": "Rotary Switch" + }, + { + "value": 6, + "name": "Touch Panel" + }, + { + "value": 7, + "name": "Single Switch" + }, + { + "value": 8, + "name": "Double Switch" + }, + { + "value": 9, + "name": "Triple Switch" + }, + { + "value": 10, + "name": "Battery Switch" + }, + { + "value": 11, + "name": "Energy Harvesting Switch" + }, + { + "value": 12, + "name": "Push Button" + }, + { + "value": 13, + "name": "Dial" + } + ] + }, + { + "category": 20, + "name": "Network Device", + "subcategory": [ + { + "value": 1, + "name": "Access Point" + }, + { + "value": 2, + "name": "Mesh Device" + }, + { + "value": 3, + "name": "Mesh Network Proxy" + } + ] + }, + { + "category": 21, + "name": "Sensor", + "subcategory": [ + { + "value": 1, + "name": "Motion Sensor" + }, + { + "value": 2, + "name": "Air quality Sensor" + }, + { + "value": 3, + "name": "Temperature Sensor" + }, + { + "value": 4, + "name": "Humidity Sensor" + }, + { + "value": 5, + "name": "Leak Sensor" + }, + { + "value": 6, + "name": "Smoke Sensor" + }, + { + "value": 7, + "name": "Occupancy Sensor" + }, + { + "value": 8, + "name": "Contact Sensor" + }, + { + "value": 9, + "name": "Carbon Monoxide Sensor" + }, + { + "value": 10, + "name": "Carbon Dioxide Sensor" + }, + { + "value": 11, + "name": "Ambient Light Sensor" + }, + { + "value": 12, + "name": "Energy Sensor" + }, + { + "value": 13, + "name": "Color Light Sensor" + }, + { + "value": 14, + "name": "Rain Sensor" + }, + { + "value": 15, + "name": "Fire Sensor" + }, + { + "value": 16, + "name": "Wind Sensor" + }, + { + "value": 17, + "name": "Proximity Sensor" + }, + { + "value": 18, + "name": "Multi-Sensor" + }, + { + "value": 19, + "name": "Flush Mounted Sensor" + }, + { + "value": 20, + "name": "Ceiling Mounted Sensor" + }, + { + "value": 21, + "name": "Wall Mounted Sensor" + }, + { + "value": 22, + "name": "Multisensor" + }, + { + "value": 23, + "name": "Energy Meter" + }, + { + "value": 24, + "name": "Flame Detector" + }, + { + "value": 25, + "name": "Vehicle Tire Pressure Sensor" + } + ] + }, + { + "category": 22, + "name": "Light Fixtures", + "subcategory": [ + { + "value": 1, + "name": "Wall Light" + }, + { + "value": 2, + "name": "Ceiling Light" + }, + { + "value": 3, + "name": "Floor Light" + }, + { + "value": 4, + "name": "Cabinet Light" + }, + { + "value": 5, + "name": "Desk Light" + }, + { + "value": 6, + "name": "Troffer Light" + }, + { + "value": 7, + "name": "Pendant Light" + }, + { + "value": 8, + "name": "In-ground Light" + }, + { + "value": 9, + "name": "Flood Light" + }, + { + "value": 10, + "name": "Underwater Light" + }, + { + "value": 11, + "name": "Bollard with Light" + }, + { + "value": 12, + "name": "Pathway Light" + }, + { + "value": 13, + "name": "Garden Light" + }, + { + "value": 14, + "name": "Pole-top Light" + }, + { + "value": 15, + "name": "Spotlight" + }, + { + "value": 16, + "name": "Linear Light" + }, + { + "value": 17, + "name": "Street Light" + }, + { + "value": 18, + "name": "Shelves Light" + }, + { + "value": 19, + "name": "Bay Light" + }, + { + "value": 20, + "name": "Emergency Exit Light" + }, + { + "value": 21, + "name": "Light Controller" + }, + { + "value": 22, + "name": "Light Driver" + }, + { + "value": 23, + "name": "Bulb" + }, + { + "value": 24, + "name": "Low-bay Light" + }, + { + "value": 25, + "name": "High-bay Light" + } + ] + }, + { + "category": 23, + "name": "Fan", + "subcategory": [ + { + "value": 1, + "name": "Ceiling Fan" + }, + { + "value": 2, + "name": "Axial Fan" + }, + { + "value": 3, + "name": "Exhaust Fan" + }, + { + "value": 4, + "name": "Pedestal Fan" + }, + { + "value": 5, + "name": "Desk Fan" + }, + { + "value": 6, + "name": "Wall Fan" + } + ] + }, + { + "category": 24, + "name": "HVAC", + "subcategory": [ + { + "value": 1, + "name": "Thermostat" + }, + { + "value": 2, + "name": "Humidifier" + }, + { + "value": 3, + "name": "De-humidifier" + }, + { + "value": 4, + "name": "Heater" + }, + { + "value": 5, + "name": "Radiator" + }, + { + "value": 6, + "name": "Boiler" + }, + { + "value": 7, + "name": "Heat Pump" + }, + { + "value": 8, + "name": "Infrared Heater" + }, + { + "value": 9, + "name": "Radiant Panel Heater" + }, + { + "value": 10, + "name": "Fan Heater" + }, + { + "value": 11, + "name": "Air Curtain" + } + ] + }, + { + "category": 25, + "name": "Air Conditioning" + }, + { + "category": 26, + "name": "Humidifier" + }, + { + "category": 27, + "name": "Heating", + "subcategory": [ + { + "value": 1, + "name": "Radiator" + }, + { + "value": 2, + "name": "Boiler" + }, + { + "value": 3, + "name": "Heat Pump" + }, + { + "value": 4, + "name": "Infrared Heater" + }, + { + "value": 5, + "name": "Radiant Panel Heater" + }, + { + "value": 6, + "name": "Fan Heater" + }, + { + "value": 7, + "name": "Air Curtain" + } + ] + }, + { + "category": 28, + "name": "Access Control", + "subcategory": [ + { + "value": 1, + "name": "Access Door" + }, + { + "value": 2, + "name": "Garage Door" + }, + { + "value": 3, + "name": "Emergency Exit Door" + }, + { + "value": 4, + "name": "Access Lock" + }, + { + "value": 5, + "name": "Elevator" + }, + { + "value": 6, + "name": "Window" + }, + { + "value": 7, + "name": "Entrance Gate" + }, + { + "value": 8, + "name": "Door Lock" + }, + { + "value": 9, + "name": "Locker" + } + ] + }, + { + "category": 29, + "name": "Motorized Device", + "subcategory": [ + { + "value": 1, + "name": "Motorized Gate" + }, + { + "value": 2, + "name": "Awning" + }, + { + "value": 3, + "name": "Blinds or Shades" + }, + { + "value": 4, + "name": "Curtains" + }, + { + "value": 5, + "name": "Screen" + } + ] + }, + { + "category": 30, + "name": "Power Device", + "subcategory": [ + { + "value": 1, + "name": "Power Outlet" + }, + { + "value": 2, + "name": "Power Strip" + }, + { + "value": 3, + "name": "Plug" + }, + { + "value": 4, + "name": "Power Supply" + }, + { + "value": 5, + "name": "LED Driver" + }, + { + "value": 6, + "name": "Fluorescent Lamp Gear" + }, + { + "value": 7, + "name": "HID Lamp Gear" + }, + { + "value": 8, + "name": "Charge Case" + }, + { + "value": 9, + "name": "Power Bank" + } + ] + }, + { + "category": 31, + "name": "Light Source", + "subcategory": [ + { + "value": 1, + "name": "Incandescent Light Bulb" + }, + { + "value": 2, + "name": "LED Lamp" + }, + { + "value": 3, + "name": "HID Lamp" + }, + { + "value": 4, + "name": "Fluorescent Lamp" + }, + { + "value": 5, + "name": "LED Array" + }, + { + "value": 6, + "name": "Multi-Color LED Array" + }, + { + "value": 7, + "name": "Low voltage halogen" + }, + { + "value": 8, + "name": "Organic light emitting diode (OLED)" + } + ] + }, + { + "category": 32, + "name": "Window Covering", + "subcategory": [ + { + "value": 1, + "name": "Window Shades" + }, + { + "value": 2, + "name": "Window Blinds" + }, + { + "value": 3, + "name": "Window Awning" + }, + { + "value": 4, + "name": "Window Curtain" + }, + { + "value": 5, + "name": "Exterior Shutter" + }, + { + "value": 6, + "name": "Exterior Screen" + } + ] + }, + { + "category": 33, + "name": "Audio Sink", + "subcategory": [ + { + "value": 1, + "name": "Standalone Speaker" + }, + { + "value": 2, + "name": "Soundbar" + }, + { + "value": 3, + "name": "Bookshelf Speaker" + }, + { + "value": 4, + "name": "Standmounted Speaker" + }, + { + "value": 5, + "name": "Speakerphone" + } + ] + }, + { + "category": 34, + "name": "Audio Source", + "subcategory": [ + { + "value": 1, + "name": "Microphone" + }, + { + "value": 2, + "name": "Alarm" + }, + { + "value": 3, + "name": "Bell" + }, + { + "value": 4, + "name": "Horn" + }, + { + "value": 5, + "name": "Broadcasting Device" + }, + { + "value": 6, + "name": "Service Desk" + }, + { + "value": 7, + "name": "Kiosk" + }, + { + "value": 8, + "name": "Broadcasting Room" + }, + { + "value": 9, + "name": "Auditorium" + } + ] + }, + { + "category": 35, + "name": "Motorized Vehicle", + "subcategory": [ + { + "value": 1, + "name": "Car" + }, + { + "value": 2, + "name": "Large Goods Vehicle" + }, + { + "value": 3, + "name": "2-Wheeled Vehicle" + }, + { + "value": 4, + "name": "Motorbike" + }, + { + "value": 5, + "name": "Scooter" + }, + { + "value": 6, + "name": "Moped" + }, + { + "value": 7, + "name": "3-Wheeled Vehicle" + }, + { + "value": 8, + "name": "Light Vehicle" + }, + { + "value": 9, + "name": "Quad Bike" + }, + { + "value": 10, + "name": "Minibus" + }, + { + "value": 11, + "name": "Bus" + }, + { + "value": 12, + "name": "Trolley" + }, + { + "value": 13, + "name": "Agricultural Vehicle" + }, + { + "value": 14, + "name": "Camper / Caravan" + }, + { + "value": 15, + "name": "Recreational Vehicle / Motor Home" + } + ] + }, + { + "category": 36, + "name": "Domestic Appliance", + "subcategory": [ + { + "value": 1, + "name": "Refrigerator" + }, + { + "value": 2, + "name": "Freezer" + }, + { + "value": 3, + "name": "Oven" + }, + { + "value": 4, + "name": "Microwave" + }, + { + "value": 5, + "name": "Toaster" + }, + { + "value": 6, + "name": "Washing Machine" + }, + { + "value": 7, + "name": "Dryer" + }, + { + "value": 8, + "name": "Coffee maker" + }, + { + "value": 9, + "name": "Clothes iron" + }, + { + "value": 10, + "name": "Curling iron" + }, + { + "value": 11, + "name": "Hair dryer" + }, + { + "value": 12, + "name": "Vacuum cleaner" + }, + { + "value": 13, + "name": "Robotic vacuum cleaner" + }, + { + "value": 14, + "name": "Rice cooker" + }, + { + "value": 15, + "name": "Clothes steamer" + } + ] + }, + { + "category": 37, + "name": "Wearable Audio Device", + "subcategory": [ + { + "value": 1, + "name": "Earbud" + }, + { + "value": 2, + "name": "Headset" + }, + { + "value": 3, + "name": "Headphones" + }, + { + "value": 4, + "name": "Neck Band" + } + ] + }, + { + "category": 38, + "name": "Aircraft", + "subcategory": [ + { + "value": 1, + "name": "Light Aircraft" + }, + { + "value": 2, + "name": "Microlight" + }, + { + "value": 3, + "name": "Paraglider" + }, + { + "value": 4, + "name": "Large Passenger Aircraft" + } + ] + }, + { + "category": 39, + "name": "AV Equipment", + "subcategory": [ + { + "value": 1, + "name": "Amplifier" + }, + { + "value": 2, + "name": "Receiver" + }, + { + "value": 3, + "name": "Radio" + }, + { + "value": 4, + "name": "Tuner" + }, + { + "value": 5, + "name": "Turntable" + }, + { + "value": 6, + "name": "CD Player" + }, + { + "value": 7, + "name": "DVD Player" + }, + { + "value": 8, + "name": "Bluray Player" + }, + { + "value": 9, + "name": "Optical Disc Player" + }, + { + "value": 10, + "name": "Set-Top Box" + } + ] + }, + { + "category": 40, + "name": "Display Equipment", + "subcategory": [ + { + "value": 1, + "name": "Television" + }, + { + "value": 2, + "name": "Monitor" + }, + { + "value": 3, + "name": "Projector" + } + ] + }, + { + "category": 41, + "name": "Hearing aid", + "subcategory": [ + { + "value": 1, + "name": "In-ear hearing aid" + }, + { + "value": 2, + "name": "Behind-ear hearing aid" + }, + { + "value": 3, + "name": "Cochlear Implant" + } + ] + }, + { + "category": 42, + "name": "Gaming", + "subcategory": [ + { + "value": 1, + "name": "Home Video Game Console" + }, + { + "value": 2, + "name": "Portable handheld console" + } + ] + }, + { + "category": 43, + "name": "Signage", + "subcategory": [ + { + "value": 1, + "name": "Digital Signage" + }, + { + "value": 2, + "name": "Electronic Label" + } + ] + }, + { + "category": 49, + "name": "Pulse Oximeter", + "subcategory": [ + { + "value": 1, + "name": "Fingertip Pulse Oximeter" + }, + { + "value": 2, + "name": "Wrist Worn Pulse Oximeter" + } + ] + }, + { + "category": 50, + "name": "Weight Scale" + }, + { + "category": 51, + "name": "Personal Mobility Device", + "subcategory": [ + { + "value": 1, + "name": "Powered Wheelchair" + }, + { + "value": 2, + "name": "Mobility Scooter" + } + ] + }, + { + "category": 52, + "name": "Continuous Glucose Monitor" + }, + { + "category": 53, + "name": "Insulin Pump", + "subcategory": [ + { + "value": 1, + "name": "Insulin Pump, durable pump" + }, + { + "value": 4, + "name": "Insulin Pump, patch pump" + }, + { + "value": 8, + "name": "Insulin Pen" + } + ] + }, + { + "category": 54, + "name": "Medication Delivery" + }, + { + "category": 55, + "name": "Spirometer", + "subcategory": [ + { + "value": 1, + "name": "Handheld Spirometer" + } + ] + }, + { + "category": 81, + "name": "Outdoor Sports Activity", + "subcategory": [ + { + "value": 1, + "name": "Location Display" + }, + { + "value": 2, + "name": "Location and Navigation Display" + }, + { + "value": 3, + "name": "Location Pod" + }, + { + "value": 4, + "name": "Location and Navigation Pod" + } + ] + } +] \ No newline at end of file