From 21e0b81a98b07a089f3bbe82e24bb1998823047c Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Mon, 22 Jun 2026 03:53:06 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20HA=20tab=20=E2=80=94=20filter=20konnect?= =?UTF-8?q?ed/energy/camera/media=5Fplayer,=20add=2030s=20auto-refresh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added to skipDomains: media_player - Added to skipKeywords: konnected, energy/power/voltage/current, camera controls (infrared, email, FTP, push, siren, hub ringtone, manual record), system noise (CEC scanner, ESPHome builder, Echo DND) - Auto-refresh every 30s when HA tab is active --- api/endpoints/ha.php | 29 ++++++++++++++++++++--------- public_html/assets/js/jarvis-app.js | 11 +++++++++++ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/api/endpoints/ha.php b/api/endpoints/ha.php index b2af154..a80f340 100644 --- a/api/endpoints/ha.php +++ b/api/endpoints/ha.php @@ -83,15 +83,26 @@ if ($method === 'POST' && $action === 'service') { // Serve entities from ha_entities table (real-time agent push data) $skipDomains = ['sensor','binary_sensor','button','update','select','number', 'device_tracker','event','image','person','zone','tts','conversation', - 'assist_satellite','input_button']; -$skipKeywords = ['pre_release','_record','_ftp_','_push_','_hub_ringtone', - '_siren_on','_email_on','_manual_record','_infrared_', - 'do_not_disturb','matter_server','zerotier','mariadb', - 'spotify_connect','file_editor','ssh_web','uptime_kuma', - 'adguard_','folding_home','music_assistant','get_hacs','mealie', - 'mosquitto','social_to','motion_detection', - 'front_yard_record','down_hill_record','camera1_record', - 'back_yard_record','nvr_','assist_microphone']; + 'assist_satellite','input_button','media_player']; +$skipKeywords = [ + // HACS / system toggles + 'pre_release','get_hacs','matter_server','zerotier','mariadb', + 'spotify_connect','file_editor','ssh_web','uptime_kuma','adguard_', + 'folding_home','music_assistant','mealie','mosquitto','social_to', + 'assist_microphone','cec_scanner','esphome_device_builder', + // Camera controls + '_record','_ftp_','_push_','_hub_ringtone','_siren_on', + '_email_on','_manual_record','_infrared_','motion_detection', + 'front_yard_record','down_hill_record','camera1_record', + 'back_yard_record','nvr_', + // Echo / smart display noise + 'do_not_disturb', + // Konnected security panel switches + 'konnected', + // Energy / power monitoring (sensors, not controls) + '_energy','_power','_voltage','_current','_consumption', + 'electricity_maps', +]; $rows = JarvisDB::query( "SELECT entity_id, entity_name, domain, state, UNIX_TIMESTAMP(updated_at) as updated_ts diff --git a/public_html/assets/js/jarvis-app.js b/public_html/assets/js/jarvis-app.js index b71b683..a262239 100644 --- a/public_html/assets/js/jarvis-app.js +++ b/public_html/assets/js/jarvis-app.js @@ -698,6 +698,16 @@ async function loadProxmox() { } // ── HOME ASSISTANT ──────────────────────────────────────────────────── +let _haRefreshTimer = null; +function _startHARefresh() { + if (_haRefreshTimer) return; + _haRefreshTimer = setInterval(() => { + if (document.getElementById('tab-ha')?.classList.contains('active') || + document.getElementById('tab-home')?.classList.contains('active')) { + loadHA(); + } + }, 30000); +} async function loadHA() { const data = await api('ha'); const el = document.getElementById('ha-list'); @@ -723,6 +733,7 @@ async function loadHA() { } renderHATable(entities); + _startHARefresh(); } const _domainIcon = {