Compare commits

..
1543 Commits
Author SHA1 Message Date
Home Assistant Version Control f2b0249c55 zigbee2mqtt/state.json 2026-08-10 16:09:29 +00:00
Home Assistant Version Control 2e70619411 zigbee2mqtt/state.json 2026-08-10 15:36:03 +00:00
Home Assistant Version Control 2d9c9ea8c8 zigbee2mqtt/state.json 2026-08-10 15:24:02 +00:00
Home Assistant Version Control a791e24e1e zigbee2mqtt/state.json 2026-08-10 14:39:50 +00:00
Home Assistant Version Control da4da53b5a zigbee2mqtt/state.json 2026-08-10 13:37:44 +00:00
Home Assistant Version Control c7c257cf81 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 13:30:25 +00:00
Home Assistant Version Control b2bd7be8ba .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 13:30:03 +00:00
Home Assistant Version Control 85d9b2167e .storage/lovelace.printer_stats, zigbee2mqtt/state.json 2026-08-10 13:29:03 +00:00
Home Assistant Version Control ebe4516794 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 13:23:25 +00:00
Home Assistant Version Control 4f426a37cd .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 13:22:51 +00:00
Home Assistant Version Control 3fd603cfad automations.yaml, zigbee2mqtt/state.json 2026-08-10 13:18:11 +00:00
Home Assistant Version Control 9e4d3f9ac4 zigbee2mqtt/state.json 2026-08-10 13:12:26 +00:00
Home Assistant Version Control 02786bb096 zigbee2mqtt/state.json 2026-08-10 13:08:18 +00:00
Home Assistant Version Control 6373505fa6 zigbee2mqtt/state.json 2026-08-10 13:05:42 +00:00
Home Assistant Version Control f8b1bbdb4e zigbee2mqtt/state.json 2026-08-10 12:57:51 +00:00
Home Assistant Version Control f12527d5c3 zigbee2mqtt/state.json 2026-08-10 12:02:12 +00:00
Home Assistant Version Control a487d63e63 zigbee2mqtt/state.json 2026-08-10 11:39:50 +00:00
Home Assistant Version Control 8357e674a3 zigbee2mqtt/state.json 2026-08-10 11:02:08 +00:00
Home Assistant Version Control 44e08a3b34 zigbee2mqtt/state.json 2026-08-10 09:58:44 +00:00
Home Assistant Version Control 6a23b879ab zigbee2mqtt/state.json 2026-08-10 09:39:51 +00:00
Home Assistant Version Control 64f0cfafa0 zigbee2mqtt/state.json 2026-08-10 08:16:20 +00:00
Home Assistant Version Control e0f7e9505d 3 files 2026-08-10 07:39:50 +00:00
Home Assistant Version Control 60968b8dbb .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:59:57 +00:00
Home Assistant Version Control 4ca32b9450 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:57:27 +00:00
Home Assistant Version Control f04ca662c4 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:57:17 +00:00
Home Assistant Version Control 4643b7677f .storage/lovelace.dashboard_music 2026-08-10 05:51:35 +00:00
Home Assistant Version Control b8d79b5777 .storage/lovelace.dashboard_music, zigbee2mqtt/state.json 2026-08-10 05:51:17 +00:00
Home Assistant Version Control d598352231 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 05:47:47 +00:00
Home Assistant Version Control dada012416 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:47:09 +00:00
Home Assistant Version Control 2f5e6361b0 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:45:13 +00:00
Home Assistant Version Control e1fdfa63f8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:36:32 +00:00
Home Assistant Version Control d86ee2f50d .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:36:22 +00:00
Home Assistant Version Control e31355d895 zigbee2mqtt/state.json 2026-08-10 05:36:10 +00:00
Home Assistant Version Control 22d2149e1f .storage/lovelace_resources 2026-08-10 05:35:54 +00:00
Home Assistant Version Control 694dbe42e3 .ha_run.lock 2026-08-10 05:35:38 +00:00
Home Assistant Version Control cb1f163a35 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:35:00 +00:00
Home Assistant Version Control f79d174d83 .storage/lovelace_resources 2026-08-10 05:34:18 +00:00
Home Assistant Version Control 1a60583c36 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 05:34:14 +00:00
Home Assistant Version Control 94aeed2e02 .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-08-10 05:34:08 +00:00
Home Assistant Version Control ee97db87fe www/gcode_viewer_card.js 2026-08-10 05:33:54 +00:00
Home Assistant Version Control f423db5dcd www/gcode_viewer_card.js 2026-08-10 05:33:46 +00:00
Home Assistant Version Control 014dfd9086 www/gcode_viewer_card.js 2026-08-10 05:33:40 +00:00
Home Assistant Version Control 04b0c8740b www/gcode_viewer_card.js 2026-08-10 05:33:34 +00:00
Home Assistant Version Control f0279bf952 custom_components/octoprint_gcode_proxy/manifest.json 2026-08-10 05:32:26 +00:00
Home Assistant Version Control 410f360b46 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:31:02 +00:00
Home Assistant Version Control 144043b6c0 www/three.module.js 2026-08-10 05:28:22 +00:00
Home Assistant Version Control b2733f3eb1 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:26:42 +00:00
Home Assistant Version Control 5262810ba4 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:23:55 +00:00
Home Assistant Version Control 89baa41efe .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 05:13:55 +00:00
Home Assistant Version Control 628839063c .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:13:15 +00:00
Home Assistant Version Control fe36f8cdf0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:13:11 +00:00
Home Assistant Version Control a01d544761 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 05:12:41 +00:00
Home Assistant Version Control 097b41283d zigbee2mqtt/state.json 2026-08-10 05:11:03 +00:00
Home Assistant Version Control dfd8d3b0d9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:10:59 +00:00
Home Assistant Version Control 06a659d400 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:10:53 +00:00
Home Assistant Version Control 0b874a361b .storage/lovelace_resources 2026-08-10 05:10:37 +00:00
Home Assistant Version Control 792afafa7f .ha_run.lock 2026-08-10 05:10:05 +00:00
Home Assistant Version Control d26f51c11f .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:09:25 +00:00
Home Assistant Version Control bd187684d7 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 05:08:41 +00:00
Home Assistant Version Control 859ceb8481 configuration.yaml 2026-08-10 05:08:03 +00:00
Home Assistant Version Control 34e50e4ae3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:07:05 +00:00
Home Assistant Version Control e5e3cb35ba zigbee2mqtt/state.json 2026-08-10 05:06:56 +00:00
Home Assistant Version Control 7937297070 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:03:42 +00:00
Home Assistant Version Control 952c72ffd8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 05:03:30 +00:00
Home Assistant Version Control 9803395a61 .storage/lovelace_resources 2026-08-10 05:03:15 +00:00
Home Assistant Version Control b9073984ab .ha_run.lock 2026-08-10 05:02:47 +00:00
Home Assistant Version Control 513878f352 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 05:02:12 +00:00
Home Assistant Version Control 9bd0f08dd8 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 05:00:52 +00:00
Home Assistant Version Control 9b4cf2ac26 configuration.yaml 2026-08-10 05:00:10 +00:00
Home Assistant Version Control 65770a83de configuration.yaml 2026-08-10 04:59:58 +00:00
Home Assistant Version Control 80ca702ba7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 04:58:14 +00:00
Home Assistant Version Control be61acfa76 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 04:57:20 +00:00
Home Assistant Version Control f5ece1d771 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 04:54:16 +00:00
Home Assistant Version Control f27da5a0fd .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 04:54:00 +00:00
Home Assistant Version Control d433d4240c .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 04:51:36 +00:00
Home Assistant Version Control 90a5661e65 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 04:51:22 +00:00
Home Assistant Version Control 257867ea79 3 files 2026-08-10 04:48:06 +00:00
Home Assistant Version Control 3e5e9ab6a6 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-10 04:45:41 +00:00
Home Assistant Version Control 3eed811b97 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 04:45:17 +00:00
Home Assistant Version Control df4e74f056 126 files 2026-08-10 04:41:24 +00:00
Home Assistant Version Control a7eec430e8 zigbee2mqtt/state.json 2026-08-10 04:20:22 +00:00
Home Assistant Version Control aedc420903 zigbee2mqtt/state.json 2026-08-10 04:00:23 +00:00
Home Assistant Version Control 97d3105255 zigbee2mqtt/state.json 2026-08-10 03:24:34 +00:00
Home Assistant Version Control 58c72515c1 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 01:24:41 +00:00
Home Assistant Version Control 7c5bffc8aa .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 01:23:25 +00:00
Home Assistant Version Control 30ef15ba94 .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 01:23:07 +00:00
Home Assistant Version Control 43541692cd .ha_mcp/logs/mcp_usage.jsonl 2026-08-10 01:23:03 +00:00
Home Assistant Version Control 6c09e36294 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-10 01:22:57 +00:00
Home Assistant Version Control e5b504c539 zigbee2mqtt/state.json 2026-08-10 01:19:52 +00:00
Home Assistant Version Control 824dd6021c zigbee2mqtt/state.json 2026-08-09 23:44:23 +00:00
Home Assistant Version Control 8ded574337 2 files 2026-08-09 23:21:02 +00:00
Home Assistant Version Control 0ef18961cb zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-09 23:17:38 +00:00
Home Assistant Version Control 91ba5e478f zigbee2mqtt/state.json 2026-08-09 22:57:40 +00:00
Home Assistant Version Control cd5435b155 zigbee2mqtt/state.json 2026-08-09 22:41:39 +00:00
Home Assistant Version Control e0270db7d5 zigbee2mqtt/state.json 2026-08-09 22:32:57 +00:00
Home Assistant Version Control 5bd5d115bc zigbee2mqtt/state.json 2026-08-09 22:09:31 +00:00
Home Assistant Version Control e280c72502 zigbee2mqtt/state.json 2026-08-09 20:54:43 +00:00
Home Assistant Version Control 7f198c060e zigbee2mqtt/state.json 2026-08-09 20:41:38 +00:00
Home Assistant Version Control 836834d1ad zigbee2mqtt/state.json 2026-08-09 19:58:55 +00:00
Home Assistant Version Control 9c2ad145f8 zigbee2mqtt/state.json 2026-08-09 19:48:05 +00:00
Home Assistant Version Control 8a32c0a1e5 zigbee2mqtt/state.json 2026-08-09 19:23:33 +00:00
Home Assistant Version Control 3e204b3581 zigbee2mqtt/state.json 2026-08-09 18:41:38 +00:00
Home Assistant Version Control 8003bbfbf1 zigbee2mqtt/state.json 2026-08-09 16:41:37 +00:00
Home Assistant Version Control b052abeb8b zigbee2mqtt/state.json 2026-08-09 15:40:05 +00:00
Home Assistant Version Control 6a3a650239 zigbee2mqtt/state.json 2026-08-09 15:14:33 +00:00
Home Assistant Version Control 8e5677e103 zigbee2mqtt/state.json 2026-08-09 14:41:37 +00:00
Home Assistant Version Control ace19e310d zigbee2mqtt/state.json 2026-08-09 14:21:54 +00:00
Home Assistant Version Control c289a77960 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-09 14:13:21 +00:00
Home Assistant Version Control 398bc670b2 zigbee2mqtt/state.json 2026-08-09 13:55:42 +00:00
Home Assistant Version Control c1a2da1af0 zigbee2mqtt/state.json 2026-08-09 12:58:00 +00:00
Home Assistant Version Control 54d311aaa1 zigbee2mqtt/state.json 2026-08-09 12:40:07 +00:00
Home Assistant Version Control 518f46724e zigbee2mqtt/state.json 2026-08-09 12:06:31 +00:00
Home Assistant Version Control 131cb4fde2 zigbee2mqtt/state.json 2026-08-09 11:16:50 +00:00
Home Assistant Version Control 3fc2f5fe03 zigbee2mqtt/state.json 2026-08-09 10:41:36 +00:00
Home Assistant Version Control 9ec773836c .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-09 08:41:36 +00:00
Home Assistant Version Control 3207d896d6 zigbee2mqtt/state.json 2026-08-09 08:13:18 +00:00
Home Assistant Version Control 51a1acef4e zigbee2mqtt/state.json 2026-08-09 07:33:07 +00:00
Home Assistant Version Control 8c4a0e7afd zigbee2mqtt/state.json 2026-08-09 06:41:36 +00:00
Home Assistant Version Control c05fd75f78 zigbee2mqtt/state.json 2026-08-09 04:41:37 +00:00
Home Assistant Version Control 46ab857691 zigbee2mqtt/state.json 2026-08-09 02:41:35 +00:00
Home Assistant Version Control cda54e82b4 .storage/lovelace.printer_stats 2026-08-09 02:02:45 +00:00
Home Assistant Version Control 57758e98b2 .storage/lovelace.printer_stats 2026-08-09 02:02:15 +00:00
Home Assistant Version Control d7d80967c9 .storage/lovelace_resources 2026-08-09 01:58:27 +00:00
Home Assistant Version Control 42fb66ead3 7 files 2026-08-09 01:58:19 +00:00
Home Assistant Version Control 4d4f27e6e4 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-09 01:46:44 +00:00
Home Assistant Version Control 64533b2e84 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-09 01:44:13 +00:00
Home Assistant Version Control 3e67b1a1ce .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 01:41:01 +00:00
Home Assistant Version Control 8fd2ce05ff 3 files 2026-08-09 01:40:51 +00:00
Home Assistant Version Control 4e5e650386 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-09 01:36:57 +00:00
Home Assistant Version Control 698af7db07 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-09 01:35:51 +00:00
Home Assistant Version Control 5f9a59bf5b 3 files 2026-08-09 01:33:15 +00:00
Home Assistant Version Control 5fc4a3a82a .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 01:32:13 +00:00
Home Assistant Version Control 52e7ece191 .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 01:30:03 +00:00
Home Assistant Version Control f0cc6453c3 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-09 01:29:47 +00:00
Home Assistant Version Control 0190431b3d zigbee2mqtt/state.json 2026-08-09 01:16:22 +00:00
Home Assistant Version Control 02450b95a7 zigbee2mqtt/state.json 2026-08-09 00:57:27 +00:00
Home Assistant Version Control fcb12e9f25 zigbee2mqtt/state.json 2026-08-09 00:41:36 +00:00
Home Assistant Version Control e894e34832 zigbee2mqtt/state.json 2026-08-09 00:26:53 +00:00
Home Assistant Version Control 26529a36f2 opencode/decisions.yaml, zigbee2mqtt/state.json 2026-08-09 00:18:46 +00:00
Home Assistant Version Control 9ae8c673a9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 00:16:24 +00:00
Home Assistant Version Control c65e173c2a .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 00:15:48 +00:00
Home Assistant Version Control 981a682a2c .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 00:15:18 +00:00
Home Assistant Version Control 9066f55359 .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 00:14:36 +00:00
Home Assistant Version Control 7a768bde41 .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 00:14:28 +00:00
Home Assistant Version Control 44edda41da .ha_mcp/logs/mcp_usage.jsonl 2026-08-09 00:14:08 +00:00
Home Assistant Version Control 6e67e2d752 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-09 00:13:54 +00:00
Home Assistant Version Control 9793792ccb zigbee2mqtt/state.json 2026-08-09 00:12:20 +00:00
Home Assistant Version Control a6f63bfe3d zigbee2mqtt/state.json 2026-08-08 23:46:36 +00:00
Home Assistant Version Control b09d652ac8 zigbee2mqtt/state.json 2026-08-08 22:41:36 +00:00
Home Assistant Version Control a1ca795318 zigbee2mqtt/state.json 2026-08-08 22:25:55 +00:00
Home Assistant Version Control 4042fbb2c3 zigbee2mqtt/state.json 2026-08-08 21:21:59 +00:00
Home Assistant Version Control dd85887968 zigbee2mqtt/state.json 2026-08-08 21:10:18 +00:00
Home Assistant Version Control ae4eb3301e zigbee2mqtt/state.json 2026-08-08 21:03:26 +00:00
Home Assistant Version Control 5572e64bfa zigbee2mqtt/state.json 2026-08-08 20:41:34 +00:00
Home Assistant Version Control 1949ac8794 zigbee2mqtt/state.json 2026-08-08 19:14:51 +00:00
Home Assistant Version Control ce7b676511 zigbee2mqtt/state.json 2026-08-08 18:41:35 +00:00
Home Assistant Version Control a7db4916d6 zigbee2mqtt/state.json 2026-08-08 18:28:30 +00:00
Home Assistant Version Control 8a9a9b467d zigbee2mqtt/state.json 2026-08-08 16:41:35 +00:00
Home Assistant Version Control 9320ee1d97 zigbee2mqtt/state.json 2026-08-08 16:17:40 +00:00
Home Assistant Version Control 5908a6ed3e zigbee2mqtt/state.json 2026-08-08 15:56:34 +00:00
Home Assistant Version Control bffd7cb9b5 zigbee2mqtt/state.json 2026-08-08 15:21:38 +00:00
Home Assistant Version Control aa744b8e28 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-08 14:41:34 +00:00
Home Assistant Version Control b204626217 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-08 14:13:22 +00:00
Home Assistant Version Control f192116a7f zigbee2mqtt/state.json 2026-08-08 14:08:28 +00:00
Home Assistant Version Control 70305c8e94 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 13:43:10 +00:00
Home Assistant Version Control 02659d5f98 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:42:48 +00:00
Home Assistant Version Control b555e329d5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:42:42 +00:00
Home Assistant Version Control 90d24d5b64 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:42:30 +00:00
Home Assistant Version Control e757e617b1 configuration.yaml 2026-08-08 13:42:18 +00:00
Home Assistant Version Control 91fe3d734c .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:40:54 +00:00
Home Assistant Version Control 2f2f229094 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:40:22 +00:00
Home Assistant Version Control 57097968d0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:38:30 +00:00
Home Assistant Version Control 43986d3a79 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 13:38:24 +00:00
Home Assistant Version Control 91f4a5e94f .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:37:42 +00:00
Home Assistant Version Control 2dec9d2583 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:36:50 +00:00
Home Assistant Version Control 5cd4fded56 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:36:38 +00:00
Home Assistant Version Control 6cdbe36715 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 13:36:28 +00:00
Home Assistant Version Control 6f55cef0c3 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 13:35:20 +00:00
Home Assistant Version Control 7723b31d4a zigbee2mqtt/state.json 2026-08-08 13:26:31 +00:00
Home Assistant Version Control 0a6de13812 zigbee2mqtt/state.json 2026-08-08 12:38:50 +00:00
Home Assistant Version Control 55ef3e8575 zigbee2mqtt/state.json 2026-08-08 12:23:19 +00:00
Home Assistant Version Control a03f87d19f zigbee2mqtt/state.json 2026-08-08 12:22:45 +00:00
Home Assistant Version Control 93094d7377 zigbee2mqtt/state.json 2026-08-08 12:02:28 +00:00
Home Assistant Version Control 67c7507e97 opencode/decisions.yaml 2026-08-08 11:12:21 +00:00
Home Assistant Version Control 1aa82fc4c1 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 11:09:29 +00:00
Home Assistant Version Control 50187bab78 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 11:09:19 +00:00
Home Assistant Version Control acc4b853ba .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 11:08:37 +00:00
Home Assistant Version Control b39c9840e0 configuration.yaml, zigbee2mqtt/state.json 2026-08-08 11:08:21 +00:00
Home Assistant Version Control 5af889ba2a .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 11:02:08 +00:00
Home Assistant Version Control d39f455cfc .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 11:01:26 +00:00
Home Assistant Version Control dc09d21971 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 11:01:16 +00:00
Home Assistant Version Control d236d6b754 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 10:59:56 +00:00
Home Assistant Version Control a77a3ccd0c .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 10:58:54 +00:00
Home Assistant Version Control e7c0f4b38b .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 10:58:36 +00:00
Home Assistant Version Control f2b3f2e381 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 10:58:32 +00:00
Home Assistant Version Control 581b5d588d .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 10:54:54 +00:00
Home Assistant Version Control dc08c16611 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 10:54:46 +00:00
Home Assistant Version Control 16fae84ae4 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 10:54:34 +00:00
Home Assistant Version Control ca54a47de7 117 files 2026-08-08 10:38:07 +00:00
Home Assistant Version Control c31830deeb .storage/lovelace_resources 2026-08-08 10:35:49 +00:00
Home Assistant Version Control fed731da1d .HA_VERSION, .ha_run.lock 2026-08-08 10:35:14 +00:00
Home Assistant Version Control 24de092cb4 zigbee2mqtt/state.json 2026-08-08 10:34:41 +00:00
Home Assistant Version Control 00d7dc27d5 zigbee2mqtt/state.json 2026-08-08 10:22:26 +00:00
Home Assistant Version Control 93539bf935 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-08 10:11:03 +00:00
Home Assistant Version Control 7be747b2e8 zigbee2mqtt/state.json 2026-08-08 09:49:30 +00:00
Home Assistant Version Control f10943dbad zigbee2mqtt/state.json 2026-08-08 08:24:14 +00:00
Home Assistant Version Control e7ddb287b1 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-08 08:11:03 +00:00
Home Assistant Version Control e9a88570f5 zigbee2mqtt/state.json 2026-08-08 08:07:03 +00:00
Home Assistant Version Control 3084fb0f5d zigbee2mqtt/state.json 2026-08-08 07:37:19 +00:00
Home Assistant Version Control 40d80128ea zigbee2mqtt/state.json 2026-08-08 07:18:34 +00:00
Home Assistant Version Control 83364c6424 zigbee2mqtt/state.json 2026-08-08 07:00:03 +00:00
Home Assistant Version Control 9f2e7ed4b7 zigbee2mqtt/state.json 2026-08-08 06:13:06 +00:00
Home Assistant Version Control 38980ac511 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-08 06:11:04 +00:00
Home Assistant Version Control 31dc460d7a zigbee2mqtt/state.json 2026-08-08 04:08:52 +00:00
Home Assistant Version Control c29a3ef032 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:17:43 +00:00
Home Assistant Version Control 4b28a43621 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:16:53 +00:00
Home Assistant Version Control 0a391f1155 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-08 03:16:27 +00:00
Home Assistant Version Control 119a09f319 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-08 03:14:34 +00:00
Home Assistant Version Control 693dd1401e .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:14:21 +00:00
Home Assistant Version Control f5f398d147 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 03:13:36 +00:00
Home Assistant Version Control 372fce16b1 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:12:50 +00:00
Home Assistant Version Control 0753e25def .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-08 03:11:36 +00:00
Home Assistant Version Control 562d14c7c3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:11:13 +00:00
Home Assistant Version Control 19bff03a8b .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:10:08 +00:00
Home Assistant Version Control bd3a53f722 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:10:04 +00:00
Home Assistant Version Control 9fa4017bb9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:10:00 +00:00
Home Assistant Version Control bbc0b89dfa .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:09:54 +00:00
Home Assistant Version Control ee2e0bd8fb .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:09:42 +00:00
Home Assistant Version Control 3a11682863 configuration.yaml 2026-08-08 03:09:07 +00:00
Home Assistant Version Control 8803e70311 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:08:32 +00:00
Home Assistant Version Control 147146669c .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:08:20 +00:00
Home Assistant Version Control 932587f7d3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:08:14 +00:00
Home Assistant Version Control d716de309c .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 03:07:58 +00:00
Home Assistant Version Control dd1e4fdfc9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:07:20 +00:00
Home Assistant Version Control ec300a09a1 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:07:09 +00:00
Home Assistant Version Control 425502aa1b .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-08 03:07:03 +00:00
Home Assistant Version Control 468e80f9bf .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-08-08 03:06:58 +00:00
Home Assistant Version Control a45ceacf82 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:06:48 +00:00
Home Assistant Version Control e263a78fda .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:04:54 +00:00
Home Assistant Version Control 1f1ef1cfad .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-08 03:04:50 +00:00
Home Assistant Version Control a79fd9273f .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:04:36 +00:00
Home Assistant Version Control 6a59db7988 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:03:22 +00:00
Home Assistant Version Control da5abc16b0 configuration.yaml, zigbee2mqtt/state.json 2026-08-08 03:03:12 +00:00
Home Assistant Version Control fb7a0729b4 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:02:54 +00:00
Home Assistant Version Control 9f9d45e6d3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:02:44 +00:00
Home Assistant Version Control 09a5d8f310 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:02:28 +00:00
Home Assistant Version Control 89560d35a3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 03:02:08 +00:00
Home Assistant Version Control 1fbd53d7c7 configuration.yaml, zigbee2mqtt/state.json 2026-08-08 03:01:52 +00:00
Home Assistant Version Control c8afc1adb3 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 02:55:58 +00:00
Home Assistant Version Control 8987fe0baf .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 02:41:59 +00:00
Home Assistant Version Control edb878c86f .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:36:17 +00:00
Home Assistant Version Control 33cc89a698 3 files 2026-08-08 02:35:09 +00:00
Home Assistant Version Control 68f88b3d1e .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:31:46 +00:00
Home Assistant Version Control dc58c99697 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:30:22 +00:00
Home Assistant Version Control 1f09dfb7cc .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:30:08 +00:00
Home Assistant Version Control 75df644274 3 files 2026-08-08 02:28:56 +00:00
Home Assistant Version Control 671e63eaf3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:27:46 +00:00
Home Assistant Version Control 5b6dcf9382 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:27:40 +00:00
Home Assistant Version Control 1e511c72d1 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:25:52 +00:00
Home Assistant Version Control f019af3163 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:25:34 +00:00
Home Assistant Version Control ddd436ff9b .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:25:26 +00:00
Home Assistant Version Control 19b7e99fde .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:24:50 +00:00
Home Assistant Version Control c96f29a074 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:24:34 +00:00
Home Assistant Version Control 78a87e27c4 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:23:56 +00:00
Home Assistant Version Control 7ef1b06947 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:23:36 +00:00
Home Assistant Version Control 06a79c25d2 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 02:23:26 +00:00
Home Assistant Version Control d36c83268c .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:21:38 +00:00
Home Assistant Version Control e6c610bdee .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:21:22 +00:00
Home Assistant Version Control acc4e24b1d .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:21:14 +00:00
Home Assistant Version Control 1310a59002 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:21:06 +00:00
Home Assistant Version Control 64ee3f9940 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:20:56 +00:00
Home Assistant Version Control 0ede85e956 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:20:52 +00:00
Home Assistant Version Control b5c09b0b27 configuration.yaml 2026-08-08 02:20:42 +00:00
Home Assistant Version Control f298add3f8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:20:28 +00:00
Home Assistant Version Control 2bfd38ad21 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:20:24 +00:00
Home Assistant Version Control e40c15910d .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:19:41 +00:00
Home Assistant Version Control 9ec7d83c94 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:18:59 +00:00
Home Assistant Version Control 6b6b19cb66 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 02:18:33 +00:00
Home Assistant Version Control e29a48795d .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:15:43 +00:00
Home Assistant Version Control c00a89174a .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:14:15 +00:00
Home Assistant Version Control ea75add5ab .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 02:13:03 +00:00
Home Assistant Version Control f04ae2acb2 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:12:47 +00:00
Home Assistant Version Control 612da5434a .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:10:59 +00:00
Home Assistant Version Control fb07440e45 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:10:53 +00:00
Home Assistant Version Control 8cf1958632 zigbee2mqtt/state.json 2026-08-08 02:07:59 +00:00
Home Assistant Version Control a788c65ad4 .storage/lovelace_resources 2026-08-08 02:07:27 +00:00
Home Assistant Version Control 3cb105d883 .ha_run.lock 2026-08-08 02:06:53 +00:00
Home Assistant Version Control c2e56f1132 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:05:59 +00:00
Home Assistant Version Control 44a17c3c32 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:04:47 +00:00
Home Assistant Version Control f2e508c4c9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:04:35 +00:00
Home Assistant Version Control 584106e82e .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:04:21 +00:00
Home Assistant Version Control 5608691e2d .ha_mcp/logs/mcp_usage.jsonl 2026-08-08 02:04:13 +00:00
Home Assistant Version Control 278ac26fc2 configuration.yaml 2026-08-08 02:04:05 +00:00
Home Assistant Version Control 4feff22329 configuration.yaml, zigbee2mqtt/state.json 2026-08-08 02:03:59 +00:00
Home Assistant Version Control a25c9c4bfc .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 01:39:49 +00:00
Home Assistant Version Control 5b5f1e8ee9 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-08 01:35:29 +00:00
Home Assistant Version Control b3c0be5a17 zigbee2mqtt/state.json 2026-08-08 00:47:52 +00:00
Home Assistant Version Control 0f71293d9b zigbee2mqtt/state.json 2026-08-08 00:30:03 +00:00
Home Assistant Version Control 8c97e9d7ee .storage/lovelace_resources 2026-08-07 23:51:24 +00:00
Home Assistant Version Control 832b4b2b73 3 files 2026-08-07 23:51:13 +00:00
Home Assistant Version Control 6956167bd7 zigbee2mqtt/state.json 2026-08-07 23:44:46 +00:00
Home Assistant Version Control acb73aef0b zigbee2mqtt/state.json 2026-08-07 23:20:49 +00:00
Home Assistant Version Control bfc97b3d74 zigbee2mqtt/state.json 2026-08-07 22:39:48 +00:00
Home Assistant Version Control a13c58696d zigbee2mqtt/state.json 2026-08-07 22:30:03 +00:00
Home Assistant Version Control 57b47b9322 3 files 2026-08-07 22:17:13 +00:00
Home Assistant Version Control cefd2103ac .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 22:03:16 +00:00
Home Assistant Version Control dff62bdc96 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 21:59:54 +00:00
Home Assistant Version Control 2937334f1f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 21:59:38 +00:00
Home Assistant Version Control 3013dbd8f5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 21:59:04 +00:00
Home Assistant Version Control 49008d7962 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 21:58:57 +00:00
Home Assistant Version Control bbbfb75594 zigbee2mqtt/state.json 2026-08-07 21:54:09 +00:00
Home Assistant Version Control 0ac146bfcd zigbee2mqtt/state.json 2026-08-07 21:44:05 +00:00
Home Assistant Version Control f7b6a79196 zigbee2mqtt/state.json 2026-08-07 20:30:02 +00:00
Home Assistant Version Control 1fc81b8ecf zigbee2mqtt/state.json 2026-08-07 18:46:47 +00:00
Home Assistant Version Control 5f94cb3229 zigbee2mqtt/state.json 2026-08-07 18:30:02 +00:00
Home Assistant Version Control 6cf910a5a6 zigbee2mqtt/state.json 2026-08-07 17:08:07 +00:00
Home Assistant Version Control a951faf6da zigbee2mqtt/state.json 2026-08-07 17:07:31 +00:00
Home Assistant Version Control 56f01fbd6c zigbee2mqtt/state.json 2026-08-07 16:33:05 +00:00
Home Assistant Version Control 5cbc2b9c40 zigbee2mqtt/state.json 2026-08-07 16:30:00 +00:00
Home Assistant Version Control e83fe02931 .storage/powercalc_profiles/library.json 2026-08-07 16:26:28 +00:00
Home Assistant Version Control c6f3f2c96c .storage/lovelace_resources 2026-08-07 16:26:14 +00:00
Home Assistant Version Control 809261ab05 .ha_run.lock 2026-08-07 16:25:56 +00:00
Home Assistant Version Control baabdf0c0e 58 files 2026-08-07 16:23:20 +00:00
Home Assistant Version Control 305e1b2545 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 16:07:31 +00:00
Home Assistant Version Control 83fc1b1502 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 16:07:02 +00:00
Home Assistant Version Control d9e4eab4d6 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 16:05:49 +00:00
Home Assistant Version Control 702184d690 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:05:07 +00:00
Home Assistant Version Control f8aec36bdf .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:04:57 +00:00
Home Assistant Version Control 7a19a541cf 3 files 2026-08-07 16:03:29 +00:00
Home Assistant Version Control 8803aec3e5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:02:45 +00:00
Home Assistant Version Control d28105d131 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:02:21 +00:00
Home Assistant Version Control 9f2f229e98 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:01:29 +00:00
Home Assistant Version Control fee5cf169d .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:00:49 +00:00
Home Assistant Version Control 1806d59177 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 16:00:43 +00:00
Home Assistant Version Control a7adccb577 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 16:00:35 +00:00
Home Assistant Version Control f6e8b028c9 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:53:32 +00:00
Home Assistant Version Control 1da4efdbb5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:52:40 +00:00
Home Assistant Version Control 33ad52b2a7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:52:24 +00:00
Home Assistant Version Control 0166e38205 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:52:00 +00:00
Home Assistant Version Control 88c36cdc9c .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:51:42 +00:00
Home Assistant Version Control 850e3280d1 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:51:32 +00:00
Home Assistant Version Control 26efb77539 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:51:22 +00:00
Home Assistant Version Control 92ea692ed6 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:50:50 +00:00
Home Assistant Version Control 4f9176e4d6 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:46:50 +00:00
Home Assistant Version Control f61046c3e4 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:46:24 +00:00
Home Assistant Version Control 3c3265c4fc .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:45:58 +00:00
Home Assistant Version Control 6a65cb7f46 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:45:44 +00:00
Home Assistant Version Control 04510aa92b opencode/decisions.yaml 2026-08-07 15:44:54 +00:00
Home Assistant Version Control 3dbd64dc77 opencode/decisions.yaml, zigbee2mqtt/state.json 2026-08-07 15:44:00 +00:00
Home Assistant Version Control 24401b943f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:42:28 +00:00
Home Assistant Version Control 4774d5779c go2rtc.yaml 2026-08-07 15:42:22 +00:00
Home Assistant Version Control 8213bfd956 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:40:38 +00:00
Home Assistant Version Control 41abd311a1 3 files 2026-08-07 15:40:30 +00:00
Home Assistant Version Control f58fc79e0c .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:36:53 +00:00
Home Assistant Version Control 38b6a921f0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:36:27 +00:00
Home Assistant Version Control 8d42401311 zigbee2mqtt/state.json 2026-08-07 15:35:51 +00:00
Home Assistant Version Control 55e10d0862 go2rtc.yaml 2026-08-07 15:32:41 +00:00
Home Assistant Version Control 90e3a60f19 go2rtc.yaml 2026-08-07 15:31:43 +00:00
Home Assistant Version Control bc7d6a89fe go2rtc.yaml 2026-08-07 15:31:21 +00:00
Home Assistant Version Control ac121ac0bf go2rtc.yaml 2026-08-07 15:30:51 +00:00
Home Assistant Version Control a1eb3b70bb .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:29:41 +00:00
Home Assistant Version Control 4474d94a70 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:29:15 +00:00
Home Assistant Version Control 9cd14b1a96 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:27:03 +00:00
Home Assistant Version Control e8ae504642 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:26:47 +00:00
Home Assistant Version Control 7a9cc1569b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:26:21 +00:00
Home Assistant Version Control 6818c1b4bc .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:26:15 +00:00
Home Assistant Version Control f0900fa0aa .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:26:11 +00:00
Home Assistant Version Control cb6a445791 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:26:01 +00:00
Home Assistant Version Control 99ec93e1ab .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:25:17 +00:00
Home Assistant Version Control 4970569341 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:25:05 +00:00
Home Assistant Version Control 4ea45e8e27 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:24:37 +00:00
Home Assistant Version Control 907827077a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:24:17 +00:00
Home Assistant Version Control de5540d608 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:23:43 +00:00
Home Assistant Version Control 4b88b0bf8a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:21:24 +00:00
Home Assistant Version Control 44f373dee2 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:20:24 +00:00
Home Assistant Version Control b97359f720 go2rtc.yaml 2026-08-07 15:20:16 +00:00
Home Assistant Version Control 426d59e021 .storage/lovelace.printer_stats 2026-08-07 15:19:26 +00:00
Home Assistant Version Control d8f9c26c5f .storage/lovelace.printer_stats, zigbee2mqtt/state.json 2026-08-07 15:19:20 +00:00
Home Assistant Version Control 7f3703cc90 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:16:42 +00:00
Home Assistant Version Control 3e8bf7fff0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:16:34 +00:00
Home Assistant Version Control e0a34f671b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:14:18 +00:00
Home Assistant Version Control 102b327223 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:13:56 +00:00
Home Assistant Version Control bc3aadcefa .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 15:12:50 +00:00
Home Assistant Version Control fca4e57d3b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:12:26 +00:00
Home Assistant Version Control bb2625144d .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:12:04 +00:00
Home Assistant Version Control 9b766de78b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:11:54 +00:00
Home Assistant Version Control b2d6e26189 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:11:32 +00:00
Home Assistant Version Control 904ad37a26 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:09:46 +00:00
Home Assistant Version Control 4436c6f243 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:09:24 +00:00
Home Assistant Version Control e9a5dbe2e7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:09:14 +00:00
Home Assistant Version Control 70289ba1e8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:09:02 +00:00
Home Assistant Version Control 087ca9a53a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:08:50 +00:00
Home Assistant Version Control 1dad23342c go2rtc.yaml, zigbee2mqtt/state.json 2026-08-07 15:08:42 +00:00
Home Assistant Version Control 1b6e67ab55 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:07:24 +00:00
Home Assistant Version Control 18f1b8c07f .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 15:06:18 +00:00
Home Assistant Version Control c48d0b35a9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:06:08 +00:00
Home Assistant Version Control d692529743 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 15:04:52 +00:00
Home Assistant Version Control 3593804587 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:04:42 +00:00
Home Assistant Version Control 9781b8b9e4 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:03:20 +00:00
Home Assistant Version Control 1754c6ff4b .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:03:04 +00:00
Home Assistant Version Control 8414e9c7b7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:02:54 +00:00
Home Assistant Version Control 9ec47314a8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:02:29 +00:00
Home Assistant Version Control 2a2b1d644a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:02:19 +00:00
Home Assistant Version Control 5d789c1c6f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 15:00:57 +00:00
Home Assistant Version Control 63a7224f6b .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 15:00:27 +00:00
Home Assistant Version Control 754c547d87 opencode/printer-stats-z-chart-fix.md 2026-08-07 14:47:25 +00:00
Home Assistant Version Control d7a3e660c6 3 files 2026-08-07 14:46:21 +00:00
Home Assistant Version Control 8ee609696a .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 14:42:43 +00:00
Home Assistant Version Control 4094f485fd .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:42:30 +00:00
Home Assistant Version Control 716800791e .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:39:06 +00:00
Home Assistant Version Control fd454a7a62 3 files 2026-08-07 14:38:50 +00:00
Home Assistant Version Control eb26c8aa0b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:35:16 +00:00
Home Assistant Version Control 170fecceb5 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 14:34:46 +00:00
Home Assistant Version Control cb6c498c00 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:31:30 +00:00
Home Assistant Version Control 4cd9e2b934 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-07 14:30:36 +00:00
Home Assistant Version Control 6dd6325d09 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 14:20:47 +00:00
Home Assistant Version Control 2fd03e5a5e .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:17:51 +00:00
Home Assistant Version Control 375db37d65 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:17:33 +00:00
Home Assistant Version Control 6317eebc7a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:17:25 +00:00
Home Assistant Version Control bf3fd23f13 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:17:13 +00:00
Home Assistant Version Control 81cd68ddd8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:15:51 +00:00
Home Assistant Version Control b38b84e0c3 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/coordinator_backup.json 2026-08-07 14:13:21 +00:00
Home Assistant Version Control b87a88efc5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:13:13 +00:00
Home Assistant Version Control f48cbcbc87 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 14:13:03 +00:00
Home Assistant Version Control 11b1cf7837 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:12:47 +00:00
Home Assistant Version Control d54d93fccf .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:11:59 +00:00
Home Assistant Version Control 20b9dbc92d .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:11:36 +00:00
Home Assistant Version Control 5d9aadfc62 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:11:15 +00:00
Home Assistant Version Control 14bac78dea .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:10:58 +00:00
Home Assistant Version Control 928c1beeb7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:10:46 +00:00
Home Assistant Version Control 189d964766 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:10:33 +00:00
Home Assistant Version Control a966ce164f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:10:24 +00:00
Home Assistant Version Control c5f0088dbc .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:10:03 +00:00
Home Assistant Version Control ad958b81d5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:08:28 +00:00
Home Assistant Version Control 0d446f3ae1 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 14:08:08 +00:00
Home Assistant Version Control 1012778e2a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:06:00 +00:00
Home Assistant Version Control 4f3b48570b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:05:46 +00:00
Home Assistant Version Control dd9ad143be .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 14:05:12 +00:00
Home Assistant Version Control 929d37b992 opencode/decisions.yaml 2026-08-07 14:04:24 +00:00
Home Assistant Version Control ed65868cab .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 14:04:14 +00:00
Home Assistant Version Control a81243c29a .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 14:03:36 +00:00
Home Assistant Version Control 77d14dcdd6 opencode/decisions.yaml 2026-08-07 14:02:52 +00:00
Home Assistant Version Control 876549fcea .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 13:59:48 +00:00
Home Assistant Version Control a315055045 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:58:48 +00:00
Home Assistant Version Control 220b70a867 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:58:36 +00:00
Home Assistant Version Control 00bf297e87 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:58:28 +00:00
Home Assistant Version Control 0e6c23f3b7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:58:08 +00:00
Home Assistant Version Control 31e1d8a7e2 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:58:00 +00:00
Home Assistant Version Control f0db5d2010 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:57:46 +00:00
Home Assistant Version Control 62c6a5a003 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:55:32 +00:00
Home Assistant Version Control e95ead15f2 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:52:50 +00:00
Home Assistant Version Control 742b449aad .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:52:32 +00:00
Home Assistant Version Control e5582f423c .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:50:19 +00:00
Home Assistant Version Control db6bb83a26 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:50:12 +00:00
Home Assistant Version Control e29c38f1b6 opencode/decisions.yaml 2026-08-07 13:34:58 +00:00
Home Assistant Version Control deae4a9880 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:33:12 +00:00
Home Assistant Version Control 51aad42bbf .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:33:02 +00:00
Home Assistant Version Control 1a1dffe1c0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:31:34 +00:00
Home Assistant Version Control 9daba86264 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:31:18 +00:00
Home Assistant Version Control 236f2f9f79 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:30:00 +00:00
Home Assistant Version Control 18e13a7c81 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:29:48 +00:00
Home Assistant Version Control 1797335781 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:29:18 +00:00
Home Assistant Version Control 46f0c5c762 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:29:08 +00:00
Home Assistant Version Control 7f832c3513 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:29:00 +00:00
Home Assistant Version Control 5ddeb8d18f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:28:50 +00:00
Home Assistant Version Control 70ba3ebe83 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:28:38 +00:00
Home Assistant Version Control 3a1763315b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:27:24 +00:00
Home Assistant Version Control ea53fbeead .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:26:32 +00:00
Home Assistant Version Control c41d9de8ec .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:26:28 +00:00
Home Assistant Version Control 00751e2b29 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:26:24 +00:00
Home Assistant Version Control 2f2aa9c21b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:26:18 +00:00
Home Assistant Version Control c9655b6c05 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:26:14 +00:00
Home Assistant Version Control 7cda235850 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:25:12 +00:00
Home Assistant Version Control 0b60e955f8 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:23:20 +00:00
Home Assistant Version Control 18190e00d6 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:22:04 +00:00
Home Assistant Version Control 68635a6b78 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:20:22 +00:00
Home Assistant Version Control a86de63c6f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:20:04 +00:00
Home Assistant Version Control a31c8b842b 3 files 2026-08-07 13:19:04 +00:00
Home Assistant Version Control 6f3efb3ec0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:14:55 +00:00
Home Assistant Version Control 889b8692b3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:14:31 +00:00
Home Assistant Version Control 945790b2cf .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:13:59 +00:00
Home Assistant Version Control 2fe71328ee .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:13:35 +00:00
Home Assistant Version Control f6a13861ca .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:13:13 +00:00
Home Assistant Version Control fefd74a3e8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:09:49 +00:00
Home Assistant Version Control 1dd330e6c7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:09:41 +00:00
Home Assistant Version Control 571d37d664 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:08:03 +00:00
Home Assistant Version Control 9b45dafcde .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:06:55 +00:00
Home Assistant Version Control 416aa4e51d .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 13:04:39 +00:00
Home Assistant Version Control 8ed4396656 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:03:25 +00:00
Home Assistant Version Control c9746e8d69 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:03:11 +00:00
Home Assistant Version Control f5a98a9443 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:03:05 +00:00
Home Assistant Version Control 0d91810fb9 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 13:02:57 +00:00
Home Assistant Version Control 7861198a84 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-07 13:01:51 +00:00
Home Assistant Version Control 31b2b5f913 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 13:01:43 +00:00
Home Assistant Version Control bbb9ca3496 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 13:01:29 +00:00
Home Assistant Version Control 92762e0902 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:57:28 +00:00
Home Assistant Version Control 5542ea3bb2 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:56:22 +00:00
Home Assistant Version Control 6d79762711 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:55:54 +00:00
Home Assistant Version Control 5ba138793d .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:55:22 +00:00
Home Assistant Version Control c8ac6200b4 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 12:54:40 +00:00
Home Assistant Version Control 23edcf8f64 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:52:52 +00:00
Home Assistant Version Control a2a8176018 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:52:26 +00:00
Home Assistant Version Control 81189819bd .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:51:42 +00:00
Home Assistant Version Control 350b637801 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 12:49:38 +00:00
Home Assistant Version Control 8dff37ef88 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:47:38 +00:00
Home Assistant Version Control 3d785a1508 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 12:47:02 +00:00
Home Assistant Version Control bb1b5075fb .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 12:46:50 +00:00
Home Assistant Version Control f2d9bdce9d zigbee2mqtt/state.json 2026-08-07 12:30:33 +00:00
Home Assistant Version Control 5c39372e99 zigbee2mqtt/state.json 2026-08-07 12:27:15 +00:00
Home Assistant Version Control 61ab891a48 zigbee2mqtt/state.json 2026-08-07 11:45:28 +00:00
Home Assistant Version Control db87f3edee zigbee2mqtt/state.json 2026-08-07 10:42:54 +00:00
Home Assistant Version Control fb712b261b .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-07 10:30:33 +00:00
Home Assistant Version Control 27ee3071b5 zigbee2mqtt/state.json 2026-08-07 10:17:58 +00:00
Home Assistant Version Control 600535691b zigbee2mqtt/state.json 2026-08-07 09:52:37 +00:00
Home Assistant Version Control aec15584d4 zigbee2mqtt/state.json 2026-08-07 09:05:14 +00:00
Home Assistant Version Control a06d2b9f33 zigbee2mqtt/state.json 2026-08-07 08:29:28 +00:00
Home Assistant Version Control 3591002fab zigbee2mqtt/state.json 2026-08-07 07:53:01 +00:00
Home Assistant Version Control aaba6c888b zigbee2mqtt/state.json 2026-08-07 07:30:10 +00:00
Home Assistant Version Control dd645108dc .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-07 06:30:32 +00:00
Home Assistant Version Control 3d761bd3c1 zigbee2mqtt/state.json 2026-08-07 06:25:12 +00:00
Home Assistant Version Control 2014190dda zigbee2mqtt/state.json 2026-08-07 04:34:27 +00:00
Home Assistant Version Control c2630098e0 opencode/decisions.yaml 2026-08-07 04:32:07 +00:00
Home Assistant Version Control eb62fa836c .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:31:15 +00:00
Home Assistant Version Control 9a41fb3941 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 04:29:27 +00:00
Home Assistant Version Control 8622354b94 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:28:56 +00:00
Home Assistant Version Control 6634b902c8 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 04:28:03 +00:00
Home Assistant Version Control 791dfb79d8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:27:56 +00:00
Home Assistant Version Control f44a91b9be .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:27:48 +00:00
Home Assistant Version Control 21dcffc301 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:27:40 +00:00
Home Assistant Version Control ac4ab430b4 configuration.yaml 2026-08-07 04:27:28 +00:00
Home Assistant Version Control 8e2f4a0dfe .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:27:22 +00:00
Home Assistant Version Control 5ae40de4f5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:27:05 +00:00
Home Assistant Version Control 00b97c1c1d .storage/lovelace_resources 2026-08-07 04:26:37 +00:00
Home Assistant Version Control 667f153838 .ha_run.lock 2026-08-07 04:26:23 +00:00
Home Assistant Version Control 76c027c0af .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:25:28 +00:00
Home Assistant Version Control cf2254e093 configuration.yaml, zigbee2mqtt/state.json 2026-08-07 04:24:34 +00:00
Home Assistant Version Control 2f7084b202 .storage/lovelace_dashboards 2026-08-07 04:20:24 +00:00
Home Assistant Version Control 830d23faa5 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.printer_stats 2026-08-07 04:20:15 +00:00
Home Assistant Version Control f22d25b79f .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:19:34 +00:00
Home Assistant Version Control f2a9fa114b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:19:20 +00:00
Home Assistant Version Control 60cb4f3723 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:18:46 +00:00
Home Assistant Version Control a29f32d3af .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 04:18:14 +00:00
Home Assistant Version Control d1c363f457 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:17:48 +00:00
Home Assistant Version Control 1d6aede5f5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:15:12 +00:00
Home Assistant Version Control e1499c06fd .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:15:02 +00:00
Home Assistant Version Control 9a86371d53 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:14:52 +00:00
Home Assistant Version Control fbd3713593 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:14:40 +00:00
Home Assistant Version Control 7724cfe55c .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:14:22 +00:00
Home Assistant Version Control cd3740df0a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:14:16 +00:00
Home Assistant Version Control 5439f86ea7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:14:06 +00:00
Home Assistant Version Control 6973d8f07b .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:13:58 +00:00
Home Assistant Version Control 2cd05d6329 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 04:13:52 +00:00
Home Assistant Version Control c429df45af .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 04:13:38 +00:00
Home Assistant Version Control 04135497c5 zigbee2mqtt/state.json 2026-08-07 03:31:25 +00:00
Home Assistant Version Control aba3e922ab zigbee2mqtt/state.json 2026-08-07 02:19:30 +00:00
Home Assistant Version Control 9aaaf70425 opencode/decisions.yaml 2026-08-07 02:16:36 +00:00
Home Assistant Version Control 6fdd8f6ed4 opencode/decisions.yaml 2026-08-07 02:15:50 +00:00
Home Assistant Version Control 8c324b8c1e 3 files 2026-08-07 02:13:04 +00:00
Home Assistant Version Control bcba9b4f98 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:12:20 +00:00
Home Assistant Version Control bcb6251719 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-07 02:12:16 +00:00
Home Assistant Version Control e6b0727a75 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:10:54 +00:00
Home Assistant Version Control ba5ea3dfe5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:10:50 +00:00
Home Assistant Version Control 29416885e3 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:10:38 +00:00
Home Assistant Version Control dda8152994 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:09:40 +00:00
Home Assistant Version Control af3eabc1e7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:09:36 +00:00
Home Assistant Version Control c2c024c181 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-07 02:09:32 +00:00
Home Assistant Version Control 66d62b5288 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 02:09:28 +00:00
Home Assistant Version Control 1799c1bad3 3 files 2026-08-07 02:09:22 +00:00
Home Assistant Version Control 3ec3475a39 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 01:44:22 +00:00
Home Assistant Version Control a146f4ad8a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 01:44:16 +00:00
Home Assistant Version Control 59fe84f9ec .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-07 01:43:40 +00:00
Home Assistant Version Control d51d734692 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 01:43:30 +00:00
Home Assistant Version Control a356b413e6 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 01:42:40 +00:00
Home Assistant Version Control 264972555a .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 01:42:18 +00:00
Home Assistant Version Control e1a1bb0676 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-07 01:41:28 +00:00
Home Assistant Version Control c82d44b749 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 01:40:34 +00:00
Home Assistant Version Control 0c3596ce08 .ha_mcp/logs/mcp_usage.jsonl 2026-08-07 01:39:58 +00:00
Home Assistant Version Control a1a570526f .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-07 01:39:52 +00:00
Home Assistant Version Control 305f833274 zigbee2mqtt/state.json 2026-08-07 01:34:20 +00:00
Home Assistant Version Control 806e0f50e6 zigbee2mqtt/state.json 2026-08-07 01:31:26 +00:00
Home Assistant Version Control 083ea855b9 zigbee2mqtt/state.json 2026-08-07 00:28:04 +00:00
Home Assistant Version Control ccda2cf16b zigbee2mqtt/state.json 2026-08-06 23:53:38 +00:00
Home Assistant Version Control 88298d4e8a .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 23:49:17 +00:00
Home Assistant Version Control 766ecf115e .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 23:48:43 +00:00
Home Assistant Version Control 26333acc94 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 23:48:31 +00:00
Home Assistant Version Control b07d43ee42 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 23:48:23 +00:00
Home Assistant Version Control d7817ceccb zigbee2mqtt/state.json 2026-08-06 23:41:35 +00:00
Home Assistant Version Control 84c881889e .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-06 23:31:24 +00:00
Home Assistant Version Control c89a1c92bd opencode/decisions.yaml 2026-08-06 23:01:14 +00:00
Home Assistant Version Control 9ee9950f4b .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:59:36 +00:00
Home Assistant Version Control 9d52e2f320 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:58:58 +00:00
Home Assistant Version Control 10a11f7817 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 22:58:54 +00:00
Home Assistant Version Control 50b2dff2f5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:55:58 +00:00
Home Assistant Version Control 8182a2a9be .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:55:42 +00:00
Home Assistant Version Control a143804d52 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:55:06 +00:00
Home Assistant Version Control 5ebd9a114f .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:55:02 +00:00
Home Assistant Version Control 462d7cb186 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:54:56 +00:00
Home Assistant Version Control 6d97daed9c .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:54:48 +00:00
Home Assistant Version Control 04c4edd338 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:54:32 +00:00
Home Assistant Version Control 293b069760 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:54:28 +00:00
Home Assistant Version Control 986e6ea8c9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 22:54:16 +00:00
Home Assistant Version Control 1c2b5aee58 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 22:54:08 +00:00
Home Assistant Version Control a73f7b892e zigbee2mqtt/state.json 2026-08-06 22:47:57 +00:00
Home Assistant Version Control d2f051261b zigbee2mqtt/state.json 2026-08-06 22:44:41 +00:00
Home Assistant Version Control bb2749e271 zigbee2mqtt/state.json 2026-08-06 22:15:47 +00:00
Home Assistant Version Control 8fc69aa503 zigbee2mqtt/state.json 2026-08-06 21:51:04 +00:00
Home Assistant Version Control 164ed35097 zigbee2mqtt/state.json 2026-08-06 21:31:23 +00:00
Home Assistant Version Control 9778937d0c zigbee2mqtt/state.json 2026-08-06 19:28:15 +00:00
Home Assistant Version Control 3839c88504 zigbee2mqtt/state.json 2026-08-06 19:04:21 +00:00
Home Assistant Version Control e983a3ad2e zigbee2mqtt/state.json 2026-08-06 17:46:32 +00:00
Home Assistant Version Control 27985f506c zigbee2mqtt/state.json 2026-08-06 17:36:04 +00:00
Home Assistant Version Control 53a40b7ffd zigbee2mqtt/state.json 2026-08-06 17:31:23 +00:00
Home Assistant Version Control 6a0efb55cc .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:55:13 +00:00
Home Assistant Version Control 05b387cf53 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:54:33 +00:00
Home Assistant Version Control c2deb38491 3 files 2026-08-06 16:53:25 +00:00
Home Assistant Version Control c6124d410a .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:52:45 +00:00
Home Assistant Version Control 991e3b1ab8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:52:37 +00:00
Home Assistant Version Control b32d94aa0e .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:52:27 +00:00
Home Assistant Version Control 240c117c89 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-06 16:50:51 +00:00
Home Assistant Version Control cb6ec44396 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:48:49 +00:00
Home Assistant Version Control 121ec84565 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 16:48:35 +00:00
Home Assistant Version Control 2427d8527b configuration.yaml 2026-08-06 16:47:23 +00:00
Home Assistant Version Control d01ec58b24 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 16:45:46 +00:00
Home Assistant Version Control e2e72066fe .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 16:45:34 +00:00
Home Assistant Version Control 848eeddb8c zigbee2mqtt/state.json 2026-08-06 16:07:18 +00:00
Home Assistant Version Control 2d0987a913 zigbee2mqtt/state.json 2026-08-06 15:47:12 +00:00
Home Assistant Version Control 9fcee6ad5f .storage/lovelace_resources 2026-08-06 15:30:57 +00:00
Home Assistant Version Control 0a6e10d3d5 zigbee2mqtt/state.json 2026-08-06 15:28:17 +00:00
Home Assistant Version Control 2059419418 .storage/lovelace_resources 2026-08-06 15:27:47 +00:00
Home Assistant Version Control 222a064ae5 .ha_run.lock 2026-08-06 15:27:19 +00:00
Home Assistant Version Control d5da256341 93 files 2026-08-06 15:24:19 +00:00
Home Assistant Version Control 6aaf37b9bc zigbee2mqtt/state.json 2026-08-06 14:52:11 +00:00
Home Assistant Version Control 7dc4f33f2b .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:46:21 +00:00
Home Assistant Version Control f5d4ff79cb .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:46:07 +00:00
Home Assistant Version Control 02ab1c20a4 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:46:01 +00:00
Home Assistant Version Control f88b87c2e6 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:45:57 +00:00
Home Assistant Version Control f2387de422 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 14:45:51 +00:00
Home Assistant Version Control 744e08f982 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:39:50 +00:00
Home Assistant Version Control 70cd135583 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:39:46 +00:00
Home Assistant Version Control 3dd06b4e1c .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:39:42 +00:00
Home Assistant Version Control 9549b1210a .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:39:36 +00:00
Home Assistant Version Control 3c824cbe83 .ha_mcp/logs/mcp_usage.jsonl 2026-08-06 14:39:24 +00:00
Home Assistant Version Control 1a8e9b73d1 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-06 14:39:14 +00:00
Home Assistant Version Control 7ee4021491 zigbee2mqtt/state.json 2026-08-06 14:37:20 +00:00
Home Assistant Version Control d7fb5c62ae .storage/lovelace_resources 2026-08-06 14:17:11 +00:00
Home Assistant Version Control 08a8e8d4ab .storage/lovelace_resources 2026-08-06 14:14:01 +00:00
Home Assistant Version Control 32fad1fbdc .HA_VERSION, .ha_run.lock 2026-08-06 14:13:30 +00:00
Home Assistant Version Control 2a04013493 zigbee2mqtt/coordinator_backup.json 2026-08-06 14:13:21 +00:00
Home Assistant Version Control 6bd61da6db zigbee2mqtt/state.json 2026-08-06 14:12:59 +00:00
Home Assistant Version Control 75ba084fd2 .storage/lovelace_resources, zigbee2mqtt/state.json 2026-08-06 13:59:42 +00:00
Home Assistant Version Control 1b22fe5298 330 files 2026-08-06 13:57:09 +00:00
Home Assistant Version Control 7afe7add1d 329 files 2026-08-06 13:56:25 +00:00
Home Assistant Version Control 0df89406fa zigbee2mqtt/state.json 2026-08-06 13:39:03 +00:00
Home Assistant Version Control a31a159858 zigbee2mqtt/state.json 2026-08-06 11:39:04 +00:00
Home Assistant Version Control a04f8e2125 zigbee2mqtt/state.json 2026-08-06 11:26:31 +00:00
Home Assistant Version Control 2056d2b486 zigbee2mqtt/state.json 2026-08-06 11:20:02 +00:00
Home Assistant Version Control 49bac36107 zigbee2mqtt/state.json 2026-08-06 10:52:05 +00:00
Home Assistant Version Control 2421fd92e4 zigbee2mqtt/state.json 2026-08-06 10:22:45 +00:00
Home Assistant Version Control 64c6a1bdb3 zigbee2mqtt/state.json 2026-08-06 09:51:35 +00:00
Home Assistant Version Control 04c011d08d zigbee2mqtt/state.json 2026-08-06 09:39:02 +00:00
Home Assistant Version Control d02c8c2966 zigbee2mqtt/state.json 2026-08-06 09:16:59 +00:00
Home Assistant Version Control 5f586141aa zigbee2mqtt/state.json 2026-08-06 08:49:43 +00:00
Home Assistant Version Control c3da197a55 zigbee2mqtt/state.json 2026-08-06 08:23:52 +00:00
Home Assistant Version Control 9c588d7833 zigbee2mqtt/state.json 2026-08-06 07:48:06 +00:00
Home Assistant Version Control f0bb959ba5 zigbee2mqtt/state.json 2026-08-06 07:47:36 +00:00
Home Assistant Version Control 8893129eeb zigbee2mqtt/state.json 2026-08-06 07:39:01 +00:00
Home Assistant Version Control babc231a65 zigbee2mqtt/state.json 2026-08-06 06:52:10 +00:00
Home Assistant Version Control 50ad3e0936 zigbee2mqtt/state.json 2026-08-06 06:29:29 +00:00
Home Assistant Version Control 82f18db9cf zigbee2mqtt/state.json 2026-08-06 05:48:14 +00:00
Home Assistant Version Control 0686249888 zigbee2mqtt/state.json 2026-08-06 05:47:44 +00:00
Home Assistant Version Control e472a50916 zigbee2mqtt/state.json 2026-08-06 05:39:02 +00:00
Home Assistant Version Control b6e2c4adea zigbee2mqtt/state.json 2026-08-06 03:39:02 +00:00
Home Assistant Version Control 9a6d97b09e zigbee2mqtt/state.json 2026-08-06 03:26:15 +00:00
Home Assistant Version Control c243942f3e zigbee2mqtt/state.json 2026-08-06 01:39:02 +00:00
Home Assistant Version Control 874097bcec zigbee2mqtt/state.json 2026-08-06 01:28:20 +00:00
Home Assistant Version Control 41b7ce5967 zigbee2mqtt/state.json 2026-08-06 01:27:46 +00:00
Home Assistant Version Control 387c1b2832 zigbee2mqtt/state.json 2026-08-06 01:14:45 +00:00
Home Assistant Version Control 598224f2c4 zigbee2mqtt/state.json 2026-08-06 00:28:26 +00:00
Home Assistant Version Control 20462eb9e4 zigbee2mqtt/state.json 2026-08-05 23:49:50 +00:00
Home Assistant Version Control 7b857b0cc7 zigbee2mqtt/state.json 2026-08-05 23:44:04 +00:00
Home Assistant Version Control e65920b31f zigbee2mqtt/state.json 2026-08-05 23:39:01 +00:00
Home Assistant Version Control be7e50610a 23 files 2026-08-05 23:27:04 +00:00
Home Assistant Version Control 32a0b6c7f3 zigbee2mqtt/state.json 2026-08-05 22:47:38 +00:00
Home Assistant Version Control 4a4333166a zigbee2mqtt/state.json 2026-08-05 22:22:47 +00:00
Home Assistant Version Control 1690bbdf7e zigbee2mqtt/state.json 2026-08-05 22:07:08 +00:00
Home Assistant Version Control 48ae09dec9 zigbee2mqtt/state.json 2026-08-05 21:39:02 +00:00
Home Assistant Version Control a3ab6d9556 .ha_mcp/logs/mcp_usage.jsonl 2026-08-05 20:47:23 +00:00
Home Assistant Version Control 4f53ecde30 3 files 2026-08-05 20:45:47 +00:00
Home Assistant Version Control 9fb5aa9215 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-05 20:41:11 +00:00
Home Assistant Version Control 932a0aafbe .ha_mcp/logs/mcp_usage.jsonl 2026-08-05 20:40:59 +00:00
Home Assistant Version Control 8e64483817 .ha_mcp/logs/mcp_usage.jsonl 2026-08-05 20:40:09 +00:00
Home Assistant Version Control 944e09ce71 .ha_mcp/logs/mcp_usage.jsonl 2026-08-05 20:39:59 +00:00
Home Assistant Version Control c1550af63f .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-05 20:39:55 +00:00
Home Assistant Version Control 135e62ebd8 zigbee2mqtt/state.json 2026-08-05 20:14:43 +00:00
Home Assistant Version Control 9cf5ccf5d6 zigbee2mqtt/state.json 2026-08-05 20:09:11 +00:00
Home Assistant Version Control c17947a2f7 zigbee2mqtt/state.json 2026-08-05 19:39:01 +00:00
Home Assistant Version Control 3e15738e27 zigbee2mqtt/state.json 2026-08-05 19:24:56 +00:00
Home Assistant Version Control 1637679ac0 zigbee2mqtt/state.json 2026-08-05 17:39:00 +00:00
Home Assistant Version Control 317aa5b439 zigbee2mqtt/state.json 2026-08-05 16:52:45 +00:00
Home Assistant Version Control 9d65b9164c zigbee2mqtt/state.json 2026-08-05 15:42:58 +00:00
Home Assistant Version Control 53902106f3 zigbee2mqtt/state.json 2026-08-05 15:38:59 +00:00
Home Assistant Version Control d02cb59591 zigbee2mqtt/state.json 2026-08-05 15:26:05 +00:00
Home Assistant Version Control eb679cab97 zigbee2mqtt/state.json 2026-08-05 14:30:57 +00:00
Home Assistant Version Control 43d9fbfc87 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-05 14:13:20 +00:00
Home Assistant Version Control 1fa4c3845f zigbee2mqtt/state.json 2026-08-05 13:39:00 +00:00
Home Assistant Version Control e01cb16671 zigbee2mqtt/state.json 2026-08-05 13:24:27 +00:00
Home Assistant Version Control b58b3086bc zigbee2mqtt/state.json 2026-08-05 12:46:45 +00:00
Home Assistant Version Control eefd595b6d zigbee2mqtt/state.json 2026-08-05 11:39:01 +00:00
Home Assistant Version Control 0fc97f0314 zigbee2mqtt/state.json 2026-08-05 11:37:03 +00:00
Home Assistant Version Control 10724076e4 zigbee2mqtt/state.json 2026-08-05 10:29:54 +00:00
Home Assistant Version Control b45eabff2e zigbee2mqtt/state.json 2026-08-05 10:11:55 +00:00
Home Assistant Version Control c3d65fe181 zigbee2mqtt/state.json 2026-08-05 09:39:00 +00:00
Home Assistant Version Control 70c9b33a73 zigbee2mqtt/state.json 2026-08-05 08:55:13 +00:00
Home Assistant Version Control 6fa487a137 zigbee2mqtt/state.json 2026-08-05 08:32:53 +00:00
Home Assistant Version Control 68371fef79 zigbee2mqtt/state.json 2026-08-05 08:14:46 +00:00
Home Assistant Version Control 2291ca261f zigbee2mqtt/state.json 2026-08-05 07:38:58 +00:00
Home Assistant Version Control 76a38da227 zigbee2mqtt/state.json 2026-08-05 06:33:00 +00:00
Home Assistant Version Control a69445025b zigbee2mqtt/state.json 2026-08-05 06:10:17 +00:00
Home Assistant Version Control c0603e960b zigbee2mqtt/state.json 2026-08-05 05:38:59 +00:00
Home Assistant Version Control 55b769e5ee zigbee2mqtt/state.json 2026-08-05 05:25:50 +00:00
Home Assistant Version Control 5de82328dc zigbee2mqtt/state.json 2026-08-05 04:45:02 +00:00
Home Assistant Version Control c2e2f312fb zigbee2mqtt/state.json 2026-08-05 03:38:58 +00:00
Home Assistant Version Control 2a98f8d897 zigbee2mqtt/state.json 2026-08-05 02:53:17 +00:00
Home Assistant Version Control 27d859bd06 zigbee2mqtt/state.json 2026-08-05 02:52:47 +00:00
Home Assistant Version Control ddc25fc73d zigbee2mqtt/state.json 2026-08-05 01:38:59 +00:00
Home Assistant Version Control 09b2de830d zigbee2mqtt/state.json 2026-08-05 00:00:49 +00:00
Home Assistant Version Control b6f98a9fc0 zigbee2mqtt/state.json 2026-08-04 23:44:16 +00:00
Home Assistant Version Control b835f065e0 zigbee2mqtt/state.json 2026-08-04 23:38:57 +00:00
Home Assistant Version Control 2454ee6395 zigbee2mqtt/state.json 2026-08-04 23:15:00 +00:00
Home Assistant Version Control 2c4429a8a2 zigbee2mqtt/state.json 2026-08-04 22:23:05 +00:00
Home Assistant Version Control af604ecd2a zigbee2mqtt/state.json 2026-08-04 21:38:58 +00:00
Home Assistant Version Control e6c74a8927 zigbee2mqtt/state.json 2026-08-04 21:07:46 +00:00
Home Assistant Version Control 6c8278e2ac zigbee2mqtt/state.json 2026-08-04 19:38:57 +00:00
Home Assistant Version Control 8331528983 zigbee2mqtt/state.json 2026-08-04 18:20:00 +00:00
Home Assistant Version Control 7a7104ade9 zigbee2mqtt/state.json 2026-08-04 17:38:58 +00:00
Home Assistant Version Control 9faef8af78 zigbee2mqtt/state.json 2026-08-04 16:15:52 +00:00
Home Assistant Version Control b2eaaea065 zigbee2mqtt/state.json 2026-08-04 15:38:56 +00:00
Home Assistant Version Control d528d8e847 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-04 14:13:21 +00:00
Home Assistant Version Control 8d22ca6b06 zigbee2mqtt/state.json 2026-08-04 13:38:57 +00:00
Home Assistant Version Control 9f2d935fce zigbee2mqtt/state.json 2026-08-04 12:04:47 +00:00
Home Assistant Version Control da2659be7d zigbee2mqtt/state.json 2026-08-04 11:47:42 +00:00
Home Assistant Version Control 6fa42aae7b zigbee2mqtt/state.json 2026-08-04 11:38:55 +00:00
Home Assistant Version Control bfeba4cef7 zigbee2mqtt/state.json 2026-08-04 11:35:59 +00:00
Home Assistant Version Control 44796112b6 zigbee2mqtt/state.json 2026-08-04 11:30:29 +00:00
Home Assistant Version Control 9f388cc2ed zigbee2mqtt/state.json 2026-08-04 11:24:40 +00:00
Home Assistant Version Control d1e2e74cca zigbee2mqtt/state.json 2026-08-04 10:55:11 +00:00
Home Assistant Version Control 34119b8c7e zigbee2mqtt/state.json 2026-08-04 10:04:47 +00:00
Home Assistant Version Control f80c95d172 zigbee2mqtt/state.json 2026-08-04 09:38:56 +00:00
Home Assistant Version Control aea628dc65 zigbee2mqtt/state.json 2026-08-04 09:06:52 +00:00
Home Assistant Version Control 3e268c82db zigbee2mqtt/state.json 2026-08-04 08:38:44 +00:00
Home Assistant Version Control 748520ea83 zigbee2mqtt/state.json 2026-08-04 08:23:15 +00:00
Home Assistant Version Control 7247859ffa zigbee2mqtt/state.json 2026-08-04 08:22:41 +00:00
Home Assistant Version Control c8c94ab46a zigbee2mqtt/state.json 2026-08-04 07:38:55 +00:00
Home Assistant Version Control 8939059b7d zigbee2mqtt/state.json 2026-08-04 07:36:46 +00:00
Home Assistant Version Control e49d5f17e2 zigbee2mqtt/state.json 2026-08-04 07:11:31 +00:00
Home Assistant Version Control 96a7c080c9 zigbee2mqtt/state.json 2026-08-04 06:33:15 +00:00
Home Assistant Version Control 9432464b17 zigbee2mqtt/state.json 2026-08-04 06:32:39 +00:00
Home Assistant Version Control 2b42f0f20d zigbee2mqtt/state.json 2026-08-04 05:39:01 +00:00
Home Assistant Version Control f35b6ec135 zigbee2mqtt/state.json 2026-08-04 05:13:04 +00:00
Home Assistant Version Control 1a25b0d419 zigbee2mqtt/state.json 2026-08-04 04:53:25 +00:00
Home Assistant Version Control ba7eaca87d zigbee2mqtt/state.json 2026-08-04 03:38:54 +00:00
Home Assistant Version Control 69fe8e745a zigbee2mqtt/state.json 2026-08-04 02:12:25 +00:00
Home Assistant Version Control 6bd3ae609b zigbee2mqtt/state.json 2026-08-04 01:38:52 +00:00
Home Assistant Version Control 63b4f71d01 zigbee2mqtt/state.json 2026-08-04 01:16:19 +00:00
Home Assistant Version Control 8f4cc2d31b zigbee2mqtt/state.json 2026-08-04 00:23:36 +00:00
Home Assistant Version Control 5266391e27 zigbee2mqtt/state.json 2026-08-04 00:16:43 +00:00
Home Assistant Version Control 2e5d2b2e52 zigbee2mqtt/state.json 2026-08-03 23:52:00 +00:00
Home Assistant Version Control 96abb6e532 zigbee2mqtt/state.json 2026-08-03 23:38:51 +00:00
Home Assistant Version Control 1dbaf88f30 zigbee2mqtt/state.json 2026-08-03 21:55:23 +00:00
Home Assistant Version Control df76e8b068 zigbee2mqtt/state.json 2026-08-03 21:38:52 +00:00
Home Assistant Version Control 41b3188272 zigbee2mqtt/state.json 2026-08-03 21:23:45 +00:00
Home Assistant Version Control 89fb0300bb zigbee2mqtt/state.json 2026-08-03 21:03:44 +00:00
Home Assistant Version Control 23455ea749 .storage/lovelace.dashboard_temp 2026-08-03 20:59:43 +00:00
Home Assistant Version Control e84d15ecdd .storage/lovelace.dashboard_temp, zigbee2mqtt/state.json 2026-08-03 20:59:05 +00:00
Home Assistant Version Control 55fc8bfb18 .storage/lovelace.dashboard_temp, zigbee2mqtt/state.json 2026-08-03 20:44:10 +00:00
Home Assistant Version Control 3e37f87353 zigbee2mqtt/state.json 2026-08-03 19:38:52 +00:00
Home Assistant Version Control e50588ec92 .storage/lovelace.dashboard_temp 2026-08-03 18:44:37 +00:00
Home Assistant Version Control 2a2485b6c9 .storage/lovelace.dashboard_temp, zigbee2mqtt/state.json 2026-08-03 18:44:13 +00:00
Home Assistant Version Control 61b4fbeb9c .storage/lovelace.dashboard_temp 2026-08-03 18:24:44 +00:00
Home Assistant Version Control 08c465d9e2 .storage/lovelace.dashboard_temp 2026-08-03 18:24:18 +00:00
Home Assistant Version Control 6196b30556 .storage/lovelace.dashboard_temp 2026-08-03 18:24:00 +00:00
Home Assistant Version Control 85d6cb8d3c .storage/lovelace.dashboard_temp 2026-08-03 18:23:50 +00:00
Home Assistant Version Control c7103727ac .storage/lovelace.dashboard_temp, zigbee2mqtt/state.json 2026-08-03 18:23:06 +00:00
Home Assistant Version Control 5279de45d8 zigbee2mqtt/state.json 2026-08-03 18:09:29 +00:00
Home Assistant Version Control bfa3fae598 zigbee2mqtt/state.json 2026-08-03 17:38:51 +00:00
Home Assistant Version Control a3db4cb8f8 zigbee2mqtt/state.json 2026-08-03 15:50:07 +00:00
Home Assistant Version Control 251376bedb zigbee2mqtt/state.json 2026-08-03 15:38:52 +00:00
Home Assistant Version Control b243a3a083 zigbee2mqtt/state.json 2026-08-03 15:28:45 +00:00
Home Assistant Version Control df6410d543 zigbee2mqtt/state.json 2026-08-03 15:04:46 +00:00
Home Assistant Version Control 82b7cef62d zigbee2mqtt/state.json 2026-08-03 14:48:17 +00:00
Home Assistant Version Control 0eebc10cd8 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-03 14:13:21 +00:00
Home Assistant Version Control 11e1e12d4c zigbee2mqtt/state.json 2026-08-03 13:38:50 +00:00
Home Assistant Version Control b83f23a93b zigbee2mqtt/state.json 2026-08-03 11:49:44 +00:00
Home Assistant Version Control 5dca4e33af zigbee2mqtt/state.json 2026-08-03 11:38:51 +00:00
Home Assistant Version Control 24dab9cf4c zigbee2mqtt/state.json 2026-08-03 10:48:36 +00:00
Home Assistant Version Control 77404f4575 zigbee2mqtt/state.json 2026-08-03 10:31:47 +00:00
Home Assistant Version Control 3ebb06a650 zigbee2mqtt/state.json 2026-08-03 09:56:01 +00:00
Home Assistant Version Control d010718876 zigbee2mqtt/state.json 2026-08-03 09:38:50 +00:00
Home Assistant Version Control a1d8a4c583 zigbee2mqtt/state.json 2026-08-03 08:54:29 +00:00
Home Assistant Version Control 8b85c2d134 zigbee2mqtt/state.json 2026-08-03 08:33:42 +00:00
Home Assistant Version Control e51c8b922f zigbee2mqtt/state.json 2026-08-03 07:54:53 +00:00
Home Assistant Version Control f281eacce7 zigbee2mqtt/state.json 2026-08-03 07:38:50 +00:00
Home Assistant Version Control ac9295a599 zigbee2mqtt/state.json 2026-08-03 07:25:52 +00:00
Home Assistant Version Control 9b6f342442 zigbee2mqtt/state.json 2026-08-03 07:00:06 +00:00
Home Assistant Version Control 141450285d zigbee2mqtt/state.json 2026-08-03 06:27:40 +00:00
Home Assistant Version Control e93b004be3 zigbee2mqtt/state.json 2026-08-03 06:08:21 +00:00
Home Assistant Version Control 73c1e5bbe1 zigbee2mqtt/state.json 2026-08-03 05:48:38 +00:00
Home Assistant Version Control 33ec668af8 zigbee2mqtt/state.json 2026-08-03 05:38:49 +00:00
Home Assistant Version Control 3d06ed3cf8 zigbee2mqtt/state.json 2026-08-03 03:38:50 +00:00
Home Assistant Version Control 38ab064d7e zigbee2mqtt/state.json 2026-08-03 02:39:04 +00:00
Home Assistant Version Control da74298a1c zigbee2mqtt/state.json 2026-08-03 02:33:02 +00:00
Home Assistant Version Control bfd1ec59d0 zigbee2mqtt/state.json 2026-08-03 02:32:28 +00:00
Home Assistant Version Control 23b723faf4 zigbee2mqtt/state.json 2026-08-03 01:38:48 +00:00
Home Assistant Version Control 3120507d18 zigbee2mqtt/state.json 2026-08-02 23:38:49 +00:00
Home Assistant Version Control eb7dc2b5c8 zigbee2mqtt/state.json 2026-08-02 23:17:11 +00:00
Home Assistant Version Control 1c2bab8046 zigbee2mqtt/state.json 2026-08-02 23:11:59 +00:00
Home Assistant Version Control 1b39837ad4 zigbee2mqtt/state.json 2026-08-02 22:40:25 +00:00
Home Assistant Version Control 0212e032ab zigbee2mqtt/state.json 2026-08-02 22:34:37 +00:00
Home Assistant Version Control dcbc430f0b zigbee2mqtt/state.json 2026-08-02 21:38:49 +00:00
Home Assistant Version Control 86779e4c12 zigbee2mqtt/state.json 2026-08-02 21:10:18 +00:00
Home Assistant Version Control 4cbc0fe135 zigbee2mqtt/state.json 2026-08-02 21:04:55 +00:00
Home Assistant Version Control d3cc347943 zigbee2mqtt/state.json 2026-08-02 20:59:03 +00:00
Home Assistant Version Control bd497bfa9b zigbee2mqtt/state.json 2026-08-02 20:21:51 +00:00
Home Assistant Version Control 418e048a8a zigbee2mqtt/state.json 2026-08-02 19:38:48 +00:00
Home Assistant Version Control 19cb5a3d9e zigbee2mqtt/state.json 2026-08-02 18:38:12 +00:00
Home Assistant Version Control 7f1debbd43 zigbee2mqtt/state.json 2026-08-02 18:37:38 +00:00
Home Assistant Version Control 67923ce765 zigbee2mqtt/state.json 2026-08-02 17:38:47 +00:00
Home Assistant Version Control b869d6119e 3 files 2026-08-02 17:28:50 +00:00
Home Assistant Version Control 95f0eff46e .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-02 17:27:30 +00:00
Home Assistant Version Control 7c6a465538 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-02 17:26:12 +00:00
Home Assistant Version Control 95e0b05c2a .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:26:06 +00:00
Home Assistant Version Control 9145ab5e1c .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:25:56 +00:00
Home Assistant Version Control 28edec793a .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-02 17:24:44 +00:00
Home Assistant Version Control 864565c6e0 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:24:18 +00:00
Home Assistant Version Control 9042b52ca8 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:23:42 +00:00
Home Assistant Version Control 5238a201a3 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 17:23:28 +00:00
Home Assistant Version Control ca1679c036 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:21:54 +00:00
Home Assistant Version Control 2622ea2135 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:21:40 +00:00
Home Assistant Version Control 2469f6c4eb .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 17:21:24 +00:00
Home Assistant Version Control 5267ff864c .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:09:19 +00:00
Home Assistant Version Control 775e3f41e7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:09:07 +00:00
Home Assistant Version Control e14994acdc .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-02 17:08:53 +00:00
Home Assistant Version Control 11accf3476 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:08:41 +00:00
Home Assistant Version Control 920933c21a .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 17:08:27 +00:00
Home Assistant Version Control f319d81d5b .ha_mcp/logs/mcp_usage.jsonl, scripts.yaml 2026-08-02 17:07:13 +00:00
Home Assistant Version Control c5eba5c386 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:06:47 +00:00
Home Assistant Version Control 1ae8df6717 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:06:43 +00:00
Home Assistant Version Control f975fccc4c .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:06:31 +00:00
Home Assistant Version Control 00beef9417 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:06:25 +00:00
Home Assistant Version Control 5d12efea89 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:05:33 +00:00
Home Assistant Version Control 785b63932e .ha_mcp/logs/mcp_usage.jsonl, scripts.yaml 2026-08-02 17:05:27 +00:00
Home Assistant Version Control f3b037910e .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:04:43 +00:00
Home Assistant Version Control 9df13d24e5 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:03:37 +00:00
Home Assistant Version Control 3d8f5a7d1b .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 17:03:03 +00:00
Home Assistant Version Control 85d233a530 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:01:33 +00:00
Home Assistant Version Control 5cc04b1bba .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:01:11 +00:00
Home Assistant Version Control d7469154ed .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 17:01:07 +00:00
Home Assistant Version Control 7e29656758 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 17:01:03 +00:00
Home Assistant Version Control 3a2e18a10c automations.yaml 2026-08-02 16:40:53 +00:00
Home Assistant Version Control 6e2338a994 automations.yaml, zigbee2mqtt/state.json 2026-08-02 16:40:15 +00:00
Home Assistant Version Control f658965565 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-02 16:37:49 +00:00
Home Assistant Version Control 06adfb02b7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 16:37:03 +00:00
Home Assistant Version Control df43485cf7 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-08-02 16:35:59 +00:00
Home Assistant Version Control d96a1f462c .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 16:35:07 +00:00
Home Assistant Version Control 9b95a392e9 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 16:33:17 +00:00
Home Assistant Version Control 3a27007dc4 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 16:33:05 +00:00
Home Assistant Version Control 4fa2abee60 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 16:32:55 +00:00
Home Assistant Version Control 04bdbff6a7 .ha_mcp/logs/mcp_usage.jsonl 2026-08-02 16:32:45 +00:00
Home Assistant Version Control ce5d81a647 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-02 16:32:27 +00:00
Home Assistant Version Control a44c6ac441 zigbee2mqtt/state.json 2026-08-02 16:24:07 +00:00
Home Assistant Version Control adb0048451 .storage/lovelace_resources, zigbee2mqtt/state.json 2026-08-02 15:38:20 +00:00
Home Assistant Version Control cb47611266 63 files 2026-08-02 15:35:08 +00:00
Home Assistant Version Control e0c634349f .ha_run.lock 2026-08-02 15:34:41 +00:00
Home Assistant Version Control f4e64f5bf8 10 files 2026-08-02 15:33:52 +00:00
Home Assistant Version Control 2ce8792155 39 files 2026-08-02 15:33:12 +00:00
Home Assistant Version Control 60dd13b52c zigbee2mqtt/state.json 2026-08-02 14:55:15 +00:00
Home Assistant Version Control 98c73b8f82 zigbee2mqtt/state.json 2026-08-02 14:26:05 +00:00
Home Assistant Version Control d751f5697e zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-02 14:13:20 +00:00
Home Assistant Version Control b974d53528 zigbee2mqtt/state.json 2026-08-02 13:15:12 +00:00
Home Assistant Version Control 237cef4fde zigbee2mqtt/state.json 2026-08-02 12:55:15 +00:00
Home Assistant Version Control c480259543 zigbee2mqtt/state.json 2026-08-02 12:02:19 +00:00
Home Assistant Version Control 317a41f03b zigbee2mqtt/state.json 2026-08-02 10:55:15 +00:00
Home Assistant Version Control 176b455795 zigbee2mqtt/state.json 2026-08-02 10:18:21 +00:00
Home Assistant Version Control f14d54bce2 zigbee2mqtt/state.json 2026-08-02 08:55:14 +00:00
Home Assistant Version Control c8b63fb7cd zigbee2mqtt/state.json 2026-08-02 08:43:41 +00:00
Home Assistant Version Control 10db1d042c zigbee2mqtt/state.json 2026-08-02 08:09:47 +00:00
Home Assistant Version Control bd8336a265 zigbee2mqtt/state.json 2026-08-02 06:55:14 +00:00
Home Assistant Version Control 350594e571 zigbee2mqtt/state.json 2026-08-02 06:18:08 +00:00
Home Assistant Version Control 1b89567839 zigbee2mqtt/state.json 2026-08-02 06:17:34 +00:00
Home Assistant Version Control 9af7987521 zigbee2mqtt/state.json 2026-08-02 04:55:14 +00:00
Home Assistant Version Control a91883def4 zigbee2mqtt/state.json 2026-08-02 04:16:10 +00:00
Home Assistant Version Control c6d75c8d5c zigbee2mqtt/state.json 2026-08-02 02:55:12 +00:00
Home Assistant Version Control 4d31d36dac zigbee2mqtt/state.json 2026-08-02 02:34:51 +00:00
Home Assistant Version Control 2292a84aae zigbee2mqtt/state.json 2026-08-02 02:21:46 +00:00
Home Assistant Version Control 11f1760f68 zigbee2mqtt/state.json 2026-08-02 01:21:40 +00:00
Home Assistant Version Control a8553d1bca zigbee2mqtt/state.json 2026-08-02 00:55:12 +00:00
Home Assistant Version Control e330bdc52e zigbee2mqtt/state.json 2026-08-02 00:08:25 +00:00
Home Assistant Version Control bf3d94c60d zigbee2mqtt/state.json 2026-08-02 00:07:51 +00:00
Home Assistant Version Control ea36104469 zigbee2mqtt/state.json 2026-08-01 23:23:55 +00:00
Home Assistant Version Control ebea602c65 zigbee2mqtt/state.json 2026-08-01 22:55:13 +00:00
Home Assistant Version Control abf332be60 zigbee2mqtt/state.json 2026-08-01 22:35:19 +00:00
Home Assistant Version Control ecc652659a zigbee2mqtt/state.json 2026-08-01 21:37:56 +00:00
Home Assistant Version Control f3803870ce zigbee2mqtt/state.json 2026-08-01 21:37:19 +00:00
Home Assistant Version Control 3de3c22ba6 zigbee2mqtt/state.json 2026-08-01 20:55:13 +00:00
Home Assistant Version Control c5ccfd8ba7 zigbee2mqtt/state.json 2026-08-01 20:50:38 +00:00
Home Assistant Version Control fc7ffe1f54 zigbee2mqtt/state.json 2026-08-01 18:55:11 +00:00
Home Assistant Version Control 936449da65 zigbee2mqtt/state.json 2026-08-01 18:44:30 +00:00
Home Assistant Version Control cfafb7c288 zigbee2mqtt/state.json 2026-08-01 17:37:16 +00:00
Home Assistant Version Control b7b450ae1c zigbee2mqtt/state.json 2026-08-01 17:14:00 +00:00
Home Assistant Version Control f06ce16c65 zigbee2mqtt/state.json 2026-08-01 16:55:11 +00:00
Home Assistant Version Control 9b052dbb1b zigbee2mqtt/state.json 2026-08-01 16:46:26 +00:00
Home Assistant Version Control 637144ffb9 zigbee2mqtt/state.json 2026-08-01 16:29:27 +00:00
Home Assistant Version Control 8102b43740 zigbee2mqtt/state.json 2026-08-01 15:15:49 +00:00
Home Assistant Version Control 54c09fc28e zigbee2mqtt/state.json 2026-08-01 14:55:09 +00:00
Home Assistant Version Control 67ec0057ce zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-01 14:12:59 +00:00
Home Assistant Version Control b946d79737 zigbee2mqtt/state.json 2026-08-01 12:55:09 +00:00
Home Assistant Version Control b5e7a9bd9c zigbee2mqtt/state.json 2026-08-01 12:32:38 +00:00
Home Assistant Version Control 2d16b2c233 zigbee2mqtt/state.json 2026-08-01 10:55:10 +00:00
Home Assistant Version Control e904d6810e zigbee2mqtt/state.json 2026-08-01 10:18:01 +00:00
Home Assistant Version Control 9539d346a0 zigbee2mqtt/state.json 2026-08-01 09:44:15 +00:00
Home Assistant Version Control 58a4fbd5b8 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-08-01 08:55:08 +00:00
Home Assistant Version Control f7280994a2 zigbee2mqtt/state.json 2026-08-01 08:43:27 +00:00
Home Assistant Version Control c3d11190f7 zigbee2mqtt/state.json 2026-08-01 08:01:44 +00:00
Home Assistant Version Control d6d31116cf zigbee2mqtt/state.json 2026-08-01 08:01:14 +00:00
Home Assistant Version Control 4d6d30cbbe zigbee2mqtt/state.json 2026-08-01 07:13:01 +00:00
Home Assistant Version Control 78f34186c5 hilo_eventhistory_state.yaml, zigbee2mqtt/state.json 2026-08-01 06:55:08 +00:00
Home Assistant Version Control 1613028450 zigbee2mqtt/state.json 2026-08-01 04:55:08 +00:00
Home Assistant Version Control 0728af8fdd zigbee2mqtt/state.json 2026-08-01 02:55:08 +00:00
Home Assistant Version Control 75e23107c3 zigbee2mqtt/state.json 2026-08-01 02:47:48 +00:00
Home Assistant Version Control 21c9d5e395 zigbee2mqtt/state.json 2026-08-01 01:34:07 +00:00
Home Assistant Version Control a245f783fc .storage/lovelace_resources 2026-08-01 00:54:42 +00:00
Home Assistant Version Control def092532b 2 files 2026-08-01 00:51:40 +00:00
Home Assistant Version Control c2c95e89f6 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-08-01 00:47:55 +00:00
Home Assistant Version Control 5e3b476c52 .storage/lovelace_resources 2026-08-01 00:47:26 +00:00
Home Assistant Version Control 21dae835a6 3 files 2026-08-01 00:47:15 +00:00
Home Assistant Version Control 10d8de4e3e zigbee2mqtt/state.json 2026-08-01 00:34:07 +00:00
Home Assistant Version Control 0c0e337602 .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-08-01 00:02:27 +00:00
Home Assistant Version Control ad01f1c0e2 .ha_mcp/logs/mcp_usage.jsonl 2026-08-01 00:00:41 +00:00
Home Assistant Version Control 3407fbaa78 .ha_mcp/logs/mcp_usage.jsonl 2026-08-01 00:00:27 +00:00
Home Assistant Version Control b167df7acb .ha_mcp/logs/mcp_usage.jsonl 2026-07-31 23:59:23 +00:00
Home Assistant Version Control 3fd010e530 .ha_mcp/logs/mcp_usage.jsonl 2026-07-31 23:58:59 +00:00
Home Assistant Version Control 2a20a2f2fa .ha_mcp/logs/mcp_usage.jsonl 2026-07-31 23:58:51 +00:00
Home Assistant Version Control a2a0e90b7a .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-07-31 23:58:39 +00:00
Home Assistant Version Control 476778338c zigbee2mqtt/state.json 2026-07-31 23:04:09 +00:00
Home Assistant Version Control 5bb95a1096 zigbee2mqtt/state.json 2026-07-31 22:48:16 +00:00
Home Assistant Version Control 9fafcbf048 zigbee2mqtt/state.json 2026-07-31 22:34:06 +00:00
Home Assistant Version Control 688a849f23 zigbee2mqtt/state.json 2026-07-31 22:05:50 +00:00
Home Assistant Version Control 647a86449f zigbee2mqtt/state.json 2026-07-31 21:50:51 +00:00
Home Assistant Version Control 20275c4da3 zigbee2mqtt/state.json 2026-07-31 21:36:18 +00:00
Home Assistant Version Control 6604b71556 zigbee2mqtt/state.json 2026-07-31 21:21:25 +00:00
Home Assistant Version Control c205782efb zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-07-31 20:41:25 +00:00
Home Assistant Version Control 9200f73977 zigbee2mqtt/state.json 2026-07-31 20:34:05 +00:00
Home Assistant Version Control bd30ebc783 zigbee2mqtt/state.json 2026-07-31 20:16:28 +00:00
Home Assistant Version Control d261647b5c zigbee2mqtt/state.json 2026-07-31 19:59:15 +00:00
Home Assistant Version Control 01d17ea5cf zigbee2mqtt/state.json 2026-07-31 19:27:35 +00:00
Home Assistant Version Control 9e1fe4e69b zigbee2mqtt/state.json 2026-07-31 19:22:33 +00:00
Home Assistant Version Control 4772699077 zigbee2mqtt/state.json 2026-07-31 18:46:52 +00:00
Home Assistant Version Control 28436dcac1 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-07-31 18:34:06 +00:00
Home Assistant Version Control e1033c051a zigbee2mqtt/state.json 2026-07-31 18:21:09 +00:00
Home Assistant Version Control f526b83885 zigbee2mqtt/state.json 2026-07-31 18:20:53 +00:00
Home Assistant Version Control b52c6479ba .storage/lovelace_resources 2026-07-31 16:33:39 +00:00
Home Assistant Version Control 5397894f99 zigbee2mqtt/state.json 2026-07-31 16:31:01 +00:00
Home Assistant Version Control a4f2dea80a .storage/lovelace_resources 2026-07-31 16:30:12 +00:00
Home Assistant Version Control 1234835cbd .ha_run.lock 2026-07-31 16:29:57 +00:00
Home Assistant Version Control 8c53907c88 91 files 2026-07-31 16:29:09 +00:00
Home Assistant Version Control d125a48b04 zigbee2mqtt/state.json 2026-07-31 15:21:08 +00:00
Home Assistant Version Control d9e8e036d5 .storage/lovelace_resources 2026-07-31 15:20:42 +00:00
Home Assistant Version Control b70d258a94 .storage/lovelace_resources 2026-07-31 15:17:32 +00:00
Home Assistant Version Control 7f3c66f8f8 .ha_run.lock 2026-07-31 15:17:00 +00:00
Home Assistant Version Control f95aabf7aa zigbee2mqtt/state.json 2026-07-31 15:16:34 +00:00
Home Assistant Version Control 00baf10545 AGENTS.md, zigbee2mqtt/state.json 2026-07-31 15:12:44 +00:00
Home Assistant Version Control 8a72fb5a3c .storage/lovelace_resources 2026-07-31 15:08:40 +00:00
Home Assistant Version Control 765e5dd1b5 11 files 2026-07-31 15:08:30 +00:00
Home Assistant Version Control 878b92f499 zigbee2mqtt/state.json 2026-07-31 14:04:28 +00:00
Home Assistant Version Control 9d914e44cf zigbee2mqtt/state.json 2026-07-31 12:29:02 +00:00
Home Assistant Version Control 7152e56990 zigbee2mqtt/state.json 2026-07-31 12:04:03 +00:00
Home Assistant Version Control fabe7e828e zigbee2mqtt/state.json 2026-07-31 11:39:59 +00:00
Home Assistant Version Control 1e0d02a6ef zigbee2mqtt/state.json 2026-07-31 10:46:32 +00:00
Home Assistant Version Control a4a4198258 zigbee2mqtt/state.json 2026-07-31 10:04:27 +00:00
Home Assistant Version Control 30f35c7c47 zigbee2mqtt/state.json 2026-07-31 09:51:45 +00:00
Home Assistant Version Control c08c3465e5 zigbee2mqtt/state.json 2026-07-31 08:32:40 +00:00
Home Assistant Version Control ffab1617cf zigbee2mqtt/state.json 2026-07-31 08:04:26 +00:00
Home Assistant Version Control 7b425b713f zigbee2mqtt/state.json 2026-07-31 07:54:32 +00:00
Home Assistant Version Control f2184a83a3 zigbee2mqtt/state.json 2026-07-31 07:37:19 +00:00
Home Assistant Version Control 39f17a2d7a zigbee2mqtt/state.json 2026-07-31 06:26:56 +00:00
Home Assistant Version Control f4ed116ffc zigbee2mqtt/state.json 2026-07-31 06:04:27 +00:00
Home Assistant Version Control 5af63e1003 zigbee2mqtt/state.json 2026-07-31 05:59:29 +00:00
Home Assistant Version Control f7de227c33 zigbee2mqtt/state.json 2026-07-31 05:06:46 +00:00
Home Assistant Version Control 9804822365 zigbee2mqtt/state.json 2026-07-31 04:18:15 +00:00
Home Assistant Version Control a6d81f108b zigbee2mqtt/state.json 2026-07-31 04:04:26 +00:00
Home Assistant Version Control 2f7a9321ef zigbee2mqtt/state.json 2026-07-31 02:11:25 +00:00
Home Assistant Version Control 27056abd26 zigbee2mqtt/state.json 2026-07-31 02:04:25 +00:00
Home Assistant Version Control 3ce9cc82cc zigbee2mqtt/state.json 2026-07-31 00:25:19 +00:00
Home Assistant Version Control f5439c961c .storage/lovelace_resources 2026-07-31 00:04:00 +00:00
Home Assistant Version Control de698fbc80 zigbee2mqtt/state.json 2026-07-31 00:01:20 +00:00
Home Assistant Version Control 227d716f26 81 files 2026-07-31 00:00:50 +00:00
Home Assistant Version Control c775ec74aa .ha_run.lock 2026-07-31 00:00:24 +00:00
Home Assistant Version Control a2e65de26e .storage/lovelace_resources 2026-07-30 23:59:56 +00:00
Home Assistant Version Control 7b5e46e702 217 files 2026-07-30 23:59:38 +00:00
Home Assistant Version Control d43a63ad29 zigbee2mqtt/state.json 2026-07-30 23:54:12 +00:00
Home Assistant Version Control af278ed7ed zigbee2mqtt/state.json 2026-07-30 22:51:46 +00:00
Home Assistant Version Control dd60d97c4c zigbee2mqtt/state.json 2026-07-30 22:40:11 +00:00
Home Assistant Version Control 23b5537a1c zigbee2mqtt/state.json 2026-07-30 21:54:38 +00:00
Home Assistant Version Control 95a33fc7e6 zigbee2mqtt/state.json 2026-07-30 21:21:02 +00:00
Home Assistant Version Control bfe4313db0 zigbee2mqtt/state.json 2026-07-30 21:20:28 +00:00
Home Assistant Version Control e129a84083 zigbee2mqtt/coordinator_backup.json, zigbee2mqtt/state.json 2026-07-30 20:41:26 +00:00
Home Assistant Version Control 3bacda4b15 .storage/powercalc_profiles/library.json, zigbee2mqtt/state.json 2026-07-30 20:40:12 +00:00
Home Assistant Version Control 8942489819 zigbee2mqtt/state.json 2026-07-30 19:49:14 +00:00
Home Assistant Version Control f3d0b2ec48 zigbee2mqtt/state.json 2026-07-30 19:36:34 +00:00
Home Assistant Version Control 4214268d1a zigbee2mqtt/state.json 2026-07-30 19:11:26 +00:00
Home Assistant Version Control 4eab38d234 zigbee2mqtt/state.json 2026-07-30 19:10:52 +00:00
Home Assistant Version Control 02a79d26a5 zigbee2mqtt/state.json 2026-07-30 18:40:10 +00:00
Home Assistant Version Control 295a3c95f9 zigbee2mqtt/state.json 2026-07-30 17:58:39 +00:00
Home Assistant Version Control bf4fca31c6 zigbee2mqtt/state.json 2026-07-30 17:38:42 +00:00
Home Assistant Version Control ce5113cde7 zigbee2mqtt/state.json 2026-07-30 16:40:10 +00:00
Home Assistant Version Control 75fbdf5c4d zigbee2mqtt/state.json 2026-07-30 16:35:36 +00:00
Home Assistant Version Control 2228ecd98c zigbee2mqtt/state.json 2026-07-30 16:22:02 +00:00
Home Assistant Version Control 70986b8457 zigbee2mqtt/state.json 2026-07-30 16:17:17 +00:00
Home Assistant Version Control 46b5953a11 zigbee2mqtt/state.json 2026-07-30 15:47:55 +00:00
Home Assistant Version Control e96f24daeb zigbee2mqtt/state.json 2026-07-30 14:50:21 +00:00
Home Assistant Version Control efada29720 zigbee2mqtt/state.json 2026-07-30 14:40:11 +00:00
Home Assistant Version Control d7257ea634 zigbee2mqtt/state.json 2026-07-30 12:40:11 +00:00
Home Assistant Version Control 3589ed9ff7 zigbee2mqtt/state.json 2026-07-30 12:34:31 +00:00
Home Assistant Version Control c7ee7ffb2e zigbee2mqtt/state.json 2026-07-30 12:28:24 +00:00
Home Assistant Version Control 5e344757d3 zigbee2mqtt/state.json 2026-07-30 11:53:26 +00:00
Home Assistant Version Control 9eadf865f2 zigbee2mqtt/state.json 2026-07-30 10:54:12 +00:00
Home Assistant Version Control d102583c41 zigbee2mqtt/state.json 2026-07-30 10:40:09 +00:00
Home Assistant Version Control e329c655e7 zigbee2mqtt/state.json 2026-07-30 10:19:24 +00:00
Home Assistant Version Control a007cabc77 zigbee2mqtt/state.json 2026-07-30 09:23:16 +00:00
Home Assistant Version Control c24d050045 zigbee2mqtt/state.json 2026-07-30 08:36:13 +00:00
Home Assistant Version Control 226c5bc9fe zigbee2mqtt/state.json 2026-07-30 08:04:01 +00:00
Home Assistant Version Control 665da5e44c zigbee2mqtt/state.json 2026-07-30 07:04:01 +00:00
Home Assistant Version Control 8319463faa zigbee2mqtt/state.json 2026-07-30 06:40:10 +00:00
Home Assistant Version Control a341a6c325 zigbee2mqtt/state.json 2026-07-30 06:04:44 +00:00
Home Assistant Version Control 9786964e28 zigbee2mqtt/state.json 2026-07-30 04:40:08 +00:00
Home Assistant Version Control 6af6c6a807 .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 04:34:46 +00:00
Home Assistant Version Control 598dbc3af6 zigbee2mqtt/state.json 2026-07-30 04:33:20 +00:00
Home Assistant Version Control d75d72e025 .storage/lovelace_resources 2026-07-30 04:15:39 +00:00
Home Assistant Version Control 6e41d78265 zigbee2mqtt/state.json 2026-07-30 04:14:23 +00:00
Home Assistant Version Control db73b7b419 .storage/lovelace.dashboard_home, zigbee2mqtt/state.json 2026-07-30 02:56:46 +00:00
Home Assistant Version Control 1727b68431 zigbee2mqtt/state.json 2026-07-30 02:51:49 +00:00
Home Assistant Version Control 0a080287ac .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:49:31 +00:00
Home Assistant Version Control b080996f5d .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:49:23 +00:00
Home Assistant Version Control b2a2b36a83 .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:49:07 +00:00
Home Assistant Version Control 16ac5babe1 .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:48:59 +00:00
Home Assistant Version Control 7c3538c689 .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:47:55 +00:00
Home Assistant Version Control d59d66db3e .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:47:31 +00:00
Home Assistant Version Control 930162f3d5 .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:47:20 +00:00
Home Assistant Version Control df01e5d6fd .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-07-30 02:46:39 +00:00
Home Assistant Version Control d8278c169a .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:45:17 +00:00
Home Assistant Version Control 2d4a5362f4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-30 02:45:11 +00:00
Home Assistant Version Control f55e9117fe .ha_mcp/logs/mcp_usage.jsonl, zigbee2mqtt/state.json 2026-07-30 02:44:51 +00:00
Home Assistant Version Control 52fa525f06 .storage/lovelace_resources 2026-07-30 02:39:43 +00:00
Home Assistant Version Control 2354bbcacb 3 files 2026-07-30 02:36:16 +00:00
Home Assistant Version Control b28711acb8 .ha_run.lock, zigbee2mqtt/state.json 2026-07-30 02:36:01 +00:00
Home Assistant Version Control e02abc6ddf 18 files 2026-07-30 02:35:11 +00:00
Home Assistant Version Control 2770bfa4f5 13 files 2026-07-30 02:32:33 +00:00
Home Assistant Version Control 9e33346d1c zigbee2mqtt/state.json 2026-07-30 02:27:46 +00:00
Home Assistant Version Control bb1e445f4b zigbee2mqtt/state.json 2026-07-30 02:04:12 +00:00
Home Assistant Version Control 34f32cbeb8 zigbee2mqtt/state.json 2026-07-30 01:18:04 +00:00
Home Assistant Version Control 5a29ec901a zigbee2mqtt/state.json 2026-07-30 00:55:10 +00:00
Home Assistant Version Control 9eccc5929f zigbee2mqtt/state.json 2026-07-30 00:27:44 +00:00
Home Assistant Version Control 4171b1ea34 zigbee2mqtt/state.json 2026-07-30 00:07:53 +00:00
Home Assistant Version Control 738aa3d510 zigbee2mqtt/state.json 2026-07-29 22:55:05 +00:00
Home Assistant Version Control 7ef0264763 zigbee2mqtt/state.json 2026-07-29 22:27:45 +00:00
Home Assistant Version Control cbde2a2a3a zigbee2mqtt/state.json 2026-07-29 21:46:32 +00:00
Home Assistant Version Control e162ed8790 zigbee2mqtt/state.json 2026-07-29 21:11:12 +00:00
Home Assistant Version Control 4c58479c50 zigbee2mqtt/state.json 2026-07-29 21:10:38 +00:00
Home Assistant Version Control df3bad05cd .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:05:33 +00:00
Home Assistant Version Control 73023b6704 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:04:55 +00:00
Home Assistant Version Control 42b32774c1 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:04:33 +00:00
Home Assistant Version Control bed8449a68 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:04:07 +00:00
Home Assistant Version Control e93b39ceaa .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:03:59 +00:00
Home Assistant Version Control c3cc55ba68 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:01:43 +00:00
Home Assistant Version Control 7e2cc04b0f custom_components/webrtc/__init__.py, custom_components/webrtc/utils.py 2026-07-29 17:01:37 +00:00
Home Assistant Version Control 0bca647dff custom_components/webrtc/utils.py 2026-07-29 17:01:31 +00:00
Home Assistant Version Control 62eefe88c0 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 17:00:05 +00:00
Home Assistant Version Control 09b6875d13 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:59:55 +00:00
Home Assistant Version Control 307bb21b3a .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:59:13 +00:00
Home Assistant Version Control d493142612 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:58:33 +00:00
Home Assistant Version Control ffbccf389d .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:58:21 +00:00
Home Assistant Version Control a7e58bc9cc go2rtc.yaml 2026-07-29 16:58:09 +00:00
Home Assistant Version Control 154448b464 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:57:41 +00:00
Home Assistant Version Control 36508fc9c0 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:57:29 +00:00
Home Assistant Version Control dcb568fbe7 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:55:50 +00:00
Home Assistant Version Control b4ec8f7789 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:55:41 +00:00
Home Assistant Version Control 0e0c35c9a3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:54:42 +00:00
Home Assistant Version Control 1754c13321 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:54:27 +00:00
Home Assistant Version Control bc13e5797e .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:54:20 +00:00
Home Assistant Version Control 08d9a6bd55 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:54:09 +00:00
Home Assistant Version Control ec099e6de3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:54:01 +00:00
Home Assistant Version Control cfef61f1a2 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:53:52 +00:00
Home Assistant Version Control 5b647af821 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:53:42 +00:00
Home Assistant Version Control c653a0e8d4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:53:39 +00:00
Home Assistant Version Control 3d5cb578f3 opencode/decisions.yaml 2026-07-29 16:27:55 +00:00
Home Assistant Version Control 3e5eec788a .storage/lovelace_resources 2026-07-29 16:27:17 +00:00
Home Assistant Version Control 9ab2fd7498 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:25:41 +00:00
Home Assistant Version Control 4235bb3860 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:25:19 +00:00
Home Assistant Version Control 44dd74c8da .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:25:09 +00:00
Home Assistant Version Control 63b82728e9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:25:03 +00:00
Home Assistant Version Control 53c09f1178 .storage/lovelace_resources 2026-07-29 16:23:37 +00:00
Home Assistant Version Control a27d074643 .ha_run.lock 2026-07-29 16:23:13 +00:00
Home Assistant Version Control 9080cf4081 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:22:37 +00:00
Home Assistant Version Control a195e82db8 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:21:59 +00:00
Home Assistant Version Control fde08d19ca .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:21:37 +00:00
Home Assistant Version Control 17b55bbbc5 .storage/lovelace_resources 2026-07-29 16:20:09 +00:00
Home Assistant Version Control 4e8159c37c .ha_run.lock 2026-07-29 16:19:49 +00:00
Home Assistant Version Control 40ebeda6cd .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:19:12 +00:00
Home Assistant Version Control 2c1df3339d .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:18:26 +00:00
Home Assistant Version Control 86120738b2 .storage/lovelace_resources 2026-07-29 16:17:05 +00:00
Home Assistant Version Control 88007771ff .ha_run.lock 2026-07-29 16:16:41 +00:00
Home Assistant Version Control defd2c9891 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:16:02 +00:00
Home Assistant Version Control 064f9c3d2c .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:14:36 +00:00
Home Assistant Version Control b46c4f983e .storage/lovelace_resources 2026-07-29 16:13:12 +00:00
Home Assistant Version Control ff868b203a .ha_run.lock 2026-07-29 16:12:51 +00:00
Home Assistant Version Control f141aafd9e .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:12:12 +00:00
Home Assistant Version Control ac843e30f3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:11:30 +00:00
Home Assistant Version Control 89de22536e .storage/lovelace_resources 2026-07-29 16:10:18 +00:00
Home Assistant Version Control 6de6798950 .ha_run.lock 2026-07-29 16:09:56 +00:00
Home Assistant Version Control 9e7b192b63 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:09:20 +00:00
Home Assistant Version Control 6f746ff6a3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:08:46 +00:00
Home Assistant Version Control 932c5c2c19 .storage/lovelace_resources 2026-07-29 16:08:34 +00:00
Home Assistant Version Control d736019d75 .storage/lovelace_resources 2026-07-29 16:05:18 +00:00
Home Assistant Version Control ed0d37c175 .ha_run.lock 2026-07-29 16:04:58 +00:00
Home Assistant Version Control 2ec55b4a64 .ha_mcp/logs/mcp_usage.jsonl, .session_nest_snapshot_20260729.md 2026-07-29 16:04:18 +00:00
Home Assistant Version Control 5cfa68c80d .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:03:04 +00:00
Home Assistant Version Control 2dd84bd7bb .storage/lovelace_resources 2026-07-29 16:01:52 +00:00
Home Assistant Version Control df3457f7f1 .ha_run.lock 2026-07-29 16:01:30 +00:00
Home Assistant Version Control 2f3fe8d08c .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 16:00:54 +00:00
Home Assistant Version Control 3076456fc5 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:59:52 +00:00
Home Assistant Version Control b782956b26 AGENTS.local.md 2026-07-29 15:59:38 +00:00
Home Assistant Version Control 61f231d82f .storage/lovelace_resources 2026-07-29 15:58:16 +00:00
Home Assistant Version Control cf67081672 .ha_run.lock 2026-07-29 15:58:02 +00:00
Home Assistant Version Control 181198522c .ha_mcp/logs/mcp_usage.jsonl, .session_nest_snapshot_20260729.md 2026-07-29 15:57:20 +00:00
Home Assistant Version Control 79c7bffd86 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:56:33 +00:00
Home Assistant Version Control ce9e24cb23 .storage/lovelace_resources 2026-07-29 15:55:14 +00:00
Home Assistant Version Control 2f765ffb87 .ha_run.lock 2026-07-29 15:55:00 +00:00
Home Assistant Version Control 131c2eee1e .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:54:19 +00:00
Home Assistant Version Control 93e28c0f8c .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:54:03 +00:00
Home Assistant Version Control 5dd789c04d .storage/lovelace_resources 2026-07-29 15:52:47 +00:00
Home Assistant Version Control 800e00a457 .ha_run.lock 2026-07-29 15:52:32 +00:00
Home Assistant Version Control 450afcf63d .ha_mcp/logs/mcp_usage.jsonl, custom_components/nest_snapshot/manifest.json 2026-07-29 15:51:51 +00:00
Home Assistant Version Control 2312978bea .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:51:33 +00:00
Home Assistant Version Control c54f4c2e04 .storage/lovelace_resources 2026-07-29 15:51:14 +00:00
Home Assistant Version Control dd5ba797dc .ha_run.lock 2026-07-29 15:50:57 +00:00
Home Assistant Version Control c271412003 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:50:19 +00:00
Home Assistant Version Control 826cf8d8aa .session_nest_snapshot_20260729.md 2026-07-29 15:50:05 +00:00
Home Assistant Version Control 5f39b0208c .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:49:21 +00:00
Home Assistant Version Control fe366404b4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:49:17 +00:00
Home Assistant Version Control 25ecd95b10 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:48:29 +00:00
Home Assistant Version Control 4f80b7b3d3 .storage/lovelace_resources 2026-07-29 15:45:59 +00:00
Home Assistant Version Control 7745e9ef53 .storage/lovelace_resources 2026-07-29 15:42:47 +00:00
Home Assistant Version Control 4dcfd921a6 .ha_run.lock 2026-07-29 15:42:25 +00:00
Home Assistant Version Control cc0adbf590 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:41:45 +00:00
Home Assistant Version Control 40349e8027 automations.yaml 2026-07-29 15:41:17 +00:00
Home Assistant Version Control 107cac66ea .storage/lovelace_resources 2026-07-29 15:40:57 +00:00
Home Assistant Version Control 79969d2046 .ha_run.lock 2026-07-29 15:40:37 +00:00
Home Assistant Version Control 6409dd8bd4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:40:01 +00:00
Home Assistant Version Control 6bdfe61b2e .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:39:25 +00:00
Home Assistant Version Control 72b5a09730 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:39:11 +00:00
Home Assistant Version Control c8a14342ae .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:38:21 +00:00
Home Assistant Version Control f5e351f541 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:38:17 +00:00
Home Assistant Version Control 8e8092b305 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:38:13 +00:00
Home Assistant Version Control 2321cffc37 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:38:09 +00:00
Home Assistant Version Control 6a429c3945 automations.yaml 2026-07-29 15:37:43 +00:00
Home Assistant Version Control 4e917f9f77 .storage/lovelace_resources 2026-07-29 15:37:01 +00:00
Home Assistant Version Control da9b8b0a96 .ha_run.lock 2026-07-29 15:36:39 +00:00
Home Assistant Version Control b4e3c5c84f .session_nest_snapshot_20260729.md 2026-07-29 15:35:15 +00:00
Home Assistant Version Control 95d8e1ef33 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-29 15:34:16 +00:00
Home Assistant Version Control 80197b229a .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:30:50 +00:00
Home Assistant Version Control 7220977349 configuration.yaml 2026-07-29 15:30:42 +00:00
Home Assistant Version Control 0b542f48f7 custom_components/nest_snapshot/services.yaml 2026-07-29 15:29:12 +00:00
Home Assistant Version Control d60b8b55f3 custom_components/nest_snapshot/manifest.json 2026-07-29 15:29:06 +00:00
Home Assistant Version Control 6d52cff28c .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:22:49 +00:00
Home Assistant Version Control 02c2a167f4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:22:17 +00:00
Home Assistant Version Control 6b078a9859 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:22:05 +00:00
Home Assistant Version Control feb384da22 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:21:55 +00:00
Home Assistant Version Control ba3cf5d782 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:21:01 +00:00
Home Assistant Version Control e69fa21337 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:20:19 +00:00
Home Assistant Version Control c7a38290b9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:20:03 +00:00
Home Assistant Version Control ec6c5026da .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:19:51 +00:00
Home Assistant Version Control 1b3b230876 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:19:31 +00:00
Home Assistant Version Control b88492f1d3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:19:27 +00:00
Home Assistant Version Control 91ca4a3588 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:19:23 +00:00
Home Assistant Version Control 0a2d49b8d9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:19:17 +00:00
Home Assistant Version Control 6e5769a670 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:19:01 +00:00
Home Assistant Version Control 7cb0389aaf .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:16:41 +00:00
Home Assistant Version Control 1e7134f09a .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:16:21 +00:00
Home Assistant Version Control 9cb6cd7f18 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:16:13 +00:00
Home Assistant Version Control 1ddb263752 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:15:49 +00:00
Home Assistant Version Control 434bc6a16f .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:11:55 +00:00
Home Assistant Version Control dbf16fa54b .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:10:03 +00:00
Home Assistant Version Control 87f4bc8770 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:09:45 +00:00
Home Assistant Version Control 9b6941b8f7 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:09:39 +00:00
Home Assistant Version Control da8fa64c2f .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:09:29 +00:00
Home Assistant Version Control d6c019fb2c .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:09:19 +00:00
Home Assistant Version Control 80f35eeb77 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 15:09:07 +00:00
Home Assistant Version Control 57d9ed0c02 zigbee2mqtt/state.json 2026-07-29 13:43:20 +00:00
Home Assistant Version Control 92a6380d3b .opencode/opencode.json 2026-07-29 13:23:57 +00:00
Home Assistant Version Control d86f2e97f1 zigbee2mqtt/state.json 2026-07-29 13:22:12 +00:00
Home Assistant Version Control 3f5cfc5626 .opencode/opencode.json 2026-07-29 13:17:53 +00:00
Home Assistant Version Control 3c31722803 .opencode/opencode.json 2026-07-29 13:17:23 +00:00
Home Assistant Version Control da426ac9ef .opencode/opencode.json, zigbee2mqtt/state.json 2026-07-29 13:16:51 +00:00
Home Assistant Version Control 4699c37c38 .opencode/opencode.json 2026-07-29 13:13:54 +00:00
Home Assistant Version Control 474c93d206 .opencode/opencode.json 2026-07-29 13:11:01 +00:00
Home Assistant Version Control b663ad20d8 .opencode/opencode.json, zigbee2mqtt/state.json 2026-07-29 13:10:46 +00:00
Home Assistant Version Control 3ed30c0fd9 .opencode/opencode.json, zigbee2mqtt/state.json 2026-07-29 13:05:50 +00:00
Home Assistant Version Control f34e4fd383 .opencode/opencode.json 2026-07-29 13:04:22 +00:00
Home Assistant Version Control 8946ae95a0 .opencode/opencode.json 2026-07-29 13:04:14 +00:00
Home Assistant Version Control 9dbb02bcdb zigbee2mqtt/state.json 2026-07-29 13:03:38 +00:00
Home Assistant Version Control de8be76236 .opencode/opencode.json, zigbee2mqtt/state.json 2026-07-29 12:43:28 +00:00
Home Assistant Version Control a49aa64387 .opencode/opencode.json 2026-07-29 12:34:10 +00:00
Home Assistant Version Control 50007c314d .opencode/opencode.json, zigbee2mqtt/state.json 2026-07-29 12:34:00 +00:00
Home Assistant Version Control 9c61a39299 zigbee2mqtt/state.json 2026-07-29 12:14:25 +00:00
Home Assistant Version Control a214ea30d0 .opencode/opencode.json 2026-07-29 12:09:40 +00:00
Home Assistant Version Control d9bcf11f23 .opencode/opencode.json, zigbee2mqtt/state.json 2026-07-29 12:08:51 +00:00
Home Assistant Version Control b9221a1720 zigbee2mqtt/state.json 2026-07-29 11:43:19 +00:00
Home Assistant Version Control 3a67190ec1 zigbee2mqtt/state.json 2026-07-29 11:36:36 +00:00
Home Assistant Version Control 36e1583599 zigbee2mqtt/state.json 2026-07-29 11:20:59 +00:00
Home Assistant Version Control 1428cd3d8c zigbee2mqtt/state.json 2026-07-29 11:20:25 +00:00
Home Assistant Version Control 4d85b9fc34 zigbee2mqtt/state.json 2026-07-29 10:54:34 +00:00
Home Assistant Version Control cafbfcad6b zigbee2mqtt/state.json 2026-07-29 10:17:04 +00:00
Home Assistant Version Control 2a7fe8d0da zigbee2mqtt/state.json 2026-07-29 09:43:17 +00:00
Home Assistant Version Control c2ccab8575 zigbee2mqtt/state.json 2026-07-29 08:37:21 +00:00
Home Assistant Version Control b91de0d2fa zigbee2mqtt/state.json 2026-07-29 08:06:45 +00:00
Home Assistant Version Control 633e6c47f0 zigbee2mqtt/state.json 2026-07-29 07:47:46 +00:00
Home Assistant Version Control 292f10b4a3 zigbee2mqtt/state.json 2026-07-29 07:43:15 +00:00
Home Assistant Version Control 11fedf31de zigbee2mqtt/state.json 2026-07-29 06:08:53 +00:00
Home Assistant Version Control 5e40f9e9e5 zigbee2mqtt/state.json 2026-07-29 05:43:16 +00:00
Home Assistant Version Control cc72bb5e1a zigbee2mqtt/state.json 2026-07-29 04:57:48 +00:00
Home Assistant Version Control 2a16df8f66 automations.yaml 2026-07-29 04:46:16 +00:00
Home Assistant Version Control 3acb7eabba automations.yaml, zigbee2mqtt/state.json 2026-07-29 04:45:48 +00:00
Home Assistant Version Control 2bc77c43ce 41 files 2026-07-29 04:12:24 +00:00
Home Assistant Version Control 9ea95c3a46 10 files 2026-07-29 04:10:46 +00:00
Home Assistant Version Control 2094c84c6a .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 02:25:54 +00:00
Home Assistant Version Control 25b90c4764 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 02:08:47 +00:00
Home Assistant Version Control 155711cba5 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 02:08:35 +00:00
Home Assistant Version Control ba73b19285 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 02:08:27 +00:00
Home Assistant Version Control f3995965b4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 02:08:15 +00:00
Home Assistant Version Control c90785efcc .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:10:48 +00:00
Home Assistant Version Control e49a63fccf .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:10:34 +00:00
Home Assistant Version Control c6af07418e .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:10:10 +00:00
Home Assistant Version Control bbfc1b714e .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:08:15 +00:00
Home Assistant Version Control cf5d834eec .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:08:09 +00:00
Home Assistant Version Control bca945eefb .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:07:47 +00:00
Home Assistant Version Control 0b6b7e22c7 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:07:31 +00:00
Home Assistant Version Control 211f162896 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:06:53 +00:00
Home Assistant Version Control cbc7886fbf .storage/lovelace.dashboard_home 2026-07-29 00:05:59 +00:00
Home Assistant Version Control 3fe2f965ab .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:03:57 +00:00
Home Assistant Version Control 3d44e39789 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:03:11 +00:00
Home Assistant Version Control 5adc45d6f5 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:03:07 +00:00
Home Assistant Version Control e4c861fdf0 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_home 2026-07-29 00:03:01 +00:00
Home Assistant Version Control 7c6cadf2a9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:02:47 +00:00
Home Assistant Version Control cdce80814f .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:02:25 +00:00
Home Assistant Version Control 635fa82094 .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:00:53 +00:00
Home Assistant Version Control d480ef37ac .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:00:29 +00:00
Home Assistant Version Control d8851d7afc .ha_mcp/logs/mcp_usage.jsonl 2026-07-29 00:00:25 +00:00
Home Assistant Version Control 53b49170bf configuration.yaml 2026-07-28 23:59:19 +00:00
Home Assistant Version Control ab371489cd .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 23:58:27 +00:00
Home Assistant Version Control 32a51633e7 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 23:58:15 +00:00
Home Assistant Version Control bc07fd1017 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-28 23:44:46 +00:00
Home Assistant Version Control 3380aec844 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 23:43:42 +00:00
Home Assistant Version Control 44d44eec20 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 23:43:34 +00:00
Home Assistant Version Control f67d7101cf .storage/lovelace_resources 2026-07-28 23:42:46 +00:00
Home Assistant Version Control fd0e0a2647 .storage/lovelace_resources 2026-07-28 23:39:30 +00:00
Home Assistant Version Control 12363d91da .ha_run.lock 2026-07-28 23:39:06 +00:00
Home Assistant Version Control c76ae7044c 3 files 2026-07-28 23:36:28 +00:00
Home Assistant Version Control 09f59132f8 automations.yaml 2026-07-28 22:53:49 +00:00
Home Assistant Version Control de579299af zigbee2mqtt/coordinator_backup.json 2026-07-28 20:41:06 +00:00
Home Assistant Version Control 013d098bdb configuration.yaml 2026-07-28 19:49:35 +00:00
Home Assistant Version Control db80e39dbb 3 files 2026-07-28 19:49:05 +00:00
Home Assistant Version Control e5cd3cd83d configuration.yaml 2026-07-28 19:48:29 +00:00
Home Assistant Version Control c847297122 configuration.yaml 2026-07-28 19:48:13 +00:00
Home Assistant Version Control d282978f0a .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:47:51 +00:00
Home Assistant Version Control 97f22f0523 configuration.yaml 2026-07-28 19:47:39 +00:00
Home Assistant Version Control a742f650ee .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 19:46:49 +00:00
Home Assistant Version Control ccea211bce .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:46:37 +00:00
Home Assistant Version Control 4d49c59beb .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:46:25 +00:00
Home Assistant Version Control 6ef9bf190f configuration.yaml 2026-07-28 19:46:19 +00:00
Home Assistant Version Control 5ef6627289 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:46:01 +00:00
Home Assistant Version Control feba0c4486 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:45:35 +00:00
Home Assistant Version Control b79d240cbe .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 19:45:27 +00:00
Home Assistant Version Control f73d2d6dd2 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:44:51 +00:00
Home Assistant Version Control b152c77a19 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:44:47 +00:00
Home Assistant Version Control 89d33d91c0 .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 19:44:41 +00:00
Home Assistant Version Control ec9f4eb42f configuration.yaml 2026-07-28 19:44:35 +00:00
Home Assistant Version Control 6a2e30de81 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:44:27 +00:00
Home Assistant Version Control 1d2891ebc3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:44:17 +00:00
Home Assistant Version Control fc93040c3b .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:44:09 +00:00
Home Assistant Version Control eb9a3b818e .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 19:43:57 +00:00
Home Assistant Version Control d8a42d02be .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:43:41 +00:00
Home Assistant Version Control ac3f42c5f5 .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 19:43:37 +00:00
Home Assistant Version Control 260cbb641d .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:42:59 +00:00
Home Assistant Version Control 3c9310c897 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:42:43 +00:00
Home Assistant Version Control 19c201799a .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-28 19:41:37 +00:00
Home Assistant Version Control be05fd6129 configuration.yaml 2026-07-28 19:41:25 +00:00
Home Assistant Version Control 1bfb7d5713 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:41:09 +00:00
Home Assistant Version Control cbd1440460 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:39:13 +00:00
Home Assistant Version Control 6be1cd9454 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:37:50 +00:00
Home Assistant Version Control 3153e4fcb3 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-28 19:37:30 +00:00
Home Assistant Version Control 06c15e1f0e .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 19:37:21 +00:00
Home Assistant Version Control 0a826e974e .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:35:38 +00:00
Home Assistant Version Control eb13336003 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:35:16 +00:00
Home Assistant Version Control 13e69e9f29 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-28 19:33:58 +00:00
Home Assistant Version Control 443c2267e9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:33:32 +00:00
Home Assistant Version Control 52f097fb47 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:33:24 +00:00
Home Assistant Version Control 69f733a1ad .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-28 19:32:14 +00:00
Home Assistant Version Control e5b2a3140a hallway_motion_automation.yaml 2026-07-28 19:31:36 +00:00
Home Assistant Version Control b22ca8c3be hallway_motion_automation.yaml 2026-07-28 19:31:30 +00:00
Home Assistant Version Control 49f9903779 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:31:20 +00:00
Home Assistant Version Control 6ca247c389 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:30:16 +00:00
Home Assistant Version Control 4b47073147 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:29:32 +00:00
Home Assistant Version Control 9a7965cbc7 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:29:24 +00:00
Home Assistant Version Control eb18c8e642 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:29:12 +00:00
Home Assistant Version Control 98c53c5630 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:29:00 +00:00
Home Assistant Version Control fc8c68a750 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:28:54 +00:00
Home Assistant Version Control 4c2ccdb855 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 19:28:48 +00:00
Home Assistant Version Control e36ce418db .storage/lovelace.dashboard_home 2026-07-28 18:55:08 +00:00
Home Assistant Version Control d6107fa1ea .storage/lovelace.dashboard_home 2026-07-28 15:43:06 +00:00
Home Assistant Version Control 1d8aacba32 .storage/lovelace.dashboard_home 2026-07-28 15:42:38 +00:00
Home Assistant Version Control a201856de1 .storage/lovelace.dashboard_home 2026-07-28 15:41:58 +00:00
Home Assistant Version Control 7de2970058 .storage/lovelace.dashboard_home 2026-07-28 15:40:40 +00:00
Home Assistant Version Control 1c41fce72a .storage/lovelace.dashboard_home 2026-07-28 15:40:34 +00:00
Home Assistant Version Control b7c8c43b8b .storage/lovelace.dashboard_home 2026-07-28 15:40:04 +00:00
Home Assistant Version Control e2c70b9f15 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_home 2026-07-28 15:38:20 +00:00
Home Assistant Version Control 7d4fab8a3c .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_home 2026-07-28 15:37:37 +00:00
Home Assistant Version Control 7e5b3f7fcf .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:37:25 +00:00
Home Assistant Version Control 91a1492934 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:36:35 +00:00
Home Assistant Version Control 2f5b8f99b8 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:36:31 +00:00
Home Assistant Version Control ba635ff3c4 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:36:25 +00:00
Home Assistant Version Control f0c647ce76 .storage/lovelace.dashboard_home 2026-07-28 15:29:43 +00:00
Home Assistant Version Control a8227c01f8 .storage/lovelace.dashboard_home 2026-07-28 15:29:35 +00:00
Home Assistant Version Control fe75684542 .storage/lovelace.dashboard_home 2026-07-28 15:29:09 +00:00
Home Assistant Version Control e1bacb03c3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:27:33 +00:00
Home Assistant Version Control 45c9279fe8 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_home 2026-07-28 15:27:25 +00:00
Home Assistant Version Control 08a970f16b .ha_mcp/logs/mcp_usage.jsonl, configuration.yaml 2026-07-28 15:27:19 +00:00
Home Assistant Version Control 8becc66f0a .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:26:11 +00:00
Home Assistant Version Control 0a67b7dddd .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:24:57 +00:00
Home Assistant Version Control 36a1ea1e15 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_home 2026-07-28 15:24:47 +00:00
Home Assistant Version Control 97a6c4c5b2 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:24:35 +00:00
Home Assistant Version Control ffe9e17170 configuration.yaml 2026-07-28 15:24:23 +00:00
Home Assistant Version Control 4c73e4dc1c .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:22:45 +00:00
Home Assistant Version Control 50b10506fd .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:22:33 +00:00
Home Assistant Version Control ff372c52f1 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:22:27 +00:00
Home Assistant Version Control d451e2e1e3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:22:17 +00:00
Home Assistant Version Control 457d4ff205 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:21:59 +00:00
Home Assistant Version Control 26d5430b40 .ha_mcp/logs/mcp_usage.jsonl 2026-07-28 15:21:43 +00:00
Home Assistant Version Control f52b5519d6 .storage/lovelace.dashboard_home 2026-07-28 15:19:12 +00:00
Home Assistant Version Control ab641a9435 .storage/lovelace.dashboard_home 2026-07-28 15:15:38 +00:00
Home Assistant Version Control a26d204da3 .storage/lovelace.dashboard_home 2026-07-28 15:15:24 +00:00
Home Assistant Version Control 15c35e20b5 .storage/lovelace.dashboard_home 2026-07-28 15:14:38 +00:00
Home Assistant Version Control 35c29d8d42 .storage/lovelace.dashboard_home 2026-07-28 15:07:06 +00:00
Home Assistant Version Control 1f3e8d4a98 .storage/lovelace.dashboard_home 2026-07-28 14:50:35 +00:00
Home Assistant Version Control 6cddf4b2cc .storage/lovelace.dashboard_home 2026-07-28 14:49:18 +00:00
Home Assistant Version Control fd1c7b1960 .storage/lovelace.dashboard_home 2026-07-28 14:49:04 +00:00
Home Assistant Version Control f4e5857d08 .storage/lovelace.dashboard_home 2026-07-28 14:48:46 +00:00
Home Assistant Version Control 8f780735b6 .storage/lovelace.dashboard_home 2026-07-28 14:47:48 +00:00
Home Assistant Version Control 0f6857e161 .storage/lovelace.dashboard_home 2026-07-28 14:47:26 +00:00
Home Assistant Version Control 30aa28a5b7 .storage/lovelace.dashboard_home 2026-07-28 14:47:18 +00:00
Home Assistant Version Control 0fb13bdc25 .storage/lovelace.dashboard_home 2026-07-28 14:47:14 +00:00
Home Assistant Version Control b7a481914a .storage/lovelace.dashboard_home 2026-07-28 14:47:02 +00:00
Home Assistant Version Control 6ec20a0eeb .storage/lovelace.dashboard_home 2026-07-28 14:46:42 +00:00
Home Assistant Version Control d950d63d78 .storage/lovelace.dashboard_home 2026-07-28 14:46:34 +00:00
Home Assistant Version Control 7f9c2edffb .storage/lovelace.morning_hub 2026-07-28 14:44:28 +00:00
Home Assistant Version Control 323b1f8d62 .storage/lovelace.morning_hub 2026-07-28 14:44:18 +00:00
Home Assistant Version Control 9b37a6c929 .storage/lovelace.morning_hub 2026-07-28 14:43:06 +00:00
Home Assistant Version Control cb7279f57c .storage/lovelace.morning_hub 2026-07-28 14:42:10 +00:00
Home Assistant Version Control af3803e758 .storage/lovelace.morning_hub 2026-07-28 14:41:28 +00:00
Home Assistant Version Control a381017eb5 .storage/lovelace.morning_hub 2026-07-28 14:40:36 +00:00
Home Assistant Version Control 460b559b90 .storage/lovelace_resources 2026-07-28 14:39:06 +00:00
Home Assistant Version Control fb3fbc225c .storage/lovelace.morning_hub 2026-07-28 14:17:47 +00:00
Home Assistant Version Control a16ea9961d .storage/lovelace.morning_hub 2026-07-28 14:15:26 +00:00
Home Assistant Version Control 24d1f8db65 .storage/lovelace.morning_ipad 2026-07-28 14:14:40 +00:00
Home Assistant Version Control f23c9bd286 .storage/lovelace.dashboard_home 2026-07-28 12:47:13 +00:00
Home Assistant Version Control 8026ab2e67 .storage/lovelace.dashboard_home 2026-07-28 12:46:25 +00:00
Home Assistant Version Control 3dd23423b6 .storage/lovelace.dashboard_home 2026-07-27 22:02:56 +00:00
Home Assistant Version Control 689c5ebf3b .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 22:00:14 +00:00
Home Assistant Version Control 877a417e66 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:59:54 +00:00
Home Assistant Version Control 5fee42c330 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:56:04 +00:00
Home Assistant Version Control b196b87696 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:55:53 +00:00
Home Assistant Version Control bc0668e4e8 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:55:34 +00:00
Home Assistant Version Control 3fdd46bf7b .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:55:27 +00:00
Home Assistant Version Control 2ac4a89e95 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:55:21 +00:00
Home Assistant Version Control 7220b8fa97 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:55:14 +00:00
Home Assistant Version Control 7a643045f8 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:55:07 +00:00
Home Assistant Version Control dd89a1c92c .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:54:55 +00:00
Home Assistant Version Control 1707f04edd .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 21:54:47 +00:00
Home Assistant Version Control 8e7e87cfa5 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 20:52:46 +00:00
Home Assistant Version Control 6bce559dac automations.yaml 2026-07-27 20:45:27 +00:00
Home Assistant Version Control 0ad3a5f506 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 20:42:03 +00:00
Home Assistant Version Control 7015bc6954 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 20:41:57 +00:00
Home Assistant Version Control d929654067 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 20:41:49 +00:00
Home Assistant Version Control 297b7bf3c9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 20:41:31 +00:00
Home Assistant Version Control 4bf7c92f42 zigbee2mqtt/coordinator_backup.json 2026-07-27 20:41:07 +00:00
Home Assistant Version Control 170dff607b .storage/lovelace_resources 2026-07-27 17:12:30 +00:00
Home Assistant Version Control 3e54af0ca8 .storage/lovelace_resources 2026-07-27 17:09:14 +00:00
Home Assistant Version Control 84e0485b3b .ha_run.lock 2026-07-27 17:08:50 +00:00
Home Assistant Version Control 81e5034586 19 files 2026-07-27 17:07:54 +00:00
Home Assistant Version Control 854575c99b .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 16:40:08 +00:00
Home Assistant Version Control fa91608385 .storage/lovelace.dashboard_temp 2026-07-27 15:56:53 +00:00
Home Assistant Version Control 9f662fb5c0 .storage/lovelace.dashboard_temp 2026-07-27 15:55:55 +00:00
Home Assistant Version Control 4858c472f0 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:54:51 +00:00
Home Assistant Version Control f7154c671f .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:54:39 +00:00
Home Assistant Version Control 4c8535ecf9 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:53:17 +00:00
Home Assistant Version Control e92ad95049 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:52:37 +00:00
Home Assistant Version Control 714a1e6bb1 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:51:33 +00:00
Home Assistant Version Control 7ea6b8c52b .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:50:49 +00:00
Home Assistant Version Control 467a7ca5fe .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:46:43 +00:00
Home Assistant Version Control c79a91e77a .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:46:11 +00:00
Home Assistant Version Control c76941dbb1 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:46:03 +00:00
Home Assistant Version Control 487f1ca39a .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:45:45 +00:00
Home Assistant Version Control dc607b851c .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:44:35 +00:00
Home Assistant Version Control 43ddccf8d0 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:44:23 +00:00
Home Assistant Version Control f5b528d8d2 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:40:39 +00:00
Home Assistant Version Control 6c5a981c75 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:38:53 +00:00
Home Assistant Version Control aab806b54c .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:38:41 +00:00
Home Assistant Version Control 7643d3fcd3 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:37:29 +00:00
Home Assistant Version Control 71caceb227 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:37:21 +00:00
Home Assistant Version Control e43c617639 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:36:09 +00:00
Home Assistant Version Control 910708bd63 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:35:28 +00:00
Home Assistant Version Control 8750945394 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:35:15 +00:00
Home Assistant Version Control f4b8521ee6 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:35:03 +00:00
Home Assistant Version Control 682b4ec8a9 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:34:48 +00:00
Home Assistant Version Control a6d8163b9e .storage/lovelace.dashboard_temp 2026-07-27 15:26:28 +00:00
Home Assistant Version Control eb6cc2eeed .storage/lovelace.dashboard_temp 2026-07-27 15:21:32 +00:00
Home Assistant Version Control d2f003920b .storage/lovelace.dashboard_temp 2026-07-27 15:19:29 +00:00
Home Assistant Version Control cf8772ba90 .storage/lovelace.dashboard_temp 2026-07-27 15:16:15 +00:00
Home Assistant Version Control 7182b47561 .storage/lovelace.dashboard_temp 2026-07-27 15:15:47 +00:00
Home Assistant Version Control d0381a3e87 .storage/lovelace.dashboard_temp 2026-07-27 15:15:35 +00:00
Home Assistant Version Control 75d1cb6bef .storage/lovelace.dashboard_temp 2026-07-27 15:12:51 +00:00
Home Assistant Version Control 1bf131067f .storage/lovelace.dashboard_temp 2026-07-27 15:12:27 +00:00
Home Assistant Version Control 3f2afae894 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:09:03 +00:00
Home Assistant Version Control b4882d5b61 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:08:57 +00:00
Home Assistant Version Control 4b344a125d .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:08:05 +00:00
Home Assistant Version Control af877f75eb .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:07:51 +00:00
Home Assistant Version Control 7290e85f59 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:07:43 +00:00
Home Assistant Version Control a734127f5b .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:07:01 +00:00
Home Assistant Version Control 4b283a53b1 .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 15:06:21 +00:00
Home Assistant Version Control b3f5a8209a .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:05:19 +00:00
Home Assistant Version Control 3bb93e39b3 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:04:59 +00:00
Home Assistant Version Control 17321dc21b .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:04:47 +00:00
Home Assistant Version Control 54286d39c8 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 15:04:37 +00:00
Home Assistant Version Control a801a343cf .ha_mcp/logs/mcp_usage.jsonl, .storage/lovelace.dashboard_temp 2026-07-27 14:52:38 +00:00
Home Assistant Version Control 374f77d382 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 14:51:22 +00:00
Home Assistant Version Control 0410cd8e36 .ha_mcp/logs/mcp_usage.jsonl 2026-07-27 14:51:10 +00:00
Home Assistant Version Control 055bcdf374 .storage/lovelace_resources 2026-07-27 13:35:21 +00:00
Home Assistant Version Control c68073bd96 81 files 2026-07-27 13:32:05 +00:00
Home Assistant Version Control d5e5959b99 .ha_run.lock 2026-07-27 13:31:47 +00:00
Home Assistant Version Control 13cb612f61 121 files 2026-07-27 13:30:38 +00:00
Home Assistant Version Control e36b8a1a22 224 files 2026-07-27 13:30:34 +00:00
Home Assistant Version Control b5723aa856 61 files 2026-07-27 13:26:42 +00:00
Home Assistant Version Control 2b93ff5bb8 .storage/lovelace_resources 2026-07-27 12:49:11 +00:00
Home Assistant Version Control 54151795f8 www/community/homie-dashboard/config.js, www/community/homie-dashboard/homie-dashboard.html 2026-07-27 12:48:59 +00:00
Home Assistant Version Control 335a361f9b configuration.yaml 2026-07-26 23:29:25 +00:00
Home Assistant Version Control c602b70bbf .storage/lovelace.dashboard_home 2026-07-26 23:23:04 +00:00
Home Assistant Version Control 311079b6d7 .storage/lovelace.dashboard_home 2026-07-26 23:22:52 +00:00
Home Assistant Version Control 5385a67f21 automations.yaml 2026-07-26 23:20:28 +00:00
Home Assistant Version Control bf6f315905 .storage/lovelace.alarm_section 2026-07-26 22:06:49 +00:00
Home Assistant Version Control bc893ddf6e .storage/lovelace_resources 2026-07-26 22:05:03 +00:00
Home Assistant Version Control 2442165b3f www/community/lovelace-wallpanel/wallpanel.js, www/community/lovelace-wallpanel/wallpanel.js.gz 2026-07-26 22:04:53 +00:00
Home Assistant Version Control 18b84eb008 zigbee2mqtt/coordinator_backup.json 2026-07-26 20:41:06 +00:00
Home Assistant Version Control b4b4978e02 .storage/lovelace.dashboard_home 2026-07-26 18:52:23 +00:00
Home Assistant Version Control 1d34be2e06 .storage/lovelace.alarm_section 2026-07-26 01:44:44 +00:00
Home Assistant Version Control 0382cae4b8 .storage/lovelace.alarm_section 2026-07-26 01:44:00 +00:00
Home Assistant Version Control 38237da70b .storage/lovelace.dashboard_home 2026-07-26 01:43:06 +00:00
Home Assistant Version Control 08e39de070 .storage/lovelace.dashboard_home 2026-07-26 01:42:54 +00:00
Home Assistant Version Control 8df975708d automations.yaml 2026-07-26 01:35:01 +00:00
Home Assistant Version Control 644de150ff automations.yaml 2026-07-26 01:04:35 +00:00
Home Assistant Version Control fea7dc5698 .storage/lovelace_resources 2026-07-25 22:33:02 +00:00
Home Assistant Version Control b4d2da930a 4 files 2026-07-25 22:32:52 +00:00
Home Assistant Version Control 925f26bb5f zigbee2mqtt/coordinator_backup.json 2026-07-25 20:41:06 +00:00
Home Assistant Version Control 2031e12c81 automations.yaml 2026-07-25 12:16:14 +00:00
Home Assistant Version Control b84bc6688e 52 files 2026-07-25 02:41:58 +00:00
Home Assistant Version Control 3dc00b2d26 automations.yaml 2026-07-25 02:41:12 +00:00
Home Assistant Version Control 80522bc72c automations.yaml 2026-07-25 02:41:04 +00:00
Home Assistant Version Control 12b505bf3b automations.yaml 2026-07-25 02:40:52 +00:00
Home Assistant Version Control 221594c300 automations.yaml 2026-07-25 02:40:42 +00:00
Home Assistant Version Control 6cf2f20e3b .storage/lovelace_resources 2026-07-24 20:43:43 +00:00
Home Assistant Version Control 4e8ad5942f 2 files 2026-07-24 20:40:37 +00:00
Home Assistant Version Control da8b9e2a85 zigbee2mqtt/coordinator_backup.json 2026-07-24 20:36:38 +00:00
Home Assistant Version Control 081120cbe5 automations.yaml 2026-07-24 20:24:25 +00:00
Home Assistant Version Control 4d2963dcf6 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 20:20:11 +00:00
Home Assistant Version Control 9d3d6becda .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:19:03 +00:00
Home Assistant Version Control 14a4d4d8cf .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:18:14 +00:00
Home Assistant Version Control 803927ffb5 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:17:36 +00:00
Home Assistant Version Control 84e171b07e .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 20:16:50 +00:00
Home Assistant Version Control 572d109767 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:07:46 +00:00
Home Assistant Version Control 3ecd7ebae2 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:07:16 +00:00
Home Assistant Version Control 8bce91c682 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:06:10 +00:00
Home Assistant Version Control d60f6d6e42 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 20:05:44 +00:00
Home Assistant Version Control fd90e111a3 .storage/lovelace_resources 2026-07-24 20:05:06 +00:00
Home Assistant Version Control ce3a4ec3dd .storage/lovelace_resources 2026-07-24 20:01:47 +00:00
Home Assistant Version Control 9f1ae8d85a .ha_run.lock 2026-07-24 20:01:26 +00:00
Home Assistant Version Control 16491e7e54 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 19:56:47 +00:00
Home Assistant Version Control b2845b308d automations.yaml 2026-07-24 19:56:13 +00:00
Home Assistant Version Control 3051088420 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:54:35 +00:00
Home Assistant Version Control 93f3a01f87 automations.yaml 2026-07-24 19:51:15 +00:00
Home Assistant Version Control 54bbf64306 automations.yaml 2026-07-24 19:51:09 +00:00
Home Assistant Version Control 54b5a1c361 automations.yaml 2026-07-24 19:51:05 +00:00
Home Assistant Version Control b48742bf75 automations.yaml 2026-07-24 19:51:01 +00:00
Home Assistant Version Control ad98e76951 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:49:47 +00:00
Home Assistant Version Control 5b0256df7e .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 19:47:43 +00:00
Home Assistant Version Control 1616d9a5cb test_mcp_backup.yaml 2026-07-24 19:47:09 +00:00
Home Assistant Version Control 0add7d97d1 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:45:55 +00:00
Home Assistant Version Control 9e217d7eb6 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:45:37 +00:00
Home Assistant Version Control cae3551920 .ha_mcp/logs/mcp_usage.jsonl 2026-07-24 19:38:00 +00:00
Home Assistant Version Control eae7c288b7 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:37:48 +00:00
Home Assistant Version Control 16af69df51 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:37:38 +00:00
Home Assistant Version Control ac9aac5895 .ha_mcp/logs/mcp_usage.jsonl, automations.yaml 2026-07-24 19:37:22 +00:00
Home Assistant Version Control b57c5028f5 automations.yaml 2026-07-24 18:38:35 +00:00
Home Assistant Version Control 089964e27a automations.yaml 2026-07-24 18:37:36 +00:00
Home Assistant Version Control ea7ab7beff automations.yaml 2026-07-24 18:29:12 +00:00
Home Assistant Version Control af83ee3a14 automations.yaml 2026-07-24 18:28:56 +00:00
Home Assistant Version Control 80f285668c automations.yaml 2026-07-24 18:28:24 +00:00
Home Assistant Version Control 2e647f0323 configuration.yaml 2026-07-24 18:13:47 +00:00
Home Assistant Version Control 4cdd9de944 automations.yaml 2026-07-24 18:12:47 +00:00
Home Assistant Version Control 9893beb871 35 files 2026-07-24 18:04:57 +00:00
Home Assistant Version Control 94f334ff4e 10 files 2026-07-24 18:04:55 +00:00
Home Assistant Version Control fbab68a06d 22 files 2026-07-24 18:04:49 +00:00
Home Assistant Version Control 05c2b46b29 41 files 2026-07-24 18:04:47 +00:00
Home Assistant Version Control d8fab2f494 automations.yaml 2026-07-24 18:02:01 +00:00
Home Assistant Version Control 62b8ac2180 automations.yaml 2026-07-24 18:01:19 +00:00
Home Assistant Version Control 0ad40ef9df .storage/lovelace_resources 2026-07-24 18:00:53 +00:00
Home Assistant Version Control 19b79a8884 2 files 2026-07-24 17:57:49 +00:00
Home Assistant Version Control b70dd9d786 zigbee2mqtt/coordinator_backup.json 2026-07-24 17:53:50 +00:00
Home Assistant Version Control c0cab7156c automations.yaml 2026-07-24 17:43:50 +00:00
Home Assistant Version Control c507f929d0 .HA_VERSION, .ha_run.lock 2026-07-24 17:39:26 +00:00
Home Assistant Version Control 06ebdeaa28 automations.yaml 2026-07-24 17:31:42 +00:00
Home Assistant Version Control 453456e221 automations.yaml 2026-07-24 17:30:24 +00:00
Home Assistant Version Control f61ddb87bd automations.yaml 2026-07-24 17:29:38 +00:00
Home Assistant Version Control e8139ebd76 automations.yaml 2026-07-24 17:28:52 +00:00
Home Assistant Version Control 5ff55a2be6 configuration.yaml 2026-07-24 17:26:02 +00:00
Home Assistant Version Control 7a4d6ae56f automations.yaml 2026-07-24 17:22:12 +00:00
Home Assistant Version Control 5283ce6fbf automations.yaml 2026-07-24 17:21:20 +00:00
Home Assistant Version Control 2376bf013e automations.yaml 2026-07-24 17:17:35 +00:00
Home Assistant Version Control f1e616a581 automations.yaml 2026-07-24 17:16:11 +00:00
Home Assistant Version Control 208cdb3f5e automations.yaml 2026-07-24 17:15:31 +00:00
Home Assistant Version Control b96f3af237 automations.yaml 2026-07-24 17:14:03 +00:00
Home Assistant Version Control 0d7f7b8293 automations.yaml 2026-07-24 17:12:49 +00:00
Home Assistant Version Control 13f35373b6 automations.yaml 2026-07-24 17:11:55 +00:00
Home Assistant Version Control 51d9377a29 automations.yaml 2026-07-24 17:11:45 +00:00
Home Assistant Version Control ee41b88d37 .storage/lovelace_resources, automations.yaml 2026-07-24 17:11:23 +00:00
Home Assistant Version Control 61cf4f1456 automations.yaml 2026-07-24 17:10:59 +00:00
1056 changed files with 133185 additions and 54676 deletions
+1 -1
View File
@@ -1 +1 @@
2026.7.3 2026.8.1
+6
View File
@@ -8,6 +8,12 @@
!**/.??*.yaml !**/.??*.yaml
!*.yml !*.yml
!**/.??*.yml !**/.??*.yml
!*.md
!**/.??*.md
!*.json
!**/.??*.json
!*.js
!**/.??*.js
# Track specific .storage configuration files # Track specific .storage configuration files
!.storage/lovelace !.storage/lovelace
+9
View File
@@ -0,0 +1,9 @@
{
"enable_auto_backup": true,
"auto_backup_throttle_minutes": 0,
"auto_backup_retain_per_entity": 100,
"auto_backup_dir": "",
"auto_backup_calendar_lookahead_days": 7,
"enable_snapshot_delete": false,
"snapshot_delete_min_age_days": 7
}
+4
View File
@@ -0,0 +1,4 @@
{
"enable_tool_search": false,
"tool_search_max_results": 10
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
{"pid": 71, "version": 1, "ha_version": "2026.7.3", "start_ts": 1784912859.3136568} {"pid": 70, "version": 1, "ha_version": "2026.8.1", "start_ts": 1786340131.7940845}
+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-gemini-auth@latest"],
"model": "opencode/big-pickle",
"provider": {
"google": {
"options": {
"projectId": "gen-lang-client-0842463959",
"model": "google/gemini-2.5-flash"
}
}
}
}
@@ -0,0 +1,32 @@
# Stats Dashboard Session - 2026-07-27
## Dashboard: Stats (url_path: dashboard-temp)
## Changes Made
### 1. Added Memory Usage Gauge
- Added `sensor.system_monitor_memory_usage` gauge card next to CPU gauge
- Entity: `sensor.system_monitor_memory_usage`
- Severity: green(0), yellow(50), red(80)
- Both gauges set to `grid_options: {columns: 6}` for side-by-side layout
### 2. Combined CPU & Memory History Chart
- Updated existing CPU history-graph card to include both sensors
- Renamed to "System Resources"
- Entities:
- `sensor.home_assistant_cpu_usage` (CPU Usage)
- `sensor.system_monitor_memory_usage` (Memory Usage)
- Hours to show: 24
## Current System Status
- Memory usage: 61.0% (yellow zone, normal for 8GB system)
- Memory sensor reports percentage (%)
## File Locations
- Dashboard config: storage (url_path: dashboard-temp)
- Section index: views[0].sections[1] (System Health section)
- Gauge cards: cards[0] (CPU), cards[1] (Memory)
- History chart: cards[2] (System Resources)
## Notes
- `sensor.system_monitor_memory_usage` is also listed in the System Health entities card (views[0].sections[1].cards[3])
+45
View File
@@ -0,0 +1,45 @@
# Nest Snapshot Session — July 29, 2026
## Goal
Capture still images from Nest cameras (Google Nest SDM API) for AI (Ollama) analysis.
## What Was Built
Custom integration `nest_snapshot` at `/homeassistant/custom_components/nest_snapshot/`:
- `manifest.json`, `services.yaml`, `__init__.py`
- Uses WebRTC (`aiortc`) to grab one video frame → saves as JPEG
- Test automation `automation.test_nest_snapshot_capture`
## Bug Fixes Applied
### Fix 1: `Nest integration data not available`
- **Root cause:** HA 2026.7 stores Nest runtime data in `config_entry.runtime_data` (NestData dataclass), not in `hass.data["nest"]`. Camera entity `unique_id` has `-camera` suffix, but `device_manager.devices` is keyed by raw Google device name.
- **Changes:** Line 69: `config_entry.runtime_data` instead of `hass.data.get(...)`. Lines 78-81: `-camera` suffix stripping before device_manager lookup.
- **Status:** ✅ Fixed
### Fix 2: `aiortc` module not installed
- **Root cause:** `aiortc` and `Pillow` not in manifest.json requirements.
- **Changes:** Added `"requirements": ["aiortc", "Pillow"]` to manifest.json.
- **Status:** ✅ Fixed
### Fix 3: SDP format — "Offer must contain audio, video and application m lines"
- **Root cause:** Only added video transceiver; Google needs audio + video + application in order.
- **Changes:** Added `pc.addTransceiver("audio", ...)`, `pc.addTransceiver("video", ...)`, `pc.createDataChannel(...)`.
- **Status:** ✅ Fixed
### Fix 4 (current): `invalid literal for int() with base 10: 'udp'`
- **Root cause:** `aiortc` ICE candidate parser expects `candidate:ID <int:component> udp ...` but Google Nest API sends `candidate:ID udp ...` (missing component number).
- **Attempt 1:** Sanitize via `_sanitize_sdp()` checking `parts[1].lower() == "udp"` — didn't match actual format.
- **Attempt 2:** Changed to `not parts[1].isdigit()` — still failing. Possibly the line format is `a=candidate:udp ...` where `parts[0].split(':')[1]` is `udp` and `parts[1]` IS a digit.
- **Current state:** Added debug logging of raw SDP from Google. Need restart to see logs.
- **Status:** 🔴 In progress — add logging to see actual SDP format
## File States
- `__init__.py` — has `_sanitize_sdp()` with `not parts[1].isdigit()` check + debug logs
- `manifest.json` — has `["aiortc", "Pillow"]` requirements
- `services.yaml` — unchanged, defines `capture` service
- `AGENTS.local.md` — restart rule added (must ask each time)
## Pending Changes (committed but not tested after latest edit)
- `_sanitize_sdp()` now uses `not parts[1].isdigit()` (broader match)
- Debug logging added for raw + sanitized SDP
- Need restart → test → check system log for SDP content
+78 -17
View File
@@ -90,6 +90,16 @@
"name": { "name": {
"type": "entity" "type": "entity"
} }
},
{
"entity": "sensor.waze_time_waze_from_parents",
"name": "From Parents",
"color": "red"
},
{
"entity": "sensor.waze_time_waze_from_work",
"name": "From Work",
"color": "green"
} }
], ],
"hours_to_show": 48, "hours_to_show": 48,
@@ -181,7 +191,10 @@
}, },
{ {
"type": "tile", "type": "tile",
"entity": "input_boolean.meeting_lamp_override" "entity": "input_boolean.meeting_lamp_override",
"name": "Meeting L-Override",
"vertical": false,
"features_position": "bottom"
}, },
{ {
"type": "heading", "type": "heading",
@@ -388,6 +401,19 @@
} }
], ],
"features_position": "bottom" "features_position": "bottom"
},
{
"type": "tile",
"entity": "light.bedroom_lamp",
"show_entity_picture": false,
"hide_state": false,
"vertical": false,
"features": [
{
"type": "light-brightness"
}
],
"features_position": "bottom"
} }
] ]
}, },
@@ -717,6 +743,57 @@
} }
] ]
}, },
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Power Usage",
"heading_style": "title"
},
{
"type": "custom:power-gauge-card",
"entity": "sensor.meter00_power",
"max": 7500,
"grid_options": {
"columns": "full",
"rows": "auto"
}
},
{
"type": "custom:power-gauge-bar-card",
"entities": [
"sensor.meter00_power"
],
"max": 7500
},
{
"type": "custom:power-gauge-bar-card",
"entities": [
"sensor.pool_pump_estimated_power_draw_watts",
"sensor.hvac_real_time_power_draw_watts",
"sensor.basement_heater_power_draw_watts",
"sensor.water_heater_power_draw_watts",
"sensor.washer_power",
"sensor.freezer_power",
"sensor.fridge_power",
"sensor.general_power",
"sensor.computer_power",
"sensor.microwave_power",
"sensor.ninja_power",
"sensor.coffee_maker_power"
],
"unit": "W",
"max": 5000
},
{
"show_name": true,
"show_icon": true,
"type": "button",
"entity": "input_boolean.pool_pump_in_use"
}
]
},
{ {
"type": "grid", "type": "grid",
"cards": [ "cards": [
@@ -925,22 +1002,6 @@
} }
], ],
"column_span": 2 "column_span": 2
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Pool",
"heading_style": "title"
},
{
"show_name": true,
"show_icon": true,
"type": "button",
"entity": "input_boolean.pool_pump_in_use"
}
]
} }
], ],
"badges": [ "badges": [
+198 -48
View File
@@ -163,6 +163,200 @@
} }
] ]
}, },
{
"type": "grid",
"cards": [
{
"type": "gauge",
"entity": "sensor.home_assistant_cpu_usage",
"name": "CPU Usage",
"min": 0,
"max": 100,
"severity": {
"green": 0,
"yellow": 50,
"red": 80
},
"grid_options": {
"columns": 6
}
},
{
"type": "gauge",
"entity": "sensor.system_monitor_memory_usage",
"name": "Memory Usage",
"min": 0,
"max": 100,
"severity": {
"green": 0,
"yellow": 50,
"red": 80
},
"grid_options": {
"columns": 6
}
},
{
"type": "history-graph",
"entities": [
{
"entity": "sensor.home_assistant_cpu_usage",
"name": "CPU Usage"
},
{
"entity": "sensor.system_monitor_memory_usage",
"name": "Memory Usage"
}
],
"title": "System Resources",
"hours_to_show": 24,
"show_names": true,
"logarithmic_scale": false,
"expand_legend": false
},
{
"type": "history-graph",
"entities": [
{
"entity": "sensor.system_monitor_load_1_min",
"name": "Load 1m"
},
{
"entity": "sensor.system_monitor_load_5_min",
"name": "Load 5m"
},
{
"entity": "sensor.system_monitor_load_15_min",
"name": "Load 15m"
}
],
"title": "System Load",
"hours_to_show": 24
},
{
"type": "heading",
"heading": "System Health",
"heading_style": "title"
},
{
"type": "vertical-stack",
"cards": [
{
"type": "entities",
"title": "System Health",
"show_header_toggle": false,
"entities": [
{
"entity": "sensor.system_monitor_memory_usage",
"name": "Memory Usage"
},
{
"entity": "sensor.system_monitor_memory_free",
"name": "Memory Free"
},
{
"entity": "sensor.system_monitor_disk_use",
"name": "Disk Used"
},
{
"entity": "sensor.system_monitor_disk_free",
"name": "Disk Free"
},
{
"entity": "sensor.system_monitor_load_1_min",
"name": "Load 1 Minute"
},
{
"entity": "sensor.system_monitor_load_5_min",
"name": "Load 5 Minute"
},
{
"entity": "sensor.system_monitor_load_15_min",
"name": "Load 15 Minute"
},
{
"entity": "sensor.system_monitor_uptime"
},
{
"entity": "sensor.home_assistant_containers_active"
}
]
},
{
"type": "history-graph",
"entities": [
{
"entity": "sensor.home_assistant_enp1s0_rx"
},
{
"entity": "sensor.home_assistant_enp1s0_tx"
}
],
"title": "Network Traffic",
"hours_to_show": 24
},
{
"type": "entities",
"title": "Network Counters",
"entities": [
"sensor.system_monitor_packets_in_enp1s0",
"sensor.system_monitor_packets_out_enp1s0"
]
}
]
},
{
"type": "heading",
"icon": "mdi:printer-3d-nozzle",
"heading": "OctoPrint",
"heading_style": "title"
},
{
"type": "gauge",
"entity": "sensor.octoprint_cpu_usage",
"name": "CPU Usage",
"min": 0,
"max": 100,
"severity": {
"green": 0,
"yellow": 50,
"red": 80
},
"grid_options": {
"columns": 6
}
},
{
"type": "gauge",
"entity": "sensor.octoprint_memory_usage",
"name": "Memory Usage",
"min": 0,
"max": 100,
"severity": {
"green": 0,
"yellow": 50,
"red": 80
},
"grid_options": {
"columns": 6
}
},
{
"type": "history-graph",
"entities": [
{
"entity": "sensor.octoprint_wlx90de80348ee7_rx",
"name": "WiFi RX"
},
{
"entity": "sensor.octoprint_wlx90de80348ee7_tx",
"name": "WiFi TX"
}
],
"hours_to_show": 24
}
]
},
{ {
"type": "grid", "type": "grid",
"cards": [ "cards": [
@@ -308,11 +502,8 @@
"cards": [ "cards": [
{ {
"type": "heading", "type": "heading",
"heading": "New section" "heading": "Network Stats",
}, "heading_style": "title"
{
"type": "custom:album-slideshow-card",
"entity": "camera.album_slideshow_google_screensaver"
}, },
{ {
"type": "entities", "type": "entities",
@@ -343,48 +534,6 @@
} }
] ]
}, },
{
"type": "custom:mini-graph-card",
"title": "Network Traffic (24h)",
"entities": [
{
"entity": "sensor.gt_ax11000_wan_download_speed",
"name": "Download",
"color": "#2196F3"
},
{
"entity": "sensor.gt_ax11000_wan_upload_speed",
"name": "Upload",
"color": "#4CAF50"
}
],
"hours_to_show": 6,
"points_per_hour": 4,
"line_width": 4,
"fill": "fade",
"show": {
"graph": "line",
"fill": true,
"state": false,
"name": false,
"extrema": false,
"average": false
}
},
{
"type": "picture-glance",
"title": "Backyard Shed",
"camera_image": "camera.backyard_shed",
"camera_view": "live",
"entities": [],
"tap_action": {
"action": "call-service",
"service": "camera.turn_on",
"target": {
"entity_id": "camera.backyard_shed"
}
}
},
{ {
"type": "statistics-graph", "type": "statistics-graph",
"entities": [ "entities": [
@@ -405,7 +554,8 @@
"cards": [ "cards": [
{ {
"type": "heading", "type": "heading",
"heading": "New section" "heading": "Power Usage",
"heading_style": "title"
}, },
{ {
"type": "custom:treemap-card", "type": "custom:treemap-card",
+20 -2
View File
@@ -124,7 +124,7 @@
}, },
{ {
"type": "custom:button-card", "type": "custom:button-card",
"entity": "sensor.waze_to_work_travel_time", "entity": "sensor.waze_time_waze_to_work_travel_time",
"show_name": true, "show_name": true,
"show_label": true, "show_label": true,
"name": "Waze", "name": "Waze",
@@ -482,7 +482,7 @@
{ {
"type": "statistics-graph", "type": "statistics-graph",
"entities": [ "entities": [
"sensor.waze_to_work_travel_time_waze_to_parents" "sensor.waze_time_waze_to_parents"
], ],
"days_to_show": 1, "days_to_show": 1,
"period": "hour", "period": "hour",
@@ -568,6 +568,24 @@
"camera_image": "camera.album_slideshow_google_screensaver" "camera_image": "camera.album_slideshow_google_screensaver"
} }
] ]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "New section"
},
{
"type": "custom:power-gauge-card",
"entity": "sensor.meter00_power",
"max": 10000,
"grid_options": {
"columns": 9,
"rows": 1
}
}
]
} }
] ]
} }
+1 -1
View File
@@ -131,7 +131,7 @@
}, },
{ {
"type": "custom:button-card", "type": "custom:button-card",
"entity": "sensor.waze_to_work_travel_time", "entity": "sensor.waze_time_waze_to_work_travel_time",
"show_name": true, "show_name": true,
"show_label": true, "show_label": true,
"name": "Waze", "name": "Waze",
+808
View File
@@ -0,0 +1,808 @@
{
"version": 1,
"minor_version": 1,
"key": "lovelace.printer_stats",
"data": {
"config": {
"views": [
{
"title": "Print",
"path": "print",
"type": "sections",
"max_columns": 4,
"sections": [
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Printer Status",
"icon": "mdi:printer-3d-nozzle"
},
{
"type": "custom:webrtc-camera",
"url": "octoprint",
"mode": "mse",
"grid_options": {
"columns": "full"
}
},
{
"type": "tile",
"entity": "binary_sensor.octoprint_printing",
"name": "Printing",
"icon": "mdi:printer-3d",
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "binary_sensor.octoprint_connected",
"name": "Connected",
"icon": "mdi:lan-connect",
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "sensor.octoprint_print_status",
"name": "Status",
"icon": "mdi:state-machine",
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "sensor.octoprint_last_event",
"name": "Last Event",
"icon": "mdi:history",
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "sensor.octoprint_print_file",
"name": "File",
"icon": "mdi:file-code",
"grid_options": {
"columns": "full"
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Print Progress",
"icon": "mdi:progress-clock"
},
{
"type": "gauge",
"entity": "sensor.octoprint_print_progress",
"name": "Progress",
"min": 0,
"max": 100,
"unit": "%",
"severity": {
"green": 0,
"yellow": 40,
"red": 90
},
"grid_options": {
"columns": 6,
"rows": 3
}
},
{
"type": "custom:mushroom-template-card",
"primary": "{% set s = states('sensor.octoprint_elapsed') | float(0) %}{% set h = (s / 3600) | int %}{% set m = ((s % 3600) / 60) | int %}Elapsed: {% if h %}{{ h }} hr {{ m }} min{% else %}{{ m }} min{% endif %}",
"name": "Elapsed",
"icon": "mdi:clock-start",
"grid_options": {
"columns": 6
}
},
{
"type": "custom:mushroom-template-card",
"primary": "{% set s = states('sensor.octoprint_time_left') | float(0) %}{% set h = (s / 3600) | int %}{% set m = ((s % 3600) / 60) | int %}Remaining: {% if h %}{{ h }} hr {{ m }} min{% else %}{{ m }} min{% endif %}",
"name": "Remaining",
"icon": "mdi:clock-end",
"grid_options": {
"columns": 6
}
},
{
"type": "markdown",
"content": "{% set finish = states('sensor.octoprint_approximate_completion_time') | as_datetime %}{% if finish %}<ha-icon icon='mdi:clock-outline'></ha-icon> **Est. finish:** {{ (as_local(finish)).strftime('%I:%M %p').lstrip('0') }}{% else %}<ha-icon icon='mdi:clock-outline'></ha-icon> **Est. finish:** —{% endif %}",
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "sensor.octoprint_current_z",
"name": "Current Z",
"icon": "mdi:axis-z-arrow",
"grid_options": {
"columns": 6
}
},
{
"type": "sensor",
"entity": "sensor.octoprint_print_progress",
"name": "Progress History",
"graph": "line",
"hours_to_show": 24,
"detail": 1,
"grid_options": {
"columns": "full"
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Temperatures",
"icon": "mdi:thermometer"
},
{
"type": "gauge",
"entity": "sensor.octoprint_tool_0_temperature",
"name": "Nozzle",
"min": 0,
"max": 260,
"unit": "°C",
"severity": {
"green": 0,
"yellow": 180,
"red": 240
},
"grid_options": {
"columns": 4
}
},
{
"type": "gauge",
"entity": "sensor.octoprint_bed_temperature",
"name": "Bed",
"min": 0,
"max": 120,
"unit": "°C",
"severity": {
"green": 0,
"yellow": 60,
"red": 100
},
"grid_options": {
"columns": 4
}
},
{
"type": "gauge",
"entity": "sensor.octoprint_soc_temperature",
"name": "SoC",
"min": 0,
"max": 100,
"unit": "°C",
"severity": {
"green": 0,
"yellow": 70,
"red": 90
},
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_tool_0_target",
"name": "Nozzle Target",
"icon": "mdi:printer-3d-nozzle",
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "sensor.octoprint_bed_target",
"name": "Bed Target",
"icon": "mdi:radiator",
"grid_options": {
"columns": 6
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Controls",
"icon": "mdi:gesture-tap-button"
},
{
"type": "tile",
"entity": "switch.octoprint_pause_print",
"name": "Pause",
"icon": "mdi:pause",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "switch.octoprint_connect_to_printer",
"name": "Connect",
"icon": "mdi:lan-connect",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "switch.octoprint_camera_snapshot",
"name": "Snapshot",
"icon": "mdi:camera",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "button.octoprint_cancel_print",
"name": "Cancel Print",
"icon": "mdi:cancel",
"tap_action": {
"action": "perform-action",
"perform_action": "button.press",
"target": {
"entity_id": "button.octoprint_cancel_print"
}
},
"grid_options": {
"columns": 6
}
},
{
"type": "tile",
"entity": "button.octoprint_emergency_stop",
"name": "Emergency Stop",
"icon": "mdi:stop-circle",
"tap_action": {
"action": "perform-action",
"perform_action": "button.press",
"target": {
"entity_id": "button.octoprint_emergency_stop"
}
},
"grid_options": {
"columns": 6
}
},
{
"type": "button",
"name": "GCode Viewer",
"icon": "mdi:cube-outline",
"tap_action": {
"action": "url",
"url_path": "https://ender5pro.duckdns.org/#gcode"
},
"grid_options": {
"columns": 6
}
},
{
"type": "button",
"name": "Pretty GCode Viewer",
"icon": "mdi:cube-outline",
"tap_action": {
"action": "url",
"url_path": "https://ender5pro.duckdns.org/#tab_plugin_prettygcode"
},
"grid_options": {
"columns": 6
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Totals",
"icon": "mdi:chart-box-outline"
},
{
"type": "tile",
"entity": "sensor.octoprint_printer_print_time_today",
"name": "Print Time Today",
"icon": "mdi:clock-start",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_printer_print_time_this_week",
"name": "Print Time This Week",
"icon": "mdi:calendar-week",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_printer_print_time_last_7_days",
"name": "Print Time Last 7 Days",
"icon": "mdi:clock-history",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_printer_prints_today",
"name": "Prints Today",
"icon": "mdi:counter",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_printer_prints_this_week",
"name": "Prints This Week",
"icon": "mdi:counter",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_printer_prints_last_7_days",
"name": "Prints Last 7 Days",
"icon": "mdi:counter",
"grid_options": {
"columns": 4
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Filament Usage",
"icon": "mdi:chart-donut"
},
{
"type": "tile",
"entity": "sensor.octoprint_last_print_filament",
"name": "Last Job",
"icon": "mdi:history",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_filament_daily",
"name": "Filament Today",
"icon": "mdi:chart-donut",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_filament_weekly",
"name": "Filament This Week",
"icon": "mdi:calendar-week",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_filament_monthly",
"name": "Filament This Month",
"icon": "mdi:calendar-month",
"grid_options": {
"columns": 4
}
},
{
"type": "tile",
"entity": "sensor.octoprint_filament_used_total",
"name": "Grand Total",
"icon": "mdi:chart-pie",
"grid_options": {
"columns": 4
}
}
]
}
]
},
{
"title": "History",
"path": "history",
"type": "sections",
"max_columns": 2,
"sections": [
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Temperature History",
"icon": "mdi:chart-line-variant"
},
{
"type": "history-graph",
"title": "Temperatures (24h)",
"hours_to_show": 24,
"show_names": true,
"expand_legend": true,
"entities": [
{
"entity": "sensor.octoprint_tool_0_temperature",
"name": "Nozzle",
"color": "#ef5350"
},
{
"entity": "sensor.octoprint_tool_0_target",
"name": "Nozzle Target",
"color": "#ffab91"
},
{
"entity": "sensor.octoprint_bed_temperature",
"name": "Bed",
"color": "#42a5f5"
},
{
"entity": "sensor.octoprint_bed_target",
"name": "Bed Target",
"color": "#90caf9"
}
],
"grid_options": {
"columns": "full"
}
},
{
"type": "history-graph",
"title": "Temperatures (7 days)",
"hours_to_show": 168,
"show_names": true,
"expand_legend": true,
"entities": [
{
"entity": "sensor.octoprint_tool_0_temperature",
"name": "Nozzle",
"color": "#ef5350"
},
{
"entity": "sensor.octoprint_bed_temperature",
"name": "Bed",
"color": "#42a5f5"
}
],
"grid_options": {
"columns": "full"
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Print Activity",
"icon": "mdi:chart-box-outline"
},
{
"type": "custom:apexcharts-card",
"header": {
"show": true,
"title": "Z Position (24h)",
"show_states": true,
"colorize_states": true
},
"graph_span": "24h",
"series": [
{
"entity": "sensor.octoprint_current_z",
"name": "Current Z",
"color": "#ab47bc",
"type": "line",
"curve": "straight",
"fill_raw": "last"
}
],
"grid_options": {
"columns": "full"
},
"apex_config": {
"chart": {
"height": 300
},
"stroke": {
"width": 1
}
}
},
{
"type": "history-graph",
"title": "Print Progress (24h)",
"hours_to_show": 24,
"show_names": true,
"entities": [
{
"entity": "sensor.octoprint_print_progress",
"name": "Progress",
"color": "#66bb6a"
}
],
"grid_options": {
"columns": "full"
}
},
{
"type": "history-graph",
"title": "Print Duration (24h)",
"hours_to_show": 24,
"show_names": true,
"entities": [
{
"entity": "sensor.octoprint_elapsed",
"name": "Elapsed",
"color": "#26c6da"
},
{
"entity": "sensor.octoprint_time_left",
"name": "Remaining",
"color": "#ffa726"
}
],
"grid_options": {
"columns": "full"
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Print History",
"icon": "mdi:history"
},
{
"type": "markdown",
"content": "**Successful:** {{ states('sensor.octoprint_successful_prints_count') }} | **Failed:** {{ states('sensor.octoprint_failed_prints_count') }}"
},
{
"type": "history-graph",
"title": "Printing State (7 days)",
"hours_to_show": 168,
"show_names": true,
"entities": [
{
"entity": "binary_sensor.octoprint_printing",
"name": "Printing",
"color": "#66bb6a"
}
],
"grid_options": {
"columns": "full"
}
},
{
"type": "custom:apexcharts-card",
"header": {
"show": true,
"title": "Print Outcomes (30 days)",
"show_states": true,
"colorize_states": true
},
"graph_span": "30d",
"apex_config": {
"chart": {
"type": "bar",
"stacked": true,
"height": 300
},
"plotOptions": {
"bar": {
"columnWidth": "50%"
}
},
"dataLabels": {
"enabled": true
},
"yaxis": {
"tickAmount": 4,
"labels": {
"minWidth": 40
}
},
"legend": {
"show": true
}
},
"series": [
{
"entity": "sensor.octoprint_successful_prints_count",
"name": "Successful",
"color": "#66bb6a",
"type": "column",
"group_by": {
"func": "diff",
"duration": "1d",
"start_with_last": true
}
},
{
"entity": "sensor.octoprint_failed_prints_count",
"name": "Failed",
"color": "#ef5350",
"type": "column",
"group_by": {
"func": "diff",
"duration": "1d",
"start_with_last": true
}
}
],
"grid_options": {
"columns": "full"
},
"span": {
"end": "day"
}
},
{
"type": "markdown",
"title": "Recent Prints",
"content": "{% for j in (state_attr('sensor.octoprint_recent_prints', 'allPrintJobs') | default([]))[:5] %}\n{% set d = j.get('duration', 0) | int %}\n- **{{ j.fileName }}** — {{ j.printStatusResult | title }}, {{ (d / 3600) | int }}h {{ ((d % 3600) / 60) | int }}m, {{ j.get('filamentModels', {}).get('total', {}).get('usedLength', 0) | round(0) }}mm\n{% endfor %}"
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Filament Usage",
"icon": "mdi:spool"
},
{
"type": "custom:apexcharts-card",
"header": {
"show": true,
"title": "Filament Usage (30 days)",
"show_states": true,
"colorize_states": true
},
"graph_span": "30d",
"apex_config": {
"chart": {
"type": "bar",
"height": 300
},
"plotOptions": {
"bar": {
"columnWidth": "50%"
}
},
"dataLabels": {
"enabled": false
},
"yaxis": {
"tickAmount": 4,
"labels": {
"minWidth": 40
}
}
},
"series": [
{
"entity": "sensor.octoprint_filament_daily",
"name": "Used (mm)",
"color": "#26c6da",
"type": "column",
"group_by": {
"func": "last",
"duration": "1d",
"start_with_last": true
}
},
{
"entity": "sensor.octoprint_filament_used_total",
"name": "Total (mm)",
"color": "#ab47bc",
"type": "line",
"curve": "straight",
"group_by": {
"func": "last",
"duration": "1d",
"start_with_last": true
}
},
{
"entity": "sensor.octoprint_filament_weekly",
"name": "Weekly (mm)",
"color": "#ffca28",
"type": "column",
"group_by": {
"func": "last",
"duration": "1d",
"start_with_last": true
}
}
],
"grid_options": {
"columns": "full"
},
"span": {
"end": "day"
}
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "OctoPrint Host",
"icon": "mdi:server"
},
{
"type": "tile",
"entity": "sensor.octoprint_disk_usage",
"icon": "mdi:harddisk"
},
{
"type": "tile",
"entity": "sensor.octoprint_cpu_usage",
"icon": "mdi:cpu-64-bit"
},
{
"type": "tile",
"entity": "sensor.octoprint_memory_usage",
"icon": "mdi:memory"
},
{
"type": "tile",
"entity": "sensor.octoprint_core_0_temperature",
"icon": "mdi:thermometer"
},
{
"type": "tile",
"entity": "sensor.octoprint_uptime",
"icon": "mdi:clock-outline"
}
]
}
]
}
]
}
}
}
+9
View File
@@ -84,6 +84,15 @@
"require_admin": false, "require_admin": false,
"mode": "storage", "mode": "storage",
"url_path": "dashboard-music" "url_path": "dashboard-music"
},
{
"id": "printer_stats",
"url_path": "printer-stats",
"title": "3D Printer",
"require_admin": false,
"show_in_sidebar": true,
"icon": "mdi:printer-3d-nozzle",
"mode": "storage"
} }
] ]
} }
+54 -39
View File
@@ -6,7 +6,7 @@
"items": [ "items": [
{ {
"id": "cc55565add58413bbcadba9f9cf8caba", "id": "cc55565add58413bbcadba9f9cf8caba",
"url": "/hacsfiles/lovelace-mushroom/mushroom.js?hacstag=444350375511", "url": "/hacsfiles/lovelace-mushroom/mushroom.js?hacstag=444350375522",
"type": "module" "type": "module"
}, },
{ {
@@ -31,7 +31,7 @@
}, },
{ {
"id": "53837b51a371459b95ffc0989ce615fb", "id": "53837b51a371459b95ffc0989ce615fb",
"url": "/hacsfiles/calendar-card-pro/calendar-card-pro.js?hacstag=939311749320", "url": "/hacsfiles/calendar-card-pro/calendar-card-pro.js?hacstag=939311749340",
"type": "module" "type": "module"
}, },
{ {
@@ -41,7 +41,7 @@
}, },
{ {
"id": "0b28e2d01d0d4033b2f0a339cc7d86c1", "id": "0b28e2d01d0d4033b2f0a339cc7d86c1",
"url": "/ha_washdata/ha-washdata-card.js?v=1781361396", "url": "/ha_washdata/ha-washdata-card.js?v=1785159024",
"type": "module" "type": "module"
}, },
{ {
@@ -69,11 +69,6 @@
"url": "/local/thermostat-pro-timeline.js?v=56675817588421", "url": "/local/thermostat-pro-timeline.js?v=56675817588421",
"type": "module" "type": "module"
}, },
{
"id": "5447aa1e0b934b57b58b98751c3c3350",
"url": "/hacsfiles/homie-dashboard/homie-dashboard.js?hacstag=1221720415400",
"type": "module"
},
{ {
"id": "9a535448bf5645889b43fbdf481bb225", "id": "9a535448bf5645889b43fbdf481bb225",
"url": " /local/community/homie-dashboard/homie-dashboard.js", "url": " /local/community/homie-dashboard/homie-dashboard.js",
@@ -86,122 +81,122 @@
}, },
{ {
"id": "88b90f2b1d6b45f0b44bee786ee1a525", "id": "88b90f2b1d6b45f0b44bee786ee1a525",
"url": "/taskmate/taskmate-attr-resolver.js?v=5.0.1", "url": "/taskmate/taskmate-attr-resolver.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "0796c92931dd458e81dc9c2677248274", "id": "0796c92931dd458e81dc9c2677248274",
"url": "/taskmate/taskmate-localize.js?v=5.0.1", "url": "/taskmate/taskmate-localize.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "d2e281920ac7409583eafff1f1db69bd", "id": "d2e281920ac7409583eafff1f1db69bd",
"url": "/taskmate/taskmate-design.js?v=5.0.1", "url": "/taskmate/taskmate-design.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "9eae9632f0734480be5edd784b030673", "id": "9eae9632f0734480be5edd784b030673",
"url": "/taskmate/taskmate-badges-card.js?v=5.0.1", "url": "/taskmate/taskmate-badges-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "5df49cd8a4eb420497b5df22cb31362c", "id": "5df49cd8a4eb420497b5df22cb31362c",
"url": "/taskmate/taskmate-child-card.js?v=5.0.1", "url": "/taskmate/taskmate-child-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "b44c87d0d74f468cb96c5eabc340f9ee", "id": "b44c87d0d74f468cb96c5eabc340f9ee",
"url": "/taskmate/taskmate-rewards-card.js?v=5.0.1", "url": "/taskmate/taskmate-rewards-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "787a96f9c30548708165a48457c99feb", "id": "787a96f9c30548708165a48457c99feb",
"url": "/taskmate/taskmate-approvals-card.js?v=5.0.1", "url": "/taskmate/taskmate-approvals-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "84031597de424ad68e7c2bc66d06b72e", "id": "84031597de424ad68e7c2bc66d06b72e",
"url": "/taskmate/taskmate-points-card.js?v=5.0.1", "url": "/taskmate/taskmate-points-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "02613225844746b699bfbfac9642eca2", "id": "02613225844746b699bfbfac9642eca2",
"url": "/taskmate/taskmate-reorder-card.js?v=5.0.1", "url": "/taskmate/taskmate-reorder-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "7a06a07e17ba4b31b712bc91b77360b4", "id": "7a06a07e17ba4b31b712bc91b77360b4",
"url": "/taskmate/taskmate-overview-card.js?v=5.0.1", "url": "/taskmate/taskmate-overview-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "08b42b53b33b4fa88db932455cf8d5aa", "id": "08b42b53b33b4fa88db932455cf8d5aa",
"url": "/taskmate/taskmate-activity-card.js?v=5.0.1", "url": "/taskmate/taskmate-activity-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "15907eff51784acdba88ff694b574509", "id": "15907eff51784acdba88ff694b574509",
"url": "/taskmate/taskmate-streak-card.js?v=5.0.1", "url": "/taskmate/taskmate-streak-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "1bd6bb5c0a6d4f0d916e3d82cb7fac39", "id": "1bd6bb5c0a6d4f0d916e3d82cb7fac39",
"url": "/taskmate/taskmate-weekly-card.js?v=5.0.1", "url": "/taskmate/taskmate-weekly-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "289ce5943f5a4972a593697db4c96ece", "id": "289ce5943f5a4972a593697db4c96ece",
"url": "/taskmate/taskmate-graph-card.js?v=5.0.1", "url": "/taskmate/taskmate-graph-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "d2904acee4c74a398dcc7b996c23e7e7", "id": "d2904acee4c74a398dcc7b996c23e7e7",
"url": "/taskmate/taskmate-reward-progress-card.js?v=5.0.1", "url": "/taskmate/taskmate-reward-progress-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "46d378736fd54a26be253f2dfb27202e", "id": "46d378736fd54a26be253f2dfb27202e",
"url": "/taskmate/taskmate-leaderboard-card.js?v=5.0.1", "url": "/taskmate/taskmate-leaderboard-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "db11ae36457842fa826c7991e1d9c6f4", "id": "db11ae36457842fa826c7991e1d9c6f4",
"url": "/taskmate/taskmate-parent-dashboard-card.js?v=5.0.1", "url": "/taskmate/taskmate-parent-dashboard-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "ce85f301b59a412e9abfe5ffd51cb9a2", "id": "ce85f301b59a412e9abfe5ffd51cb9a2",
"url": "/taskmate/taskmate-penalties-card.js?v=5.0.1", "url": "/taskmate/taskmate-penalties-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "1959e1629de2422daa8adaf87069c288", "id": "1959e1629de2422daa8adaf87069c288",
"url": "/taskmate/taskmate-bonuses-card.js?v=5.0.1", "url": "/taskmate/taskmate-bonuses-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "2548524b269c4959bc7e0e967df943af", "id": "2548524b269c4959bc7e0e967df943af",
"url": "/taskmate/taskmate-points-display-card.js?v=5.0.1", "url": "/taskmate/taskmate-points-display-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "36ada49368db4187a283fbbbef45454f", "id": "36ada49368db4187a283fbbbef45454f",
"url": "/taskmate/taskmate-calendar-card.js?v=5.0.1", "url": "/taskmate/taskmate-calendar-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "67c32687acd2497b90030ef141f4b6db", "id": "67c32687acd2497b90030ef141f4b6db",
"url": "/taskmate/taskmate-photo-gallery-card.js?v=5.0.1", "url": "/taskmate/taskmate-photo-gallery-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "6f0c8348a91f4b74a9b846ab3f62621f", "id": "6f0c8348a91f4b74a9b846ab3f62621f",
"url": "/taskmate/taskmate-family-goal-card.js?v=5.0.1", "url": "/taskmate/taskmate-family-goal-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "e92ef0caff41454e9f49ea966ed99e41", "id": "e92ef0caff41454e9f49ea966ed99e41",
"url": "/hacsfiles/lovelace-multiple-entity-row/multiple-entity-row.js?hacstag=178921037471", "url": "/hacsfiles/lovelace-multiple-entity-row/multiple-entity-row.js?hacstag=1789210374100",
"type": "module" "type": "module"
}, },
{ {
@@ -211,7 +206,7 @@
}, },
{ {
"id": "d3c3e144a91247ce8ac524814737d7f8", "id": "d3c3e144a91247ce8ac524814737d7f8",
"url": "/hacsfiles/lovelace-wallpanel/wallpanel.js?hacstag=3095064164651", "url": "/hacsfiles/lovelace-wallpanel/wallpanel.js?hacstag=3095064164660",
"type": "module" "type": "module"
}, },
{ {
@@ -261,12 +256,12 @@
}, },
{ {
"id": "8713ea9c008e4270bb28085eed5be959", "id": "8713ea9c008e4270bb28085eed5be959",
"url": "/hacsfiles/Statistics-Graph-Chart-Card/statistics-graph-chart-card.js?hacstag=1034932856330", "url": "/hacsfiles/Statistics-Graph-Chart-Card/statistics-graph-chart-card.js?hacstag=1034932856401",
"type": "module" "type": "module"
}, },
{ {
"id": "6c3f7d87683d4473b5dc8fe8177535f6", "id": "6c3f7d87683d4473b5dc8fe8177535f6",
"url": "/hacsfiles/simple-thermostat/simple-thermostat.js?hacstag=1230152807410", "url": "/hacsfiles/simple-thermostat/simple-thermostat.js?hacstag=1230152807420",
"type": "module" "type": "module"
}, },
{ {
@@ -286,16 +281,36 @@
}, },
{ {
"id": "73dbd2de03de4530b451a55bfe6c46cf", "id": "73dbd2de03de4530b451a55bfe6c46cf",
"url": "/taskmate/taskmate-routine-card.js?v=5.0.1", "url": "/taskmate/taskmate-routine-card.js?v=5.0.4",
"type": "module" "type": "module"
}, },
{ {
"id": "af4aca87b12749c38fcd24cc20a0f3a0", "id": "24acdbe1f5fb4bbdb2f16b69d515d549",
"url": "/album_slideshow_static/album-slideshow-card.js?v=1.6.0", "url": "/hacsfiles/ha-power-gauge/ha-power-gauge.js?hacstag=1233333695024",
"type": "module" "type": "module"
}, },
{ {
"id": "d04da6163ea2434797129803283d9aa4", "id": "9d164a6504b2427ba34497d5bf035fb4",
"url": "/climate_scheduler/static/climate-scheduler-card.js?v=1.15.1",
"type": "module"
},
{
"id": "630cb889ebde4f41a2caa24597e156a7",
"url": "/climate_scheduler/static/climate-scheduler-card.js?v=1.15.1",
"type": "module"
},
{
"id": "488d448822ab42869df9a07fbb87d1ed",
"url": "/album_slideshow_static/album-slideshow-card.js?v=1.7.1",
"type": "module"
},
{
"id": "8202c7b2a7bd4c3e87e57bcd3c97e818",
"url": "/local/gcode_viewer_card.js",
"type": "module"
},
{
"id": "b1ac81b582d14a7abd92ce53b5481b8a",
"url": "/climate_scheduler/static/climate-scheduler-card.js?v=1.15.1", "url": "/climate_scheduler/static/climate-scheduler-card.js?v=1.15.1",
"type": "module" "type": "module"
} }
@@ -0,0 +1,12 @@
{
"name": "Dishwasher",
"device_id": 150633095332665,
"type": 225,
"protocol": 3,
"ip_address": "192.168.1.83",
"port": 6444,
"model": "7600004A",
"subtype": 3,
"token": "2a146cafc4951b1317096d6dfd3bde6bc32aad40cdb9d60d51dcc99f8abbab4ed75331e2bc4e3dfb3664b4cf68b0b5c60ee4453bbe1d48619cc60c3483229395",
"key": "0725ef104dbe450e83d0abaa3701f112d7771d10a9cb4306bc086718be8e684d"
}
@@ -0,0 +1,34 @@
{
"aliases": [
"Google Nest Mini"
],
"calculation_enabled_condition": "{{ is_state('[[entity]]', 'playing') }}",
"calculation_strategy": "linear",
"created_at": "2022-10-05T10:14:54Z",
"device_type": "smart_speaker",
"linear_config": {
"calibrate": [
"0 -> 2.01",
"10 -> 2.01",
"20 -> 2.04",
"30 -> 2.10",
"40 -> 2.26",
"50 -> 2.49",
"60 -> 2.83",
"70 -> 3.13",
"80 -> 3.37",
"90 -> 3.50",
"100 -> 3.66"
]
},
"measure_description": "Streamed 'Radiohead - National Anthem' using spotify, and took average measurements using the measure.py tool on different volume levels",
"measure_device": "Shelly Plug S",
"measure_method": "manual",
"name": "Nest Mini",
"standby_power": 1.65,
"author_info": {
"name": "Daniel O'Connor",
"email": "daniel.oconnor@gmail.com",
"github": "CloCkWeRX"
}
}
@@ -0,0 +1,23 @@
{
"aliases": [
"TRADFRI bulb GU10 WS 345lm",
"TRADFRIbulbGU10WS345lm"
],
"calculation_strategy": "lut",
"created_at": "2022-01-28T15:48:57Z",
"device_type": "light",
"measure_description": "Measured with utils/measure script",
"measure_device": "Shelly Plug S",
"measure_method": "script",
"measure_settings": {
"SAMPLE_COUNT": 3,
"SLEEP_TIME": 6,
"VERSION": "master"
},
"name": "TRADFRI bulb GU10 345 lumen, dimmable, white spectrum",
"standby_power": 0.2,
"author_info": {
"name": "giu889",
"github": "giu889"
}
}
@@ -0,0 +1,22 @@
{
"aliases": [
"TRADFRI bulb GU10 WW 345lm"
],
"calculation_strategy": "lut",
"created_at": "2025-12-22T22:20:22Z",
"device_type": "light",
"measure_description": "Measured with utils/measure script. Used 40W incandescent bulb as dummy load.",
"measure_device": "Shelly 1PM Mini",
"measure_method": "script",
"measure_settings": {
"SAMPLE_COUNT": 2,
"SLEEP_TIME": 3,
"VERSION": "v1.19.5:docker"
},
"name": "TRADFRI bulb GU10 WW 345lm",
"standby_power": 0.1,
"author_info": {
"name": "Peklaa",
"github": "Peklaa"
}
}
@@ -0,0 +1,19 @@
{
"calculation_strategy": "lut",
"created_at": "2024-04-12T08:07:57Z",
"device_type": "light",
"measure_description": "Measured with utils/measure script",
"measure_device": "TP-Link Tapo P110",
"measure_method": "script",
"measure_settings": {
"SAMPLE_COUNT": 4,
"SLEEP_TIME": 5,
"VERSION": "v1.10.0:docker"
},
"name": "TRADFRI bulb GU10 WS 345 lm, dimmable, white spectrum",
"standby_power": 0.2,
"author_info": {
"name": "martinkura-svk",
"github": "martinkura-svk"
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
{
"calculation_strategy": "lut",
"created_at": "2025-10-28T04:32:28Z",
"device_type": "light",
"measure_description": "Measured with utils/measure script",
"measure_device": "Shelly Plus Plug S",
"measure_method": "script",
"measure_settings": {
"SAMPLE_COUNT": 4,
"SLEEP_TIME": 3,
"VERSION": "v1.17.24:docker"
},
"name": "Smart Bulb A80 E27 922-65 RGB (type SHRGB, model 8719514554634, 18.5 W, 220-240 V, 50/60 Hz, 2452 lm @ 4000K, CRI: 90, beam angle: 360°)",
"standby_power": 0.31,
"author_info": {
"name": "schuppan",
"github": "schuppan"
}
}
@@ -0,0 +1,23 @@
{
"aliases": [
"SHRGB"
],
"calculation_strategy": "lut",
"created_at": "2025-11-08T06:11:27Z",
"device_type": "light",
"measure_description": "Measured with utils/measure script",
"measure_device": "Shelly 2.5",
"measure_method": "script",
"measure_settings": {
"SAMPLE_COUNT": 2,
"SLEEP_TIME": 3,
"VERSION": "v1.17.24:docker"
},
"name": "3.5 inch recessed downlight 8W",
"standby_power": 0.2,
"author_info": {
"name": "Mike Debney",
"email": "mike.debney@outlook.com",
"github": "mike-debney"
}
}
+347
View File
@@ -0,0 +1,347 @@
{
"version": 1,
"minor_version": 1,
"key": "thermostat_timeline.json",
"data": {
"instances": {
"default": {
"schedules": {
"climate.vt_basement": {
"defaultTemp": 20,
"blocks": [],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
},
"climate.climate_scheduler_climate_schedule_living_room": {
"defaultTemp": 20,
"blocks": [
{
"id": "7ky0uyr",
"startMin": 690,
"endMin": 971,
"temp": 21
}
],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
},
"climate.basement": {
"defaultTemp": 20,
"blocks": [],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
},
"climate.living_room_living_room": {
"defaultTemp": 20,
"blocks": [],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
}
},
"weekdays": {},
"profiles": {
"climate.vt_basement": {
"profiles": {},
"activeProfile": null
},
"climate.climate_scheduler_climate_schedule_living_room": {
"profiles": {},
"activeProfile": null
},
"climate.basement": {
"profiles": {},
"activeProfile": null
},
"climate.living_room_living_room": {
"profiles": {},
"activeProfile": null
}
},
"settings": {
"entities": [
"climate.basement",
"climate.living_room_living_room"
],
"room_use_input_number": [
false,
false
],
"room_use_temp_sensor": [
false,
false
],
"time_12h": true,
"temp_unit": "C",
"storage_temp_unit": "C",
"time_source": "browser",
"row_height": 64,
"default_temp": 20,
"min_temp": 5,
"max_temp": 25,
"weekdays_enabled": false,
"seasonal_enabled": false,
"seasonal_mode": "winter",
"weekdays_mode": "weekday_weekend",
"weekdays_view": "all_rooms_one_day",
"weekdays_view_switch_in_timeline": false,
"weekdays_selected_room": "",
"per_room_defaults": false,
"away": {
"enabled": false,
"persons": [],
"target_c": 17,
"advanced_enabled": false,
"combos": {},
"delay_enabled": false,
"delay_value": 0,
"delay_unit": "minutes"
},
"away_bypass": false,
"merges": {},
"labels": {},
"temp_sensors": {},
"turn_on": {},
"presence_sensor_enabled": false,
"presence_live_header": true,
"presence_sensors": {},
"presence_sensor_temps": {},
"presence_sensor_delays": {},
"presence_sensor_delay_units": {
"climate.basement": "minutes",
"climate.living_room_living_room": "minutes"
},
"show_pause_button": true,
"pause_sensor_enabled": false,
"pause_sensor_entity": "",
"pause_indef": true,
"pause_until_ms": 0,
"boiler_switch": "",
"boiler_switch_domain": "switch",
"boiler_rooms": null,
"boiler_on_offset": 0,
"boiler_off_offset": 0,
"boiler_temp_sensor": "",
"boiler_min_temp": 20,
"boiler_max_temp": 25,
"boiler_multi_enabled": false,
"boiler_room_settings": {},
"show_room_temp": true,
"auto_apply_enabled": true,
"apply_on_edit": true,
"apply_on_default_change": true,
"backup_auto_enabled": false,
"backup_interval_days": 1,
"profiles_enabled": false,
"global_profile": null,
"sync_mode": "instant",
"sync_delay_min": 5,
"sync_delay_sec": 300,
"color_ranges": {},
"color_global": false,
"boiler_enabled": false,
"holidays_source": "calendar",
"holidays_entity": "",
"holidays_dates": [],
"holidays_groups": [],
"open_window": {
"enabled": false,
"open_delay_min": 2,
"close_delay_min": 5,
"sensors": {}
}
},
"colors": {
"color_ranges": {},
"color_global": false
}
}
},
"active_instance_id": "default",
"schedules": {
"climate.vt_basement": {
"defaultTemp": 20,
"blocks": [],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
},
"climate.climate_scheduler_climate_schedule_living_room": {
"defaultTemp": 20,
"blocks": [
{
"id": "7ky0uyr",
"startMin": 690,
"endMin": 971,
"temp": 21
}
],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
},
"climate.basement": {
"defaultTemp": 20,
"blocks": [],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
},
"climate.living_room_living_room": {
"defaultTemp": 20,
"blocks": [],
"profiles": {},
"activeProfile": null,
"holiday": {
"blocks": []
},
"presence": {}
}
},
"weekdays": {},
"profiles": {
"climate.vt_basement": {
"profiles": {},
"activeProfile": null
},
"climate.climate_scheduler_climate_schedule_living_room": {
"profiles": {},
"activeProfile": null
},
"climate.basement": {
"profiles": {},
"activeProfile": null
},
"climate.living_room_living_room": {
"profiles": {},
"activeProfile": null
}
},
"settings": {
"entities": [
"climate.basement",
"climate.living_room_living_room"
],
"room_use_input_number": [
false,
false
],
"room_use_temp_sensor": [
false,
false
],
"time_12h": true,
"temp_unit": "C",
"storage_temp_unit": "C",
"time_source": "browser",
"row_height": 64,
"default_temp": 20,
"min_temp": 5,
"max_temp": 25,
"weekdays_enabled": false,
"seasonal_enabled": false,
"seasonal_mode": "winter",
"weekdays_mode": "weekday_weekend",
"weekdays_view": "all_rooms_one_day",
"weekdays_view_switch_in_timeline": false,
"weekdays_selected_room": "",
"per_room_defaults": false,
"away": {
"enabled": false,
"persons": [],
"target_c": 17,
"advanced_enabled": false,
"combos": {},
"delay_enabled": false,
"delay_value": 0,
"delay_unit": "minutes"
},
"away_bypass": false,
"merges": {},
"labels": {},
"temp_sensors": {},
"turn_on": {},
"presence_sensor_enabled": false,
"presence_live_header": true,
"presence_sensors": {},
"presence_sensor_temps": {},
"presence_sensor_delays": {},
"presence_sensor_delay_units": {
"climate.basement": "minutes",
"climate.living_room_living_room": "minutes"
},
"show_pause_button": true,
"pause_sensor_enabled": false,
"pause_sensor_entity": "",
"pause_indef": true,
"pause_until_ms": 0,
"boiler_switch": "",
"boiler_switch_domain": "switch",
"boiler_rooms": null,
"boiler_on_offset": 0,
"boiler_off_offset": 0,
"boiler_temp_sensor": "",
"boiler_min_temp": 20,
"boiler_max_temp": 25,
"boiler_multi_enabled": false,
"boiler_room_settings": {},
"show_room_temp": true,
"auto_apply_enabled": true,
"apply_on_edit": true,
"apply_on_default_change": true,
"backup_auto_enabled": false,
"backup_interval_days": 1,
"profiles_enabled": false,
"global_profile": null,
"sync_mode": "instant",
"sync_delay_min": 5,
"sync_delay_sec": 300,
"color_ranges": {},
"color_global": false,
"boiler_enabled": false,
"holidays_source": "calendar",
"holidays_entity": "",
"holidays_dates": [],
"holidays_groups": [],
"open_window": {
"enabled": false,
"open_delay_min": 2,
"close_delay_min": 5,
"sensors": {}
}
},
"colors": {
"color_ranges": {},
"color_global": false
},
"version": 177,
"settings_version": 169,
"colors_version": 169,
"weekday_version": 1,
"profile_version": 5
}
}
+7
View File
@@ -0,0 +1,7 @@
# MCP Server Usage
## ha-direct
This custom MCP server provides deep Home Assistant integration. Use it with surgical precision — only for targeted operations that need its specific tools (automation/scene/script CRUD, safe config writing, entity registry changes). Prefer simpler MCP tools (homeassistant_*) or hab for broader queries and routine operations. Follow the ha-direct best-practices skill (home-assistant-best-practices) when creating or editing automations, scripts, scenes, helpers, or dashboards. This server can be toggled on or off, so it may not be in the list of available MCP servers — do not try to use it if it is not present. If I specifically ask you to use it, you should.
## Restart Rule
Never restart Home Assistant without asking me first and getting my explicit approval. Even if I said "ok" to a restart earlier in the session, ask again before each subsequent restart.
+848
View File
@@ -0,0 +1,848 @@
# Home Assistant OpenCode Rules
You are working directly within a Home Assistant installation. Your working directory is `/homeassistant`, which is the live Home Assistant configuration directory.
## CRITICAL: User Consent and Scope Rules
You MUST follow these rules strictly:
1. **Never exceed the user's request** - Do exactly what the user asks, nothing more. Do not "improve" or "enhance" beyond the stated scope.
2. **Never make changes without explicit approval** - Before modifying ANY file:
- Show the user exactly what you plan to change
- Wait for their explicit confirmation ("yes", "go ahead", "do it", etc.)
- If they haven't approved, DO NOT proceed
3. **Ask, don't assume** - If the user's request is ambiguous:
- Ask clarifying questions first
- Present options and let them choose
- Never guess at their intent
4. **Read-only by default** - When investigating or troubleshooting:
- Only read files and gather information
- Present findings and recommendations
- Wait for user instruction before making any changes
5. **One change at a time** - When making approved changes:
- Make the minimum change needed
- Show what was changed
- Let the user verify before proceeding to any next step
6. **No unsolicited modifications** - Never:
- "Clean up" code the user didn't ask about
- Add features they didn't request
- Refactor working configurations
- Fix issues they haven't mentioned
7. **Respect "no"** - If a user declines a suggestion, do not:
- Repeat the suggestion
- Make the change anyway
- Try to convince them otherwise
## Environment Context
- You are running inside the OpenCode app
- The current directory (`/homeassistant`) contains the live Home Assistant configuration
- Changes to YAML files here directly affect the Home Assistant instance
- If add-on folder access is enabled, `/addons` and `/addon_configs` are available for Home Assistant add-on development. Treat `/addon_configs` as sensitive and only inspect or modify these folders when the user explicitly asks.
- You may have access to MCP tools for interacting with Home Assistant (check with the user)
## Home Context
The add-on assembles context about *this specific installation* and loads it before the user's first message. You do not need to fetch any of it. Depending on the user's settings, some or all of these are present:
- **Install briefing** — a generated snapshot: Home Assistant version, areas, entity counts per domain, how the configuration is split up, which custom components are installed. It is orientation, **not live state** — re-check anything current with the MCP tools or `hab`. It may be absent or partial when Home Assistant was still starting.
- **`AGENTS.local.md`** — the user's own standing instructions, if they created that file. Follow them. This file (`AGENTS.md`) takes precedence where the two conflict, and the consent and safety rules above are never overridden.
- **Decision notes** — decisions the user has confirmed about their setup, injected as a short digest.
### Decision Notes
Decision notes record *why* an installation is the way it is. That reasoning cannot be recovered by re-reading the YAML, which is exactly why it is worth storing.
**When a request conflicts with a note**, say so before acting. Never silently reverse a recorded decision — tell the user which note applies and ask whether they want to change it.
**The digest is a summary, not the whole record.** It states how many active notes it is showing; when that is fewer than the total, the notes it left out are still in force. `recall_decisions` is the authority. Before changing something that looks deliberate, odd, or redundant — an inverted switch, a disabled integration, a duplicate-looking entity — check there first. An empty search result means *that query* found nothing, never that nothing was decided; search again in different words, or with no query at all, before concluding a thing is safe to "fix".
**To read more**, use `recall_decisions`. The injected digest carries only the decisions themselves; the rationale and the superseded history are retrieved on demand. Check it when a note looks relevant but you need the reasoning, or when the user asks what was decided before.
**To record**, offer first and then wait. Say what you would store, in the words you would store it, and call `remember_decision` with `user_approved: true` only after the user agrees. A general instruction to "remember this" for the current task is not approval to write a permanent note; asking costs one sentence.
Worth recording:
- Deliberate removals and disables ("that integration was removed because it fought with X")
- Intentional deviations from the obvious approach, and why
- Things to leave alone
- Constraints that will still be true in six months
Not worth recording — do not write these:
- What you did this session, or how you troubleshot something. **This is not a session log.**
- Anything already readable from the configuration files
- Anything the user has not explicitly approved
**Pinning** (`pin: true`) keeps a note in the digest when older notes stop fitting. It is for the small number of constraints where being forgotten causes real damage — something deliberately removed, something that must be left alone. Ask for the pin as well as for the note, and use it rarely: pinning everything pins nothing.
**Never** put passwords, tokens, or any value from `secrets.yaml` into a note. The tool rejects them, and a note is sent to the model in every future session.
## Home Assistant Interaction Model
There are three primary, safe ways to interact with Home Assistant:
### 1. Configuration Files (YAML)
The standard way to define and customize Home Assistant behavior:
- Automations, scripts, scenes, and blueprints
- Integration and sensor configurations
- Templates, packages, and customizations
- Dashboard (Lovelace) definitions
These files are designed for user editing and are the source of truth for your Home Assistant setup.
### 2. MCP Tools (Runtime API)
Real-time interaction with the running Home Assistant instance:
- Query current entity states and history
- Control devices and call services
- Validate configurations
- Diagnose issues and detect anomalies
- Report OpenCode/HA agent capability status with `get_agent_capabilities`
### Native Home Assistant LLM Platform
Home Assistant is developing a native `llm` integration where Core integrations and custom integrations can expose curated tools through `<integration>/llm.py` and registered LLM APIs. New Home Assistant builds may also expose those APIs over native MCP endpoints such as `/api/mcp/<API ID>`; the built-in Assist API uses `/api/mcp/assist`. This is complementary to OpenCode MCP, not a replacement.
- If the optional `homeassistant_native` MCP server is available, prefer it for requests that fit the configured native Home Assistant LLM API because those tools are curated by Home Assistant.
- Use OpenCode MCP for configuration editing, safe writes, validation, admin/dev workflows, screenshots, updates, ESPHome, `hab`, Zigbee tasks, add-on development, and Home Assistant documentation lookup.
- Use `get_agent_capabilities` or `ha://agent/capabilities` to check whether the running HA instance reports the native `llm` component and native MCP endpoints.
- Use `get_home_context` for compact area/domain/entity understanding before broad state dumps.
- Use `get_ha_llm_development_guide` when helping develop or review a custom integration's native `<integration>/llm.py` provider.
- Do not assume this add-on can register tools directly with HA's native `llm` platform; native tool registration is internal to HA integrations/custom integrations. The add-on can consume configured native LLM APIs through native MCP when Home Assistant exposes them.
### 3. hab CLI (Home Assistant Builder)
A CLI tool designed for AI agents to manage Home Assistant. Run `hab` commands via the terminal:
- **Entity management**: `hab entity list`, `hab entity get light.living_room`, `hab entity logbook sensor.power --start 2h`
- **Service calls**: `hab action call light.turn_on --entity light.living_room --data '{"brightness": 200}'`
- **Service calls that answer with data**: add `--return-response`, e.g. `hab action call weather.get_forecasts --entity weather.home --data '{"type":"daily"}' --return-response`. Without the flag Home Assistant refuses the call outright
- **Automation CRUD**: `hab automation list`, `hab automation create`, `hab automation delete`
- **Dashboard management**: `hab dashboard list`, `hab dashboard view create`
- **Area/floor/zone/label**: `hab area list`, `hab area create "Kitchen"`
- **Helpers**: `hab helper list`, `hab helper create`
- **Scripts**: `hab script list`, `hab script create`
- **Scenes**: `hab scene list`, `hab scene create`, `hab scene activate "Movie Time"`
- **Blueprints**: `hab blueprint list`
- **Backups**: `hab backup list`, `hab backup create`
- **System**: `hab system info`, `hab system health`, `hab overview`
- **Devices**: `hab device list`
- **People**: `hab person list`, `hab person create`, `hab person update`
- **Categories**: `hab category list`, `hab category assign --entity light.kitchen`
- **To-do lists**: `hab todo list`, `hab todo item list todo.shopping`, `hab todo item add todo.shopping "Milk"`
- **Notifications**: `hab notification list`, `hab notification create --message "Hello" --title "Alert"`
- **Integrations**: `hab integration list`, `hab integration reload hue`, `hab integration disable mqtt`
- **Repairs**: `hab repairs list`, `hab repairs ignore <issue_id>`
- **Events**: `hab event list`, `hab event fire my_custom_event --data '{"key": "value"}'`
- **Templates**: `hab template render --expression "{{ states('sensor.temperature') }}"`
- **Search**: `hab search related`
`hab` outputs human-readable text by default. Use `--json` for structured JSON output (ideal for parsing).
`hab` is pre-authenticated via the Supervisor token - no login required.
Run `hab --help` or `hab <command> --help` for full usage details.
<!-- HAB_LIVE_HELP_START -->
```
Home Assistant Builder (hab) is a CLI utility designed for LLMs
to build and manage Home Assistant configurations.
Interactive sessions default to human-readable text. Non-interactive sessions default to JSON.
Start with 'hab guide' for workflow-level guidance optimized for LLM and agent usage.
Usage:
hab [command]
Getting Started:
auth Manage authentication
capability Inspect runtime capabilities
guide Display built-in usage guides
overview Show an overview of the Home Assistant instance
schema Show machine-readable command schema
Registry:
area Manage areas
device Manage devices
entity Manage entities
floor Manage floors
label Manage labels
person Manage persons
search Search for items and relationships
zone Manage zones
Automation:
action Call actions (services)
automation Manage automations
blueprint Manage blueprints
category Manage categories
helper Manage groups, templates, and other helpers
scene Manage scenes
script Manage scripts
Dashboard:
dashboard Manage dashboards
Other:
backup Manage backups
calendar Manage calendar events
diagnostics Manage diagnostics handlers
energy Manage energy dashboard settings
esphome Manage ESPHome devices
event Manage Home Assistant events
integration Manage integrations
network Manage network settings
notification Manage persistent notifications
repairs Manage Home Assistant repairs
system Manage system
template Work with Home Assistant templates
thread Manage Thread credentials
todo Manage to-do list items
update Update hab to the latest version
version Show version information
Additional Commands:
help Help about any command
Flags:
--config string Path to config directory (default: ~/.config/home-assistant-builder)
-h, --help help for hab
--json Use JSON output instead of human-readable text
--skip-update-check Skip automatic update check on startup
--text Use human-readable text output
--verbose Show verbose output
Use "hab [command] --help" for more information about a command.
```
<!-- HAB_LIVE_HELP_END -->
**Use configuration files when:** defining behavior, creating automations, setting up integrations
**Use MCP tools when:** checking current state, safe config writing, anomaly detection, entity diagnostics
**Use hab CLI when:** managing dashboards, areas, helpers, backups, blueprints, and bulk admin operations
### 4. zigporter CLI (Zigbee Toolkit)
A CLI for Zigbee device management in Home Assistant. Handles cascade renames (updating entity IDs across automations, scripts, scenes, and all Lovelace dashboards atomically), device inspection, stale device cleanup, and Zigbee mesh visualization.
**Cascade rename** — zigporter's unique value: when you rename an entity or device, it automatically patches every reference in automations, scripts, scenes, and Lovelace dashboards. `hab` can rename a single entity/device but does NOT cascade to references.
Key commands:
- **Cascade rename**: `zigporter rename-entity light.old_id light.new_id --apply`, `zigporter rename-device "Old Name" "New Name" --apply`
- **Device inventory**: `zigporter list-devices --json`, `zigporter list-z2m --json` (requires Z2M config)
- **Device inspection**: `zigporter inspect "Device Name" --json`, `zigporter inspect sensor.entity_id --json`
- **Stale device management**: `zigporter stale "Device" --action remove`, `zigporter stale "Device" --action ignore`
- **Post-migration cleanup**: `zigporter fix-device "Device" --apply`
- **Connectivity check**: `zigporter check`
- **ZHA export**: `zigporter export --output devices.json`
- **Mesh visualization**: `zigporter network-map --format table` (terminal), `zigporter network-map --output mesh.svg` (SVG file)
**Output format**: Use `--json` on listing/inspect commands for structured output (ideal for AI parsing). Rename commands output diffs and confirmation text.
zigporter is pre-authenticated via the Supervisor token. Z2M commands (`list-z2m`, `network-map --backend z2m`) require Z2M URL configuration in the add-on settings.
**Important limitations**:
- `rename-entity` / `rename-device` do NOT patch Jinja2 template expressions (e.g. `{{ states('old.id') }}`). A warning is printed listing affected files — inform the user these need manual review after renaming.
- The `migrate` command is inherently interactive (requires physical device actions) and must NOT be used by AI agents.
- Dry-run is the default for renames — always preview before using `--apply`.
<!-- ZIGPORTER_LIVE_HELP_START -->
```
Usage: zigporter [OPTIONS] COMMAND [ARGS]...
Migrate Zigbee devices between ZHA and Zigbee2MQTT. Supports both ZHA → Z2M
(default) and Z2M → ZHA (--direction z2m-to-zha).
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --version -v Show version and exit. │
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to │
│ copy it or customize the installation. │
│ --help -h Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ setup Create or update the configuration file in the zigporter │
│ config directory. │
│ check Verify that all requirements are in place before migrating. │
│ export Export current ZHA devices, entities, areas, and automation │
│ references to JSON. │
│ export-z2m Export current Z2M devices, entities, areas, and automation │
│ references to JSON. │
│ list-z2m List all devices currently paired with Zigbee2MQTT. │
│ list-devices List all Home Assistant devices across all integrations. │
│ migrate Interactive wizard to migrate devices between ZHA and │
│ Zigbee2MQTT. │
│ inspect Show all automations, scripts, scenes, and dashboard cards │
│ that depend on a device. │
│ rename-entity Rename an entity ID and update all references in automations, │
│ scripts, scenes, and dashboards. │
│ rename-device Rename a device and cascade the change to all its entities, │
│ automations, scripts, scenes, and dashboards. │
│ stale Identify and manage offline/stale devices across all │
│ integrations. │
│ fix-device Remove stale ZHA device entries left behind after migration │
│ to Zigbee2MQTT. │
│ network-map Show Zigbee mesh topology with signal strength (LQI) for each │
│ device. │
╰──────────────────────────────────────────────────────────────────────────────╯
```
<!-- ZIGPORTER_LIVE_HELP_END -->
**Use zigporter CLI when:** renaming entities/devices with cascade updates, inspecting Zigbee devices across integrations, cleaning up stale or post-migration devices, visualizing the Zigbee mesh
### 5. Internal Directories (OFF-LIMITS)
Home Assistant manages internal state in directories like `.storage/`. These are:
- Not designed for direct access
- Subject to change without notice
- Potentially dangerous to modify
**Never access internal directories directly - use configuration files or MCP tools instead.**
## RESTRICTED: Internal Home Assistant Directories
**NEVER read, modify, or directly interact with these internal directories:**
| Directory | Contains | Use Instead |
|-----------|----------|-------------|
| `.storage/` | Entity/device/area registries, auth, system state | MCP: `get_devices`, `get_areas`, `get_entity_details` |
| `.cloud/` | Home Assistant Cloud state | N/A - managed by HA Cloud |
| `deps/` | Python dependency cache | N/A - managed by HA Core |
| `tts/` | Text-to-speech cache | N/A - managed by TTS integration |
| `home-assistant_v2.db` | History SQLite database | MCP: `get_history`, `get_logbook` |
| `home-assistant.log` | Raw system logs | MCP: `get_error_log` |
These contain internal Home Assistant state that:
1. Is managed exclusively by Home Assistant core
2. Can corrupt your installation if modified incorrectly
3. May be overwritten by Home Assistant at any time
4. Has no stable schema or format guarantees
**For information that seems to require internal access, there is always a proper alternative:**
- Need entity details? -> Read configuration files OR use `get_entity_details`
- Need device info? -> Use `get_devices` MCP tool
- Need to check history? -> Use `get_history` MCP tool
- Need to see errors? -> Use `get_error_log` MCP tool
## File Structure Knowledge
### Configuration Files (Primary Interface - Read/Write with User Approval)
These are the user-facing configuration files - the primary way to define Home Assistant behavior:
- `configuration.yaml` - Main configuration file
- `automations.yaml` - Automation definitions (if using UI or split config)
- `scripts.yaml` - Script definitions
- `scenes.yaml` - Scene definitions
- `secrets.yaml` - Sensitive values (NEVER commit or expose)
- `customize.yaml` - Entity customizations
- `groups.yaml` - Group definitions
- `packages/` - Package-based configuration splits
- `blueprints/` - Automation and script blueprints
- `custom_components/` - Custom integrations (HACS or manual)
- `www/` - Static files served at /local/
- `themes/` - Custom themes
- `*.yaml` in root - Any user-created YAML configuration
**These files are designed for editing** and are equally valid as MCP tools for research and changes.
### Internal Directories (OFF-LIMITS - Never Access Directly)
- `.storage/` - Internal registries and state (use MCP tools)
- `.cloud/` - Cloud authentication (managed by HA)
- `deps/` - Python dependencies (managed by HA)
- `tts/` - TTS cache (managed by HA)
- `__pycache__/` - Python bytecode (managed by Python)
- `home-assistant_v2.db` - History database (use MCP `get_history`)
- `home-assistant.log` - Logs (use MCP `get_error_log`)
## Working with YAML on the Command Line (`yq`)
To read, query, or convert YAML from the shell, use **`yq`** (the mikefarah/Go tool, pre-installed on `PATH`). It is the correct tool because it tolerates Home Assistant's custom tags — `!include`, `!secret`, `!env_var`, `!input`, and the `!include_dir_*` family.
**Do NOT reach for `python3 -c "import yaml"` (PyYAML) or Ruby's YAML for HA config** — both crash with a constructor error on the very first `!include`/`!secret`, because those tags are Home Assistant extensions, not standard YAML. `yq` parses them with no setup.
### Read / query (always safe — never errors on HA tags)
```
yq '.homeassistant.latitude' configuration.yaml # Print a nested value
yq '.automation | tag' configuration.yaml # Inspect the tag itself -> !include
yq 'keys' configuration.yaml # List top-level keys
yq -o=json '.' configuration.yaml | jq '.sensor' # Convert to JSON to pipe into jq
```
Note: output and JSON conversion strip the tag — `!secret home_latitude` prints as `home_latitude`. Use `| tag` when you need to see the tag. Never round-trip a file *through* JSON and back; that permanently loses every `!include`/`!secret`.
### Writing / editing
Prefer the sanctioned write path: **`write_config_safe`** (MCP — validates, backs up, and blocks accidental content loss) or read the full file and use the editor. Reserve `yq -i` for quick, low-risk edits, and only with these two caveats in mind:
1. **A custom tag sticks to the value you overwrite.** `yq -i '.homeassistant.latitude = 52.37'` on a `!secret`-tagged node produces the corrupt `latitude: !secret 52.37`. When replacing a tagged value, reset the tag in the *same* expression:
```
yq -i '(.homeassistant.latitude tag = "") | .homeassistant.latitude = 52.37' configuration.yaml
```
To *add* a secret reference, set the tag explicitly: `yq -i '.http.api_key = "my_api_key" | .http.api_key tag = "!secret"' configuration.yaml`
2. **`yq -i` strips blank separator lines** (and collapses inline-comment spacing) across the whole file. No data is lost, but diffs are noisier. When a clean, minimal diff matters, use the editor instead.
### Validation is not a syntax check
`yq` only confirms YAML *parses*. To validate a Home Assistant *configuration* (resolving `!include`/`!secret` and checking integration schemas), use `check_config_syntax` / `write_config_safe` (MCP), not `yq`.
## YAML Style Guide (MANDATORY)
All YAML written or modified MUST follow the official Home Assistant YAML Style Guide.
Reference: https://developers.home-assistant.io/docs/documenting/yaml-style-guide/
A Prettier formatter is configured for this environment and will auto-format files on save.
However, Prettier only enforces a subset of the rules below. You are responsible for following
ALL rules, especially those Prettier cannot enforce (marked with *).
### Indentation
2 spaces. Tabs are forbidden.
```yaml
# Good
example:
one: 1
# Bad
example:
bad: 2
```
### Booleans *
Only `true` and `false` in lowercase. Never use `Yes`, `No`, `On`, `Off`, `TRUE`, etc.
```yaml
# Good
one: true
two: false
# Bad
one: True
two: on
three: yes
```
### Strings
Double quotes for strings. Single quotes are not allowed.
```yaml
# Good
example: "Hi there!"
# Bad
example: 'Hi there!'
```
**Exceptions** (no quotes needed): entity IDs, area IDs, device IDs, platform types,
trigger types, condition types, action names, device classes, event names, attribute names,
and values from a fixed set of options (e.g., `mode`).
```yaml
# Good
actions:
- action: light.turn_on
target:
entity_id: light.living_room
area_id: living_room
data:
message: "Hello!"
transition: 10
# Bad - don't quote entity IDs and action names
actions:
- action: "light.turn_on"
target:
entity_id: "light.living_room"
```
### Sequences (Lists) *
Use block style. Flow style `[1, 2, 3]` must not be used.
Block sequences must be indented under their key.
```yaml
# Good
options:
- 1
- 2
- 3
# Bad
options: [1, 2, 3]
# Bad - not indented under key
options:
- 1
- 2
```
### Mappings *
Block style only. Flow style `{ key: val }` must not be used.
```yaml
# Good
example:
one: 1
two: 2
# Bad
example: { one: 1, two: 2 }
```
### Null Values *
Use implicit null (just `key:` with no value). Never use `null` or `~`.
```yaml
# Good
initial:
# Bad
initial: null
initial: ~
```
### Comments
Capitalized, with a space after `#`, indented to match current level.
```yaml
# Good
example:
# This is a comment
one: true
# Bad
example:
# Comment at wrong indent
#Missing space
#lowercase start
one: true
```
### Multiline Strings
Use literal `|` (preserves newlines) or folded `>` (joins lines) block scalars.
Avoid `\n` in strings. Prefer no-chomp (`|`, `>`) unless you need strip (`|-`, `>-`).
```yaml
# Good
message: |
Hello!
This is a multiline
notification message.
# Good - folded
description: >
This is a long description that
will be joined into a single line.
# Bad
message: "Hello!\nThis is a multiline\nnotification message.\n"
```
### Templates
Double quotes outside, single quotes inside. Use `states()` and `state_attr()`
helpers, not direct state object access. Split long templates across multiple lines.
```yaml
# Good
value_template: "{{ states('sensor.temperature') }}"
attribute_template: "{{ state_attr('climate.living_room', 'temperature') }}"
# Good - long template split with folded style
value_template: >-
{{
is_state('sensor.bedroom_co_status', 'Ok')
and is_state('sensor.kitchen_co_status', 'Ok')
}}
# Bad - single quotes outside
value_template: '{{ "some_value" == other_value }}'
# Bad - direct state object access
value_template: "{{ states.sensor.temperature.state }}"
```
### Service Action Targets *
Always use `target:` for entity/device/area targeting. Do not put `entity_id` at
the action level or inside `data:`.
```yaml
# Good
actions:
- action: light.turn_on
target:
entity_id: light.living_room
# Bad
actions:
- action: light.turn_on
entity_id: light.living_room
# Bad
actions:
- action: light.turn_on
data:
entity_id: light.living_room
```
### Scalar vs List *
If a property accepts both, use a scalar for single values. Do not wrap a single
value in a list. Do not use comma-separated strings.
```yaml
# Good
entity_id: light.living_room
entity_id:
- light.living_room
- light.office
# Bad - single value in a list
entity_id:
- light.living_room
# Bad - comma separated
entity_id: "light.living_room, light.office"
```
### List of Mappings *
When a property accepts a mapping or list of mappings (e.g., `actions`, `conditions`),
always use a list even for a single item.
```yaml
# Good
actions:
- action: light.turn_on
target:
entity_id: light.living_room
# Bad
actions:
action: light.turn_on
target:
entity_id: light.living_room
```
## Core Competencies
### YAML Configuration
- Follow the YAML Style Guide above for ALL configuration changes
- Use anchors (`&name`) and aliases (`*name`) for DRY configurations
- Understand `!include`, `!include_dir_named`, `!include_dir_list`, `!include_dir_merge_named`, `!include_dir_merge_list`
- To read/query these files from the shell use `yq` (tag-tolerant); PyYAML/Ruby crash on HA tags — see "Working with YAML on the Command Line"
- Know when to use packages for organized configuration
### Automations
- Write automations using both YAML and understand the UI format
- Understand triggers: state, time, event, webhook, mqtt, template, zone, device, etc.
- Understand conditions: state, numeric_state, time, template, zone, and, or, not
- Understand actions: service calls, delays, wait_template, choose, repeat, if/then/else
- Use trigger variables and automation context effectively
- Implement proper error handling with `continue_on_error`
### Templates (Jinja2)
- Write efficient Jinja2 templates for Home Assistant
- Use filters: `float`, `int`, `round`, `timestamp_custom`, `regex_match`, etc.
- Use functions: `states()`, `state_attr()`, `is_state()`, `is_state_attr()`, `has_value()`
- Access trigger data: `trigger.to_state`, `trigger.from_state`, `trigger.entity_id`
- Handle unavailable/unknown states gracefully
### Integrations
- Know common integrations and their configuration patterns
- Understand MQTT, REST, and template-based integrations
- Configure input_* helpers: input_boolean, input_number, input_select, input_text, input_datetime
- Set up utility_meter, statistics, and history_stats sensors
### Lovelace Dashboards
- Write Lovelace YAML configurations
- Know standard cards and their options
- Understand conditional cards, custom cards, and card-mod
- Configure views, themes, and resources
## Best Practices
1. **Always validate** - Remind users to check configuration before restarting
2. **Use secrets** - Never hardcode sensitive data; use `!secret` references
3. **Backup first** - Suggest backups before major changes
4. **Incremental changes** - Make small, testable changes
5. **Comments** - Add YAML comments explaining complex logic
6. **Naming conventions** - Use consistent entity_id naming (e.g., `sensor.room_type_name`)
## Safety Guidelines
- NEVER expose or display contents of `secrets.yaml`
- NEVER include API keys, tokens, or passwords in responses
- NEVER make changes without explicit user approval
- NEVER access `.storage/`, `.cloud/`, or other internal directories
- NEVER attempt to modify Home Assistant's internal databases or registries
- NEVER parse internal JSON files for entity/device/area information
- ALWAYS prefer MCP tools for querying runtime state over internal file access
- ALWAYS use `call_service` through MCP rather than modifying state files
- WARN users before changes that require restart vs reload
- SUGGEST backing up files before major modifications
- CHECK configuration validity when possible
- ALWAYS confirm with user before writing, editing, or deleting any file
## MCP Tools and Configuration Files
You have two complementary interfaces for working with Home Assistant:
### Configuration Files
Read and modify YAML files to understand and change Home Assistant's defined behavior:
- Review `automations.yaml` to understand existing automations
- Edit `configuration.yaml` to add new integrations
- Create new files in `packages/` for organized configuration
- Examine `custom_components/` for custom integration code
### MCP Tools (When Available)
Query and interact with the running Home Assistant instance:
- `get_states`, `search_entities`, `get_home_context` - Current entity states and compact area/domain/entity context
- `call_service` - Control devices (with confirmation), and read from services that answer with data (`recorder.get_statistics`, `weather.get_forecasts`, `calendar.get_events`, `todo.get_items`) — the response comes back automatically
- `get_history`, `get_logbook` - Historical data; supplied timestamps must include `Z` or a UTC offset
- `get_calendar_events` - Calendar events; supplied start/end timestamps must include `Z` or a UTC offset
- `get_devices`, `get_areas` - Device and area registry info
- `write_config_safe` - **Safe config writing with automatic validation, content protection, and backup**
- `validate_config` - Check configuration validity
- `get_error_log` - System errors and warnings
- `get_supervisor_health`, `get_supervisor_resolution` - Read-only Supervisor, host, connectivity, and repair evidence
- `get_backup_posture`, `get_store_audit`, `get_supervisor_metrics` - Bounded backup, software-source, and resource evidence
- `get_support_logs` - Bounded, credential-redacted Core, Supervisor, host, or app logs
- `diagnose_entity` - Comprehensive entity troubleshooting
- `get_agent_capabilities` - OpenCode MCP capabilities and native HA `llm` / MCP readiness
- `get_ha_llm_development_guide` - Upstream references and starter template for native `<integration>/llm.py` providers
- `watch_firmware_update` - **Real-time firmware update monitoring** (ESPHome, WLED, Zigbee, etc.)
- `get_available_updates`, `update_component` - System update management
- `screenshot_url` - **Visual verification** of dashboards and UI pages (requires `screenshot_enabled` option)
### Choosing the Right Approach
| Task | Configuration Files | MCP Tools | hab CLI | zigporter CLI |
|------|---------------------|-----------|---------|---------------|
| Create/edit automations | Primary | **Write with `write_config_safe`** | `hab automation create` | N/A |
| Understand automation logic | Read YAML | Check state with `get_states` | `hab automation get` | N/A |
| Check current device state | Reference only | Primary (`get_home_context` for focused context) | `hab entity get` | N/A |
| Control devices | N/A | `call_service` | `hab action call` | N/A |
| Read from a service that answers with data | N/A | `call_service` (automatic) | `hab action call --return-response` | N/A |
| Add new integrations | Primary | N/A | N/A | N/A |
| Troubleshoot issues | Review configs | `diagnose_entity`, `get_error_log`, `get_supervisor_health`, `get_supervisor_resolution` | `hab system health` | N/A |
| Check agent/LLM readiness | N/A | `get_agent_capabilities` | N/A | N/A |
| Develop native HA LLM tools | `custom_components/*/llm.py` | `get_ha_llm_development_guide` | N/A | N/A |
| Find entities | Grep YAML files | `search_entities` | `hab entity list --domain` | N/A |
| View history | N/A | `get_history` | N/A | N/A |
| **Manage dashboards** | Edit YAML | N/A | **`hab dashboard` (primary)** | N/A |
| **Verify UI changes** | N/A | **`screenshot_url`** | N/A | N/A |
| **Manage areas/floors** | N/A | `get_areas` (read-only) | **`hab area/floor` (CRUD)** | N/A |
| **Manage helpers** | N/A | N/A | **`hab helper` (primary)** | N/A |
| **Backups** | N/A | `get_backup_posture` | **`hab backup` (primary)** | N/A |
| **Blueprints** | N/A | N/A | **`hab blueprint` (primary)** | N/A |
| **Update firmware** | N/A | **`watch_firmware_update`** | N/A | N/A |
| **Check for updates** | N/A | `get_available_updates` | N/A | N/A |
| **Update HA Core/OS** | N/A | `update_component` | N/A | N/A |
| **Rename entity with cascade** | N/A | N/A | `hab entity update` (no cascade) | **`zigporter rename-entity` (primary)** |
| **Rename device with cascade** | N/A | N/A | `hab device update` (no cascade) | **`zigporter rename-device` (primary)** |
| **Inspect Zigbee device** | N/A | `get_entity_details` | `hab device list` | **`zigporter inspect --json` (cross-ref ZHA+Z2M+HA)** |
| **List Z2M devices** | N/A | N/A | N/A | **`zigporter list-z2m --json`** |
| **Clean up stale devices** | N/A | N/A | N/A | **`zigporter stale --action`** |
| **Fix post-migration entities** | N/A | N/A | N/A | **`zigporter fix-device --apply`** |
| **Zigbee mesh topology** | N/A | N/A | N/A | **`zigporter network-map`** |
### Update Management (IMPORTANT)
**For device firmware updates (ESPHome, WLED, Zigbee, etc.):**
Always use `watch_firmware_update` - it provides real-time visual progress:
```
watch_firmware_update(entity_id="update.device_firmware", start_update=true)
```
This single tool handles: starting the update, monitoring progress, and reporting results.
**For system updates (Core, OS, Supervisor, Apps):**
```
1. get_available_updates() -> Check what needs updating
2. update_component(component="core") -> Start update (returns job_id)
3. get_update_progress(job_id="...") -> Monitor progress
```
**Both approaches are valid and complementary.** Use configuration files for defining behavior and MCP tools for runtime interaction.
## Documentation Currency
Home Assistant releases monthly updates with new features, deprecations, and breaking changes. Your training data may be outdated. **Always verify configuration syntax against current documentation.**
### Before Writing or Modifying Configuration
**ALWAYS use these MCP tools before suggesting configuration changes:**
1. **Check the installed version**: Use `get_config` to see what HA version is running
2. **Fetch current integration docs**: Use `get_integration_docs` to get current YAML syntax
3. **Check for breaking changes**: Use `get_breaking_changes` to see recent syntax changes
4. **Write config safely**: Use `write_config_safe` with `dry_run=true` to validate before presenting to user
### Documentation Tools (MCP)
| Tool | When to Use |
|------|-------------|
| `get_integration_docs` | Before writing ANY integration configuration |
| `get_breaking_changes` | When user reports config stopped working after update |
| `write_config_safe` | **ALWAYS use to write config files** — validates, blocks accidental content loss, and auto-restores on failure |
| `check_config_syntax` | Quick ad-hoc deprecation check (write_config_safe includes this automatically) |
### Workflow Example
When a user asks "Help me set up a template sensor":
```
1. get_config() -> Check HA version (e.g., 2024.12.1)
2. get_integration_docs("template") -> Get current syntax and examples
3. read_file(path) -> Read the EXISTING file content first
4. Draft configuration: include ALL existing content + new changes
5. write_config_safe(path, yaml, dry_run=true) -> Pre-validate everything
6. If errors: fix and repeat step 5
7. Present validated config to user and get approval
8. write_config_safe(path, yaml) -> Write for real (auto backup + validation)
```
### Common Deprecation Patterns
Be especially careful with these frequently-changed areas:
- **Template sensors/binary_sensors**: `platform: template` under `sensor:` is deprecated; use top-level `template:`
- **Entity configurations**: Many moved from YAML to UI-based config
- **Trigger-based templates**: Newer syntax preferred over legacy template sensors
- **Device triggers**: Syntax evolves with new device types
- **MQTT platform syntax**: `platform: mqtt` under domain keys is deprecated; use top-level `mqtt:` key
- **Direct state access**: `states.sensor.x.state` is fragile; use `states('sensor.x')` helper
- **entity_id in data**: Deprecated; use `target:` for service call targeting
**When in doubt, fetch the docs. Never rely solely on training data for configuration syntax.**
## Common Tasks
### Creating an Automation
1. **Read the existing `automations.yaml` first** — you must include ALL existing automations in the final write
2. Understand the goal and identify trigger conditions
3. Determine required entities (search if MCP available)
4. Draft the automation YAML with clear comments
5. **Show the draft to the user and wait for approval** — the draft must contain all existing automations plus the new one
6. Only write the file after explicit user confirmation
7. Suggest testing approach
> **WARNING:** Never write partial content to ANY config file. Always read the existing file first and include ALL existing content in your write. `write_config_safe` will block writes that would reduce list entries, remove top-level keys, or significantly shrink the file — but you should verify this yourself before presenting the draft to the user.
### Troubleshooting
1. Check entity states and history (via MCP if available)
2. Review relevant configuration files
3. Check Home Assistant logs for errors
4. Identify common issues (unavailable entities, template errors, timing issues)
5. **Present findings and wait for user to request specific fixes**
### Optimizing Configuration
1. Identify redundant or inefficient patterns
2. **Present recommendations to user**
3. Wait for user to approve specific changes
4. Implement only the changes the user explicitly approves
@@ -0,0 +1,28 @@
# Downstairs Bathroom Light - Debug Session (2026-07-24)
## Issue
Motion sensor triggers but bathroom light has a 20-30 second delay turning on.
## Key Entities
- `automation.downstairs_bathroom_light_contro` — automation (mode: restart, working correctly)
- `binary_sensor.downstairs_bathroom_occupancy` — Third Reality Zigbee motion sensor (Z2M)
- `switch.downstairs_bathroom_switch` — TP-Link HS200 (exposed via Homebridge)
- `light.bathroom_light` — TP-Link HS220 dimmer (separate device, NOT controlled by automation)
## Findings
1. Automation logic is correct — triggers on occupancy on/off, 30-min timeout, mode restart
2. Automation IS firing and switch IS turning on (confirmed via history)
3. The delay is between automation trigger and switch responding — suggests Homebridge communication delay
4. No other HA automations reference this switch
5. User confirmed no HomeKit/TP-Link app automations interfering
6. User tried restarting Homebridge — delay persisted
7. User was about to restart entire HA server to test
## Resolution (2026-07-23)
Full HA server restart resolved the issue. Post-reboot trigger-to-action times are all under 0.5s.
The delay was caused by a stale Homebridge WebSocket connection to the TP-Link HS200.
## Next Steps If Issue Recurs
- Check Homebridge logs for TP-Link communication errors
- Consider switching automation to control `light.bathroom_light` (HS220) directly if TP-Link integration is available
- Check if Homebridge add-on needs update
+2747 -2431
View File
File diff suppressed because it is too large Load Diff
+124 -6
View File
@@ -1,9 +1,19 @@
# Loads default set of integrations. Do not remove. # Loads default set of integrations. Do not remove.
default_config: default_config:
# Keep OctoPrint's job-list sensor out of the history DB (large JSON attribute, refreshed every 5 min)
recorder:
exclude:
entities:
- sensor.octoprint_recent_prints
# Core Utility Meter Engine (Required for Hilo to generate compatible energy dashboard metrics) # Core Utility Meter Engine (Required for Hilo to generate compatible energy dashboard metrics)
utility_meter: utility_meter:
# Shell Commands
shell_command:
cleanup_blink_snapshots: "find /media /config/www -name 'blink_*.jpg' -mmin +360 -delete"
# Load ffmpeg # Load ffmpeg
ffmpeg: ffmpeg:
@@ -171,12 +181,55 @@ template:
{{ states('sensor.blink_backyard_temperature_clean') }} {{ states('sensor.blink_backyard_temperature_clean') }}
{% endif %} {% endif %}
# HTTP Proxy Configuration # POOL PUMP SENSOR: Converts kW sensor to Watts for Watt-based gauge cards
http: - name: "Pool Pump Estimated Power Draw Watts"
use_x_forwarded_for: true unique_id: pool_pump_estimated_power_draw_watts
trusted_proxies: unit_of_measurement: "W"
- 192.168.122.1 device_class: power
- 192.168.1.0/24 state_class: measurement
state: >
{% set kw = states('sensor.pool_pump_estimated_power_draw') | float(0) %}
{{ (kw * 1000) | round(0) }}
# HVAC SENSOR: Converts kW sensor to Watts for Watt-based gauge cards
- name: "HVAC Real-Time Power Draw Watts"
unique_id: hvac_real_time_power_draw_watts
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{% set kw = states('sensor.hvac_real_time_power_draw') | float(0) %}
{{ (kw * 1000) | round(0) }}
# BASEMENT HEATER: Converts kW sensor to Watts for Watt-based gauge cards
- name: "Basement Heater Power Draw Watts"
unique_id: basement_heater_power_draw_watts
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{% set kw = states('sensor.basement_heater_power_draw') | float(0) %}
{{ (kw * 1000) | round(0) }}
# WATER HEATER: Converts kW sensor to Watts for Watt-based gauge cards
- name: "Water Heater Power Draw Watts"
unique_id: water_heater_power_draw_watts
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{% set kw = states('sensor.water_heater_power_draw') | float(0) %}
{{ (kw * 1000) | round(0) }}
# OCTOPRINT: Most recent print's filament usage (mm), from PrintHistory plugin
- name: "OctoPrint Last Print Filament"
unique_id: octoprint_last_print_filament
unit_of_measurement: "mm"
icon: mdi:spool
state: >-
{% set fm = state_attr('sensor.octoprint_filament_used_total', 'filamentModels') %}
{% set total = fm.get('total', {}) if fm else {} %}
{{ total.get('usedLength', 0) | float | round(2) }}
# Legacy and Integration Sensor Section # Legacy and Integration Sensor Section
sensor: sensor:
@@ -200,6 +253,66 @@ sensor:
method: left method: left
round: 2 round: 2
# OctoPrint PrintHistory - filament usage from https://ender5pro.duckdns.org
rest:
- resource: "https://ender5pro.duckdns.org/plugin/PrintJobHistory/loadPrintJobHistoryByQuery?from=0&to=100000&sortColumn=printStartDateTime&sortOrder=desc&filterName="
method: GET
headers:
X-Api-Key: !secret octoprint_api_key
scan_interval: 300
sensor:
- name: "OctoPrint Filament Used Total"
unique_id: octoprint_filament_used_total
unit_of_measurement: "mm"
device_class: distance
state_class: total
icon: mdi:spool
value_template: >-
{{
value_json.allPrintJobs
| map(attribute='filamentModels')
| select('defined')
| map(attribute='total')
| select('defined')
| map(attribute='usedLength')
| select('is_number')
| sum
| round(2)
}}
json_attributes_path: "$.allPrintJobs[0]"
json_attributes:
- "fileName"
- "filamentModels"
- "printStatusResult"
- "duration"
- "printStartDateTimeFormatted"
- name: "OctoPrint Recent Prints"
unique_id: octoprint_recent_prints
icon: mdi:history
value_template: >-
{{ value_json.allPrintJobs | length }}
json_attributes:
- "allPrintJobs"
# OctoPrint physical position (holds last value when idle; raw discovery sensor zeroes on currentZ:null)
mqtt:
sensor:
- name: "OctoPrint Position Z"
unique_id: octoprint_position_z
state_topic: "octoPrint/event/PositionUpdate"
value_template: "{{ value_json.z }}"
unit_of_measurement: "mm"
device_class: distance
icon: mdi:axis-z-arrow
availability:
- topic: "octoPrint/mqtt"
payload_available: "connected"
payload_not_available: "disconnected"
device:
identifiers:
- "041acd1efce0452ca0a0360eeb89c3b4"
name: "OctoPrint"
emulated_hue: emulated_hue:
host_ip: 192.168.1.140 host_ip: 192.168.1.140
advertise_ip: 192.168.1.140 advertise_ip: 192.168.1.140
@@ -209,3 +322,8 @@ emulated_hue:
input_boolean.cync_motion_bridge: input_boolean.cync_motion_bridge:
name: "Cync Motion Bridge" name: "Cync Motion Bridge"
hidden: false hidden: false
nest_snapshot:
# G-code proxy for the 3D toolpath viewer card (www/gcode_viewer_card.js)
octoprint_gcode_proxy:
+5 -3
View File
@@ -430,6 +430,11 @@ class AlarmoCoordinator(DataUpdateCoordinator):
) )
return return
if action == const.EVENT_ACTION_DISARM:
_LOGGER.info("Received request for disarming")
await alarm_entity.async_alarm_disarm(None, skip_code=True)
return
arm_mode = ( arm_mode = (
alarm_entity._revert_state alarm_entity._revert_state
if alarm_entity._revert_state in const.ARM_MODES if alarm_entity._revert_state in const.ARM_MODES
@@ -452,9 +457,6 @@ class AlarmoCoordinator(DataUpdateCoordinator):
elif action == const.EVENT_ACTION_RETRY_ARM: elif action == const.EVENT_ACTION_RETRY_ARM:
_LOGGER.info("Received request for retry arming") _LOGGER.info("Received request for retry arming")
await alarm_entity.async_handle_arm_request(arm_mode, skip_code=True) await alarm_entity.async_handle_arm_request(arm_mode, skip_code=True)
elif action == const.EVENT_ACTION_DISARM:
_LOGGER.info("Received request for disarming")
await alarm_entity.async_alarm_disarm(None, skip_code=True)
else: else:
_LOGGER.info( _LOGGER.info(
"Received request for arming with mode %s", "Received request for arming with mode %s",
@@ -323,8 +323,11 @@ class AlarmoBaseEntity(AlarmControlPanelEntity, RestoreEntity):
async def _validate_code(self, code, to_state): # noqa PLR0911 async def _validate_code(self, code, to_state): # noqa PLR0911
"""Validate code and user permissions for a requested state change. """Validate code and user permissions for a requested state change.
Returns a (success, error_event) tuple. When success is True, Returns a (success, info) tuple.
error_event is None. When validation is successful, success is True, otherwise False.
When success is True, info is the user data
(or None if no user/code was needed).
When success is False, info is the error event.
""" """
# check bypass rules # check bypass rules
if ( if (
@@ -404,7 +407,7 @@ class AlarmoBaseEntity(AlarmControlPanelEntity, RestoreEntity):
# success # success
self._changed_by = user[ATTR_NAME] self._changed_by = user[ATTR_NAME]
return True, None return True, user
async def async_service_disarm_handler(self, code, context_id=None): async def async_service_disarm_handler(self, code, context_id=None):
"""Handle external disarm request from alarmo.disarm service.""" """Handle external disarm request from alarmo.disarm service."""
+2
View File
@@ -44,6 +44,8 @@ def validate_area(trigger, area_id, hass):
return False return False
elif trigger[const.ATTR_AREA]: elif trigger[const.ATTR_AREA]:
return trigger[const.ATTR_AREA] == area_id return trigger[const.ATTR_AREA] == area_id
elif area_id and hass.data[const.DOMAIN].get("master"):
return False
elif len(hass.data[const.DOMAIN]["areas"]) == 1: elif len(hass.data[const.DOMAIN]["areas"]) == 1:
return True return True
else: else:
+1 -1
View File
@@ -15,7 +15,7 @@ from homeassistant.components.alarm_control_panel import (
AlarmControlPanelEntityFeature, AlarmControlPanelEntityFeature,
) )
VERSION = "1.10.18" VERSION = "1.10.19"
NAME = "Alarmo" NAME = "Alarmo"
MANUFACTURER = "@nielsfaber" MANUFACTURER = "@nielsfaber"
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -17,5 +17,5 @@
"iot_class": "local_push", "iot_class": "local_push",
"issue_tracker": "https://github.com/nielsfaber/alarmo/issues", "issue_tracker": "https://github.com/nielsfaber/alarmo/issues",
"requirements": [], "requirements": [],
"version": "1.10.18" "version": "1.10.19"
} }
+38 -13
View File
@@ -130,7 +130,11 @@ class SensorHandler:
def __init__(self, hass: HomeAssistant): def __init__(self, hass: HomeAssistant):
"""Initialize the sensor handler.""" """Initialize the sensor handler."""
self._config = None # The sensor config is only loaded once HA has finished starting (see
# _setup_sensor_listeners below). Until then this must be an empty dict
# rather than None: restoring a persisted alarm state can call into
# active_sensors_for_alarm_state() before that point.
self._config = {}
self.hass = hass self.hass = hass
self._state_listener = None self._state_listener = None
self._subscriptions = [] self._subscriptions = []
@@ -144,9 +148,10 @@ class SensorHandler:
@callback @callback
def async_update_sensor_config(): def async_update_sensor_config():
"""Sensor config updated, reload the configuration.""" """Sensor config updated, reload the configuration."""
self._config = self.hass.data[const.DOMAIN][ self._config = (
"coordinator" self.hass.data[const.DOMAIN]["coordinator"].store.async_get_sensors()
].store.async_get_sensors() or {}
)
self._groups = self.hass.data[const.DOMAIN][ self._groups = self.hass.data[const.DOMAIN][
"coordinator" "coordinator"
].store.async_get_sensor_groups() ].store.async_get_sensor_groups()
@@ -377,15 +382,28 @@ class SensorHandler:
new_state = parse_sensor_state(event.data["new_state"]) new_state = parse_sensor_state(event.data["new_state"])
sensor_config = self._config[entity] sensor_config = self._config[entity]
if old_state == STATE_UNKNOWN: if old_state == STATE_UNKNOWN:
# sensor is unknown at startup, if new_state not in (STATE_OPEN, STATE_UNAVAILABLE) or (
# state which comes after is considered as initial state sensor_config[ATTR_ALLOW_OPEN] and new_state == STATE_OPEN
_LOGGER.debug( ):
"Initial state for %s is %s", # transition to a safe state, or to open while the sensor is
entity, # allowed to be open — treat as initial state
new_state, _LOGGER.debug(
) "Initial state for %s is %s",
self.update_ready_to_arm_status(sensor_config["area"]) entity,
return new_state,
)
self.update_ready_to_arm_status(sensor_config["area"])
return
else:
# transition to a violation state — do not treat as initial,
# proceed through normal trigger evaluation
_LOGGER.debug(
"Sensor %s recovered from unknown to %s while alarm is %s, "
"evaluating as live state change",
entity,
new_state,
self.hass.data[const.DOMAIN]["areas"][sensor_config["area"]].state,
)
if old_state == new_state: if old_state == new_state:
# not a state change - ignore # not a state change - ignore
return return
@@ -740,6 +758,13 @@ class SensorHandler:
# Skip unknown sensors - they'll be handled when they become known # Skip unknown sensors - they'll be handled when they become known
continue continue
if sensor_config[ATTR_ALLOW_OPEN] and sensor_state == STATE_OPEN:
_LOGGER.debug(
"Sensor %s is open with allow_open, skipping startup eval",
entity_id,
)
continue
# Check if sensor state is allowed in current alarm state # Check if sensor state is allowed in current alarm state
res = sensor_state_allowed(sensor_state, sensor_config, alarm_entity.state) res = sensor_state_allowed(sensor_state, sensor_config, alarm_entity.state)
+4 -4
View File
@@ -381,10 +381,10 @@ class AlarmoStorage:
for area in data["areas"]: for area in data["areas"]:
modes = { modes = {
mode: ModeEntry( mode: ModeEntry(
enabled=config["enabled"], enabled=config.get("enabled", False),
exit_time=config["exit_time"], exit_time=config.get("exit_time", None),
entry_time=config["entry_time"], entry_time=config.get("entry_time", None),
trigger_time=config["trigger_time"], trigger_time=config.get("trigger_time", None),
) )
for (mode, config) in area["modes"].items() for (mode, config) in area["modes"].items()
} }
@@ -52,6 +52,7 @@ from .const import (
CONF_ICLOUD_TOKEN, CONF_ICLOUD_TOKEN,
CONF_ICLOUD_IMAGE_SIZE, CONF_ICLOUD_IMAGE_SIZE,
DEFAULT_ICLOUD_IMAGE_SIZE, DEFAULT_ICLOUD_IMAGE_SIZE,
CONF_ICLOUD_BACKEND,
ICLOUD_IMAGE_FULL, ICLOUD_IMAGE_FULL,
ICLOUD_IMAGE_PREVIEW, ICLOUD_IMAGE_PREVIEW,
CONF_SYNOLOGY_URL, CONF_SYNOLOGY_URL,
@@ -219,7 +220,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
if not ALBUM_URL_RE.match(url): if not ALBUM_URL_RE.match(url):
errors[CONF_ALBUM_URL] = "invalid_album_url" errors[CONF_ALBUM_URL] = "invalid_album_url"
else: else:
await self.async_set_unique_id(f"{DOMAIN}:{PROVIDER_GOOGLE_SHARED}:{url}") await self.async_set_unique_id(f"{DOMAIN}:{PROVIDER_GOOGLE_SHARED}:{url}:{name}")
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
return self.async_create_entry( return self.async_create_entry(
title=name, title=name,
@@ -249,7 +250,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
if not path: if not path:
errors[CONF_LOCAL_PATH] = "invalid_path" errors[CONF_LOCAL_PATH] = "invalid_path"
else: else:
await self.async_set_unique_id(f"{DOMAIN}:{PROVIDER_LOCAL_FOLDER}:{path}") await self.async_set_unique_id(f"{DOMAIN}:{PROVIDER_LOCAL_FOLDER}:{path}:{name}")
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
return self.async_create_entry( return self.async_create_entry(
title=name, title=name,
@@ -283,7 +284,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
errors[CONF_MEDIA_CONTENT_ID] = "invalid_media_source" errors[CONF_MEDIA_CONTENT_ID] = "invalid_media_source"
else: else:
await self.async_set_unique_id( await self.async_set_unique_id(
f"{DOMAIN}:{PROVIDER_MEDIA_SOURCE}:{content_id}" f"{DOMAIN}:{PROVIDER_MEDIA_SOURCE}:{content_id}:{name}"
) )
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
return self.async_create_entry( return self.async_create_entry(
@@ -395,7 +396,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
sel_id = json.dumps(selection, sort_keys=True) sel_id = json.dumps(selection, sort_keys=True)
unique = ( unique = (
f"{DOMAIN}:{PROVIDER_IMMICH}:{self._immich_url}:" f"{DOMAIN}:{PROVIDER_IMMICH}:{self._immich_url}:"
f"composite:{sel_id}:{raw_filter}" f"composite:{sel_id}:{raw_filter}:{name}"
) )
await self.async_set_unique_id(unique) await self.async_set_unique_id(unique)
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
@@ -574,7 +575,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
sel_id = json.dumps(selection, sort_keys=True) sel_id = json.dumps(selection, sort_keys=True)
unique = ( unique = (
f"{DOMAIN}:{PROVIDER_PHOTOPRISM}:{self._pp_url}:" f"{DOMAIN}:{PROVIDER_PHOTOPRISM}:{self._pp_url}:"
f"composite:{sel_id}:{raw_filter}" f"composite:{sel_id}:{raw_filter}:{name}"
) )
await self.async_set_unique_id(unique) await self.async_set_unique_id(unique)
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
@@ -659,18 +660,22 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
from . import icloud as icloud_api from . import icloud as icloud_api
token = icloud_api.parse_share_link(raw_url) parsed = icloud_api.parse_share(raw_url)
if not token: if not parsed:
errors[CONF_ICLOUD_URL] = "invalid_icloud_url" errors[CONF_ICLOUD_URL] = "invalid_icloud_url"
else: else:
client = icloud_api.IcloudClient(self.hass, token) token, backend = parsed
if backend == icloud_api.BACKEND_CLOUDKIT:
client = icloud_api.IcloudCloudKitClient(self.hass, token)
else:
client = icloud_api.IcloudClient(self.hass, token)
try: try:
await client.async_validate() await client.async_validate()
except Exception: # noqa: BLE001 - any failure means bad/expired link except Exception: # noqa: BLE001 - any failure means bad/expired link
errors["base"] = "icloud_cannot_connect" errors["base"] = "icloud_cannot_connect"
else: else:
await self.async_set_unique_id( await self.async_set_unique_id(
f"{DOMAIN}:{PROVIDER_ICLOUD}:{token}" f"{DOMAIN}:{PROVIDER_ICLOUD}:{token}:{name}"
) )
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
return self.async_create_entry( return self.async_create_entry(
@@ -678,6 +683,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
data={ data={
CONF_PROVIDER: PROVIDER_ICLOUD, CONF_PROVIDER: PROVIDER_ICLOUD,
CONF_ICLOUD_TOKEN: token, CONF_ICLOUD_TOKEN: token,
CONF_ICLOUD_BACKEND: backend,
CONF_ICLOUD_IMAGE_SIZE: size, CONF_ICLOUD_IMAGE_SIZE: size,
CONF_ALBUM_NAME: name, CONF_ALBUM_NAME: name,
}, },
@@ -725,26 +731,35 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
) )
try: try:
await client.async_login(otp_code=otp or None) await client.async_login(otp_code=otp or None)
# Albums and category browsing live only in the Personal space
# (there is no Shared Space album/category API). For the Shared
# Space, validate access up front so a permission problem
# surfaces here, not later.
if space == SYNOLOGY_SPACE_SHARED:
albums = people = places = tags = subjects = []
await client.async_collect_assets(None)
else:
albums = await client.async_list_albums()
people = await client.async_list_people()
places = await client.async_list_places()
tags = await client.async_list_tags()
subjects = await client.async_list_subjects()
except syn_api.SynologyOtpRequired: except syn_api.SynologyOtpRequired:
errors["otp_code"] = "synology_otp_required" errors["otp_code"] = "synology_otp_required"
except syn_api.SynologyPermissionError:
errors["base"] = "synology_shared_unavailable"
except Exception: # noqa: BLE001 - any failure means bad URL/creds except Exception: # noqa: BLE001 - any failure means bad URL/creds
errors["base"] = "synology_cannot_connect" errors["base"] = "synology_cannot_connect"
else:
if not errors:
# Login worked, so the URL and credentials are fine. Albums and
# category browsing live only in the Personal space (there is no
# Shared Space album/category API). For the Shared Space we just
# validate access up front; any failure here means the Shared
# Space is not enabled or this account cannot reach it, not a
# credentials problem.
try:
if space == SYNOLOGY_SPACE_SHARED:
albums = people = places = tags = subjects = []
await client.async_collect_assets(None)
else:
albums = await client.async_list_albums()
people = await client.async_list_people()
places = await client.async_list_places()
tags = await client.async_list_tags()
subjects = await client.async_list_subjects()
except Exception: # noqa: BLE001
if space == SYNOLOGY_SPACE_SHARED:
errors["base"] = "synology_shared_unavailable"
else:
errors["base"] = "synology_cannot_connect"
if not errors:
self._syn_url = client.base_url self._syn_url = client.base_url
self._syn_username = username self._syn_username = username
self._syn_password = password self._syn_password = password
@@ -857,7 +872,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
sel_id = json.dumps(selection, sort_keys=True) sel_id = json.dumps(selection, sort_keys=True)
unique = ( unique = (
f"{DOMAIN}:{PROVIDER_SYNOLOGY}:{self._syn_url}:" f"{DOMAIN}:{PROVIDER_SYNOLOGY}:{self._syn_url}:"
f"{self._syn_space}:{sel_id}" f"{self._syn_space}:{sel_id}:{name}"
) )
await self.async_set_unique_id(unique) await self.async_set_unique_id(unique)
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
@@ -948,7 +963,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
else: else:
await self.async_set_unique_id( await self.async_set_unique_id(
f"{DOMAIN}:{PROVIDER_NEXTCLOUD}:{client.base_url}:" f"{DOMAIN}:{PROVIDER_NEXTCLOUD}:{client.base_url}:"
f"{username}:{client.folder}" f"{username}:{client.folder}:{name}"
) )
self._abort_if_unique_id_configured() self._abort_if_unique_id_configured()
return self.async_create_entry( return self.async_create_entry(
@@ -129,6 +129,17 @@ CONF_ICLOUD_URL = "icloud_url"
CONF_ICLOUD_TOKEN = "icloud_token" CONF_ICLOUD_TOKEN = "icloud_token"
CONF_ICLOUD_IMAGE_SIZE = "icloud_image_size" CONF_ICLOUD_IMAGE_SIZE = "icloud_image_size"
# Which iCloud backend serves the album. Older share links
# (``www.icloud.com/sharedalbum/#TOKEN``) use the legacy "shared streams" web
# API; iOS 26/macOS 26 and newer links
# (``photos.icloud.com/shared/album/TOKEN``) use CloudKit Web Services. Both are
# public and need no account. Entries created before this option existed default
# to the legacy backend.
CONF_ICLOUD_BACKEND = "icloud_backend"
ICLOUD_BACKEND_SHAREDSTREAMS = "sharedstreams"
ICLOUD_BACKEND_CLOUDKIT = "cloudkit"
DEFAULT_ICLOUD_BACKEND = ICLOUD_BACKEND_SHAREDSTREAMS
# ``full`` picks the largest derivative Apple generated (best for a slideshow, # ``full`` picks the largest derivative Apple generated (best for a slideshow,
# usually ~2048px); ``preview`` picks the smallest (a thumbnail; fastest). # usually ~2048px); ``preview`` picks the smallest (a thumbnail; fastest).
ICLOUD_IMAGE_FULL = "full" ICLOUD_IMAGE_FULL = "full"
@@ -44,6 +44,9 @@ from .const import (
CONF_ICLOUD_TOKEN, CONF_ICLOUD_TOKEN,
CONF_ICLOUD_IMAGE_SIZE, CONF_ICLOUD_IMAGE_SIZE,
DEFAULT_ICLOUD_IMAGE_SIZE, DEFAULT_ICLOUD_IMAGE_SIZE,
CONF_ICLOUD_BACKEND,
DEFAULT_ICLOUD_BACKEND,
ICLOUD_BACKEND_CLOUDKIT,
CONF_SYNOLOGY_URL, CONF_SYNOLOGY_URL,
CONF_SYNOLOGY_USERNAME, CONF_SYNOLOGY_USERNAME,
CONF_SYNOLOGY_PASSWORD, CONF_SYNOLOGY_PASSWORD,
@@ -1523,18 +1526,23 @@ class AlbumCoordinator(DataUpdateCoordinator):
async def _update_icloud(self) -> dict[str, Any]: async def _update_icloud(self) -> dict[str, Any]:
"""Fetch photos from a public iCloud Shared Album. """Fetch photos from a public iCloud Shared Album.
The webstream response carries capture date and caption inline, so Two public backends are supported: the legacy "shared streams" API and
there is no enrichment pass. Signed image URLs are resolved up front the newer CloudKit backend used by iOS 26/macOS 26 share links. Both
and expire after roughly a day, so they are refreshed on every album carry capture date and caption inline, so there is no enrichment pass.
refresh (like Google Photos). Signed image URLs are resolved up front and expire after a while, so
they are refreshed on every album refresh (like Google Photos).
""" """
from . import icloud as icloud_api from . import icloud as icloud_api
token = self.entry.data.get(CONF_ICLOUD_TOKEN) token = self.entry.data.get(CONF_ICLOUD_TOKEN)
size = self.entry.data.get(CONF_ICLOUD_IMAGE_SIZE, DEFAULT_ICLOUD_IMAGE_SIZE) size = self.entry.data.get(CONF_ICLOUD_IMAGE_SIZE, DEFAULT_ICLOUD_IMAGE_SIZE)
backend = self.entry.data.get(CONF_ICLOUD_BACKEND, DEFAULT_ICLOUD_BACKEND)
if not token: if not token:
raise UpdateFailed("iCloud provider is missing the album token") raise UpdateFailed("iCloud provider is missing the album token")
if backend == ICLOUD_BACKEND_CLOUDKIT:
return await self._update_icloud_cloudkit(icloud_api, token, size)
client = icloud_api.IcloudClient(self.hass, token) client = icloud_api.IcloudClient(self.hass, token)
try: try:
photos = await client.async_get_photos() photos = await client.async_get_photos()
@@ -1581,6 +1589,43 @@ class AlbumCoordinator(DataUpdateCoordinator):
"items": items, "items": items,
} }
async def _update_icloud_cloudkit(
self, icloud_api, token: str, size: str
) -> dict[str, Any]:
"""Fetch photos from a CloudKit-backed iCloud shared album."""
client = icloud_api.IcloudCloudKitClient(self.hass, token)
try:
photos = await client.async_get_items(size)
except Exception as err:
raise UpdateFailed(f"Error querying iCloud album: {err}") from err
if not photos:
raise UpdateFailed("No images found in the iCloud album")
items: list[MediaItem] = [
MediaItem(
url=p["url"],
width=p.get("width"),
height=p.get("height"),
mime_type=None,
filename=None,
captured_at=p.get("captured_at"),
description=p.get("description"),
source_id=p.get("source_id"),
exif_scanned=True,
)
for p in photos
if p.get("url")
]
if not items:
raise UpdateFailed("Could not resolve any iCloud image URLs")
return {
"title": self.entry.title,
"items": items,
}
async def _update_synology(self) -> dict[str, Any]: async def _update_synology(self) -> dict[str, Any]:
"""Fetch photos from a Synology Photos library via its web API. """Fetch photos from a Synology Photos library via its web API.
+337 -11
View File
@@ -1,11 +1,11 @@
"""iCloud Shared Album client and pure parsing helpers. """iCloud Shared Album client and pure parsing helpers.
Talks to Apple's public "shared streams" web API for a shared photo album - Reads a public iCloud shared photo album. No account or password is involved;
the same undocumented JSON endpoints the iCloud web album viewer uses. No the album's share token (from the share link) is the only credential. Apple
account or password is involved; the album's share token (the part after serves shared albums through two different public backends depending on when
``#`` in the share link) is the only credential. the album was created, and this module speaks both:
API shape (POST, ``Content-Type: text/plain``, ``Origin: https://www.icloud.com``): Legacy "shared streams" backend (``www.icloud.com/sharedalbum/#TOKEN``):
- ``POST {base}/webstream`` ``{"streamCtag": null}`` -> ``{streamName, photos: - ``POST {base}/webstream`` ``{"streamCtag": null}`` -> ``{streamName, photos:
[{photoGuid, derivatives:{<height>:{checksum,width,height,fileSize}}, [{photoGuid, derivatives:{<height>:{checksum,width,height,fileSize}},
dateCreated, caption, width, height}]}``. May first answer with a dateCreated, caption, width, height}]}``. May first answer with a
@@ -16,13 +16,24 @@ API shape (POST, ``Content-Type: text/plain``, ``Origin: https://www.icloud.com`
as ``https://{url_location}{url_path}``; it is a signed CDN link that as ``https://{url_location}{url_path}``; it is a signed CDN link that
expires after roughly a day, so it is refreshed on every album refresh. expires after roughly a day, so it is refreshed on every album refresh.
Metadata: capture date (``dateCreated``) and caption are inline. Apple strips CloudKit backend (``photos.icloud.com/shared/album/TOKEN``, iOS 26/macOS 26+):
GPS from shared-album web data, so there is no location. - ``POST ckdatabasews.icloud.com/.../public/records/resolve?shortGUID=TOKEN``
resolves the short link to a shared CloudKit zone and hands back an
anonymous ``publicAccessAuthToken`` plus the partition host to talk to.
- ``POST {partition}/.../shared/records/query`` with the anonymous token and
``sharing_url_key`` returns ``CPLMaster``/``CPLAsset`` records; each
``CPLMaster`` carries signed ``downloadURL`` derivatives directly.
Both backends are POST with ``Content-Type: text/plain`` and
``Origin: https://www.icloud.com``. Metadata (capture date, caption) is inline;
Apple strips GPS from shared-album web data, so there is no location.
""" """
from __future__ import annotations from __future__ import annotations
import base64
from datetime import datetime, timezone from datetime import datetime, timezone
from typing import Any from typing import Any
from urllib.parse import quote, urlencode
import async_timeout import async_timeout
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
@@ -34,6 +45,16 @@ _MAX_ASSETS = 20_000
_URL_BATCH = 25 _URL_BATCH = 25
_BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" _BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
# Characters allowed in a share token. Legacy shared-streams tokens are base62;
# the newer CloudKit short GUIDs use a URL-safe base64 alphabet, so they may
# also contain ``-`` and ``_`` (e.g. ``045YeI20-8u3X31bBPD5z9B_A``).
_TOKEN_CHARS = frozenset(_BASE62 + "-_")
# Which iCloud backend serves an album. These string values match the
# ``ICLOUD_BACKEND_*`` constants in ``const.py``; they are duplicated here to
# keep this module free of a hard dependency on ``const``.
BACKEND_SHAREDSTREAMS = "sharedstreams"
BACKEND_CLOUDKIT = "cloudkit"
# Headers Apple's web endpoints expect for the shared-streams API. # Headers Apple's web endpoints expect for the shared-streams API.
_API_HEADERS = { _API_HEADERS = {
@@ -42,6 +63,37 @@ _API_HEADERS = {
"Accept": "application/json", "Accept": "application/json",
} }
# --- CloudKit backend constants -------------------------------------------
_CK_RESOLVE_HOST = "https://ckdatabasews.icloud.com"
_CK_CONTAINER = "com.apple.photos.cloud"
_CK_BUILD = "2626"
# Sorted, non-hidden, non-deleted assets. Returns both CPLMaster (image
# resources) and CPLAsset (metadata) records in one query.
_CK_RECORD_TYPE = "CPLAssetAndMasterByAssetDateWithoutHiddenOrDeleted"
_CK_PAGE = 200
_CK_HEADERS = {
"Content-Type": "text/plain",
"Origin": "https://www.icloud.com",
"Referer": "https://www.icloud.com/",
"Accept": "application/json",
}
# Image resource fields on a CPLMaster, in ascending size order, paired with
# their width/height sibling fields.
_CK_IMAGE_RES = (
("resJPEGThumbRes", "resJPEGThumbWidth", "resJPEGThumbHeight"),
("resJPEGMedRes", "resJPEGMedWidth", "resJPEGMedHeight"),
("resJPEGLargeRes", "resJPEGLargeWidth", "resJPEGLargeHeight"),
("resOriginalRes", "resOriginalWidth", "resOriginalHeight"),
)
# Original item types a browser can display directly. The JPEG derivatives are
# always browser-safe; the original is only used as a fallback when it is one
# of these.
_CK_BROWSER_SAFE_ORIGINAL = {"public.jpeg", "public.png"}
# itemType substrings that mark a master as a video (skipped in a slideshow).
_CK_VIDEO_HINTS = ("movie", "video", "mpeg-4", "quicktime")
def _base62_to_int(value: str) -> int: def _base62_to_int(value: str) -> int:
result = 0 result = 0
@@ -53,23 +105,52 @@ def _base62_to_int(value: str) -> int:
def parse_share_link(url: str) -> str | None: def parse_share_link(url: str) -> str | None:
"""Extract the album share token from a pasted iCloud link. """Extract the album share token from a pasted iCloud link.
Accepts a full ``https://www.icloud.com/sharedalbum/#TOKEN`` link or a Accepts a legacy ``https://www.icloud.com/sharedalbum/#TOKEN`` link, a new
bare token. Returns ``None`` if nothing token-like is found. ``https://photos.icloud.com/shared/album/TOKEN`` link, or a bare token.
Returns ``None`` if nothing token-like is found.
""" """
if not url: if not url:
return None return None
text = url.strip() text = url.strip()
# Legacy links carry the token in the fragment; new links carry it as the
# last path segment.
if "#" in text: if "#" in text:
text = text.rsplit("#", 1)[1] text = text.rsplit("#", 1)[1]
elif "/" in text: elif "/" in text:
text = text.rstrip("/").rsplit("/", 1)[1] text = text.rstrip("/").rsplit("/", 1)[1]
# Tokens are base62 and start with an uppercase letter (A, B, ...). # Drop any leftover query string.
text = text.split("?", 1)[0]
token = text.strip() token = text.strip()
if token and all(ch in _BASE62 for ch in token): # Legacy tokens are base62 and start with an uppercase letter; the newer
# CloudKit short GUIDs may start with a digit and can contain ``-``/``_``,
# so accept the wider URL-safe alphabet without a leading-char check.
if token and all(ch in _TOKEN_CHARS for ch in token):
return token return token
return None return None
def detect_backend(url: str) -> str:
"""Return which iCloud backend a pasted share link belongs to.
New ``photos.icloud.com/shared/album/...`` links use the CloudKit backend;
everything else (including bare tokens) defaults to the legacy shared
streams backend, preserving behaviour for links created before CloudKit.
"""
text = (url or "").lower()
if "/shared/album/" in text or "photos.icloud.com" in text:
return BACKEND_CLOUDKIT
return BACKEND_SHAREDSTREAMS
def parse_share(url: str) -> tuple[str, str] | None:
"""Parse a share link into ``(token, backend)`` or ``None`` if invalid."""
token = parse_share_link(url)
if not token:
return None
return token, detect_backend(url)
def partition_host(token: str) -> str: def partition_host(token: str) -> str:
"""Derive the shared-streams partition host for a token. """Derive the shared-streams partition host for a token.
@@ -250,3 +331,248 @@ class IcloudClient:
raise RuntimeError(f"iCloud webstream failed: HTTP {status}") raise RuntimeError(f"iCloud webstream failed: HTTP {status}")
payload = _json.loads(raw) payload = _json.loads(raw)
return payload.get("streamName") if isinstance(payload, dict) else None return payload.get("streamName") if isinstance(payload, dict) else None
# --- CloudKit backend helpers ---------------------------------------------
def _ck_value(fields: dict[str, Any], name: str) -> Any:
"""Return the inner ``value`` of a CloudKit field, or ``None``."""
field = fields.get(name) if isinstance(fields, dict) else None
return field.get("value") if isinstance(field, dict) else None
def _ck_decode_filename(fields: dict[str, Any]) -> str | None:
"""Decode the (base64) ``filenameEnc`` field of a CPLMaster, if present."""
raw = _ck_value(fields, "filenameEnc")
if isinstance(raw, str) and raw:
try:
return base64.b64decode(raw).decode("utf-8", "replace")
except (ValueError, TypeError):
return None
return None
def _ck_is_video(master_fields: dict[str, Any]) -> bool:
"""Return ``True`` when a CPLMaster describes a video (not a still image).
Only the ``itemType`` is used: Live Photos keep an image ``itemType`` (and
carry a non-zero asset duration), so they are treated as stills and shown.
"""
item_type = _ck_value(master_fields, "itemType")
if isinstance(item_type, str):
lowered = item_type.lower()
return any(hint in lowered for hint in _CK_VIDEO_HINTS)
return False
def pick_ck_resource(
master_fields: dict[str, Any], size: str
) -> tuple[str, Any, Any] | None:
"""Pick a downloadable image derivative for the requested display ``size``.
Returns ``(download_url, width, height)``. ``full`` selects the largest
available derivative (best for a slideshow); ``preview`` selects the
smallest. JPEG derivatives are always browser-safe; the original is only
considered when it is itself a browser-displayable format.
"""
if not isinstance(master_fields, dict):
return None
item_type = _ck_value(master_fields, "itemType")
item_type = item_type.lower() if isinstance(item_type, str) else ""
original_safe = item_type in _CK_BROWSER_SAFE_ORIGINAL
candidates: list[tuple[int, str, Any, Any]] = []
for res_key, w_key, h_key in _CK_IMAGE_RES:
res = master_fields.get(res_key)
if not isinstance(res, dict):
continue
val = res.get("value")
if not isinstance(val, dict):
continue
download_url = val.get("downloadURL")
if not download_url:
continue
if res_key == "resOriginalRes" and not original_safe:
continue
width = _ck_value(master_fields, w_key)
height = _ck_value(master_fields, h_key)
try:
rank = int(width)
except (TypeError, ValueError):
rank = 0
candidates.append((rank, download_url, width, height))
if not candidates:
return None
candidates.sort(key=lambda c: c[0])
_rank, download_url, width, height = candidates[0 if size == "preview" else -1]
return download_url, width, height
def build_ck_image_url(download_url: str | None, filename: str | None = None) -> str | None:
"""Fill the ``${f}`` filename placeholder in a CloudKit download URL."""
if not download_url:
return None
return download_url.replace("${f}", quote(filename or "image", safe=""))
def _ck_share_title(resolve_result: dict[str, Any]) -> str | None:
"""Return the album title from a resolve result's share record, if any."""
share = resolve_result.get("share") if isinstance(resolve_result, dict) else None
fields = share.get("fields") if isinstance(share, dict) else None
title = _ck_value(fields, "cloudkit.title") if isinstance(fields, dict) else None
if isinstance(title, str) and title.strip():
return title.strip()
return None
def _to_int(value: Any) -> int | None:
return int(value) if isinstance(value, (int, float)) else None
def parse_ck_records(records: list[Any], size: str) -> list[dict[str, Any]]:
"""Join CPLMaster + CPLAsset records into normalized photo dicts.
Each returned dict has ``source_id``, ``url``, ``width``, ``height``,
``captured_at`` (epoch ms) and ``description``.
"""
masters: dict[str, dict[str, Any]] = {}
assets: list[dict[str, Any]] = []
for rec in records:
if not isinstance(rec, dict):
continue
if rec.get("recordType") == "CPLMaster":
masters[rec.get("recordName")] = rec.get("fields") or {}
elif rec.get("recordType") == "CPLAsset":
assets.append(rec)
out: list[dict[str, Any]] = []
seen: set[str] = set()
for asset in assets:
af = asset.get("fields") or {}
if _ck_value(af, "isHidden") or _ck_value(af, "trashReason"):
continue
ref = af.get("masterRef")
ref_val = ref.get("value") if isinstance(ref, dict) else None
master_name = ref_val.get("recordName") if isinstance(ref_val, dict) else None
master_fields = masters.get(master_name)
if not master_fields or _ck_is_video(master_fields):
continue
picked = pick_ck_resource(master_fields, size)
if not picked:
continue
download_url, width, height = picked
url = build_ck_image_url(download_url, _ck_decode_filename(master_fields))
if not url:
continue
source_id = master_name or asset.get("recordName")
if not source_id or source_id in seen:
continue
seen.add(source_id)
out.append(
{
"source_id": source_id,
"url": url,
"width": _to_int(width),
"height": _to_int(height),
"captured_at": _to_int(_ck_value(af, "assetDate")),
"description": None,
}
)
return out
class IcloudCloudKitClient:
"""Async client for the CloudKit-backed iCloud shared album backend.
Everything is anonymous: a ``resolve`` call turns the short share token
into a shared CloudKit zone plus a short-lived anonymous access token, and
a ``records/query`` call returns the album's photos with signed image URLs
already embedded.
"""
def __init__(self, hass, token: str) -> None:
self.hass = hass
self.token = token
# Cached (zone, base_url, access_token, title) from the resolve call.
self._resolved: tuple[dict[str, Any], str, str, str | None] | None = None
async def _post(self, url: str, body: dict[str, Any]) -> tuple[int, bytes]:
session = async_get_clientsession(self.hass)
async with async_timeout.timeout(_TIMEOUT):
async with session.post(url, json=body, headers=_CK_HEADERS) as resp:
return resp.status, await resp.read()
async def _resolve(self) -> tuple[dict[str, Any], str, str, str | None]:
if self._resolved is not None:
return self._resolved
import json as _json
url = (
f"{_CK_RESOLVE_HOST}/database/1/{_CK_CONTAINER}/production"
f"/public/records/resolve?ckjsBuildVersion={_CK_BUILD}"
f"&shortGUID={self.token}"
)
status, raw = await self._post(url, {"shortGUIDs": [{"value": self.token}]})
if status != 200:
raise RuntimeError(f"iCloud resolve failed: HTTP {status}")
payload = _json.loads(raw)
results = payload.get("results") if isinstance(payload, dict) else None
if not results:
raise RuntimeError("iCloud share link did not resolve to an album")
result = results[0]
zone = result.get("zoneID")
access = result.get("anonymousPublicAccess") or {}
access_token = access.get("token")
partition = access.get("databasePartition")
if not zone or not access_token or not partition:
raise RuntimeError("iCloud shared album is not publicly accessible")
base = f"{partition}/database/1/{_CK_CONTAINER}/production"
self._resolved = (zone, base, access_token, _ck_share_title(result))
return self._resolved
def _query_url(self, base: str, access_token: str) -> str:
query = urlencode(
{
"remapEnums": "true",
"getCurrentSyncToken": "true",
"sharing_url_key": self.token,
"publicAccessAuthToken": access_token,
}
)
return f"{base}/shared/records/query?{query}"
async def async_validate(self) -> str | None:
"""Return the album title if the share link resolves, else raise."""
_zone, _base, _token, title = await self._resolve()
return title
async def async_get_items(self, size: str) -> list[dict[str, Any]]:
"""Return normalized photo dicts for the album (see ``parse_ck_records``)."""
import json as _json
zone, base, access_token, _title = await self._resolve()
url = self._query_url(base, access_token)
records: list[Any] = []
continuation: str | None = None
while len(records) < _MAX_ASSETS:
body: dict[str, Any] = {
"zoneID": zone,
"query": {"recordType": _CK_RECORD_TYPE},
"resultsLimit": _CK_PAGE,
}
if continuation:
body["continuationMarker"] = continuation
status, raw = await self._post(url, body)
if status != 200:
raise RuntimeError(f"iCloud records query failed: HTTP {status}")
payload = _json.loads(raw)
batch = payload.get("records") if isinstance(payload, dict) else None
if not batch:
break
records.extend(batch)
continuation = payload.get("continuationMarker") if isinstance(payload, dict) else None
if not continuation:
break
return parse_ck_records(records, size)
@@ -8,5 +8,5 @@
"iot_class": "cloud_polling", "iot_class": "cloud_polling",
"issue_tracker": "https://github.com/eyalgal/album_slideshow/issues", "issue_tracker": "https://github.com/eyalgal/album_slideshow/issues",
"requirements": ["Pillow"], "requirements": ["Pillow"],
"version": "1.6.0" "version": "1.7.1"
} }
@@ -78,7 +78,7 @@
}, },
"icloud": { "icloud": {
"title": "iCloud Shared Album", "title": "iCloud Shared Album",
"description": "Paste the public link to an iCloud Shared Album (in Photos, open the album, tap the share icon, and copy the Public Website link). No Apple ID or password is needed - the link itself is the credential. Capture date and captions come through; Apple does not include location in shared albums.", "description": "Paste the public link to an iCloud Shared Album (in Photos, open the album, tap the share icon, and copy the Public Website link). Both the older icloud.com/sharedalbum links and the newer photos.icloud.com/shared/album links work. No Apple ID or password is needed - the link itself is the credential. Capture date comes through; Apple does not include location in shared albums.",
"data": { "data": {
"album_name": "Album name", "album_name": "Album name",
"icloud_url": "Shared album link", "icloud_url": "Shared album link",
@@ -78,7 +78,7 @@
}, },
"icloud": { "icloud": {
"title": "iCloud Shared Album", "title": "iCloud Shared Album",
"description": "Paste the public link to an iCloud Shared Album (in Photos, open the album, tap the share icon, and copy the Public Website link). No Apple ID or password is needed - the link itself is the credential. Capture date and captions come through; Apple does not include location in shared albums.", "description": "Paste the public link to an iCloud Shared Album (in Photos, open the album, tap the share icon, and copy the Public Website link). Both the older icloud.com/sharedalbum links and the newer photos.icloud.com/shared/album links work. No Apple ID or password is needed - the link itself is the credential. Capture date comes through; Apple does not include location in shared albums.",
"data": { "data": {
"album_name": "Album name", "album_name": "Album name",
"icloud_url": "Shared album link", "icloud_url": "Shared album link",
@@ -26,7 +26,7 @@
* tap_action: none # none | more-info * tap_action: none # none | more-info
*/ */
const VERSION = "1.6.0"; const VERSION = "1.7.1";
const ANIMATED_TRANSITIONS = [ const ANIMATED_TRANSITIONS = [
"fade", "fade",
-37
View File
@@ -1,37 +0,0 @@
"""C.A.F.E. - Visual automation editor for Home Assistant."""
from __future__ import annotations
import logging
from pathlib import Path
from homeassistant.core import HomeAssistant
from homeassistant.helpers.typing import ConfigType
from .const import DOMAIN
from .panel import async_register_panel, async_unregister_panel
_LOGGER = logging.getLogger(__name__)
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the C.A.F.E. component."""
# This will be called when the integration is loaded
# But actual setup happens in async_setup_entry
return True
async def async_setup_entry(hass: HomeAssistant, entry) -> bool:
"""Set up C.A.F.E. from a config entry."""
# Register the panel (frontend)
await async_register_panel(hass)
_LOGGER.info("C.A.F.E. integration set up successfully")
return True
async def async_unload_entry(hass: HomeAssistant, entry) -> bool:
"""Unload a config entry."""
async_unregister_panel(hass)
return True
-53
View File
@@ -1,53 +0,0 @@
"""Config flow for C.A.F.E. integration."""
from __future__ import annotations
import logging
from typing import Any
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
STEP_USER_DATA_SCHEMA = vol.Schema({})
class CafeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle a config flow for C.A.F.E."""
VERSION = 1
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the initial step."""
if user_input is not None:
# Check if already configured
await self.async_set_unique_id(DOMAIN)
self._abort_if_unique_id_configured()
return self.async_create_entry(
title="C.A.F.E.",
data={}
)
return self.async_show_form(
step_id="user",
data_schema=STEP_USER_DATA_SCHEMA,
description_placeholders={
"name": "C.A.F.E.",
"description": "Visual automation editor for Home Assistant"
}
)
async def async_step_import(self, user_input: dict[str, Any]) -> FlowResult:
"""Handle import from configuration.yaml."""
await self.async_set_unique_id(DOMAIN)
self._abort_if_unique_id_configured()
return self.async_create_entry(title="C.A.F.E.", data={})
-6
View File
@@ -1,6 +0,0 @@
"""Constants for C.A.F.E.."""
DOMAIN = "cafe"
PANEL_URL = "/cafe_panel"
PANEL_TITLE = "C.A.F.E."
PANEL_ICON = "mdi:coffee-to-go"
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"domain": "cafe", "domain": "cafe",
"name": "C.A.F.E.", "name": "C.A.F.E.",
"version": "0.6.0", "version": "0.7.0",
"codeowners": [], "codeowners": [],
"config_flow": true, "config_flow": true,
"dependencies": ["frontend", "http"], "dependencies": ["frontend", "http"],
-66
View File
@@ -1,66 +0,0 @@
"""Panel for C.A.F.E."""
import os
import logging
from pathlib import Path
from homeassistant.core import HomeAssistant
from homeassistant.components import frontend, panel_custom
from homeassistant.components.http import StaticPathConfig
from .const import DOMAIN, PANEL_TITLE, PANEL_ICON
_LOGGER = logging.getLogger(__name__)
PANEL_URL = f"/api/{DOMAIN}_panel"
PANEL_NAME = f"{DOMAIN}-panel"
async def async_register_panel(hass: HomeAssistant) -> None:
"""Register the C.A.F.E. panel."""
# Get the path to the www folder within the component
www_path = Path(__file__).parent / "www"
# Register static path for the frontend assets
await hass.http.async_register_static_paths([
StaticPathConfig("/cafe-hass", str(www_path), False)
])
# The panel wrapper has a fixed name (not hashed)
wrapper_path = www_path / "assets" / "panel-wrapper.js"
if not wrapper_path.exists():
_LOGGER.error("panel-wrapper.js not found in assets directory")
_LOGGER.error(f"www path: {www_path}, assets exist: {(www_path / 'assets').exists()}")
return
# Add cache-busting parameter to force fresh load
import time
cache_bust = int(time.time())
module_url = f"/cafe-hass/assets/panel-wrapper.js?v={cache_bust}"
# First try to unregister any existing panel
try:
hass.data.get("frontend_panels", {}).pop(DOMAIN, None)
_LOGGER.info("Removed any existing panel registration")
except:
pass
# Register the panel as a custom panel with module_url
await panel_custom.async_register_panel(
hass,
webcomponent_name=PANEL_NAME,
frontend_url_path=DOMAIN,
module_url=module_url,
sidebar_title=PANEL_TITLE,
sidebar_icon=PANEL_ICON,
require_admin=True,
config={},
config_panel_domain=DOMAIN,
)
_LOGGER.info("C.A.F.E. panel registered successfully with iframe wrapper")
def async_unregister_panel(hass: HomeAssistant) -> None:
"""Unregister the C.A.F.E. panel."""
frontend.async_remove_panel(hass, DOMAIN)
_LOGGER.info("C.A.F.E. panel unregistered")
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
var d=Object.defineProperty;var o=(t,s,e)=>s in t?d(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var a=(t,s,e)=>o(t,typeof s!="symbol"?s+"":s,e);class m extends HTMLElement{constructor(){super(...arguments);a(this,"_messageHandler");a(this,"iframe",null);a(this,"_hass")}set hass(e){var i;this._hass=e,window.hass=e,(i=this.iframe)!=null&&i.contentWindow&&this.iframe.contentWindow.setHass&&this.iframe.contentWindow.setHass(e)}get hass(){return this._hass}connectedCallback(){var n,r;this.style.display="block",this.style.width="100%",this.style.height="100%",this.style.position="relative";const i=((r=(n=this._hass)==null?void 0:n.themes)==null?void 0:r.darkMode)??!1?"hsl(222.2, 84%, 4.9%)":"hsl(0, 0%, 100%)";this.iframe=document.createElement("iframe"),this.iframe.src="/cafe-hass/index.html",this.iframe.style.width="100%",this.iframe.style.height="100%",this.iframe.style.border="none",this.iframe.style.display="block",this.iframe.style.background=i,this.iframe.setAttribute("allow","clipboard-read *; clipboard-write *"),this.appendChild(this.iframe),this._messageHandler=h=>{var l;h.source===((l=this.iframe)==null?void 0:l.contentWindow)&&h.data&&h.data.type==="CAFE_TOGGLE_SIDEBAR"&&this.dispatchEvent(new Event("hass-toggle-menu",{bubbles:!0,composed:!0}))},window.addEventListener("message",this._messageHandler)}disconnectedCallback(){this.iframe&&(this.removeChild(this.iframe),this.iframe=null),window.hass=void 0,this._messageHandler&&(window.removeEventListener("message",this._messageHandler),this._messageHandler=void 0)}}customElements.get("cafe-panel")||customElements.define("cafe-panel",m); var d=Object.defineProperty;var o=(t,s,e)=>s in t?d(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var h=(t,s,e)=>o(t,typeof s!="symbol"?s+"":s,e);class m extends HTMLElement{constructor(){super(...arguments);h(this,"_messageHandler");h(this,"iframe",null);h(this,"_hass")}set hass(e){var a;this._hass=e,window.hass=e;const i=(a=this.iframe)==null?void 0:a.contentWindow;i!=null&&i.setHass&&i.setHass(e)}get hass(){return this._hass}connectedCallback(){var a,n;this.style.display="block",this.style.width="100%",this.style.height="100%",this.style.position="relative";const i=((n=(a=this._hass)==null?void 0:a.themes)==null?void 0:n.darkMode)??!1?"hsl(222.2, 84%, 4.9%)":"hsl(0, 0%, 100%)";this.iframe=document.createElement("iframe"),this.iframe.src="/cafe-hass/index.html",this.iframe.style.width="100%",this.iframe.style.height="100%",this.iframe.style.border="none",this.iframe.style.display="block",this.iframe.style.background=i,this.iframe.setAttribute("allow","clipboard-read *; clipboard-write *"),this.appendChild(this.iframe),this._messageHandler=r=>{var l;r.source===((l=this.iframe)==null?void 0:l.contentWindow)&&r.data&&r.data.type==="CAFE_TOGGLE_SIDEBAR"&&this.dispatchEvent(new Event("hass-toggle-menu",{bubbles:!0,composed:!0}))},window.addEventListener("message",this._messageHandler)}disconnectedCallback(){this.iframe&&(this.removeChild(this.iframe),this.iframe=null),window.hass=void 0,this._messageHandler&&(window.removeEventListener("message",this._messageHandler),this._messageHandler=void 0)}}customElements.get("cafe-panel")||customElements.define("cafe-panel",m);
//# sourceMappingURL=panel-wrapper.js.map //# sourceMappingURL=panel-wrapper.js.map
@@ -1 +0,0 @@
{"version":3,"file":"panel-wrapper.js","sources":["../../src/panel-wrapper.ts"],"sourcesContent":["/**\n * Minimal wrapper for Home Assistant panel integration.\n * This web component receives the hass object from HA, exposes it on window,\n * and loads the actual app in an iframe for proper document isolation.\n */\nimport type { HomeAssistant } from './types/hass';\n\n// Type for window with hass\ndeclare const window: Window & {\n hass?: HomeAssistant;\n};\n\nclass CafePanelWrapper extends HTMLElement {\n private _messageHandler?: (event: MessageEvent) => void;\n private iframe: HTMLIFrameElement | null = null;\n private _hass: HomeAssistant | undefined = undefined;\n\n // Properties that HA will set\n set hass(value: HomeAssistant | undefined) {\n this._hass = value;\n // Expose hass on window so iframe can access via window.parent.hass\n window.hass = value;\n\n // Notify the iframe of the update if it has registered a listener\n if (this.iframe?.contentWindow && (this.iframe.contentWindow as any).setHass) {\n (this.iframe.contentWindow as any).setHass(value);\n }\n }\n\n get hass() {\n return this._hass;\n }\n\n connectedCallback() {\n // Style the wrapper to fill the container\n this.style.display = 'block';\n this.style.width = '100%';\n this.style.height = '100%';\n this.style.position = 'relative';\n\n // Detect dark mode from hass to set initial background and avoid white flash\n const isDarkMode = this._hass?.themes?.darkMode ?? false;\n // These match the CSS variables in index.css:\n // Light: --background: 0 0% 100% (white)\n // Dark: --background: 222.2 84% 4.9% (dark blue)\n const bgColor = isDarkMode ? 'hsl(222.2, 84%, 4.9%)' : 'hsl(0, 0%, 100%)';\n\n // Create iframe pointing to the app\n this.iframe = document.createElement('iframe');\n this.iframe.src = '/cafe-hass/index.html';\n this.iframe.style.width = '100%';\n this.iframe.style.height = '100%';\n this.iframe.style.border = 'none';\n this.iframe.style.display = 'block';\n this.iframe.style.background = bgColor;\n // Allow same-origin access\n this.iframe.setAttribute('allow', 'clipboard-read *; clipboard-write *');\n\n this.appendChild(this.iframe);\n\n // Listen for messages from the iframe to trigger sidebar toggle\n this._messageHandler = (event: MessageEvent) => {\n // Only accept messages from our iframe\n if (event.source !== this.iframe?.contentWindow) return;\n if (event.data && event.data.type === 'CAFE_TOGGLE_SIDEBAR') {\n this.dispatchEvent(new Event('hass-toggle-menu', { bubbles: true, composed: true }));\n }\n };\n window.addEventListener('message', this._messageHandler);\n }\n\n disconnectedCallback() {\n if (this.iframe) {\n this.removeChild(this.iframe);\n this.iframe = null;\n }\n // Clean up window properties\n window.hass = undefined;\n if (this._messageHandler) {\n window.removeEventListener('message', this._messageHandler);\n this._messageHandler = undefined;\n }\n }\n}\n\n// Register the custom element\nif (!customElements.get('cafe-panel')) {\n customElements.define('cafe-panel', CafePanelWrapper);\n}\n"],"names":["CafePanelWrapper","__publicField","value","_a","_b","bgColor","event"],"mappings":"oKAYA,MAAMA,UAAyB,WAAY,CAA3C,kCACUC,EAAA,wBACAA,EAAA,cAAmC,MACnCA,EAAA,cAGR,IAAI,KAAKC,EAAkC,CAN7C,IAAAC,EAOI,KAAK,MAAQD,EAEb,OAAO,KAAOA,GAGVC,EAAA,KAAK,SAAL,MAAAA,EAAa,eAAkB,KAAK,OAAO,cAAsB,SAClE,KAAK,OAAO,cAAsB,QAAQD,CAAK,CAEpD,CAEA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CAEA,mBAAoB,CArBtB,IAAAC,EAAAC,EAuBI,KAAK,MAAM,QAAU,QACrB,KAAK,MAAM,MAAQ,OACnB,KAAK,MAAM,OAAS,OACpB,KAAK,MAAM,SAAW,WAOtB,MAAMC,IAJaD,GAAAD,EAAA,KAAK,QAAL,YAAAA,EAAY,SAAZ,YAAAC,EAAoB,WAAY,GAItB,wBAA0B,mBAGvD,KAAK,OAAS,SAAS,cAAc,QAAQ,EAC7C,KAAK,OAAO,IAAM,wBAClB,KAAK,OAAO,MAAM,MAAQ,OAC1B,KAAK,OAAO,MAAM,OAAS,OAC3B,KAAK,OAAO,MAAM,OAAS,OAC3B,KAAK,OAAO,MAAM,QAAU,QAC5B,KAAK,OAAO,MAAM,WAAaC,EAE/B,KAAK,OAAO,aAAa,QAAS,qCAAqC,EAEvE,KAAK,YAAY,KAAK,MAAM,EAG5B,KAAK,gBAAmBC,GAAwB,CAjDpD,IAAAH,EAmDUG,EAAM,WAAWH,EAAA,KAAK,SAAL,YAAAA,EAAa,gBAC9BG,EAAM,MAAQA,EAAM,KAAK,OAAS,uBACpC,KAAK,cAAc,IAAI,MAAM,mBAAoB,CAAE,QAAS,GAAM,SAAU,EAAA,CAAM,CAAC,CAEvF,EACA,OAAO,iBAAiB,UAAW,KAAK,eAAe,CACzD,CAEA,sBAAuB,CACjB,KAAK,SACP,KAAK,YAAY,KAAK,MAAM,EAC5B,KAAK,OAAS,MAGhB,OAAO,KAAO,OACV,KAAK,kBACP,OAAO,oBAAoB,UAAW,KAAK,eAAe,EAC1D,KAAK,gBAAkB,OAE3B,CACF,CAGK,eAAe,IAAI,YAAY,GAClC,eAAe,OAAO,aAAcN,CAAgB"}
-30
View File
@@ -1,30 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>C.A.F.E. - Home Assistant</title>
<script>
// Set background color immediately to avoid white flash in dark mode
// This runs before CSS loads, checking parent window's hass dark mode setting
(function() {
try {
var isDark = window.parent && window.parent.hass && window.parent.hass.themes && window.parent.hass.themes.darkMode;
// Match CSS variables: light = hsl(0, 0%, 100%), dark = hsl(222.2, 84%, 4.9%)
var bg = isDark ? 'hsl(222.2, 84%, 4.9%)' : 'hsl(0, 0%, 100%)';
document.documentElement.style.background = bg;
// Inject style for body since it doesn't exist yet
var style = document.createElement('style');
style.textContent = 'body { background: ' + bg + ' !important; }';
document.head.appendChild(style);
} catch (e) {}
})();
</script>
<script type="module" crossorigin src="/cafe-hass/assets/main-BIzscans.js"></script>
<link rel="stylesheet" crossorigin href="/cafe-hass/assets/main-DfXhj31a.css">
</head>
<body>
<div id="root"></div>
</body>
</html>
+20
View File
@@ -0,0 +1,20 @@
{
"domain": "frigate",
"name": "Frigate",
"codeowners": [
"@blakeblackshear",
"@dermotduffy",
"@NickM-27"
],
"config_flow": true,
"dependencies": [
"http",
"media_source",
"mqtt"
],
"documentation": "https://github.com/blakeblackshear/frigate",
"iot_class": "local_push",
"issue_tracker": "https://github.com/blakeblackshear/frigate-hass-integration/issues",
"requirements": ["hass-web-proxy-lib==0.0.8","titlecase==2.4.1"],
"version": "5.15.4"
}
+206
View File
@@ -0,0 +1,206 @@
---
export_recording:
name: Export recording
description: Export a custom recording or timelapse.
target:
entity:
integration: frigate
domain: camera
device_class: camera
fields:
playback_factor:
name: Playback Factor
description: Playback factor for recordings
required: true
advanced: false
example: realtime
default: realtime
selector:
select:
options:
- "realtime"
- "timelapse_25x"
start_time:
name: Export Start Time
description: Start time of exported recording
required: true
advanced: false
selector:
datetime:
end_time:
name: Export End Time
description: End time of exported recording
required: true
advanced: false
selector:
datetime:
name:
name: Name
description: >
Optional name for the exported recording. If not provided, the API will
generate one.
required: false
advanced: false
selector:
text:
favorite_event:
name: Favorite or unfavorite Event
description: >
Favorites or unfavorites an event. Favorited events are retained
indefinitely.
target:
entity:
integration: frigate
domain: camera
device_class: camera
fields:
event_id:
name: Event ID
description: ID of the event to favorite or unfavorite.
required: true
advanced: false
example: "1656510950.19548-ihtjj7"
default: ""
selector:
text:
favorite:
name: Favorite
description: >
If the event should be favorited or unfavorited. Enable to favorite,
disable to unfavorite.
required: false
advanced: false
example: true
default: true
selector:
boolean:
ptz:
name: Control camera via PTZ
description: >
Pan / Tilt, Zoom, or move a camera to a preset
target:
entity:
integration: frigate
domain: camera
device_class: camera
fields:
action:
name: PTZ Service
description: Type of PTZ action
required: true
advanced: false
example: move
default: move
selector:
select:
options:
- "move"
- "preset"
- "stop"
- "zoom"
argument:
name: PTZ Action
description: >
left, right, up, down for move; in, out for zoom; name of preset
required: false
advanced: false
example: down
default: ""
selector:
text:
create_event:
name: Create an event
description: >
Create a manual event with a given label for a camera.
target:
entity:
integration: frigate
domain: camera
device_class: camera
fields:
label:
name: Label
description: Label for the event
required: true
advanced: false
example: "Doorbell press"
default: ""
selector:
text:
sub_label:
name: Sub Label
description: Sub label for the event
required: false
advanced: false
example: "Front door"
selector:
text:
duration:
name: Duration
description: >
Predetermined length of event.
Default is 30 seconds. Use 0 for indefinite.
required: false
advanced: false
example: 30
default: 30
selector:
number:
min: 0
max: 300
step: 1
include_recording:
name: Include Recording
description: >
Whether the event should save recordings along
with the snapshot that is taken.
required: false
advanced: false
example: true
default: true
selector:
boolean:
end_event:
name: End an event
description: >
End a manual event with a given id for a camera.
target:
entity:
integration: frigate
domain: camera
device_class: camera
fields:
event_id:
name: Event ID
description: ID of the event to end.
required: true
advanced: false
example: "1656510950.19548-ihtjj7"
default: ""
selector:
text:
review_summarize:
name: Review Summarize
description: >
Get a summary of review items for a specified time period.
Only available in Frigate 0.17+.
fields:
start_time:
name: Start Time
description: Start time for the review period
required: true
advanced: false
selector:
datetime:
end_time:
name: End Time
description: End time for the review period
required: true
advanced: false
selector:
datetime:
@@ -0,0 +1,34 @@
{
"config": {
"step": {
"user": {
"description": "L'URL que utilitzeu per accedir a Frigate (p. ex. 'http://frigate:5000/')\\n\\nSi feu servir HassOS amb el complement, l'URL hauria de ser 'http://ccab4aaf-frigate:5000/' \\n\\nHome Assistant necessita accedir al port 5000 (api) i 8554/8555 (rtsp, webrtc) per a totes les funcions.\\n\\nLa integració configurarà sensors, càmeres i la funcionalitat del navegador multimèdia.\\n\\nSensors:\\n- Estadístiques per supervisar el rendiment de Frigate\\n- Recompte d'objectes per a totes les zones i càmeres\\n\\nCàmeres:\\n- Càmeres per a la imatge de l'últim objecte detectat per a cada càmera\\n- Entitats de càmera amb suport de transmissió\\n\\nNavegador multimèdia:\\n - Interfície d'usuari enriquida amb miniatures per explorar clips d'esdeveniments\\n- Interfície d'usuari enriquida per navegar per enregistraments les 24 hores al dia, els set dies a la setmana, per mes, dia, càmera, hora\\n\\nAPI:\\n- API de notificació amb punts de connexió públics per a imatges a les notificacions.",
"data": {
"url": "URL"
}
}
},
"error": {
"cannot_connect": "No s'ha pogut connectar",
"invalid_url": "URL no vàlid"
},
"abort": {
"already_configured": "El dispositiu ja està configurat"
}
},
"options": {
"step": {
"init": {
"data": {
"rtsp_url_template": "Plantilla de l'URL del RTSP (vegeu la documentació)",
"media_browser_enable": "Habiliteu el navegador multimèdia",
"notification_proxy_enable": "Habiliteu el servidor intermediari no autenticat d'esdeveniments de notificacions",
"notification_proxy_expire_after_seconds": "No permetre l'accés a notificacions no autenticades després dels segons especificats (0=mai)"
}
}
},
"abort": {
"only_advanced_options": "El mode avançat està desactivat i només hi ha opcions avançades"
}
}
}
@@ -0,0 +1,34 @@
{
"config": {
"step": {
"user": {
"description": "URL, die Sie für den Zugriff auf Frigate verwenden (z. B. \"http://frigate:5000/\")\n\nWenn Sie HassOS mit dem Addon verwenden, sollte die URL „http://ccab4aaf-frigate:5000/“ lauten\n\nHome Assistant benötigt für alle Funktionen Zugriff auf Port 5000 (api) und 8554/8555 (rtsp, webrtc).\n\nDie Integration richtet Sensoren, Kameras und Medienbrowser-Funktionen ein.\n\nSensoren:\n- Statistiken zur Überwachung der Frigate-Leistung\n- Objektzählungen für alle Zonen und Kameras\n\nKameras:\n- Kameras für Bild des zuletzt erkannten Objekts für jede Kamera\n- Kameraeinheiten mit Stream-Unterstützung\n\nMedienbrowser:\n- Umfangreiche Benutzeroberfläche mit Vorschaubildern zum Durchsuchen von Event-Clips\n- Umfangreiche Benutzeroberfläche zum Durchsuchen von 24/7-Aufzeichnungen nach Monat, Tag, Kamera und Uhrzeit\n\nAPI:\n- Benachrichtigungs-API mit öffentlich zugänglichen Endpunkten für Bilder in Benachrichtigungen",
"data": {
"url": "URL"
}
}
},
"error": {
"cannot_connect": "Verbindung fehlgeschlagen",
"invalid_url": "Ungültige URL"
},
"abort": {
"already_configured": "Gerät ist bereits konfiguriert"
}
},
"options": {
"step": {
"init": {
"data": {
"rtsp_url_template": "RTSP-URL-Vorlage (siehe Dokumentation)",
"media_browser_enable": "Aktivieren Sie den Medienbrowser",
"notification_proxy_enable": "Aktivieren Sie den Proxy für nicht authentifizierte Benachrichtigungsereignisse",
"notification_proxy_expire_after_seconds": "Zugriff auf nicht authentifizierte Benachrichtigungen nach Sekunden verbieten (0=nie)"
}
}
},
"abort": {
"only_advanced_options": "Der erweiterte Modus ist deaktiviert und es stehen nur erweiterte Optionen zur Verfügung"
}
}
}
@@ -0,0 +1,38 @@
{
"config": {
"step": {
"user": {
"description": "URL you use to access Frigate (ie. `http://frigate:5000/`)\n\nIf you are using HassOS with the addon, the URL should be `http://ccab4aaf-frigate:5000/`\n\nHome Assistant needs access to port 5000 (api) and 8554/8555 (rtsp, webrtc) for all features.\n\nThe integration will setup sensors, cameras, and media browser functionality.\n\nSensors:\n- Stats to monitor frigate performance\n- Object counts for all zones and cameras\n\nCameras:\n- Cameras for image of the last detected object for each camera\n- Camera entities with stream support\n\nMedia Browser:\n- Rich UI with thumbnails for browsing event clips\n- Rich UI for browsing 24/7 recordings by month, day, camera, time\n\nAPI:\n- Notification API with public facing endpoints for images in notifications",
"data": {
"url": "URL",
"validate_ssl": "Validate SSL",
"username": "Username (optional)",
"password": "Password (optional)"
}
}
},
"error": {
"cannot_connect": "Failed to connect",
"invalid_url": "Invalid URL"
},
"abort": {
"already_configured": "Device is already configured"
}
},
"options": {
"step": {
"init": {
"data": {
"enable_webrtc": "Use Frigate-native WebRTC support",
"rtsp_url_template": "RTSP URL template (see documentation)",
"media_browser_enable": "Enable the media browser",
"notification_proxy_enable": "Enable the unauthenticated notification event proxy",
"notification_proxy_expire_after_seconds": "Disallow unauthenticated notification access after seconds (0=never)"
}
}
},
"abort": {
"only_advanced_options": "Advanced mode is disabled and there are only advanced options"
}
}
}
@@ -0,0 +1,38 @@
{
"config": {
"step": {
"user": {
"description": "URL que vous utilisez pour accéder à Frigate (par exemple, `http://frigate:5000/`)\n\nSi vous utilisez HassOS avec l'addon, l'URL devrait être `http://ccab4aaf-frigate:5000/`\n\nHome Assistant a besoin d'accès au port 5000 (api) et 8554/8555 (rtsp, webrtc) pour toutes les fonctionnalités.\n\nL'intégration configurera des capteurs, des caméras et la fonctionnalité de navigateur multimédia.\n\nCapteurs :\n- Statistiques pour surveiller la performance de Frigate\n- Comptes d'objets pour toutes les zones et caméras\n\nCaméras :\n- Caméras pour l'image du dernier objet détecté pour chaque caméra\n- Entités de caméra avec support de flux\n\nNavigateur multimédia :\n- Interface riche avec miniatures pour parcourir les clips d'événements\n- Interface riche pour parcourir les enregistrements 24/7 par mois, jour, caméra, heure\n\nAPI :\n- API de notification avec des points de terminaison publics pour les images dans les notifications",
"data": {
"url": "URL",
"validate_ssl": "Valider SSL",
"username": "Nom d'utilisateur (facultatif)",
"password": "Mot de passe (facultatif)"
}
}
},
"error": {
"cannot_connect": "Échec de la connexion",
"invalid_url": "URL invalide"
},
"abort": {
"already_configured": "L'appareil est déjà configuré"
}
},
"options": {
"step": {
"init": {
"data": {
"enable_webrtc": "Utiliser le support WebRTC natif de Frigate",
"rtsp_url_template": "Modèle d'URL RTSP (voir la documentation)",
"media_browser_enable": "Activer le navigateur multimédia",
"notification_proxy_enable": "Activer le proxy d'événement de notification non authentifié",
"notification_proxy_expire_after_seconds": "Interdire l'accès à la notification non authentifiée après secondes (0=jamais)"
}
}
},
"abort": {
"only_advanced_options": "Le mode avancé est désactivé et il n'y a que des options avancées"
}
}
}
@@ -0,0 +1,34 @@
{
"config": {
"step": {
"user": {
"description": "URL que você usa para acessar o Frigate (ou seja, `http://frigate:5000/`)\n\nSe você estiver usando HassOS com o complemento, o URL deve ser `http://ccab4aaf-frigate:5000/`\n\nO Home Assistant precisa de acesso à porta 5000 (api) e 8554/8555 (rtsp, webrtc) para ter todos os recursos.\n\nA integração configurará sensores, câmeras e funcionalidades do navegador de mídia.\n\nSensores:\n- Estatísticas para monitorar o desempenho do frigate \n- Contagem de objetos para todas as zonas e câmeras\n\nCâmeras:\n- Câmeras para imagem do último objeto detectado para cada câmera\n- Entidades da câmera com suporte a stream\n\nNavegador de mídia:\n- UI avançada com miniaturas para navegar em clipes de eventos\n- UI avançada para navegar 24 horas por dia, 7 dias por semana e por mês, dia, câmera, hora\n\nAPI:\n- API de notificação com endpoints voltados para o público para imagens em notificações",
"data": {
"url": "URL"
}
}
},
"error": {
"cannot_connect": "Falhou ao conectar",
"invalid_url": "URL inválida"
},
"abort": {
"already_configured": "O dispositivo já está configurado"
}
},
"options": {
"step": {
"init": {
"data": {
"rtsp_url_template": "Modelo de URL RTSP (consulte a documentação)",
"notification_proxy_enable": "Habilitar o proxy de evento de notificação não autenticado",
"notification_proxy_expire_after_seconds": "Proibir acesso de notificação não autenticado após segundos (0=nunca)",
"media_browser_enable": "Ative o navegador de mídia"
}
}
},
"abort": {
"only_advanced_options": "O modo avançado está desativado e existem apenas opções avançadas"
}
}
}
@@ -0,0 +1,31 @@
{
"config": {
"step": {
"user": {
"description": "URL que usa para aceder ao Frigate (ou seja, `http://frigate:5000/`)\n\nSe estiver usar HassOS com o complemento, o URL deve ser `http://ccab4aaf-frigate:5000/`\n\nO Home Assistant precisa de acesso à porta 5000 (api) e 8554/8555 (rtsp, webrtc) para ter todos os recursos.\n\nA integração configurará sensores, câmeras e funcionalidades do navegador de mídia.\n\nSensores:\n- Estatísticas para monitorar o desempenho do frigate \n- Contagem de objetos para todas as zonas e câmeras\n\nCâmeras:\n- Câmeras para imagem do último objeto detectado para cada câmera\n- Entidades da câmera com suporte a stream\n\nNavegador de mídia:\n- UI avançada com miniaturas para navegar em clipes de eventos\n- UI avançada para navegar 24 horas por dia, 7 dias por semana e por mês, dia, câmera, hora\n\nAPI:\n- API de notificação com endpoints voltados para o público para imagens em notificações",
"data": {
"url": "URL"
}
}
},
"error": {
"cannot_connect": "Falhou a ligar",
"invalid_url": "Link inválido"
},
"abort": {
"already_configured": "O dispositivo já está configurado"
}
},
"options": {
"step": {
"init": {
"data": {
"notification_proxy_enable": "Activar o proxy de evento de notificação não autenticado"
}
}
},
"abort": {
"only_advanced_options": "O modo avançado está desativado e existem apenas opções avançadas"
}
}
}
@@ -0,0 +1,34 @@
{
"config": {
"step": {
"user": {
"description": "URL, который вы используете для доступа к Frigate (например, http://frigate:5000/)\n\nЕсли вы используете HassOS с дополнением, URL должен быть http://ccab4aaf-frigate:5000/\n\nHome Assistant требуется доступ к порту 5000 (API) и 8554/8555 (RTSP, WEBRTC) для всех функций.\n\n Интеграция настроит сенсоры, камеры и функциональность медиа-браузера.\n\nСенсоры:\n- Статистика для отслеживания производительности Frigate\n- Количество объектов для всех зон и камер\n\nКамеры:\n- Камеры для снимка последнего обнаруженного объекта с каждой камеры\n- Камеры с поддержкой потока\n\nМедиа-браузер:\n- Пользовательский интерфейс с миниатюрами для просмотра записей 24/7 по времени и камерам\n\nAPI:\n- API для отправки событий во внешние системы",
"data": {
"url": "URL"
}
}
},
"error": {
"cannot_connect": "Не удалось подключиться",
"invalid_url": "Неверный URL"
},
"abort": {
"already_configured": "Устройство уже настроено"
}
},
"options": {
"step": {
"init": {
"data": {
"rtsp_url_template": "Шаблон URL для RTSP (см. документацию)",
"media_browser_enable": "Включить медиа-браузер",
"notification_proxy_enable": "Включить незащищённый прокси-сервер уведомлений",
"notification_proxy_expire_after_seconds": "Запретить неаутентифицированный доступ к уведомлениям после N секунд (0=никогда)"
}
}
},
"abort": {
"only_advanced_options": "Режим расширенных настроек отключен; доступны только основные параметры"
}
}
}
@@ -0,0 +1,38 @@
{
"config": {
"step": {
"user": {
"description": "URL du använder för att komma åt Frigate (t.ex. `http://frigate:5000/`)\n\nOm du använder HassOS med tillägget ska URL:en vara `http://ccab4aaf-frigate:5000/`\n\nHome Assistant behöver åtkomst till port 5000 (api) och 8554/8555 (rtsp, webrtc) för alla funktioner.\n\nIntegrationen kommer att konfigurera sensorer, kameror och medialäsarfunktioner.\n\nSensorer:\n- Statistik för att övervaka frigates prestanda\n- Objekträkning för alla zoner och kameror\n\nKameror:\n- Kameror för bild av det senast detekterade objektet för varje kamera\n- Kameraenheter med strömningsstöd\n\nMedialäsare:\n- Rikt användargränssnitt med miniatyrbilder för att bläddra bland händelseklipp\n- Rikt användargränssnitt för att bläddra bland inspelningar dygnet runt efter månad, dag, kamera, tid\n\nAPI:\n- Aviserings-API med offentliga slutpunkter för bilder i aviseringar",
"data": {
"url": "URL",
"validate_ssl": "Validera SSL",
"username": "Användarnamn (valfritt)",
"password": "Lösenord (valfritt)"
}
}
},
"error": {
"cannot_connect": "Misslyckades med att ansluta",
"invalid_url": "Ogiltig URL"
},
"abort": {
"already_configured": "Enheten är redan konfigurerad"
}
},
"options": {
"step": {
"init": {
"data": {
"enable_webrtc": "Använd Frigate-nativt WebRTC-stöd",
"rtsp_url_template": "RTSP URL-mall (se dokumentation)",
"media_browser_enable": "Aktivera medieläsaren",
"notification_proxy_enable": "Aktivera proxy för oautentiserade aviseringshändelser",
"notification_proxy_expire_after_seconds": "Tillåt inte åtkomst till oautentiserade aviseringar efter sekunder (0=aldrig)"
}
}
},
"abort": {
"only_advanced_options": "Avancerat läge är inaktiverat och det finns bara avancerade alternativ"
}
}
}
@@ -0,0 +1,38 @@
{
"config": {
"step": {
"user": {
"description": "Frigate'e erişmek için kullandığınız URL (örneğin `http://frigate:5000/`)\n\nHassOS ile eklentiyi kullanıyorsanız, URL `http://ccab4aaf-frigate:5000/` olmalıdır\n\nHome Assistant'ın tüm özellikleri kullanabilmesi için 5000 (api) ve 8554/8555 (rtsp, webrtc) portlarına erişimi olmalıdır.\n\nEntegrasyon sensörler, kameralar ve medya tarayıcısı işlevselliğini kuracaktır.\n\nSensörler:\n- Frigate performansını izlemek için istatistikler\n- Tüm bölgeler ve kameralar için nesne sayıları\n\nKameralar:\n- Her kamera için son Algılanan nesnenin görüntüsünü gösteren kameralar\n- Yayın destekli kamera varlıkları\n\nMedya Tarayıcısı:\n- Olay kliplerini göz atmak için küçük resimli zengin arayüz\n- Ay, gün, kamera ve zamana göre 7/24 kayıtları göz atmak için zengin arayüz\n\nAPI:\n- Bildirimlerde görüntüler için herkese açık uçlara sahip bildirim API'si",
"data": {
"url": "URL",
"validate_ssl": "SSL Doğrula",
"username": "Kullanıcı Adı (isteğe bağlı)",
"password": "Şifre (isteğe bağlı)"
}
}
},
"error": {
"cannot_connect": "Bağlantı kurulamadi",
"invalid_url": "Geçersiz URL"
},
"abort": {
"already_configured": "Cihaz zaten yapılandırılmış"
}
},
"options": {
"step": {
"init": {
"data": {
"enable_webrtc": "Frigate'in yerel WebRTC desteğini kullan",
"rtsp_url_template": "RTSP URL şablonu (dokümantasyona bakınız)",
"media_browser_enable": "Medya tarayıcısını etkinleştir",
"notification_proxy_enable": "Kimlik dogrulamasi gerektirmeyen bildirim olay proxy'sini etkinlestir",
"notification_proxy_expire_after_seconds": "Kimlik doğrulaması gerektirmeyen bildirim erişimini belirtilen saniye sonra devre dışı bırak (0=asla)"
}
}
},
"abort": {
"only_advanced_options": "Gelişmiş mod devre dışı ve sadece gelişmiş seçenekler mevcut"
}
}
}
@@ -0,0 +1,38 @@
{
"config": {
"step": {
"user": {
"description": "您用于访问 Frigate 的 URL(例如:`http://frigate:5000/`\n\n如果您正在使用带有插件的 HassOSURL 应该是 `http://ccab4aaf-frigate:5000/`\n\nHome Assistant 需要访问端口 5000API)和 8554/8555RTSPWebRTC)才能使用所有功能。\n\n该集成将设置传感器、摄像头和媒体浏览器功能。\n\n传感器:\n- 监控 Frigate 性能的统计数据\n- 所有区域和摄像头的对象计数\n\n摄像头:\n- 每个摄像头最后检测到的对象图像的摄像头\n- 支持流的摄像头实体\n\n媒体浏览器:\n- 带有缩略图的丰富用户界面,用于浏览事件剪辑\n- 丰富的用户界面,用于按月、日、摄像头、时间浏览全天候录像\n\nAPI:\n- 通知 API,具有用于通知中图像的公共接口",
"data": {
"url": "URL",
"validate_ssl": "验证 SSL",
"username": "用户名(可选)",
"password": "密码(可选)"
}
}
},
"error": {
"cannot_connect": "连接失败",
"invalid_url": "无效的 URL"
},
"abort": {
"already_configured": "设备已配置"
}
},
"options": {
"step": {
"init": {
"data": {
"enable_webrtc": "使用 Frigate 原生 WebRTC 支持",
"rtsp_url_template": "RTSP URL 模板(参见文档)",
"media_browser_enable": "启用媒体浏览器",
"notification_proxy_enable": "启用未经身份验证的通知事件代理",
"notification_proxy_expire_after_seconds": "在指定秒数后禁止未经身份验证的通知访问(0=永不)"
}
}
},
"abort": {
"only_advanced_options": "高级模式已禁用,且只有高级选项可用"
}
}
}
+368 -23
View File
@@ -58,6 +58,7 @@ from .const import (
TOOLS_ENTRY_LEGACY_TITLE, TOOLS_ENTRY_LEGACY_TITLE,
TOOLS_ENTRY_TITLE, TOOLS_ENTRY_TITLE,
YAML_KEY_DEFAULT_POST_ACTION, YAML_KEY_DEFAULT_POST_ACTION,
YAML_KEY_DENYLIST,
YAML_KEY_POST_ACTIONS, YAML_KEY_POST_ACTIONS,
) )
from .websocket_api import async_register_commands from .websocket_api import async_register_commands
@@ -80,6 +81,8 @@ SERVICE_EDIT_YAML_CONFIG = "edit_yaml_config"
SERVICE_GET_CALLER_TOKEN = "get_caller_token" SERVICE_GET_CALLER_TOKEN = "get_caller_token"
SERVICE_GET_ALLOWED_PATHS = "get_allowed_paths" SERVICE_GET_ALLOWED_PATHS = "get_allowed_paths"
SERVICE_SET_ALLOWED_PATHS = "set_allowed_paths" SERVICE_SET_ALLOWED_PATHS = "set_allowed_paths"
SERVICE_GET_EXTRA_YAML_KEYS = "get_extra_yaml_keys"
SERVICE_SET_EXTRA_YAML_KEYS = "set_extra_yaml_keys"
# Read-only access to pre-#1579 YAML backups in .ha_mcp_tools_backups/, so the # Read-only access to pre-#1579 YAML backups in .ha_mcp_tools_backups/, so the
# shared edits-backup interface can list/view/diff/restore them (#1579). These # shared edits-backup interface can list/view/diff/restore them (#1579). These
# historical artifacts predate the fold into the shared store; new writes no # historical artifacts predate the fold into the shared store; new writes no
@@ -105,6 +108,18 @@ _ALLOWED_PATHS_STORAGE_KEY = f"{DOMAIN}_allowed_paths"
_ALLOWED_PATHS_STORAGE_VERSION = 1 _ALLOWED_PATHS_STORAGE_VERSION = 1
_HASS_DATA_ALLOWED_PATHS_KEY = "allowed_paths" _HASS_DATA_ALLOWED_PATHS_KEY = "allowed_paths"
# User-configurable extra YAML write keys (#1887). Same store-per-concern
# rationale as the allowed paths above: a separate Store, loaded into hass.data
# at setup and updated in place by set_extra_yaml_keys so enforcement picks up
# changes with no HA restart. This is the component-owned half of the setting;
# the ha-mcp server also carries its own HA_MCP_EXTRA_YAML_KEYS, and the
# effective write allowlist is the union of the two (the server reads this store
# via get_extra_yaml_keys). YAML_KEY_DENYLIST members are stripped on the way in
# and re-checked at enforcement, so the store can never widen the deny floor.
_EXTRA_YAML_KEYS_STORAGE_KEY = f"{DOMAIN}_extra_yaml_keys"
_EXTRA_YAML_KEYS_STORAGE_VERSION = 1
_HASS_DATA_EXTRA_YAML_KEYS_KEY = "extra_yaml_keys"
# Service schemas # Service schemas
SERVICE_EDIT_YAML_CONFIG_SCHEMA = vol.Schema( SERVICE_EDIT_YAML_CONFIG_SCHEMA = vol.Schema(
{ {
@@ -130,6 +145,15 @@ SERVICE_EDIT_YAML_CONFIG_SCHEMA = vol.Schema(
vol.Optional("disabled_packages_keys", default=list): vol.All( vol.Optional("disabled_packages_keys", default=list): vol.All(
cv.ensure_list, [cv.string] cv.ensure_list, [cv.string]
), ),
# Caller-provided extra top-level keys the operator has opted into
# on top of ALLOWED_YAML_KEYS (#1887). Additive only: the handler
# filters YAML_KEY_DENYLIST out before use, so a caller cannot
# unlock a trust-boundary key by sending it here. Empty list (the
# default) means the built-in allowlist applies unchanged, which
# is also what a caller that predates this field produces.
vol.Optional("extra_allowed_keys", default=list): vol.All(
cv.ensure_list, [cv.string]
),
# Two-step preview/confirm flow (#1720). Both optional with # Two-step preview/confirm flow (#1720). Both optional with
# old-behavior defaults so a pre-confirm-flow server (which never # old-behavior defaults so a pre-confirm-flow server (which never
# sends them) still gets an immediate write. # sends them) still gets an immediate write.
@@ -208,6 +232,24 @@ SERVICE_SET_ALLOWED_PATHS_SCHEMA = vol.Schema(
} }
) )
# get_extra_yaml_keys / set_extra_yaml_keys back the component's own options
# flow and the ha-mcp settings UI (#1887). Both are caller-token + admin gated,
# matching the allowed-paths pair. set_extra_yaml_keys receives the FULL
# replacement list; the handler strips whitespace/empties and drops any
# YAML_KEY_DENYLIST member, reporting drops in ``rejected``.
SERVICE_GET_EXTRA_YAML_KEYS_SCHEMA = vol.Schema(
{
vol.Optional(CALLER_TOKEN_FIELD): cv.string,
}
)
SERVICE_SET_EXTRA_YAML_KEYS_SCHEMA = vol.Schema(
{
vol.Optional("keys", default=list): vol.All(cv.ensure_list, [cv.string]),
vol.Optional(CALLER_TOKEN_FIELD): cv.string,
}
)
SERVICE_LIST_LEGACY_BACKUPS_SCHEMA = vol.Schema( SERVICE_LIST_LEGACY_BACKUPS_SCHEMA = vol.Schema(
{ {
vol.Optional(CALLER_TOKEN_FIELD): cv.string, vol.Optional(CALLER_TOKEN_FIELD): cv.string,
@@ -335,6 +377,128 @@ async def _save_allowed_paths(hass: HomeAssistant, paths: list[str]) -> None:
await store.async_save({"paths": paths}) await store.async_save({"paths": paths})
def _normalize_extra_yaml_keys(raw: Any) -> tuple[list[str], list[Any]]:
"""Clean a candidate extra-YAML-keys list into ``(kept, dropped)`` (#1887).
Mirrors the server's ``parse_extra_yaml_write_keys`` (strip whitespace, drop
empties, dedup, sort) and additionally drops any ``YAML_KEY_DENYLIST``
member, so the component store can never widen the deny floor. Non-string
and blank entries are dropped too. ``dropped`` collects every rejected
entry for reporting/logging. Case is preserved: HA's own top-level domain
lookup is exact-case, so a mis-cased key never reaches a real integration.
"""
kept: list[str] = []
dropped: list[Any] = []
seen: set[str] = set()
for entry in raw if isinstance(raw, list) else []:
if not isinstance(entry, str):
dropped.append(entry)
continue
key = entry.strip()
if not key or key in YAML_KEY_DENYLIST:
dropped.append(entry)
continue
if key not in seen:
seen.add(key)
kept.append(key)
return sorted(kept), dropped
async def _load_extra_yaml_keys(hass: HomeAssistant) -> list[str]:
"""Return the persisted user-configurable extra YAML write keys (#1887).
Fail-safe like :func:`_load_allowed_paths`: a corrupt/unreadable or
hand-edited store never propagates out of ``async_setup_entry``. Every entry
is re-validated through :func:`_normalize_extra_yaml_keys`, so a denylisted
or malformed key can never load into ``hass.data`` (defense in depth - the
deny floor is also re-checked at enforcement). Empty list on first run or a
malformed store.
"""
store: Store = Store(
hass, _EXTRA_YAML_KEYS_STORAGE_VERSION, _EXTRA_YAML_KEYS_STORAGE_KEY
)
try:
data = await store.async_load()
except Exception:
_LOGGER.warning(
"ha_mcp_tools: could not load the extra-YAML-keys store; ignoring "
"it and granting no extra write keys.",
exc_info=True,
)
return []
if not isinstance(data, dict):
return []
raw = data.get("keys")
if raw is not None and not isinstance(raw, list):
_LOGGER.warning(
"ha_mcp_tools extra-YAML-keys store is malformed (keys is %s, "
"expected list); ignoring it.",
type(raw).__name__,
)
return []
kept, dropped = _normalize_extra_yaml_keys(raw)
if dropped:
_LOGGER.warning(
"ha_mcp_tools: dropped %d invalid entr%s from the persisted "
"extra-YAML-keys store: %r",
len(dropped),
"y" if len(dropped) == 1 else "ies",
dropped,
)
return kept
async def _save_extra_yaml_keys(hass: HomeAssistant, keys: list[str]) -> None:
"""Persist the user-configurable extra YAML write keys to .storage."""
store: Store = Store(
hass, _EXTRA_YAML_KEYS_STORAGE_VERSION, _EXTRA_YAML_KEYS_STORAGE_KEY
)
await store.async_save({"keys": keys})
async def _apply_allowed_paths(
hass: HomeAssistant, raw_paths: Any
) -> tuple[list[str], list[Any]]:
"""Normalize, persist, and hot-swap the extra directories (#1567, #1887).
Shared by the ``set_allowed_paths`` service and the tools-entry options flow
so both edit the store through one validated path. Each entry runs through
:func:`_normalize_extra_dir`; traversal / out-of-config / deny-floor entries
are dropped into ``rejected``. Persists to .storage and updates hass.data so
enforcement applies live. Returns ``(kept, rejected)``.
"""
config_dir = Path(hass.config.config_dir)
normalized: list[str] = []
rejected: list[Any] = []
for entry in raw_paths if isinstance(raw_paths, list) else []:
norm = (
_normalize_extra_dir(entry, config_dir) if isinstance(entry, str) else None
)
if norm is None:
rejected.append(entry)
elif norm not in normalized:
normalized.append(norm)
await _save_allowed_paths(hass, normalized)
hass.data.setdefault(DOMAIN, {})[_HASS_DATA_ALLOWED_PATHS_KEY] = normalized
return normalized, rejected
async def _apply_extra_yaml_keys(
hass: HomeAssistant, raw_keys: Any
) -> tuple[list[str], list[Any]]:
"""Normalize, persist, and hot-swap the extra YAML write keys (#1887).
Shared by the ``set_extra_yaml_keys`` service and the tools-entry options
flow. Delegates validation to :func:`_normalize_extra_yaml_keys` (strip,
dedup, sort, drop denylist). Persists to .storage and updates hass.data so
enforcement applies live. Returns ``(kept, rejected)``.
"""
normalized, rejected = _normalize_extra_yaml_keys(raw_keys)
await _save_extra_yaml_keys(hass, normalized)
hass.data.setdefault(DOMAIN, {})[_HASS_DATA_EXTRA_YAML_KEYS_KEY] = normalized
return normalized, rejected
def _unified_diff(before: str, after: str, rel_path: str, max_lines: int = 200) -> str: def _unified_diff(before: str, after: str, rel_path: str, max_lines: int = 200) -> str:
"""Unified diff of a prospective write, capped for response size.""" """Unified diff of a prospective write, capped for response size."""
lines = list( lines = list(
@@ -2095,7 +2259,10 @@ def _build_edit_yaml_config_handler(
# Parse and validate yaml_path (replaces the old ALLOWED_YAML_KEYS check) # Parse and validate yaml_path (replaces the old ALLOWED_YAML_KEYS check)
kind, path_parts, path_err = _parse_and_validate_yaml_path( kind, path_parts, path_err = _parse_and_validate_yaml_path(
yaml_path, is_package=is_package, is_theme=is_theme yaml_path,
is_package=is_package,
is_theme=is_theme,
extra_allowed_keys=_effective_extra_allowed_keys(hass, call),
) )
if path_err is not None: if path_err is not None:
return {"success": False, "error": path_err} return {"success": False, "error": path_err}
@@ -2218,18 +2385,59 @@ def _validate_lovelace_dashboard_path(
return "lovelace_dashboard", parts, None return "lovelace_dashboard", parts, None
def _caller_extra_allowed_keys(call: ServiceCall) -> frozenset[str]:
"""Return the operator-configured extra write keys for this call (#1887).
``YAML_KEY_DENYLIST`` members are dropped here so they can never widen the
``allowed`` set that the generic "not in the allowed list" rejection lists
for some *other* invalid key. A direct write to a denied key does not rely
on this drop: ``_parse_and_validate_yaml_path`` checks the denylist first
and returns the categorical floor message before any allow-set is
consulted. Keys already covered by the built-in sets are harmless
duplicates and stay.
"""
return frozenset(
key
for key in call.data.get("extra_allowed_keys", [])
if key and key not in YAML_KEY_DENYLIST
)
def _effective_extra_allowed_keys(
hass: HomeAssistant, call: ServiceCall
) -> frozenset[str]:
"""Union the per-call wire keys with the component-stored keys (#1887).
The ha-mcp server passes its own ``HA_MCP_EXTRA_YAML_KEYS`` on the wire; the
component's own options flow / settings store contributes
:func:`_current_extra_yaml_keys`. Both sources are denylist-filtered - the
wire in :func:`_caller_extra_allowed_keys`, the store on save/load - and
:func:`_parse_and_validate_yaml_path` re-checks the deny floor regardless,
so the union can never lift a forbidden key. The store side is filtered
again here purely as defense in depth.
"""
stored = frozenset(
key for key in _current_extra_yaml_keys(hass) if key not in YAML_KEY_DENYLIST
)
return _caller_extra_allowed_keys(call) | stored
def _parse_and_validate_yaml_path( def _parse_and_validate_yaml_path(
yaml_path: str, yaml_path: str,
*, *,
is_package: bool = False, is_package: bool = False,
is_theme: bool = False, is_theme: bool = False,
extra_allowed_keys: frozenset[str] = frozenset(),
) -> tuple[str, tuple[str, ...], str | None]: ) -> tuple[str, tuple[str, ...], str | None]:
"""Parse and validate a yaml_path argument. """Parse and validate a yaml_path argument.
Three accepted shapes: Three accepted shapes:
1. Single segment in ALLOWED_YAML_KEYS -> kind='single' 1. Single segment in ALLOWED_YAML_KEYS -> kind='single'
When ``is_package=True``, single segments in PACKAGES_ONLY_YAML_KEYS When ``is_package=True``, single segments in PACKAGES_ONLY_YAML_KEYS
(automation, script, scene) are also accepted. (automation, script, scene) are also accepted. ``extra_allowed_keys``
adds operator-opted-in keys on top of ALLOWED_YAML_KEYS (#1887); it
overrides neither ``YAML_KEY_DENYLIST`` (filtered out before it gets
here) nor the packages-only restriction.
2. Exactly 'lovelace.dashboards.<url_path>' -> kind='lovelace_dashboard' 2. Exactly 'lovelace.dashboards.<url_path>' -> kind='lovelace_dashboard'
3. Single segment theme name (no dots) when ``is_theme=True`` -> kind='theme' 3. Single segment theme name (no dots) when ``is_theme=True`` -> kind='theme'
@@ -2256,13 +2464,41 @@ def _parse_and_validate_yaml_path(
# Shape 1: single key # Shape 1: single key
if len(parts) == 1: if len(parts) == 1:
key = parts[0] key = parts[0]
# The deny floor is checked before every single-key accept branch, so
# it holds even if a denied key is ever added to one of the allow
# sets. It deliberately does not cover the theme branch above: under
# ``is_theme`` the segment names a file in themes/, not a top-level
# configuration key, so the same word carries no trust-boundary
# meaning there.
if key in YAML_KEY_DENYLIST:
return (
"",
(),
(
f"Key '{yaml_path}' can never be edited through this "
"service: it redefines Home Assistant's own trust "
"boundary (authentication, proxy/CORS handling, or "
"frontend module loading). This floor cannot be lifted "
"by the extra-write-keys setting. Edit it by hand if "
"you really need to change it."
),
)
if key in ALLOWED_YAML_KEYS: if key in ALLOWED_YAML_KEYS:
return "single", parts, None return "single", parts, None
if is_package and key in PACKAGES_ONLY_YAML_KEYS: if is_package and key in PACKAGES_ONLY_YAML_KEYS:
return "single", parts, None return "single", parts, None
# Operator extra keys widen ALLOWED_YAML_KEYS only. They deliberately
# do NOT lift the packages-only restriction: those keys reach
# packages/*.yaml through the branch above (still governed by their
# per-key toggle) and stay rejected in configuration.yaml, so the
# storage-mode/YAML-mode collision guarantee holds however the
# operator fills the setting.
if key in extra_allowed_keys and key not in PACKAGES_ONLY_YAML_KEYS:
return "single", parts, None
# Reaching here means the key was not accepted. If it is a # Reaching here means the key was not accepted. If it is a
# PACKAGES_ONLY key, we know is_package=False (otherwise the # PACKAGES_ONLY key, we know is_package=False (the packages branch
# preceding branch would have returned) — emit the targeted # would have returned, and the extra-keys branch excludes them
# precisely so this guidance still fires) emit the targeted
# "move it to a package file" guidance instead of the generic # "move it to a package file" guidance instead of the generic
# allowlist dump below. # allowlist dump below.
if key in PACKAGES_ONLY_YAML_KEYS: if key in PACKAGES_ONLY_YAML_KEYS:
@@ -2278,9 +2514,9 @@ def _parse_and_validate_yaml_path(
), ),
) )
allowed = ( allowed = (
ALLOWED_YAML_KEYS | PACKAGES_ONLY_YAML_KEYS ALLOWED_YAML_KEYS | PACKAGES_ONLY_YAML_KEYS | extra_allowed_keys
if is_package if is_package
else ALLOWED_YAML_KEYS else ALLOWED_YAML_KEYS | extra_allowed_keys
) )
return ( return (
"", "",
@@ -2421,6 +2657,16 @@ def _current_extra_dirs(hass: HomeAssistant) -> list[str]:
return [] return []
def _current_extra_yaml_keys(hass: HomeAssistant) -> list[str]:
"""Return the live component-configured extra YAML write keys from hass.data."""
domain_data = hass.data.get(DOMAIN)
if isinstance(domain_data, dict):
keys = domain_data.get(_HASS_DATA_EXTRA_YAML_KEYS_KEY)
if isinstance(keys, list):
return keys
return []
def _build_list_files_handler( def _build_list_files_handler(
hass: HomeAssistant, hass: HomeAssistant,
) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]: ) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]:
@@ -2520,9 +2766,11 @@ async def _shape_read_file_response(
# Apply special handling for specific files # Apply special handling for specific files
normalized = os.path.normpath(rel_path) # noqa: ASYNC240 normalized = os.path.normpath(rel_path) # noqa: ASYNC240
# Mask secrets.yaml # Mask secrets.yaml. Offloaded because the first make_yaml() call on a
# thread constructs a ruamel YAML instance, whose plugin discovery globs
# the site-packages tree — blocking work that must stay off the loop.
if normalized == "secrets.yaml": if normalized == "secrets.yaml":
content = _mask_secrets_content(content) content = await hass.async_add_executor_job(_mask_secrets_content, content)
# Apply tail for log files # Apply tail for log files
if normalized == "home-assistant.log": if normalized == "home-assistant.log":
@@ -2845,8 +3093,12 @@ def _build_get_caller_token_handler(
# uses everywhere else. # uses everywhere else.
try: try:
integration = await async_get_integration(hass, DOMAIN) integration = await async_get_integration(hass, DOMAIN)
if integration.version is None:
# Reads as None rather than raising; an unreadable version and
# an absent one deserve the same answer.
raise ValueError("the manifest carries no version")
version = str(integration.version) version = str(integration.version)
except Exception as exc: # pragma: no cover — manifest sanity except Exception as exc:
_LOGGER.warning( _LOGGER.warning(
"Could not read ha_mcp_tools manifest version for " "Could not read ha_mcp_tools manifest version for "
"get_caller_token response: %s", "get_caller_token response: %s",
@@ -2906,7 +3158,6 @@ def _build_set_allowed_paths_handler(
hass: HomeAssistant, hass: HomeAssistant,
) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]: ) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]:
"""Build the handle_set_allowed_paths service handler.""" """Build the handle_set_allowed_paths service handler."""
config_dir = Path(hass.config.config_dir)
async def handle_set_allowed_paths(call: ServiceCall) -> ServiceResponse: async def handle_set_allowed_paths(call: ServiceCall) -> ServiceResponse:
"""Replace the user-configurable extra directories (issues #1567, #1586). """Replace the user-configurable extra directories (issues #1567, #1586).
@@ -2929,18 +3180,9 @@ def _build_set_allowed_paths_handler(
"error": "ha_mcp_tools.set_allowed_paths requires admin auth.", "error": "ha_mcp_tools.set_allowed_paths requires admin auth.",
"paths": [], "paths": [],
} }
raw_paths = call.data.get("paths", []) normalized, rejected = await _apply_allowed_paths(
normalized: list[str] = [] hass, call.data.get("paths", [])
rejected: list[str] = [] )
for entry in raw_paths:
norm = _normalize_extra_dir(entry, config_dir)
if norm is None:
rejected.append(entry)
elif norm not in normalized:
normalized.append(norm)
await _save_allowed_paths(hass, normalized)
hass.data.setdefault(DOMAIN, {})[_HASS_DATA_ALLOWED_PATHS_KEY] = normalized
_LOGGER.info( _LOGGER.info(
"Updated ha_mcp_tools custom filesystem directories: %s (%d rejected)", "Updated ha_mcp_tools custom filesystem directories: %s (%d rejected)",
normalized, normalized,
@@ -2955,6 +3197,77 @@ def _build_set_allowed_paths_handler(
return handle_set_allowed_paths return handle_set_allowed_paths
def _build_get_extra_yaml_keys_handler(
hass: HomeAssistant,
) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]:
"""Build the handle_get_extra_yaml_keys service handler (#1887)."""
async def handle_get_extra_yaml_keys(call: ServiceCall) -> ServiceResponse:
"""Return the component-configured extra YAML write keys plus the
non-overridable deny floor.
Backs the component's own options flow and the ha-mcp settings UI, and
is how the server reads this store to union it with its own
``HA_MCP_EXTRA_YAML_KEYS``. Caller-token + admin gated, matching
get_allowed_paths.
"""
if not _caller_token_ok(hass, call):
return _unauthorized_response(SERVICE_GET_EXTRA_YAML_KEYS, keys=[])
if not await _caller_is_admin(hass, call):
return {
"success": False,
"error_code": "unauthorized",
"error": "ha_mcp_tools.get_extra_yaml_keys requires admin auth.",
"keys": [],
}
return {
"success": True,
"keys": _current_extra_yaml_keys(hass),
"deny_floor": sorted(YAML_KEY_DENYLIST),
}
return handle_get_extra_yaml_keys
def _build_set_extra_yaml_keys_handler(
hass: HomeAssistant,
) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]:
"""Build the handle_set_extra_yaml_keys service handler (#1887)."""
async def handle_set_extra_yaml_keys(call: ServiceCall) -> ServiceResponse:
"""Replace the component-configured extra YAML write keys.
Receives the FULL replacement list. Each entry is stripped and
validated; blanks and ``YAML_KEY_DENYLIST`` members are dropped and
reported in ``rejected``. Persists to .storage AND updates hass.data so
enforcement applies live with no HA restart. Caller-token + admin gated.
"""
if not _caller_token_ok(hass, call):
return _unauthorized_response(SERVICE_SET_EXTRA_YAML_KEYS, keys=[])
if not await _caller_is_admin(hass, call):
return {
"success": False,
"error_code": "unauthorized",
"error": "ha_mcp_tools.set_extra_yaml_keys requires admin auth.",
"keys": [],
}
normalized, rejected = await _apply_extra_yaml_keys(
hass, call.data.get("keys", [])
)
_LOGGER.info(
"Updated ha_mcp_tools extra YAML write keys: %s (%d rejected)",
normalized,
len(rejected),
)
return {
"success": True,
"keys": normalized,
"rejected": rejected,
}
return handle_set_extra_yaml_keys
def _build_list_legacy_backups_handler( def _build_list_legacy_backups_handler(
hass: HomeAssistant, hass: HomeAssistant,
) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]: ) -> Callable[[ServiceCall], Awaitable[ServiceResponse]]:
@@ -3063,6 +3376,13 @@ async def _async_setup_tools_entry(hass: HomeAssistant, entry: ConfigEntry) -> b
_HASS_DATA_ALLOWED_PATHS_KEY _HASS_DATA_ALLOWED_PATHS_KEY
] = await _load_allowed_paths(hass) ] = await _load_allowed_paths(hass)
# Load the component-configured extra YAML write keys (#1887) into hass.data
# so enforcement reads them with no I/O. set_extra_yaml_keys updates this in
# place, so changes apply live (no HA restart).
hass.data.setdefault(DOMAIN, {})[
_HASS_DATA_EXTRA_YAML_KEYS_KEY
] = await _load_extra_yaml_keys(hass)
# One-time migration of pre-fix YAML backups out of the publicly-served # One-time migration of pre-fix YAML backups out of the publicly-served
# www/ directory (GHSA-g39v-cvjh-8fpf). Wrapped so a migration failure # www/ directory (GHSA-g39v-cvjh-8fpf). Wrapped so a migration failure
# cannot prevent the integration from loading — the integration's # cannot prevent the integration from loading — the integration's
@@ -3132,6 +3452,8 @@ async def _async_setup_tools_entry(hass: HomeAssistant, entry: ConfigEntry) -> b
handle_get_caller_token = _build_get_caller_token_handler(hass) handle_get_caller_token = _build_get_caller_token_handler(hass)
handle_get_allowed_paths = _build_get_allowed_paths_handler(hass) handle_get_allowed_paths = _build_get_allowed_paths_handler(hass)
handle_set_allowed_paths = _build_set_allowed_paths_handler(hass) handle_set_allowed_paths = _build_set_allowed_paths_handler(hass)
handle_get_extra_yaml_keys = _build_get_extra_yaml_keys_handler(hass)
handle_set_extra_yaml_keys = _build_set_extra_yaml_keys_handler(hass)
handle_list_legacy_backups = _build_list_legacy_backups_handler(hass) handle_list_legacy_backups = _build_list_legacy_backups_handler(hass)
handle_read_legacy_backup = _build_read_legacy_backup_handler(hass) handle_read_legacy_backup = _build_read_legacy_backup_handler(hass)
@@ -3200,6 +3522,22 @@ async def _async_setup_tools_entry(hass: HomeAssistant, entry: ConfigEntry) -> b
supports_response=SupportsResponse.ONLY, supports_response=SupportsResponse.ONLY,
) )
hass.services.async_register(
DOMAIN,
SERVICE_GET_EXTRA_YAML_KEYS,
handle_get_extra_yaml_keys,
schema=SERVICE_GET_EXTRA_YAML_KEYS_SCHEMA,
supports_response=SupportsResponse.ONLY,
)
hass.services.async_register(
DOMAIN,
SERVICE_SET_EXTRA_YAML_KEYS,
handle_set_extra_yaml_keys,
schema=SERVICE_SET_EXTRA_YAML_KEYS_SCHEMA,
supports_response=SupportsResponse.ONLY,
)
hass.services.async_register( hass.services.async_register(
DOMAIN, DOMAIN,
SERVICE_LIST_LEGACY_BACKUPS, SERVICE_LIST_LEGACY_BACKUPS,
@@ -3242,10 +3580,17 @@ async def _async_setup_tools_entry(hass: HomeAssistant, entry: ConfigEntry) -> b
component_version = COMPONENT_VERSION component_version = COMPONENT_VERSION
try: try:
integration = await async_get_integration(hass, DOMAIN) integration = await async_get_integration(hass, DOMAIN)
if integration.version is None:
# A manifest without a version reads as None rather than raising,
# and ``str()`` would put the literal "None" on the device.
raise ValueError("the manifest carries no version")
component_version = str(integration.version) component_version = str(integration.version)
except Exception as err: except Exception as err:
_LOGGER.debug( _LOGGER.debug(
"Could not read the component version for the tools device: %s", err "Could not read the component version for the tools device, using "
"the compiled-in %s: %s",
COMPONENT_VERSION,
err,
) )
dr.async_get(hass).async_get_or_create( dr.async_get(hass).async_get_or_create(
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,

Some files were not shown because too many files have changed in this diff Show More