nwp500-python 7.0.0__tar.gz → 7.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/CHANGELOG.rst +7 -0
  2. {nwp500_python-7.0.0/src/nwp500_python.egg-info → nwp500_python-7.0.1}/PKG-INFO +1 -1
  3. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/models.py +20 -8
  4. {nwp500_python-7.0.0 → nwp500_python-7.0.1/src/nwp500_python.egg-info}/PKG-INFO +1 -1
  5. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.agent/workflows/pre-completion-testing.md +0 -0
  6. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.coveragerc +0 -0
  7. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.github/copilot-instructions.md +0 -0
  8. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.github/workflows/ci.yml +0 -0
  9. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.github/workflows/release.yml +0 -0
  10. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.gitignore +0 -0
  11. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.pre-commit-config.yaml +0 -0
  12. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/.readthedocs.yml +0 -0
  13. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/AUTHORS.rst +0 -0
  14. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/CONTRIBUTING.rst +0 -0
  15. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/LICENSE.txt +0 -0
  16. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/Makefile +0 -0
  17. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/README.rst +0 -0
  18. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/RELEASE.md +0 -0
  19. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/MQTT_DIAGNOSTICS.rst +0 -0
  20. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/Makefile +0 -0
  21. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/_static/.gitignore +0 -0
  22. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/api/nwp500.rst +0 -0
  23. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/authors.rst +0 -0
  24. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/changelog.rst +0 -0
  25. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/conf.py +0 -0
  26. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/configuration.rst +0 -0
  27. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/development/contributing.rst +0 -0
  28. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/development/history.rst +0 -0
  29. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/enumerations.rst +0 -0
  30. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/advanced_features_explained.rst +0 -0
  31. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/auto_recovery.rst +0 -0
  32. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/command_queue.rst +0 -0
  33. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/energy_monitoring.rst +0 -0
  34. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/event_system.rst +0 -0
  35. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/reservations.rst +0 -0
  36. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/scheduling_features.rst +0 -0
  37. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/guides/time_of_use.rst +0 -0
  38. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/index.rst +0 -0
  39. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/installation.rst +0 -0
  40. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/license.rst +0 -0
  41. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/openapi.yaml +0 -0
  42. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/data_conversions.rst +0 -0
  43. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/device_features.rst +0 -0
  44. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/device_status.rst +0 -0
  45. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/error_codes.rst +0 -0
  46. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/firmware_tracking.rst +0 -0
  47. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/mqtt_protocol.rst +0 -0
  48. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/protocol/rest_api.rst +0 -0
  49. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/api_client.rst +0 -0
  50. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/auth_client.rst +0 -0
  51. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/cli.rst +0 -0
  52. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/constants.rst +0 -0
  53. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/events.rst +0 -0
  54. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/exceptions.rst +0 -0
  55. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/models.rst +0 -0
  56. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/python_api/mqtt_client.rst +0 -0
  57. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/quickstart.rst +0 -0
  58. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/docs/requirements.txt +0 -0
  59. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/.ruff.toml +0 -0
  60. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/README.md +0 -0
  61. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/anti_legionella_example.py +0 -0
  62. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/api_client_example.py +0 -0
  63. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/auth_constructor_example.py +0 -0
  64. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/authenticate.py +0 -0
  65. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/auto_recovery_example.py +0 -0
  66. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/combined_callbacks.py +0 -0
  67. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/command_queue_demo.py +0 -0
  68. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/device_feature_callback.py +0 -0
  69. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/device_status_callback.py +0 -0
  70. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/device_status_callback_debug.py +0 -0
  71. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/energy_usage_example.py +0 -0
  72. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/error_code_demo.py +0 -0
  73. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/event_emitter_demo.py +0 -0
  74. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/exception_handling_example.py +0 -0
  75. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/improved_auth_pattern.py +0 -0
  76. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/mask.py +0 -0
  77. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/mqtt_client_example.py +0 -0
  78. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/mqtt_diagnostics_example.py +0 -0
  79. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/periodic_device_info.py +0 -0
  80. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/periodic_requests.py +0 -0
  81. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/power_control_example.py +0 -0
  82. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/reconnection_demo.py +0 -0
  83. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/reservation_schedule_example.py +0 -0
  84. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/set_dhw_temperature_example.py +0 -0
  85. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/set_mode_example.py +0 -0
  86. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/simple_auto_recovery.py +0 -0
  87. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/simple_periodic_info.py +0 -0
  88. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/simple_periodic_status.py +0 -0
  89. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/test_api_client.py +0 -0
  90. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/test_mqtt_connection.py +0 -0
  91. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/test_mqtt_messaging.py +0 -0
  92. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/test_periodic_minimal.py +0 -0
  93. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/token_restoration_example.py +0 -0
  94. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/tou_openei_example.py +0 -0
  95. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/examples/tou_schedule_example.py +0 -0
  96. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/pyproject.toml +0 -0
  97. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/README.md +0 -0
  98. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/bump_version.py +0 -0
  99. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/diagnose_mqtt_connection.py +0 -0
  100. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/extract_changelog.py +0 -0
  101. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/format.py +0 -0
  102. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/lint.py +0 -0
  103. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/setup-dev.py +0 -0
  104. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/scripts/validate_version.py +0 -0
  105. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/setup.cfg +0 -0
  106. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/setup.py +0 -0
  107. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/__init__.py +0 -0
  108. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/api_client.py +0 -0
  109. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/auth.py +0 -0
  110. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/cli/__init__.py +0 -0
  111. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/cli/__main__.py +0 -0
  112. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/cli/commands.py +0 -0
  113. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/cli/monitoring.py +0 -0
  114. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/cli/output_formatters.py +0 -0
  115. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/cli/token_storage.py +0 -0
  116. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/config.py +0 -0
  117. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/constants.py +0 -0
  118. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/encoding.py +0 -0
  119. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/enums.py +0 -0
  120. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/events.py +0 -0
  121. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/exceptions.py +0 -0
  122. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_client.py +0 -0
  123. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_command_queue.py +0 -0
  124. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_connection.py +0 -0
  125. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_device_control.py +0 -0
  126. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_diagnostics.py +0 -0
  127. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_periodic.py +0 -0
  128. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_reconnection.py +0 -0
  129. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_subscriptions.py +0 -0
  130. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/mqtt_utils.py +0 -0
  131. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/py.typed +0 -0
  132. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500/utils.py +0 -0
  133. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500_python.egg-info/SOURCES.txt +0 -0
  134. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500_python.egg-info/dependency_links.txt +0 -0
  135. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500_python.egg-info/entry_points.txt +0 -0
  136. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500_python.egg-info/not-zip-safe +0 -0
  137. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500_python.egg-info/requires.txt +0 -0
  138. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/src/nwp500_python.egg-info/top_level.txt +0 -0
  139. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/conftest.py +0 -0
  140. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_api_helpers.py +0 -0
  141. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_auth.py +0 -0
  142. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_cli_basic.py +0 -0
  143. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_cli_commands.py +0 -0
  144. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_command_queue.py +0 -0
  145. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_events.py +0 -0
  146. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_exceptions.py +0 -0
  147. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_models.py +0 -0
  148. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_mqtt_client_init.py +0 -0
  149. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tests/test_utils.py +0 -0
  150. {nwp500_python-7.0.0 → nwp500_python-7.0.1}/tox.ini +0 -0
@@ -2,6 +2,13 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 7.0.1 (2025-12-18)
6
+ ==========================
7
+
8
+ Fixed
9
+ -----
10
+ - Minor bug fixes and improvements
11
+
5
12
  Version 7.0.0 (2025-12-17)
6
13
  ==========================
7
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nwp500-python
3
- Version: 7.0.0
3
+ Version: 7.0.1
4
4
  Summary: A library for controlling Navien NWP500 Water Heaters via NaviLink
5
5
  Home-page: https://github.com/eman/nwp500-python
6
6
  Author: Emmanuel Levijarvi
@@ -16,6 +16,7 @@ from .enums import (
16
16
  CurrentOperationMode,
17
17
  DeviceType,
18
18
  DhwOperationSetting,
19
+ DREvent,
19
20
  ErrorCode,
20
21
  HeatSource,
21
22
  TemperatureType,
@@ -309,7 +310,12 @@ class DeviceStatus(NavienBaseModel):
309
310
  description="Sub error code providing additional error details"
310
311
  )
311
312
  smart_diagnostic: int = Field(
312
- description="Smart diagnostic status for system health monitoring"
313
+ description=(
314
+ "Smart diagnostic status code for system health monitoring. "
315
+ "0 = no diagnostic conditions. "
316
+ "Non-zero = diagnostic condition detected. "
317
+ "Specific diagnostic codes are device firmware dependent."
318
+ )
313
319
  )
314
320
  fault_status1: int = Field(description="Fault status register 1")
315
321
  fault_status2: int = Field(description="Fault status register 2")
@@ -330,11 +336,14 @@ class DeviceStatus(NavienBaseModel):
330
336
  ),
331
337
  json_schema_extra={"unit_of_measurement": "%"},
332
338
  )
333
- dr_event_status: int = Field(
339
+ dr_event_status: DREvent = Field(
340
+ default=DREvent.UNKNOWN,
334
341
  description=(
335
- "Demand Response (DR) event status. "
336
- "Indicates if utility DR commands are active (CTA-2045)"
337
- )
342
+ "Demand Response (DR) event status from utility (CTA-2045). "
343
+ "0=UNKNOWN (No event), 1=RUN_NORMAL, 2=SHED (reduce power), "
344
+ "3=LOADUP (pre-heat), 4=LOADUP_ADV (advanced pre-heat), "
345
+ "5=CPE (customer peak event/grid emergency)"
346
+ ),
338
347
  )
339
348
  vacation_day_setting: int = Field(
340
349
  description="Vacation day setting",
@@ -414,9 +423,12 @@ class DeviceStatus(NavienBaseModel):
414
423
  )
415
424
  dr_override_status: int = Field(
416
425
  description=(
417
- "Demand Response override status. "
418
- "User can override DR commands for up to 72 hours"
419
- )
426
+ "Demand Response override status in hours. "
427
+ "0 = no override active. "
428
+ "Non-zero (1-72) = override active with specified remaining hours. "
429
+ "User can override DR commands for up to 72 hours."
430
+ ),
431
+ json_schema_extra={"unit_of_measurement": "hours"},
420
432
  )
421
433
  tou_override_status: TouOverride = Field(
422
434
  description=(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nwp500-python
3
- Version: 7.0.0
3
+ Version: 7.0.1
4
4
  Summary: A library for controlling Navien NWP500 Water Heaters via NaviLink
5
5
  Home-page: https://github.com/eman/nwp500-python
6
6
  Author: Emmanuel Levijarvi
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes