From dfeb9f15921171889863679c8ccaa5be34b3e9fc Mon Sep 17 00:00:00 2001 From: seo Date: Thu, 16 Jul 2026 18:59:36 +0900 Subject: [PATCH] =?UTF-8?q?=EB=82=98=EC=9D=98=20=EC=B0=BE=EA=B8=B0=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A1=B0=ED=9A=8C=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- php/api.php | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 45e30dd..de0b2f1 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ PWA standalone으로 진입한 경우에는 설치형 앱 사용성을 우선해 실시간 화면은 현재 위치와 상태를 조회하고, 기본 기간 입력값에 해당하는 최근 하루 이동 기록도 지도에 함께 표시합니다. 라이브 모드의 기본 기간은 현재 시각 기준 24시간 전 정각부터 다음 정각까지이며, 정시가 지나면 입력 구간도 한 시간씩 같이 이동해 새 시간대 기록이 경로선에 계속 포함됩니다. 자동 위치 이동이 켜져 있어도 새 위치를 받을 때마다 경로선과 기록 요약을 같은 히스토리 기준으로 다시 그립니다. 기간 입력을 변경하면 해당 범위의 이동 기록을 `history=1` 옵션으로 다시 요청합니다. 서버는 Home Assistant 히스토리 API를 실행한 뒤 시간과 좌표가 같은 중복 지점만 제거하고, 설정 시간 안의 병합 지점을 전부 응답합니다. -상태 조회는 `seoul`, `main` Home Assistant의 `/states`를 모두 읽어 entity별로 병합합니다. 한쪽에만 의미 있는 값이 있으면 해당 값을 사용하고, 양쪽 모두 값이 있으면 더 최신 `last_updated` 또는 `last_changed` 값을 사용합니다. 선택된 상태의 attributes에 빈 값이 있으면 다른 쪽 attributes로 채워 빈칸을 줄입니다. +상태 조회는 `/custom/common/config.php`의 `findmydevice_data_profiles`에 적힌 `seoul`, `main` Home Assistant `/states`를 모두 읽어 entity별로 병합합니다. 한쪽에만 의미 있는 값이 있으면 해당 값을 사용하고, 양쪽 모두 값이 있으면 더 최신 `last_updated` 또는 `last_changed` 값을 사용합니다. 선택된 상태의 attributes에 빈 값이 있으면 다른 쪽 attributes로 채워 빈칸을 줄입니다. 위치 갱신 명령은 서울 HA로만 보내지만, 데이터 조회는 서울과 목포/백업 HA를 계속 함께 사용합니다. 히스토리 조회도 `seoul`, `main` Home Assistant history를 모두 읽습니다. 서버는 시간과 좌표를 기준으로 중복 지점을 제거하고 시간순으로 병합합니다. 응답에는 병합 전 출처별 지점 수인 `historySourceCounts`도 포함합니다. diff --git a/php/api.php b/php/api.php index 8dcd022..acbb54c 100644 --- a/php/api.php +++ b/php/api.php @@ -90,8 +90,7 @@ function findmydevice_mobile_command(string $message, array $data = []): bool function findmydevice_ha_profiles(): array { $config = custom_config(); - $refresh = $config['findmydevice_location_refresh'] ?? []; - return array_values(array_unique(array_filter(array_map('strval', (array)($refresh['profiles'] ?? [$refresh['profile'] ?? 'seoul']))))); + return array_values(array_unique(array_filter(array_map('strval', (array)($config['findmydevice_data_profiles'] ?? ['seoul', 'main']))))); } function findmydevice_state_timestamp(?array $state): int @@ -353,7 +352,7 @@ if (isset($_GET['action']) && $_GET['action'] === 'webhook') { $config = custom_config(); $entities = $config['entities']; -$findmydeviceHaProfiles = ['seoul', 'main']; +$findmydeviceHaProfiles = findmydevice_ha_profiles(); $findmydeviceHomeConfig = is_array($config['findmydevice_home'] ?? null) ? $config['findmydevice_home'] : []; $findmydeviceHome = [ 'latitude' => isset($findmydeviceHomeConfig['latitude']) ? (float)$findmydeviceHomeConfig['latitude'] : null,