@digital-alchemy/hass 25.2.2 → 25.3.1

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 (115) hide show
  1. package/dist/dev/index.d.mts +3 -0
  2. package/dist/dev/index.mjs +4 -0
  3. package/dist/dev/index.mjs.map +1 -0
  4. package/dist/dev/mappings.d.mts +70 -0
  5. package/dist/dev/mappings.mjs +2 -0
  6. package/dist/dev/mappings.mjs.map +1 -0
  7. package/dist/dev/registry.d.mts +328 -0
  8. package/dist/dev/registry.mjs +2 -0
  9. package/dist/dev/registry.mjs.map +1 -0
  10. package/dist/dev/services.d.mts +2431 -0
  11. package/dist/dev/services.mjs +5 -0
  12. package/dist/dev/services.mjs.map +1 -0
  13. package/dist/helpers/device.d.mts +1 -1
  14. package/dist/helpers/entity-state.d.mts +2 -2
  15. package/dist/helpers/fetch/calendar.d.mts +1 -1
  16. package/dist/helpers/fetch/configuration.d.mts +1 -1
  17. package/dist/helpers/fetch/service-list.d.mts +1 -2
  18. package/dist/helpers/id-by.d.mts +2 -3
  19. package/dist/helpers/interfaces.d.mts +4 -5
  20. package/dist/helpers/interfaces.mjs.map +1 -1
  21. package/dist/helpers/registry.d.mts +1 -2
  22. package/dist/helpers/registry.mjs.map +1 -1
  23. package/dist/helpers/utility.d.mts +5 -21
  24. package/dist/helpers/utility.mjs +0 -5
  25. package/dist/helpers/utility.mjs.map +1 -1
  26. package/dist/helpers/websocket.d.mts +2 -1
  27. package/dist/index.d.mts +2 -1
  28. package/dist/index.mjs +2 -1
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/mock_assistant/helpers/fixtures.d.mts +2 -1
  31. package/dist/mock_assistant/services/device.service.mjs.map +1 -1
  32. package/dist/mock_assistant/services/entity-registry.service.d.mts +1 -1
  33. package/dist/mock_assistant/services/entity.service.d.mts +2 -2
  34. package/dist/mock_assistant/services/events.service.d.mts +2 -1
  35. package/dist/mock_assistant/services/events.service.mjs.map +1 -1
  36. package/dist/mock_assistant/services/fixtures.service.d.mts +3 -2
  37. package/dist/mock_assistant/services/fixtures.service.mjs.map +1 -1
  38. package/dist/mock_assistant/services/zone.service.mjs +1 -1
  39. package/dist/mock_assistant/services/zone.service.mjs.map +1 -1
  40. package/dist/services/area.service.d.mts +1 -1
  41. package/dist/services/area.service.mjs +1 -1
  42. package/dist/services/area.service.mjs.map +1 -1
  43. package/dist/services/call-proxy.service.d.mts +1 -1
  44. package/dist/services/call-proxy.service.mjs.map +1 -1
  45. package/dist/services/config.service.mjs.map +1 -1
  46. package/dist/services/entity.service.d.mts +1 -1
  47. package/dist/services/entity.service.mjs +1 -1
  48. package/dist/services/entity.service.mjs.map +1 -1
  49. package/dist/services/fetch-api.service.d.mts +3 -2
  50. package/dist/services/fetch-api.service.mjs.map +1 -1
  51. package/dist/services/floor.service.mjs.map +1 -1
  52. package/dist/services/id-by.service.d.mts +1 -1
  53. package/dist/services/id-by.service.mjs +28 -3
  54. package/dist/services/id-by.service.mjs.map +1 -1
  55. package/dist/services/label.service.mjs.map +1 -1
  56. package/dist/services/reference.service.mjs +4 -3
  57. package/dist/services/reference.service.mjs.map +1 -1
  58. package/dist/services/websocket-api.service.mjs +2 -2
  59. package/dist/services/websocket-api.service.mjs.map +1 -1
  60. package/dist/testing/area.spec.mjs.map +1 -1
  61. package/dist/testing/entity.spec.mjs.map +1 -1
  62. package/dist/testing/floor.spec.mjs.map +1 -1
  63. package/dist/testing/id-by.spec.mjs.map +1 -1
  64. package/dist/testing/label.spec.mjs.map +1 -1
  65. package/dist/testing/ref-by.spec.mjs.map +1 -1
  66. package/dist/user.d.mts +43 -0
  67. package/dist/user.mjs +4 -0
  68. package/dist/user.mjs.map +1 -0
  69. package/package.json +18 -17
  70. package/src/dev/index.mts +3 -0
  71. package/src/dev/mappings.mts +121 -0
  72. package/src/dev/registry.mts +330 -0
  73. package/src/dev/services.mts +2759 -0
  74. package/src/helpers/device.mts +1 -1
  75. package/src/helpers/entity-state.mts +6 -9
  76. package/src/helpers/fetch/calendar.mts +1 -1
  77. package/src/helpers/fetch/configuration.mts +1 -1
  78. package/src/helpers/fetch/service-list.mts +1 -2
  79. package/src/helpers/id-by.mts +11 -13
  80. package/src/helpers/interfaces.mts +14 -18
  81. package/src/helpers/registry.mts +9 -2
  82. package/src/helpers/utility.mts +13 -67
  83. package/src/helpers/websocket.mts +2 -1
  84. package/src/index.mts +2 -1
  85. package/src/mock_assistant/helpers/fixtures.mts +1 -1
  86. package/src/mock_assistant/services/area.service.mts +1 -1
  87. package/src/mock_assistant/services/device.service.mts +1 -1
  88. package/src/mock_assistant/services/entity-registry.service.mts +1 -1
  89. package/src/mock_assistant/services/entity.service.mts +2 -2
  90. package/src/mock_assistant/services/events.service.mts +2 -1
  91. package/src/mock_assistant/services/fixtures.service.mts +2 -1
  92. package/src/mock_assistant/services/floor.service.mts +1 -1
  93. package/src/mock_assistant/services/label.service.mts +1 -1
  94. package/src/mock_assistant/services/zone.service.mts +13 -10
  95. package/src/services/area.service.mts +2 -3
  96. package/src/services/call-proxy.service.mts +2 -2
  97. package/src/services/config.service.mts +1 -1
  98. package/src/services/entity.service.mts +2 -4
  99. package/src/services/fetch-api.service.mts +1 -1
  100. package/src/services/floor.service.mts +1 -1
  101. package/src/services/id-by.service.mts +47 -19
  102. package/src/services/label.service.mts +1 -1
  103. package/src/services/reference.service.mts +19 -18
  104. package/src/services/websocket-api.service.mts +2 -2
  105. package/src/testing/area.spec.mts +1 -1
  106. package/src/testing/entity.spec.mts +2 -1
  107. package/src/testing/floor.spec.mts +1 -1
  108. package/src/testing/id-by.spec.mts +1 -1
  109. package/src/testing/label.spec.mts +1 -1
  110. package/src/testing/ref-by.spec.mts +2 -1
  111. package/src/user.mts +97 -0
  112. package/dist/dynamic.d.mts +0 -3764
  113. package/dist/dynamic.mjs +0 -7
  114. package/dist/dynamic.mjs.map +0 -1
  115. package/src/dynamic.mts +0 -4302
package/package.json CHANGED
@@ -3,13 +3,13 @@
3
3
  "name": "@digital-alchemy/hass",
4
4
  "repository": "https://github.com/Digital-Alchemy-TS/hass",
5
5
  "homepage": "https://docs.digital-alchemy.app",
6
- "version": "25.2.2",
6
+ "version": "25.3.1",
7
7
  "description": "Typescript APIs for Home Assistant. Includes rest & websocket bindings",
8
8
  "scripts": {
9
9
  "build": "rm -rf dist/; tsc",
10
10
  "lint": "eslint src",
11
11
  "test": "vitest",
12
- "prepublishOnly": "yarn build",
12
+ "prepublishOnly": "tsc --project ./tsconfig.lib.json",
13
13
  "upgrade": "yarn up '@digital-alchemy/*'"
14
14
  },
15
15
  "bugs": {
@@ -52,7 +52,8 @@
52
52
  },
53
53
  "exports": {
54
54
  ".": "./dist/index.mjs",
55
- "./mock-assistant": "./dist/mock_assistant/index.mjs"
55
+ "./mock-assistant": "./dist/mock_assistant/index.mjs",
56
+ "./dev-types": "./dist/dev/index.mjs"
56
57
  },
57
58
  "license": "MIT",
58
59
  "devDependencies": {
@@ -62,19 +63,19 @@
62
63
  "@digital-alchemy/type-writer": "^25.2.1",
63
64
  "@eslint/compat": "^1.2.7",
64
65
  "@eslint/eslintrc": "^3.3.0",
65
- "@eslint/js": "^9.21.0",
66
- "@faker-js/faker": "^9.5.0",
66
+ "@eslint/js": "^9.22.0",
67
+ "@faker-js/faker": "^9.6.0",
67
68
  "@types/js-yaml": "^4.0.9",
68
- "@types/node": "^22.13.5",
69
+ "@types/node": "^22.13.10",
69
70
  "@types/node-cron": "^3.0.11",
70
71
  "@types/semver": "^7.5.8",
71
- "@types/ws": "^8.5.14",
72
- "@typescript-eslint/eslint-plugin": "8.24.1",
73
- "@typescript-eslint/parser": "8.24.1",
72
+ "@types/ws": "^8.18.0",
73
+ "@typescript-eslint/eslint-plugin": "8.26.1",
74
+ "@typescript-eslint/parser": "8.26.1",
74
75
  "dayjs": "^1.11.13",
75
76
  "dotenv": "^16.4.7",
76
- "eslint": "9.21.0",
77
- "eslint-config-prettier": "10.0.1",
77
+ "eslint": "9.22.0",
78
+ "eslint-config-prettier": "10.1.1",
78
79
  "eslint-plugin-import": "^2.31.0",
79
80
  "eslint-plugin-jsonc": "^2.19.1",
80
81
  "eslint-plugin-no-unsanitized": "^4.1.2",
@@ -83,23 +84,23 @@
83
84
  "eslint-plugin-simple-import-sort": "^12.1.1",
84
85
  "eslint-plugin-sonarjs": "^3.0.2",
85
86
  "eslint-plugin-sort-keys-fix": "^1.1.2",
86
- "eslint-plugin-unicorn": "^56.0.1",
87
+ "eslint-plugin-unicorn": "^57.0.0",
87
88
  "node-cron": "^3.0.3",
88
- "prettier": "^3.5.2",
89
+ "prettier": "^3.5.3",
89
90
  "semver": "^7.7.1",
90
91
  "tsx": "^4.19.3",
91
- "typescript": "^5.7.3",
92
+ "typescript": "^5.8.2",
92
93
  "uuid": "^11.1.0",
93
- "vitest": "^3.0.6",
94
+ "vitest": "^3.0.8",
94
95
  "ws": "^8.18.1"
95
96
  },
96
97
  "dependencies": {
97
98
  "@digital-alchemy/core": "^25.2.2",
98
99
  "dayjs": "^1.11.13",
99
100
  "semver": "^7.7.1",
100
- "type-fest": "^4.35.0",
101
+ "type-fest": "^4.37.0",
101
102
  "uuid": "^11.1.0",
102
103
  "ws": "^8.18.1"
103
104
  },
104
- "packageManager": "yarn@4.5.1"
105
+ "packageManager": "yarn@4.7.0"
105
106
  }
@@ -0,0 +1,3 @@
1
+ export * from "./mappings.mts";
2
+ export * from "./registry.mts";
3
+ export * from "./services.mts";
@@ -0,0 +1,121 @@
1
+ declare module "../user.mts" {
2
+ export interface HassUniqueIdMapping {
3
+ "5622d76001a335e3ea893c4d60d31b3d-next_dawn": "sensor.sun_next_dawn";
4
+ "5622d76001a335e3ea893c4d60d31b3d-next_dusk": "sensor.sun_next_dusk";
5
+ "5622d76001a335e3ea893c4d60d31b3d-next_midnight": "sensor.sun_next_midnight";
6
+ "5622d76001a335e3ea893c4d60d31b3d-next_noon": "sensor.sun_next_noon";
7
+ "5622d76001a335e3ea893c4d60d31b3d-next_rising": "sensor.sun_next_rising";
8
+ "5622d76001a335e3ea893c4d60d31b3d-next_setting": "sensor.sun_next_setting";
9
+ "5622d76001a335e3ea893c4d60d31b3d-solar_elevation": "sensor.sun_solar_elevation";
10
+ "6d8acf36200c5ff8d2d9bb1b1f1dbe00c7eb5b7540103fd90c9a035f82967431": "button.start_white_noise";
11
+ "5622d76001a335e3ea893c4d60d31b3d-solar_azimuth": "sensor.sun_solar_azimuth";
12
+ "5622d76001a335e3ea893c4d60d31b3d-solar_rising": "sensor.sun_solar_rising";
13
+ digital_alchemy: "person.digital_alchemy";
14
+ "6acd101923c0460fc31bad82c4efa140": "todo.shopping_list";
15
+ "4a7fc2592d3a98e0eed8cbc73e839c1c": "tts.google_en_com";
16
+ hass_e2e_is_online: "binary_sensor.hass_e2e_online";
17
+ e1806fdc93296bbd5ab42967003cd38729ff9ba6cfeefc3e15a03ad01ac894fe: "sensor.magic";
18
+ a6e8373221727e197144ba689d7606d4be6f609f2fd0fd8e17516548780465ab: "binary_sensor.toggles";
19
+ "413eb6d69bbec134a07a6d32effd3c3763955e611f43256600cca40725276816": "switch.bedroom_lamp";
20
+ "06d5a22e681ee9c668f8563bd3108853fb053c43342131782afe989090c4ced9": "switch.kitchen_cabinets";
21
+ "27b4fc99f35bbdd1a07173caff5b52f86e3bc342db96f48427e47980b0fb6b49": "switch.living_room_mood_lights";
22
+ "8eb8c1f8c760e97cfa49a0a29cd6891313a1e9a45dd046a556a9f317778cf50a": "switch.porch_light";
23
+ "05ecbbc6111791b6baacbbb60397db14": "calendar.united_states_tx";
24
+ }
25
+
26
+ export interface HassZoneMapping {
27
+ test: true;
28
+ }
29
+
30
+ export interface HassDomainMapping {
31
+ automation: "automation.example";
32
+ binary_sensor: "binary_sensor.hass_e2e_online" | "binary_sensor.toggles";
33
+ button: "button.example";
34
+ calendar: "calendar.united_states_tx";
35
+ light: "light.bedroom_ceiling_fan";
36
+ person: "person.digital_alchemy";
37
+ scene: "scene.games_room_auto";
38
+ sensor:
39
+ | "sensor.magic"
40
+ | "sensor.sun_next_dawn"
41
+ | "sensor.sun_next_dusk"
42
+ | "sensor.sun_next_midnight"
43
+ | "sensor.sun_next_noon"
44
+ | "sensor.sun_next_rising"
45
+ | "sensor.sun_next_setting";
46
+ sun: "sun.sun";
47
+ switch:
48
+ | "switch.bedroom_lamp"
49
+ | "switch.kitchen_cabinets"
50
+ | "switch.living_room_mood_lights"
51
+ | "switch.porch_light";
52
+ todo: "todo.shopping_list";
53
+ tts: "tts.google_en_com";
54
+ zone: "zone.home";
55
+ }
56
+
57
+ export interface HassPlatformMapping {
58
+ _sun:
59
+ | "sensor.sun_next_dawn"
60
+ | "sensor.sun_next_dusk"
61
+ | "sensor.sun_next_midnight"
62
+ | "sensor.sun_next_noon"
63
+ | "sensor.sun_next_rising"
64
+ | "sensor.sun_next_setting"
65
+ | "sensor.sun_solar_elevation"
66
+ | "sensor.sun_solar_azimuth"
67
+ | "sensor.sun_solar_rising";
68
+ _person: "person.digital_alchemy";
69
+ _shopping_list: "todo.shopping_list";
70
+ _google_translate: "tts.google_en_com";
71
+ _synapse:
72
+ | "binary_sensor.hass_e2e_online"
73
+ | "sensor.magic"
74
+ | "button.example"
75
+ | "binary_sensor.toggles"
76
+ | "switch.bedroom_lamp"
77
+ | "switch.kitchen_cabinets"
78
+ | "switch.living_room_mood_lights"
79
+ | "switch.porch_light";
80
+ _holiday: "calendar.united_states_tx";
81
+ }
82
+
83
+ export interface HassDeviceMapping {
84
+ _308e39cf50a9fc6c30b4110724ed1f2e:
85
+ | "sensor.sun_next_dawn"
86
+ | "sensor.sun_next_dusk"
87
+ | "sensor.sun_next_midnight"
88
+ | "sensor.sun_next_noon"
89
+ | "sensor.sun_next_rising"
90
+ | "sensor.sun_next_setting"
91
+ | "button.example"
92
+ | "sensor.sun_solar_elevation"
93
+ | "sensor.sun_solar_azimuth"
94
+ | "sensor.sun_solar_rising";
95
+ _e58841e47cf86097b310316e55d6bb12: "calendar.united_states_tx";
96
+ }
97
+
98
+ export interface HassAreaMapping {
99
+ _test: "switch.living_room_mood_lights";
100
+ _living_room: "switch.living_room_mood_lights";
101
+ _kitchen: "switch.kitchen_cabinets";
102
+ _bedroom: "switch.bedroom_lamp" | "light.bedroom_ceiling_fan";
103
+ }
104
+
105
+ export interface HassLabelMapping {
106
+ _synapse:
107
+ | "binary_sensor.hass_e2e_online"
108
+ | "sensor.magic"
109
+ | "binary_sensor.toggles"
110
+ | "switch.bedroom_lamp"
111
+ | "switch.kitchen_cabinets"
112
+ | "switch.living_room_mood_lights"
113
+ | "switch.porch_light";
114
+ _test: never;
115
+ }
116
+
117
+ export interface HassFloorMapping {
118
+ _downstairs: "switch.kitchen_cabinets" | "switch.living_room_mood_lights";
119
+ _upstairs: "switch.bedroom_lamp";
120
+ }
121
+ }
@@ -0,0 +1,330 @@
1
+ /* eslint-disable @cspell/spellchecker */
2
+ /* eslint-disable @typescript-eslint/no-magic-numbers */
3
+ declare module "../user.mts" {
4
+ export interface HassEntitySetupMapping {
5
+ "button.example": {
6
+ state: string;
7
+ entity_id: "button.example";
8
+ attributes: { friendly_name: "Example button" };
9
+ };
10
+ "binary_sensor.hass_e2e_online": {
11
+ attributes: {
12
+ friendly_name: "hass_e2e online";
13
+ restored: true;
14
+ supported_features: 0;
15
+ };
16
+ context: {
17
+ id: "01HWXTSCSBGW129NV7WY8MMG1E";
18
+ parent_id: null;
19
+ user_id: null;
20
+ };
21
+ entity_id: "binary_sensor.hass_e2e_online";
22
+
23
+ state: "unavailable";
24
+ };
25
+ "binary_sensor.toggles": {
26
+ attributes: {
27
+ friendly_name: "toggles";
28
+ icon: "mdi:toggle-switch-variant-off";
29
+ restored: true;
30
+ supported_features: 0;
31
+ };
32
+ context: {
33
+ id: "01HWXTSCSB43FF1R6FX0QEE4Z6";
34
+ parent_id: null;
35
+ user_id: null;
36
+ };
37
+ entity_id: "binary_sensor.toggles";
38
+ state: "unavailable";
39
+ };
40
+ "calendar.united_states_tx": {
41
+ attributes: {
42
+ all_day: true;
43
+ description: "";
44
+ end_time: "2024-05-28 00:00:00";
45
+ friendly_name: "United States, TX";
46
+ location: "United States, TX";
47
+ message: "Memorial Day";
48
+ start_time: "2024-05-27 00:00:00";
49
+ };
50
+ context: {
51
+ id: "01HWXTYEEFBB7QQC1CSM6PAR36";
52
+ parent_id: null;
53
+ user_id: null;
54
+ };
55
+ entity_id: "calendar.united_states_tx";
56
+ state: "off";
57
+ };
58
+ "light.bedroom_ceiling_fan": {
59
+ attributes: {
60
+ brightness: null;
61
+ color_mode: null;
62
+ color_temp: null;
63
+ color_temp_kelvin: null;
64
+ friendly_name: "Bedroom Ceiling Fan";
65
+ hs_color: null;
66
+ icon: "mdi:lightbulb-group";
67
+ max_color_temp_kelvin: 6535;
68
+ max_mireds: 500;
69
+ min_color_temp_kelvin: 2000;
70
+ min_mireds: 153;
71
+ rgb_color: null;
72
+ supported_color_modes: ["color_temp", "xy"];
73
+ supported_features: 40;
74
+ xy_color: null;
75
+ };
76
+ context: {
77
+ id: "01HX722Y1JFS6KN2MDERK0VJ2D";
78
+ parent_id: null;
79
+ user_id: null;
80
+ };
81
+ entity_id: "light.bedroom_ceiling_fan";
82
+ state: "off";
83
+ };
84
+ "person.digital_alchemy": {
85
+ attributes: {
86
+ device_trackers: [];
87
+ editable: true;
88
+ friendly_name: "digital-alchemy";
89
+ id: "digital_alchemy";
90
+ user_id: "4dd1cf7e93e94f3fbaf419501f9a3d59";
91
+ };
92
+ context: {
93
+ id: "01HWXTSCSBRKJ9T2KV1JNER5KQ";
94
+ parent_id: null;
95
+ user_id: null;
96
+ };
97
+ entity_id: "person.digital_alchemy";
98
+ state: "unknown";
99
+ };
100
+ "scene.games_room_auto": {
101
+ attributes: {
102
+ "Managed By": "home_automation";
103
+ friendly_name: "bedroom off";
104
+ };
105
+ context: {
106
+ id: "01HWXW289S8HP5MSGNNTNB2CBG";
107
+ parent_id: null;
108
+ user_id: null;
109
+ };
110
+ entity_id: "scene.games_room_auto";
111
+ state: "unknown";
112
+ };
113
+ "sensor.magic": {
114
+ attributes: {
115
+ friendly_name: "magic";
116
+ icon: "mdi:satellite-uplink";
117
+ restored: true;
118
+ supported_features: 0;
119
+ };
120
+ context: {
121
+ id: "01HWXTSCSBW34BP3R20RJ09CVZ";
122
+ parent_id: null;
123
+ user_id: null;
124
+ };
125
+ entity_id: "sensor.magic";
126
+ state: string;
127
+ };
128
+ "sensor.sun_next_dawn": {
129
+ attributes: {
130
+ device_class: "timestamp";
131
+ friendly_name: "Sun Next dawn";
132
+ };
133
+ context: {
134
+ id: "01HWXTS8W1SRTPT5K1XM0G491X";
135
+ parent_id: null;
136
+ user_id: null;
137
+ };
138
+ entity_id: "sensor.sun_next_dawn";
139
+
140
+ state: "2024-05-03T03:24:45+00:00";
141
+ };
142
+ "sensor.sun_next_dusk": {
143
+ attributes: {
144
+ device_class: "timestamp";
145
+ friendly_name: "Sun Next dusk";
146
+ };
147
+ context: {
148
+ id: "01HWXTS8W1S95P1MVHDGHSQEB2";
149
+ parent_id: null;
150
+ user_id: null;
151
+ };
152
+ entity_id: "sensor.sun_next_dusk";
153
+ state: "2024-05-03T19:51:10+00:00";
154
+ };
155
+ "sensor.sun_next_midnight": {
156
+ attributes: {
157
+ device_class: "timestamp";
158
+ friendly_name: "Sun Next midnight";
159
+ };
160
+ context: {
161
+ id: "01HWXTS8W1YQCPA3WZ69Y9JSPD";
162
+ parent_id: null;
163
+ user_id: null;
164
+ };
165
+ entity_id: "sensor.sun_next_midnight";
166
+ state: "2024-05-03T23:37:12+00:00";
167
+ };
168
+ "sensor.sun_next_noon": {
169
+ attributes: {
170
+ device_class: "timestamp";
171
+ friendly_name: "Sun Next noon";
172
+ };
173
+ context: {
174
+ id: "01HWXTS8W28MVV48CQ31JB2WKC";
175
+ parent_id: null;
176
+ user_id: null;
177
+ };
178
+ entity_id: "sensor.sun_next_noon";
179
+ state: "2024-05-03T11:37:19+00:00";
180
+ };
181
+ "sensor.sun_next_rising": {
182
+ attributes: {
183
+ device_class: "timestamp";
184
+ friendly_name: "Sun Next rising";
185
+ };
186
+ context: {
187
+ id: "01HWXTS8W2MMADKGWE4A5BMH51";
188
+ parent_id: null;
189
+ user_id: null;
190
+ };
191
+ entity_id: "sensor.sun_next_rising";
192
+ state: "2024-05-03T04:05:17+00:00";
193
+ };
194
+ "sensor.sun_next_setting": {
195
+ attributes: {
196
+ device_class: "timestamp";
197
+ friendly_name: "Sun Next setting";
198
+ };
199
+ context: {
200
+ id: "01HWXTS8W24KWTHR2B6V32NCXG";
201
+ parent_id: null;
202
+ user_id: null;
203
+ };
204
+ entity_id: "sensor.sun_next_setting";
205
+ state: "2024-05-03T19:10:21+00:00";
206
+ };
207
+ "sun.sun": {
208
+ attributes: {
209
+ azimuth: 0.35;
210
+ elevation: -21.86;
211
+ friendly_name: "Sun";
212
+ next_dawn: "2024-05-03T03:24:45.747945+00:00";
213
+ next_dusk: "2024-05-03T19:51:10.358970+00:00";
214
+ next_midnight: "2024-05-03T23:37:12+00:00";
215
+ next_noon: "2024-05-03T11:37:19+00:00";
216
+ next_rising: "2024-05-03T04:05:17.926549+00:00";
217
+ next_setting: "2024-05-03T19:10:21.280558+00:00";
218
+ rising: true;
219
+ };
220
+ context: {
221
+ id: "01HWXTS8W1J2TDGMN7KKNWP8DV";
222
+ parent_id: null;
223
+ user_id: null;
224
+ };
225
+ entity_id: "sun.sun";
226
+ state: "below_horizon";
227
+ };
228
+ "switch.bedroom_lamp": {
229
+ attributes: {
230
+ friendly_name: "bedroom_lamp";
231
+ restored: true;
232
+ supported_features: 0;
233
+ };
234
+ context: {
235
+ id: "01HWXTSCSB7BK003CH3AYYVXCB";
236
+ parent_id: null;
237
+ user_id: null;
238
+ };
239
+ entity_id: "switch.bedroom_lamp";
240
+ state: "unavailable";
241
+ };
242
+ "switch.kitchen_cabinets": {
243
+ attributes: {
244
+ friendly_name: "kitchen_cabinets";
245
+ restored: true;
246
+ supported_features: 0;
247
+ };
248
+ context: {
249
+ id: "01HWXTSCSBM9Y3SRQTFJ5CVK6H";
250
+ parent_id: null;
251
+ user_id: null;
252
+ };
253
+ entity_id: "switch.kitchen_cabinets";
254
+ state: "unavailable";
255
+ };
256
+ "switch.living_room_mood_lights": {
257
+ attributes: {
258
+ friendly_name: "living_room_mood_lights";
259
+ restored: true;
260
+ supported_features: 0;
261
+ };
262
+ context: {
263
+ id: "01HWXTSCSBS5B586JJ7VFH10SX";
264
+ parent_id: null;
265
+ user_id: null;
266
+ };
267
+ entity_id: "switch.living_room_mood_lights";
268
+
269
+ state: "unavailable";
270
+ };
271
+ "switch.porch_light": {
272
+ attributes: {
273
+ friendly_name: "porch_light";
274
+ restored: true;
275
+ supported_features: 0;
276
+ };
277
+ context: {
278
+ id: "01HWXTSCSBFTSZR1M5XAK7XSR8";
279
+ parent_id: null;
280
+ user_id: null;
281
+ };
282
+ entity_id: "switch.porch_light";
283
+ state: string;
284
+ };
285
+ "todo.shopping_list": {
286
+ attributes: {
287
+ friendly_name: "Shopping List";
288
+ supported_features: 15;
289
+ };
290
+ context: {
291
+ id: "01HWXTS8X3D417XC4YJTG8QJWB";
292
+ parent_id: null;
293
+ user_id: null;
294
+ };
295
+ entity_id: "todo.shopping_list";
296
+ state: "0";
297
+ };
298
+ "tts.google_en_com": {
299
+ attributes: {
300
+ friendly_name: "Google en com";
301
+ };
302
+ context: {
303
+ id: "01HWXTS8XMPQ236CDJ6X7C6E60";
304
+ parent_id: null;
305
+ user_id: null;
306
+ };
307
+ entity_id: "tts.google_en_com";
308
+ state: "unknown";
309
+ };
310
+ "zone.home": {
311
+ attributes: {
312
+ editable: true;
313
+ friendly_name: "Home";
314
+ icon: "mdi:home";
315
+ latitude: 52.373_133_9;
316
+ longitude: 4.890_314_7;
317
+ passive: false;
318
+ persons: [];
319
+ radius: 100;
320
+ };
321
+ context: {
322
+ id: "01HWXTS8GMB4ZW20P8MGMX0QSN";
323
+ parent_id: null;
324
+ user_id: null;
325
+ };
326
+ entity_id: "zone.home";
327
+ state: "0";
328
+ };
329
+ }
330
+ }