diff --git a/.github/workflows/check-generated-modules.yml b/.github/workflows/check-generated-modules.yml index eafe957e2..0593ecc64 100644 --- a/.github/workflows/check-generated-modules.yml +++ b/.github/workflows/check-generated-modules.yml @@ -11,16 +11,27 @@ jobs: matrix: python-version: - "3.12" + node-version: + - "20" steps: - uses: actions/checkout@v4.2.0 with: fetch-depth: 2 + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Generate registry JSON files + run: | + npm install + npm run generate - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5.2.0 with: python-version: ${{ matrix.python-version }} - - name: Install dependencies + - name: Install Python scripts dependencies run: | python -m pip install --upgrade pip pip install -r requirements_scripts.txt diff --git a/.gitignore b/.gitignore index eb4dd9579..848446638 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +node_modules +*.lock +package-lock.json +notifications.json +sensors.json + # Hide sublime text stuff *.sublime-project *.sublime-workspace diff --git a/package.json b/package.json new file mode 100644 index 000000000..c16bea688 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "scripts": { + "generate": "node scripts/generate_zwave_js_registry_json.js" + }, + "type": "module", + "devDependencies": { + "@tsconfig/node20": "^20.1.4", + "@types/node": "^22.7.4", + "ts-node": "^10.9.2", + "typescript": "^5.3.3", + "zwave-js": "^13.4.0" + } +} diff --git a/requirements_scripts.txt b/requirements_scripts.txt index d22505f1e..94d4fe175 100644 --- a/requirements_scripts.txt +++ b/requirements_scripts.txt @@ -1,7 +1,5 @@ colorlog==6.8.2 -requests==2.32.3 python-slugify==8.0.4 types-python-slugify==8.0.2.20240310 -types-requests==2.32.0.20240914 -r requirements.txt -r requirements_lint.txt diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 000000000..d99d6f29b --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1,6 @@ +node_modules +*.lock +package-lock.json +*.json +!package.json +!tsconfig.json diff --git a/scripts/README.md b/scripts/README.md index 258b81a82..642a159c4 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -2,19 +2,25 @@ This directory contains scripts that are used to help maintain this library. +## Python scripts + To run these scripts, you will need to install `zwave-js-server-python` library's [requirements_scripts.txt](../../requirements_scripts.txt) into your environment. These scripts have to be run manually, and any changes that result from running the scripts have to be submitted as a PR to be included in the project. -## `generate_multilevel_sensor_constants.py` +### `generate_multilevel_sensor_constants.py` + +This script is used to download the latest multilevel sensor types and scales registries from the [zwave-js](https://github.com/zwave-js/zwave-js-server) repository and generate constants for the multilevel sensor command class. The generated constants can be found [here](../../zwave_js_server/const/command_class/multilevel_sensor.py). -This script is used to download the latest multilevel sensor types and scales JSON files from the [zwave-js](https://github.com/zwave-js/zwave-js-server) repository and generate constants for the multilevel sensor command class. The generated constants can be found [here](../../zwave_js_server/const/command_class/multilevel_sensor.py). +### `generate_notification_constants.py` -## `run_mock_server.py` +This script is used to download the latest notification registry from the [zwave-js](https://github.com/zwave-js/zwave-js-server) repository and generate constants for the notification command class. The generated constants can be found [here](../../zwave_js_server/const/command_class/notification.py). + +### `run_mock_server.py` This script allows you to run a mock Z-Wave JS Server instance using a network state dump from the `zwave-js-server-python` library. While the functionality is limited for now and is intended to be expanded in the future, the mock server also supports manipulating the state of the network by replaying events on it and emulating a responsive network by setting up mocked responses to commands. The main purpose of this mock server is to allow developers to test, build, and troubleshoot applications that use the `zwave-js-server-python` library to integrate with [zwave-js](https://github.com/zwave-js/node-zwave-js) (e.g. Home Assistant). -### Usage +#### Usage At a minimum, the mock server instance needs the file path to a network state dump (which can be retrieved from an existing network using the library's [dump](../../zwave_js_server/dump.py) module). All other inputs are optional. @@ -45,13 +51,13 @@ optional arguments: received. ``` -### Inputs/File Formats +#### Inputs/File Formats -#### Network State Dump (required) +##### Network State Dump (required) The network state dump tells the server what the initial state of the network should be for the driver, the controller, and all of the network's nodes. The output of the library's [dump](../../zwave_js_server/dump.py) module can be used directly as the input to the server. -##### File Format +###### File Format ```json [ @@ -90,13 +96,13 @@ The network state dump tells the server what the initial state of the network sh ] ``` -#### Events to Replay (optional) +##### Events to Replay (optional) `zwave-js` events can be replayed on the server once a client has connected to the server instance and started listening to emulate things happening on the network. These events can be provided initially at runtime via a JSON file, but the server also has a [`/replay` endpoint](#replay-endpoint) that can be POSTed to in order to add events to the replay queue. Command results can be recorded from a live network using the library's Client class (see the [Recording section](#recording-events-and-commandscommand-responses) for more details) -##### Limitations +###### Limitations - The queue currently only gets played immediately after a new client starts listening to the server - The events will fire sequentially without any delays between the events @@ -105,7 +111,7 @@ Command results can be recorded from a live network using the library's Client c - There is currently no way to control the timing of the events - There is currently no way to reorder events in the queue -##### File Format +###### File Format ```json [ @@ -120,20 +126,20 @@ Command results can be recorded from a live network using the library's Client c ] ``` -#### Command Results (optional) +##### Command Results (optional) The server can respond to commands from a queue of command responses. After each command, the first response for that command is removed from the queue and sent back to the client. In this way, you can control the exact behavior of what the server would send the client, even if there are multiple calls for the same command. These command results can be provided initially at runtime via a JSON file, but the server also has a [`/replay` endpoint](#replay-endpoint) that can be POSTed to in order to add command results to the queue. Command results can be recorded from a live network using the library's Client class (see the [Recording section](#recording-events-and-commandscommand-responses) for more details) -##### Limitations +###### Limitations - Unlike events, which remain in the queue forever, command results are only returned once. To add to the queue, use the `/replay` endpoint - There is currently no way to clear a queue for a particular command - There is currently no way to clear all command responses - There is currently no way to reorder command results in the queue -##### File Format +###### File Format ```json [ @@ -152,20 +158,28 @@ Command results can be recorded from a live network using the library's Client c ] ``` -### Recording events and commands/command responses +#### Recording events and commands/command responses The library's Client class can record event and command/command result messages that occur between a server instance and a client. This would allow you to e.g. troubleshoot a user's problem by having them record everything that happens, reproduce the issue, and then send you the result to feed directly into the mock server. -#### Begin recording +##### Begin recording There are two ways to enable recording of commands and messages: 1. When creating the Client class instance, pass `record_messages=True` into the Client constructor and the class instance will begin recording all events, commands, and results of commands after the client starts listening to updates from the server. 2. Call `Client.begin_recording_messages()` at any point to begin recording all events, commands, and results of commands. -#### End recording +##### End recording You can end recording by calling `Client.end_recording_messages()`. This call will return a list which can be directly passed into the `--combined-replay-dump-path` option once serialized to a JSON file. -### `/replay` endpoint +#### `/replay` endpoint The `replay` endpoint accepts an HTTP POST request with either a single event or command/command response or a list of them. They will be added to the end of their respective queue. + +## Typescript scripts + +To run these scripts, go to the `scripts` folder and run `yarn install`. + +### `serialize_zwave_js_registries.ts` + +This script imports helper functions from Z-Wave JS to retrieve the Z-Wave JS registries used in the Python scripts above. diff --git a/scripts/const.py b/scripts/const.py index 2018644a9..b2f3395bf 100644 --- a/scripts/const.py +++ b/scripts/const.py @@ -18,3 +18,5 @@ "# ----------------------------------------------------------------------------------- #", "", ] +GITHUB_PROJECT = "zwave-js/node-zwave-js" +BRANCH_NAME = "master" diff --git a/scripts/generate_multilevel_sensor_constants.py b/scripts/generate_multilevel_sensor_constants.py index 5fea472d1..eec306cd5 100755 --- a/scripts/generate_multilevel_sensor_constants.py +++ b/scripts/generate_multilevel_sensor_constants.py @@ -1,27 +1,22 @@ #!/usr/bin/env python3 """Script to generate Multilevel Sensor CC constants.""" + from __future__ import annotations from collections import defaultdict from collections.abc import Callable, Mapping -import json import pathlib from const import AUTO_GEN_POST, AUTO_GEN_PRE from helpers import ( enum_name_format, format_for_class_name, + get_json, get_manually_written_code, - normalize_name, - remove_comments, + get_registry_location, run_black, + separate_camel_case, ) -import requests - -GITHUB_PROJECT = "zwave-js/node-zwave-js" -BRANCH_NAME = "master" -SENSOR_TYPES_FILE_PATH = "packages/config/config/sensorTypes.json" -DEFAULT_SCALES_FILE_PATH = "packages/config/config/scales.json" CONST_FILE_PATH = ( pathlib.Path(__file__).parent.parent @@ -33,57 +28,28 @@ def normalize_scale_definition(scale_definitions: dict[str, dict]) -> dict[str, """Convert a scales definition dictionary into a normalized dictionary.""" scale_def_ = {} for scale_id, scale_props in scale_definitions.items(): - _scale_id = int(scale_id, 16) scale_name_ = enum_name_format(scale_props["label"], True) - scale_def_[scale_name_] = _scale_id + scale_def_[scale_name_] = scale_id return dict(sorted(scale_def_.items(), key=lambda kv: kv[0])) -sensor_types = json.loads( - remove_comments( - requests.get( - ( - f"https://raw.githubusercontent.com/{GITHUB_PROJECT}/{BRANCH_NAME}/" - f"{SENSOR_TYPES_FILE_PATH}" - ), - timeout=10, - ).text - ) -) -default_scales = json.loads( - remove_comments( - requests.get( - ( - f"https://raw.githubusercontent.com/{GITHUB_PROJECT}/{BRANCH_NAME}/" - f"{DEFAULT_SCALES_FILE_PATH}" - ), - timeout=10, - ).text - ) -) - -scales = { - normalize_name(scale_name): normalize_scale_definition(scale_def) - for scale_name, scale_def in default_scales.items() -} - +scales = {} sensors = {} -for sensor_id, sensor_props in sensor_types.items(): - sensor_id = int(sensor_id, 16) + +for sensor_props in get_json("sensors.json"): + sensor_id = sensor_props["key"] scale_def = sensor_props["scales"] remove_parenthesis_ = True if sensor_id in (87, 88): remove_parenthesis_ = False sensor_name = enum_name_format(sensor_props["label"], remove_parenthesis_) sensors[sensor_name] = {"id": sensor_id, "label": sensor_props["label"]} - if isinstance(scale_def, str): - sensors[sensor_name]["scale"] = normalize_name( - scale_def.replace("$SCALES:", "") - ) - else: - scales[sensor_name] = normalize_scale_definition(scale_def) - sensors[sensor_name]["scale"] = normalize_name(sensor_name) + scale_name = separate_camel_case(sensor_props.get("scaleGroupName", "")) + if not (scale_name := enum_name_format(scale_name, remove_parenthesis_)): + scale_name = sensor_name + scales.setdefault(scale_name, {}).update(normalize_scale_definition(scale_def)) + sensors[sensor_name]["scale"] = scale_name scales = dict(sorted(scales.items(), key=lambda kv: kv[0])) sensors = dict(sorted(sensors.items(), key=lambda kv: kv[0])) @@ -123,9 +89,7 @@ def generate_int_enum_base_class(class_name: str, docstring: str) -> list[str]: return class_def -SENSOR_TYPE_URL = ( - f"https://github.com/{GITHUB_PROJECT}/blob/{BRANCH_NAME}/{SENSOR_TYPES_FILE_PATH}" -) +SENSOR_TYPE_URL = get_registry_location("SensorTypes.ts") lines = [ '"""Constants for the Multilevel Sensor CC."""', diff --git a/scripts/generate_notification_constants.py b/scripts/generate_notification_constants.py index 82284febe..810670b62 100755 --- a/scripts/generate_notification_constants.py +++ b/scripts/generate_notification_constants.py @@ -1,47 +1,30 @@ #!/usr/bin/env python3 """Script to generate Notification CC constants.""" + from __future__ import annotations from collections.abc import Callable, Mapping -import json import pathlib from const import AUTO_GEN_POST, AUTO_GEN_PRE from helpers import ( enum_name_format, format_for_class_name, + get_json, get_manually_written_code, - remove_comments, + get_registry_location, run_black, ) -import requests - -GITHUB_PROJECT = "zwave-js/node-zwave-js" -BRANCH_NAME = "master" -NOTIFICATIONS_FILE_PATH = "packages/config/config/notifications.json" CONST_FILE_PATH = ( pathlib.Path(__file__).parent.parent / "zwave_js_server/const/command_class/notification.py" ) - -notifications_file = json.loads( - remove_comments( - requests.get( - ( - f"https://raw.githubusercontent.com/{GITHUB_PROJECT}/{BRANCH_NAME}/" - f"{NOTIFICATIONS_FILE_PATH}" - ), - timeout=10, - ).text - ) -) - notifications = {} params = {} -for notification_type, notification_payload in notifications_file.items(): - notification_type = int(notification_type, 16) +for notification_payload in get_json("notifications.json"): + notification_type = notification_payload["type"] notification_name = notification_payload["name"].title() notifications[notification_name] = { "type": notification_type, @@ -50,8 +33,8 @@ for event in notification_payload.get("variables", []): event_name = event["name"].title() states = notifications[notification_name]["events"] - for state_id, state_props in event["states"].items(): - state_id = int(state_id, 16) + for state_props in event["states"].values(): + state_id = state_props["value"] state_name = state_props["label"].title() if ( state_name.lower() not in event_name.lower() @@ -59,14 +42,17 @@ ): state_name = f"{event_name} {state_name}" states[state_name] = state_id - if "params" in state_props and state_props["params"]["type"] == "enum": - for enum_id, enum_name in state_props["params"]["values"].items(): - enum_id = int(enum_id, 16) + if ( + "parameter" in state_props + and state_props["parameter"]["type"] == "enum" + ): + for enum_id, enum_name in state_props["parameter"]["values"].items(): + enum_id = int(enum_id) params.setdefault(notification_name, {}).setdefault(state_name, {})[ enum_name.title() ] = enum_id - for event_id, event_data in notification_payload.get("events", {}).items(): - event_id = int(event_id, 16) + for event_data in notification_payload.get("events", {}).values(): + event_id = event_data["value"] notifications[notification_name]["events"][ event_data["label"].title() ] = event_id @@ -117,9 +103,7 @@ def generate_int_enum_base_class(class_name: str, docstring: str) -> list[str]: return class_def -NOTIFICATIONS_URL = ( - f"https://github.com/{GITHUB_PROJECT}/blob/{BRANCH_NAME}/{NOTIFICATIONS_FILE_PATH}" -) +NOTIFICATIONS_URL = get_registry_location("Notifications.ts") lines = [ "# pylint: disable=line-too-long", diff --git a/scripts/generate_zwave_js_registry_json.js b/scripts/generate_zwave_js_registry_json.js new file mode 100644 index 000000000..85aeda05e --- /dev/null +++ b/scripts/generate_zwave_js_registry_json.js @@ -0,0 +1,17 @@ +import { getAllNotifications, getAllSensors } from "@zwave-js/core"; +import fs from "fs"; + +for (const [filename, data] of Object.entries({ + "notifications.json": getAllNotifications(), + "sensors.json": getAllSensors(), +})) { + if (fs.existsSync(filename)) { + fs.unlinkSync(filename); + } + fs.writeFileSync( + filename, + JSON.stringify(data, (_, value) => + value instanceof Map ? Object.fromEntries(value) : value + ) + ); +} diff --git a/scripts/helpers.py b/scripts/helpers.py index 91ace936c..6b2ab5988 100644 --- a/scripts/helpers.py +++ b/scripts/helpers.py @@ -1,9 +1,12 @@ """Helpers for scripts.""" +import json +import pathlib import re import subprocess import sys +from const import BRANCH_NAME, GITHUB_PROJECT from slugify import slugify @@ -26,6 +29,14 @@ def check_dirty_repo(): ) +def get_registry_location(filename: str) -> str: + """Get the registry location for the given filename.""" + return ( + f"https://github.com/{GITHUB_PROJECT}/blob/{BRANCH_NAME}/packages/core/" + f"src/registries/{filename}" + ) + + def run_black(file_path: str): """Run black on the given file path.""" if subprocess.run(["which", "black"], capture_output=True, check=True).stdout: @@ -57,13 +68,6 @@ def get_manually_written_code(file_path: str): return [] -def remove_comments(text: str) -> str: - """Remove comments from a JSON string.""" - return "\n".join( - line for line in text.split("\n") if not line.strip().startswith("//") - ) - - def remove_parenthesis(text: str) -> str: """Remove text in parenthesis from a string.""" return re.sub(r"\([^)]*\)", "", text) @@ -76,6 +80,20 @@ def enum_name_format(name: str, should_remove_parenthesis: bool) -> str: return slugify(name, separator="_").upper() +def separate_camel_case(my_str: str) -> str: + """Split a camel case string.""" + if all(char.islower() for char in my_str): + return my_str.title() + start_idx = [i for i, e in enumerate(my_str) if e.isupper()] + [len(my_str)] + start_idx = [0] + start_idx + return " ".join(my_str[x:y] for x, y in zip(start_idx, start_idx[1:])).title() + + +def get_json(file_path: str) -> list | dict: + """Get a JSON dict/list from the given file path.""" + return json.loads(pathlib.Path(file_path).read_text()) + + def normalize_name(name: str) -> str: """Convert a sensor/scale name into a normalized name.""" return enum_name_format(name, True).replace("_", " ").title() diff --git a/zwave_js_server/const/command_class/multilevel_sensor.py b/zwave_js_server/const/command_class/multilevel_sensor.py index ad4a8411c..7873b64e8 100644 --- a/zwave_js_server/const/command_class/multilevel_sensor.py +++ b/zwave_js_server/const/command_class/multilevel_sensor.py @@ -105,7 +105,7 @@ class MultilevelSensorType(IntEnum): """Enum for known multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts ACCELERATION_X_AXIS = 52 ACCELERATION_Y_AXIS = 53 ACCELERATION_Z_AXIS = 54 @@ -200,18 +200,40 @@ class MultilevelSensorScaleType(IntEnum): """Common base class for multilevel sensor scale enums.""" +class AccelerationScale(MultilevelSensorScaleType): + """Enum for known scales for ACCELERATION multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + METER_PER_SQUARE_SECOND = 0 + + +class AcidityScale(MultilevelSensorScaleType): + """Enum for known scales for ACIDITY multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + ACIDITY = 0 + + class AirFlowScale(MultilevelSensorScaleType): """Enum for known scales for AIR_FLOW multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts CUBIC_FEET_PER_MINUTE = 1 CUBIC_METER_PER_HOUR = 0 +class AirPressureScale(MultilevelSensorScaleType): + """Enum for known scales for AIR_PRESSURE multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + INCHES_OF_MERCURY = 1 + KILOPASCAL = 0 + + class AnglePositionScale(MultilevelSensorScaleType): """Enum for known scales for ANGLE_POSITION multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts DEGREES_RELATIVE_TO_NORTH_POLE_OF_STANDING_EYE_VIEW = 1 DEGREES_RELATIVE_TO_SOUTH_POLE_OF_STANDING_EYE_VIEW = 2 PERCENTAGE_VALUE = 0 @@ -220,43 +242,21 @@ class AnglePositionScale(MultilevelSensorScaleType): class AppliedForceOnTheSensorScale(MultilevelSensorScaleType): """Enum for known scales for APPLIED_FORCE_ON_THE_SENSOR multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts NEWTON = 0 -class AccelerationScale(MultilevelSensorScaleType): - """Enum for known scales for Acceleration multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - METER_PER_SQUARE_SECOND = 0 - - -class AcidityScale(MultilevelSensorScaleType): - """Enum for known scales for Acidity multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - ACIDITY = 0 - - -class AirPressureScale(MultilevelSensorScaleType): - """Enum for known scales for Air Pressure multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - INCHES_OF_MERCURY = 1 - KILOPASCAL = 0 - - class BasisMetabolicRateScale(MultilevelSensorScaleType): """Enum for known scales for BASIS_METABOLIC_RATE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts JOULE = 0 class BloodPressureScale(MultilevelSensorScaleType): """Enum for known scales for BLOOD_PRESSURE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts DIASTOLIC = 1 SYSTOLIC = 0 @@ -264,21 +264,21 @@ class BloodPressureScale(MultilevelSensorScaleType): class BodyMassIndexScale(MultilevelSensorScaleType): """Enum for known scales for BODY_MASS_INDEX multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts BODY_MASS_INDEX = 0 class CarbonDioxideLevelScale(MultilevelSensorScaleType): """Enum for known scales for CARBON_DIOXIDE_LEVEL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts PARTS_MILLION = 0 class CarbonMonoxideLevelScale(MultilevelSensorScaleType): """Enum for known scales for CARBON_MONOXIDE_LEVEL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MOLE_PER_CUBIC_METER = 0 PARTS_MILLION = 1 @@ -286,59 +286,59 @@ class CarbonMonoxideLevelScale(MultilevelSensorScaleType): class CurrentScale(MultilevelSensorScaleType): """Enum for known scales for CURRENT multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts AMPERE = 0 MILLIAMPERE = 1 -class DistanceScale(MultilevelSensorScaleType): - """Enum for known scales for DISTANCE multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - CENTIMETER = 1 - FEET = 2 - METER = 0 - - class DensityScale(MultilevelSensorScaleType): - """Enum for known scales for Density multilevel sensor types.""" + """Enum for known scales for DENSITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts DENSITY = 0 class DirectionScale(MultilevelSensorScaleType): - """Enum for known scales for Direction multilevel sensor types.""" + """Enum for known scales for DIRECTION multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts DEGREES = 0 +class DistanceScale(MultilevelSensorScaleType): + """Enum for known scales for DISTANCE multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + CENTIMETER = 1 + FEET = 2 + METER = 0 + + class ElectricalConductivityScale(MultilevelSensorScaleType): """Enum for known scales for ELECTRICAL_CONDUCTIVITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts SIEMENS_PER_METER = 0 class ElectricalResistivityScale(MultilevelSensorScaleType): """Enum for known scales for ELECTRICAL_RESISTIVITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts OHM_METER = 0 class FormaldehydeLevelScale(MultilevelSensorScaleType): """Enum for known scales for FORMALDEHYDE_LEVEL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MOLE_PER_CUBIC_METER = 0 class FrequencyScale(MultilevelSensorScaleType): """Enum for known scales for FREQUENCY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts HERTZ = 0 KILOHERTZ = 1 @@ -346,7 +346,7 @@ class FrequencyScale(MultilevelSensorScaleType): class GeneralPurposeScale(MultilevelSensorScaleType): """Enum for known scales for GENERAL_PURPOSE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts DIMENSIONLESS_VALUE = 1 PERCENTAGE_VALUE = 0 @@ -354,14 +354,14 @@ class GeneralPurposeScale(MultilevelSensorScaleType): class HeartRateScale(MultilevelSensorScaleType): """Enum for known scales for HEART_RATE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts BEATS_PER_MINUTE = 0 class HumidityScale(MultilevelSensorScaleType): - """Enum for known scales for Humidity multilevel sensor types.""" + """Enum for known scales for HUMIDITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts ABSOLUTE_HUMIDITY = 1 PERCENTAGE_VALUE = 0 @@ -369,7 +369,7 @@ class HumidityScale(MultilevelSensorScaleType): class IlluminanceScale(MultilevelSensorScaleType): """Enum for known scales for ILLUMINANCE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts LUX = 1 PERCENTAGE_VALUE = 0 @@ -377,39 +377,39 @@ class IlluminanceScale(MultilevelSensorScaleType): class LoudnessScale(MultilevelSensorScaleType): """Enum for known scales for LOUDNESS multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts A_WEIGHTED_DECIBELS = 1 DECIBEL = 0 +class MassScale(MultilevelSensorScaleType): + """Enum for known scales for MASS multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + KILOGRAM = 0 + + class MethaneDensityScale(MultilevelSensorScaleType): """Enum for known scales for METHANE_DENSITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MOLE_PER_CUBIC_METER = 0 class MoistureScale(MultilevelSensorScaleType): """Enum for known scales for MOISTURE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts IMPEDANCE = 2 PERCENTAGE_VALUE = 0 VOLUME_WATER_CONTENT = 1 WATER_ACTIVITY = 3 -class MassScale(MultilevelSensorScaleType): - """Enum for known scales for Mass multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - KILOGRAM = 0 - - class ParticulateMatter10Scale(MultilevelSensorScaleType): """Enum for known scales for PARTICULATE_MATTER_10 multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MICROGRAM_PER_CUBIC_METER = 1 MOLE_PER_CUBIC_METER = 0 @@ -417,30 +417,30 @@ class ParticulateMatter10Scale(MultilevelSensorScaleType): class ParticulateMatter25Scale(MultilevelSensorScaleType): """Enum for known scales for PARTICULATE_MATTER_2_5 multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MICROGRAM_PER_CUBIC_METER = 1 MOLE_PER_CUBIC_METER = 0 +class PercentageScale(MultilevelSensorScaleType): + """Enum for known scales for PERCENTAGE multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + PERCENTAGE_VALUE = 0 + + class PowerScale(MultilevelSensorScaleType): """Enum for known scales for POWER multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts BTU_H = 1 WATT = 0 -class PercentageScale(MultilevelSensorScaleType): - """Enum for known scales for Percentage multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - PERCENTAGE_VALUE = 0 - - class PressureScale(MultilevelSensorScaleType): - """Enum for known scales for Pressure multilevel sensor types.""" + """Enum for known scales for PRESSURE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts KILOPASCAL = 0 POUND_PER_SQUARE_INCH = 1 @@ -448,7 +448,7 @@ class PressureScale(MultilevelSensorScaleType): class RadonConcentrationScale(MultilevelSensorScaleType): """Enum for known scales for RADON_CONCENTRATION multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts BECQUEREL_PER_CUBIC_METER = 0 PICOCURIES_PER_LITER = 1 @@ -456,7 +456,7 @@ class RadonConcentrationScale(MultilevelSensorScaleType): class RainRateScale(MultilevelSensorScaleType): """Enum for known scales for RAIN_RATE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts INCHES_PER_HOUR = 1 MILLIMETER_HOUR = 0 @@ -464,14 +464,14 @@ class RainRateScale(MultilevelSensorScaleType): class RespiratoryRateScale(MultilevelSensorScaleType): """Enum for known scales for RESPIRATORY_RATE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts BREATHS_PER_MINUTE = 0 class RfSignalStrengthScale(MultilevelSensorScaleType): """Enum for known scales for RF_SIGNAL_STRENGTH multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts POWER_LEVEL = 1 RSSI = 0 @@ -479,7 +479,7 @@ class RfSignalStrengthScale(MultilevelSensorScaleType): class RotationScale(MultilevelSensorScaleType): """Enum for known scales for ROTATION multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts HERTZ = 1 REVOLUTIONS_PER_MINUTE = 0 @@ -487,7 +487,7 @@ class RotationScale(MultilevelSensorScaleType): class SeismicIntensityScale(MultilevelSensorScaleType): """Enum for known scales for SEISMIC_INTENSITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts EUROPEAN_MACROSEISMIC = 1 LIEDU = 2 MERCALLI = 0 @@ -497,7 +497,7 @@ class SeismicIntensityScale(MultilevelSensorScaleType): class SeismicMagnitudeScale(MultilevelSensorScaleType): """Enum for known scales for SEISMIC_MAGNITUDE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts BODY_WAVE = 3 LOCAL = 0 MOMENT = 1 @@ -507,30 +507,38 @@ class SeismicMagnitudeScale(MultilevelSensorScaleType): class SoilSalinityScale(MultilevelSensorScaleType): """Enum for known scales for SOIL_SALINITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MOLE_PER_CUBIC_METER = 0 class SolarRadiationScale(MultilevelSensorScaleType): """Enum for known scales for SOLAR_RADIATION multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts WATT_PER_SQUARE_METER = 0 class TankCapacityScale(MultilevelSensorScaleType): """Enum for known scales for TANK_CAPACITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts CUBIC_METER = 1 GALLONS = 2 LITER = 0 +class TemperatureScale(MultilevelSensorScaleType): + """Enum for known scales for TEMPERATURE multilevel sensor types.""" + + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts + CELSIUS = 0 + FAHRENHEIT = 1 + + class TideLevelScale(MultilevelSensorScaleType): """Enum for known scales for TIDE_LEVEL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts FEET = 1 METER = 0 @@ -538,36 +546,28 @@ class TideLevelScale(MultilevelSensorScaleType): class TimeScale(MultilevelSensorScaleType): """Enum for known scales for TIME multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts SECOND = 0 -class TemperatureScale(MultilevelSensorScaleType): - """Enum for known scales for Temperature multilevel sensor types.""" - - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json - CELSIUS = 0 - FAHRENHEIT = 1 - - class UltravioletScale(MultilevelSensorScaleType): """Enum for known scales for ULTRAVIOLET multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts UV_INDEX = 0 class UnitlessScale(MultilevelSensorScaleType): - """Enum for known scales for Unitless multilevel sensor types.""" + """Enum for known scales for UNITLESS multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts UNITLESS = 0 class VelocityScale(MultilevelSensorScaleType): """Enum for known scales for VELOCITY multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MPH = 1 M_S = 0 @@ -575,7 +575,7 @@ class VelocityScale(MultilevelSensorScaleType): class VolatileOrganicCompoundLevelScale(MultilevelSensorScaleType): """Enum for known scales for VOLATILE_ORGANIC_COMPOUND_LEVEL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MOLE_PER_CUBIC_METER = 0 PARTS_MILLION = 1 @@ -583,7 +583,7 @@ class VolatileOrganicCompoundLevelScale(MultilevelSensorScaleType): class VoltageScale(MultilevelSensorScaleType): """Enum for known scales for VOLTAGE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MILLIVOLT = 1 VOLT = 0 @@ -591,35 +591,35 @@ class VoltageScale(MultilevelSensorScaleType): class WaterChlorineLevelScale(MultilevelSensorScaleType): """Enum for known scales for WATER_CHLORINE_LEVEL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MILLIGRAM_PER_LITER = 0 class WaterFlowScale(MultilevelSensorScaleType): """Enum for known scales for WATER_FLOW multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts LITER_PER_HOUR = 0 class WaterOxidationReductionPotentialScale(MultilevelSensorScaleType): """Enum for known scales for WATER_OXIDATION_REDUCTION_POTENTIAL multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts MILLIVOLT = 0 class WaterPressureScale(MultilevelSensorScaleType): """Enum for known scales for WATER_PRESSURE multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts KILOPASCAL = 0 class WeightScale(MultilevelSensorScaleType): """Enum for known scales for WEIGHT multilevel sensor types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/sensorTypes.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/SensorTypes.ts KILOGRAM = 0 POUNDS = 1 diff --git a/zwave_js_server/const/command_class/notification.py b/zwave_js_server/const/command_class/notification.py index 43b7adec9..1354722eb 100644 --- a/zwave_js_server/const/command_class/notification.py +++ b/zwave_js_server/const/command_class/notification.py @@ -16,7 +16,7 @@ class NotificationType(IntEnum): """Enum for known notification types.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ACCESS_CONTROL = 6 APPLIANCE = 12 @@ -58,9 +58,10 @@ class NotificationEventValue(IntEnum): class AccessControlNotificationEvent(NotificationEvent): """Enum for known access control notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ALL_USER_CODES_DELETED = 12 + ALL_USERS_DELETED = 37 AUTO_LOCK_LOCKED_OPERATION = 9 AUTO_LOCK_NOT_FULLY_LOCKED_OPERATION = 10 BARRIER_BATTERY_STATUS_BARRIER_SENSOR_LOW_BATTERY_WARNING = 74 @@ -78,10 +79,17 @@ class AccessControlNotificationEvent(NotificationEvent): ) BARRIER_UNABLE_TO_PERFORM_REQUESTED_OPERATION_DUE_TO_UL_REQUIREMENTS = 68 BARRIER_VACATION_MODE = 71 + CREDENTIAL_ADDED = 43 + CREDENTIAL_DELETED = 45 + CREDENTIAL_LOCK_OPEN_OPERATION = 35 + CREDENTIAL_MODIFIED = 44 + CREDENTIAL_UNCHANGED = 46 + CREDENTIAL_UNLOCK_CLOSE_OPERATION = 36 DOOR_HANDLE_STATE_WINDOW_DOOR_HANDLE_IS_CLOSED = 25 DOOR_HANDLE_STATE_WINDOW_DOOR_HANDLE_IS_OPEN = 24 DOOR_STATE_WINDOW_DOOR_IS_CLOSED = 23 DOOR_STATE_WINDOW_DOOR_IS_OPEN = 22 + INVALID_CREDENTIAL_USED = 50 KEYPAD_LOCK_OPERATION = 5 KEYPAD_STATE_KEYPAD_BUSY = 17 KEYPAD_STATE_KEYPAD_TEMPORARY_DISABLED = 16 @@ -94,15 +102,24 @@ class AccessControlNotificationEvent(NotificationEvent): MANUAL_UNLOCK_OPERATION = 2 MANUALLY_ENTER_USER_ACCESS_CODE_EXCEEDS_CODE_LIMIT = 19 MESSAGING_USER_CODE_ENTERED_VIA_KEYPAD = 32 + MULTIPLE_CREDENTIALS_DELETED = 38 NEW_PROGRAM_CODE_ENTERED_UNIQUE_CODE_FOR_LOCK_CONFIGURATION = 18 NEW_USER_CODE_ADDED = 14 NEW_USER_CODE_NOT_ADDED_DUE_TO_DUPLICATE_CODE = 15 + NON_ACCESS_CREDENTIAL_ENTERED_VIA_LOCAL_INTERFACE = 51 RF_LOCK_OPERATION = 3 RF_NOT_FULLY_LOCKED_OPERATION = 8 RF_UNLOCK_OPERATION = 4 SINGLE_USER_CODE_DELETED = 13 UNLOCK_BY_RF_WITH_INVALID_USER_CODE = 20 UNLOCK_OPERATION_WITH_USER_CODE = 34 + USER_ADDED = 39 + USER_DELETED = 41 + USER_MODIFIED = 40 + USER_UNCHANGED = 42 + VALID_CREDENTIAL_ACCESS_DENIED_NOT_ENOUGH_CREDENTIALS_ENTERED = 49 + VALID_CREDENTIAL_ACCESS_DENIED_SCHEDULE_INACTIVE = 48 + VALID_CREDENTIAL_ACCESS_DENIED_USER_ACTIVE_STATE_SET_TO_OCCUPIED_DISABLED = 47 @classmethod def _missing_( @@ -117,7 +134,7 @@ class BarrierPerformingInitializationProcessNotificationEventValue( ): """Enum for known barrier performing initialization process notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 PERFORMING_PROCESS = 255 PROCESS_COMPLETED = 0 @@ -133,7 +150,7 @@ def _missing_( class BarrierSafetyBeamObstacleNotificationEventValue(NotificationEventValue): """Enum for known barrier safety beam obstacle notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 NO_OBSTRUCTION = 0 OBSTRUCTION = 255 @@ -149,7 +166,7 @@ def _missing_( class BarrierVacationModeNotificationEventValue(NotificationEventValue): """Enum for known barrier vacation mode notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 MODE_DISABLED = 0 MODE_ENABLED = 255 @@ -165,7 +182,7 @@ def _missing_( class DoorStateWindowDoorIsOpenNotificationEventValue(NotificationEventValue): """Enum for known door state window/door is open notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 WINDOW_DOOR_IS_OPEN_IN_REGULAR_POSITION = 0 WINDOW_DOOR_IS_OPEN_IN_TILT_POSITION = 1 @@ -181,7 +198,7 @@ def _missing_( class ApplianceNotificationEvent(NotificationEvent): """Enum for known appliance notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 APPLIANCE_STATUS_BOILING = 8 APPLIANCE_STATUS_DRAINING = 14 @@ -216,7 +233,7 @@ def _missing_( class ClockNotificationEvent(NotificationEvent): """Enum for known clock notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 TIME_REMAINING = 3 TIMER_ENDED = 2 @@ -231,7 +248,7 @@ def _missing_(cls: type, value: object) -> ClockNotificationEvent: # noqa: ARG0 class CoAlarmNotificationEvent(NotificationEvent): """Enum for known co alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ALARM_STATUS_ALARM_SILENCED = 6 MAINTENANCE_STATUS_REPLACEMENT_REQUIRED = 4 @@ -250,7 +267,7 @@ def _missing_(cls: type, value: object) -> CoAlarmNotificationEvent: # noqa: AR class TestStatusCarbonMonoxideTestNotificationEventValue(NotificationEventValue): """Enum for known test status carbon monoxide test notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 TEST_FAILED = 2 TEST_OK = 1 @@ -266,7 +283,7 @@ def _missing_( class Co2AlarmNotificationEvent(NotificationEvent): """Enum for known co2 alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ALARM_STATUS_ALARM_SILENCED = 6 MAINTENANCE_STATUS_REPLACEMENT_REQUIRED = 4 @@ -287,7 +304,7 @@ def _missing_( class TestStatusCarbonDioxideTestNotificationEventValue(NotificationEventValue): """Enum for known test status carbon dioxide test notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 TEST_FAILED = 2 TEST_OK = 1 @@ -303,7 +320,7 @@ def _missing_( class EmergencyAlarmNotificationEvent(NotificationEvent): """Enum for known emergency alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 CONTACT_FIRE_SERVICE = 2 CONTACT_MEDICAL_SERVICE = 3 @@ -320,7 +337,7 @@ def _missing_( class GasAlarmNotificationEvent(NotificationEvent): """Enum for known gas alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ALARM_STATUS_GAS_ALARM_TEST = 5 COMBUSTIBLE_GAS_STATUS_COMBUSTIBLE_GAS_DETECTED = 2 @@ -340,7 +357,7 @@ def _missing_( class HeatAlarmNotificationEvent(NotificationEvent): """Enum for known heat alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ALARM_STATUS_ALARM_SILENCED = 9 ALARM_STATUS_HEAT_ALARM_TEST = 7 @@ -367,7 +384,7 @@ def _missing_( class HomeHealthNotificationEvent(NotificationEvent): """Enum for known home health notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 FALL_DETECTED = 12 POSITION_STATUS_LEAVING_BED = 1 @@ -393,7 +410,7 @@ def _missing_( class SleepApneaStatusSleepApneaDetectedNotificationEventValue(NotificationEventValue): """Enum for known sleep apnea status sleep apnea detected notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 LOW_BREATH = 1 NO_BREATH_AT_ALL = 2 @@ -411,7 +428,7 @@ class VocLevelStatusVolatileOrganicCompoundLevelNotificationEventValue( ): """Enum for known voc level status volatile organic compound level notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 CLEAN = 1 HIGHLY_POLLUTED = 4 @@ -431,7 +448,7 @@ def _missing_( class HomeMonitoringNotificationEvent(NotificationEvent): """Enum for known home monitoring notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 HOME_OCCUPANCY_STATUS_HOME_OCCUPIED = 2 HOME_OCCUPANCY_STATUS_HOME_OCCUPIED_LOCATION_PROVIDED = 1 @@ -447,7 +464,7 @@ def _missing_( class HomeSecurityNotificationEvent(NotificationEvent): """Enum for known home security notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 COVER_STATUS_TAMPERING_PRODUCT_COVER_REMOVED = 3 GLASS_BREAKAGE = 6 @@ -473,7 +490,7 @@ def _missing_( class IrrigationNotificationEvent(NotificationEvent): """Enum for known irrigation notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 DEVICE_CONFIGURATION_STATUS_DEVICE_IS_NOT_CONFIGURED = 5 SCHEDULE_ID_STATUS_SCHEDULE_FINISHED = 2 @@ -492,7 +509,7 @@ def _missing_( class LightSensorNotificationEvent(NotificationEvent): """Enum for known light sensor notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 LIGHT_COLOR_TRANSITION_DETECTED = 2 LIGHT_DETECTION_STATUS_LIGHT_DETECTED = 1 @@ -508,7 +525,7 @@ def _missing_( class PestControlNotificationEvent(NotificationEvent): """Enum for known pest control notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 PEST_DETECTED = 6 PEST_DETECTED_LOCATION_PROVIDED = 5 @@ -530,7 +547,7 @@ def _missing_( class PowerManagementNotificationEvent(NotificationEvent): """Enum for known power management notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 BACKUP_BATTERY_LEVEL_STATUS_BACK_UP_BATTERY_DISCONNECTED = 18 BACKUP_BATTERY_LEVEL_STATUS_BACK_UP_BATTERY_IS_LOW = 16 @@ -562,7 +579,7 @@ def _missing_( class SirenNotificationEvent(NotificationEvent): """Enum for known siren notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 SIREN_STATUS_SIREN_ACTIVE = 1 @@ -575,7 +592,7 @@ def _missing_(cls: type, value: object) -> SirenNotificationEvent: # noqa: ARG0 class SmokeAlarmNotificationEvent(NotificationEvent): """Enum for known smoke alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ALARM_STATUS_ALARM_SILENCED = 6 ALARM_STATUS_SMOKE_ALARM_TEST = 3 @@ -597,7 +614,7 @@ def _missing_( class SystemNotificationEvent(NotificationEvent): """Enum for known system notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 COVER_STATUS_TAMPERING_PRODUCT_COVER_REMOVED = 6 EMERGENCY_SHUTOFF = 7 @@ -616,7 +633,7 @@ def _missing_(cls: type, value: object) -> SystemNotificationEvent: # noqa: ARG class WaterAlarmNotificationEvent(NotificationEvent): """Enum for known water alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 MAINTENANCE_STATUS_REPLACE_WATER_FILTER = 5 PUMP_STATUS_SUMP_PUMP_ACTIVE = 10 @@ -641,7 +658,7 @@ def _missing_( class WaterFlowAlarmNotificationEventValue(NotificationEventValue): """Enum for known water flow alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 3 BELOW_LOW_THRESHOLD = 2 @@ -659,7 +676,7 @@ def _missing_( class WaterLevelAlarmNotificationEventValue(NotificationEventValue): """Enum for known water level alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 3 BELOW_LOW_THRESHOLD = 2 @@ -676,7 +693,7 @@ def _missing_( class WaterPressureAlarmNotificationEventValue(NotificationEventValue): """Enum for known water pressure alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 3 BELOW_LOW_THRESHOLD = 2 @@ -694,7 +711,7 @@ def _missing_( class WaterTemperatureAlarmNotificationEventValue(NotificationEventValue): """Enum for known water temperature alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 3 BELOW_LOW_THRESHOLD = 2 @@ -711,7 +728,7 @@ def _missing_( class WaterQualityMonitoringNotificationEvent(NotificationEvent): """Enum for known water quality monitoring notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ACIDITY_PH_SENSOR_STATUS_ACIDITY_PH_EMPTY = 5 ACIDITY_PH_STATUS_ACIDITY_PH_ALARM = 2 @@ -742,7 +759,7 @@ def _missing_( class AcidityStatusAcidityAlarmNotificationEventValue(NotificationEventValue): """Enum for known acidity (ph) status acidity (ph) alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 2 BELOW_LOW_THRESHOLD = 1 @@ -760,7 +777,7 @@ def _missing_( class ChlorineAlarmNotificationEventValue(NotificationEventValue): """Enum for known chlorine alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 2 BELOW_LOW_THRESHOLD = 1 @@ -776,7 +793,7 @@ def _missing_( class WaterOxidationAlarmNotificationEventValue(NotificationEventValue): """Enum for known water oxidation alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 2 BELOW_LOW_THRESHOLD = 1 @@ -792,12 +809,13 @@ def _missing_( class WaterValveNotificationEvent(NotificationEvent): """Enum for known water valve notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 MASTER_VALVE_CURRENT_ALARM = 6 MASTER_VALVE_OPERATION = 2 MASTER_VALVE_SHORT_CIRCUIT = 4 VALVE_CURRENT_ALARM = 5 + VALVE_JAMMED = 7 VALVE_OPERATION = 1 VALVE_SHORT_CIRCUIT = 3 @@ -812,7 +830,7 @@ def _missing_( class MasterValveCurrentAlarmNotificationEventValue(NotificationEventValue): """Enum for known master valve current alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 3 BELOW_LOW_THRESHOLD = 2 @@ -830,7 +848,7 @@ def _missing_( class MasterValveOperationNotificationEventValue(NotificationEventValue): """Enum for known master valve operation notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 OFF_CLOSED = 0 ON_OPEN = 1 @@ -846,7 +864,7 @@ def _missing_( class ValveCurrentAlarmNotificationEventValue(NotificationEventValue): """Enum for known valve current alarm notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 ABOVE_HIGH_THRESHOLD = 3 BELOW_LOW_THRESHOLD = 2 @@ -864,7 +882,7 @@ def _missing_( class ValveOperationNotificationEventValue(NotificationEventValue): """Enum for known valve operation notification event value.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 OFF_CLOSED = 0 ON_OPEN = 1 @@ -880,7 +898,7 @@ def _missing_( class WeatherAlarmNotificationEvent(NotificationEvent): """Enum for known weather alarm notification event.""" - # https://github.com/zwave-js/node-zwave-js/blob/master/packages/config/config/notifications.json + # https://github.com/zwave-js/node-zwave-js/blob/master/packages/core/src/registries/Notifications.ts UNKNOWN = -1 FREEZE_ALARM = 3 MOISTURE_ALARM = 2