Skip to content

Commit

Permalink
iCloud3 v3, Beta 19.1
Browse files Browse the repository at this point in the history
  • Loading branch information
gcobb321 committed Jul 10, 2023
1 parent 5055478 commit a774c92
Show file tree
Hide file tree
Showing 13 changed files with 185 additions and 102 deletions.
11 changes: 11 additions & 0 deletions custom_components/icloud3/ChangeLog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
Beta 19.1 - 7/10/2023
...................
1. Bug Fix - Fixed a problem that may be encountered if you have a watch paired to an iPhone and are tracking the iPhone but not the watch.
2. New Sensors:
1. travel_time_hhmm - Displays the travel time to the zone in an hh:mm format.
2. arrival_time - The expected arrival time to the zone (current time + travel time)
3. Simplified the sensors associated with track_from_zones other than Home.




Beta 19 - 7/8/2023
...................
1. Event Log - You will get a browser refresh notification
Expand Down
20 changes: 7 additions & 13 deletions custom_components/icloud3/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,27 @@


from homeassistant.config_entries import ConfigEntry
from homeassistant.core import CoreState, HomeAssistant
from homeassistant.const import EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP
from homeassistant.core import HomeAssistant
from homeassistant.helpers.typing import ConfigType
from homeassistant.helpers import network
from homeassistant.const import EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.components.network import async_get_source_ip
# from homeassistant.helpers import collection, storage
import homeassistant.util.location as ha_location_info
import homeassistant.helpers.config_validation as cv
import homeassistant.util.dt as dt_util
# import voluptuous as vol
import homeassistant.util.location as ha_location_info
import os
import logging

from .const import (DOMAIN, PLATFORMS, MODE_PLATFORM, MODE_INTEGRATION, CONF_VERSION,
CONF_SETUP_ICLOUD_SESSION_EARLY,
SENSOR_EVENT_LOG_NAME, SENSOR_WAZEHIST_TRACK_NAME,
EVLOG_IC3_STARTING, VERSION, )

from .const_sensor import (HA_EXCLUDE_SENSORS, )
CONFIG_SCHEMA = cv.empty_config_schema(DOMAIN)

# from .const_sensor import (HA_EXCLUDE_SENSORS, )

from .global_variables import GlobalVariables as Gb
# from .helpers.common import (instr, )
from .helpers.messaging import (_trace, _traceha, open_ic3_log_file,
log_info_msg, log_debug_msg, log_error_msg, log_exception)
from .support.v2v3_config_migration import iCloud3_v2v3ConfigMigration
Expand All @@ -41,7 +40,6 @@
from .icloud3_main import iCloud3
from . import config_flow

import logging
# _LOGGER = logging.getLogger(__name__)
Gb.HALogger = _LOGGER = logging.getLogger('icloud3')

Expand All @@ -63,8 +61,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
Gb.config = config
Gb.ha_config_platform_stmt = True
Gb.operating_mode = MODE_PLATFORM
Gb.local_ip = await async_get_source_ip(hass)
Gb.network_url = network.get_url(hass)
await async_get_ha_location_info(hass)

recorder_prefilter.add_filter(hass, [SENSOR_EVENT_LOG_NAME, SENSOR_WAZEHIST_TRACK_NAME])
Expand Down Expand Up @@ -125,8 +121,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
Gb.config_entry = entry
Gb.entry_id = entry.entry_id
Gb.operating_mode = MODE_INTEGRATION
Gb.local_ip = await async_get_source_ip(hass)
Gb.network_url = network.get_url(hass)
await async_get_ha_location_info(hass)

recorder_prefilter.add_filter(hass, [SENSOR_EVENT_LOG_NAME, SENSOR_WAZEHIST_TRACK_NAME])
Expand Down
29 changes: 19 additions & 10 deletions custom_components/icloud3/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,8 @@ def dict_value_to_list(key_value_dict):
CONF_SENSORS_TRACKING_TIME_KEY_TEXT = {
'travel_time': 'travel_time > Waze Travel time to Home or closest Track-from-Zone zone',
'travel_time_min': 'travel_time_min > Waze Travel time to Home or closest Track-from-Zone zone in minutes',
'travel_time_hhmm': 'travel_time_hhmm > Waze Travel time to a Zone in hours:minutes',
'arrival_time': 'arrival_time > Home Zone arrival time based on Waze Travel time',
}
CONF_SENSORS_TRACKING_DISTANCE_KEY_TEXT = {
'home_distance': 'home_distance > Distance to the Home zone',
Expand All @@ -348,12 +350,11 @@ def dict_value_to_list(key_value_dict):
'moved_distance': 'moved_distance > Distance moved from the last location',
}
CONF_SENSORS_TRACK_FROM_ZONES_KEY_TEXT = {
'tfz_zone_info': 'zone_info_[zone] > Summary sensor with all zone distance & time attributes',
'tfz_travel_time': 'travel_time_[zone] > Waze Travel time to a Track-from-Zone',
'tfz_travel_time_min': 'travel_time_min_[zone] > Waze Travel time to a Track-from-Zone in minutes',
'tfz_distance': 'distance_[zone] > Distance from the Track-from-Zone ',
'tfz_dir_of_travel':'dir_of_travel_[zone] > Direction of Travel from the Track-from-Zone (Towards, AwayFrom, inZone, etc)',
'general_sensors': 'Include General Sensors (zone_info)',
'time_sensors': 'Include Travel Time Sensors (travel_time, travel_time_mins, travel_time_hhmm, arrival_time',
'distance_sensors': 'Include Zone Distance Sensors (zone_distance, distance, dir_of_travel)',
}
CONF_SENSORS_TRACK_FROM_ZONES_KEYS = ['general_sensors', 'time_sensors', 'distance_sensors']
CONF_SENSORS_TRACKING_OTHER_KEY_TEXT = {
'trigger': 'trigger > Last action that triggered a location update',
'waze_distance': 'waze_distance > Waze distance from a TrackFrom zone',
Expand Down Expand Up @@ -405,7 +406,7 @@ def dict_value_to_list(key_value_dict):
"App issues an Enter Zone trigger when the device enters the zone and changes the "
"device_tracker entity state to the Zone. iCloud3 does not process the Enter Zone "
"trigger until the delay time has passed. This prevents processing a Zone Enter "
"trigger that is immediately followed by an Exit Zone trigger.")
"trig[er that is immediately followed by an Exit Zone trigger.")
STAT_ZONE_HEADER = ("A Stationary Zone is automatically created if the device remains in the same location "
"(store, friends house, doctor`s office, etc.) for an extended period of time")
STAT_ZONE_BASE_HEADER = ("The Stationary Zone is moved to it's 'Base Location' when it is not used by the device. "
Expand Down Expand Up @@ -1201,6 +1202,15 @@ async def async_step_sensors(self, user_input=None, errors=None):
if HOME_DISTANCE not in user_input[CONF_SENSORS_TRACKING_DISTANCE]:
user_input[CONF_SENSORS_TRACKING_DISTANCE].append(HOME_DISTANCE)

tfz_sensors_base = ['zone_info']
tfz_sensors_base.extend(user_input[CONF_SENSORS_TRACKING_TIME])
tfz_sensors_base.extend(user_input[CONF_SENSORS_TRACKING_DISTANCE])
tfz_sensors = []
for sensor in tfz_sensors_base:
if sensor in SENSOR_GROUPS['track_from_zone']:
tfz_sensors.append(f"tfz_{sensor}")
user_input[CONF_SENSORS_TRACK_FROM_ZONES] = tfz_sensors

if action_item == 'exclude_sensors':
self.excluded_sensors = Gb.conf_sensors[CONF_EXCLUDED_SENSORS].copy()
self.sensors_list_filter = '?'
Expand Down Expand Up @@ -2939,7 +2949,6 @@ def _any_errors(self):
def _remove_and_create_sensors(self, user_input):
""" Remove unchecked sensor entities and create newly checked sensor entities """


new_sensors_list, remove_sensors_list = \
self._sensor_form_identify_new_and_removed_sensors(user_input)
self._remove_sensor_entity(remove_sensors_list)
Expand Down Expand Up @@ -4277,9 +4286,9 @@ def form_schema(self, step_id):
vol.Required(CONF_SENSORS_OTHER,
default=Gb.conf_sensors[CONF_SENSORS_OTHER]):
cv.multi_select(CONF_SENSORS_OTHER_KEY_TEXT),
vol.Required(CONF_SENSORS_TRACK_FROM_ZONES,
default=Gb.conf_sensors[CONF_SENSORS_TRACK_FROM_ZONES]):
cv.multi_select(CONF_SENSORS_TRACK_FROM_ZONES_KEY_TEXT),
# vol.Required(CONF_SENSORS_TRACK_FROM_ZONES,
# default=Gb.conf_sensors[CONF_SENSORS_TRACK_FROM_ZONES]):
# cv.multi_select(CONF_SENSORS_TRACK_FROM_ZONES_KEY_TEXT),
vol.Required(CONF_SENSORS_MONITORED_DEVICES,
default=Gb.conf_sensors[CONF_SENSORS_MONITORED_DEVICES]):
cv.multi_select(CONF_SENSORS_MONITORED_DEVICES_KEY_TEXT),
Expand Down
20 changes: 16 additions & 4 deletions custom_components/icloud3/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#
#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

VERSION = '3.0.0b19.0'
VERSION = '3.0.0b19.1'

DOMAIN = 'icloud3'
ICLOUD3 = 'iCloud3'
Expand Down Expand Up @@ -126,6 +126,7 @@
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
DATETIME_ZERO = '0000-00-00 00:00:00'
HHMMSS_ZERO = '00:00:00'
HHMM_ZERO = '00:00'
HIGH_INTEGER = 9999999999

# Device Tracking Status
Expand Down Expand Up @@ -635,6 +636,9 @@
CONF_SENSORS_TRACKING_TIME = 'tracking_time'
TRAVEL_TIME = "travel_time"
TRAVEL_TIME_MIN = "travel_time_min"
TRAVEL_TIME_HHMM = "travel_time_hhmm"
ARRIVAL_TIME = "arrival_time"


CONF_SENSORS_TRACKING_DISTANCE = 'tracking_distance'
ZONE_DISTANCE_M = 'meters_distance'
Expand All @@ -653,6 +657,8 @@
TFZ_ZONE_DISTANCE = 'tfz_zone_distance'
TFZ_TRAVEL_TIME = 'tfz_travel_time'
TFZ_TRAVEL_TIME_MIN = 'tfz_travel_time_min'
TFZ_TRAVEL_TIME_HHMM = "tfz_travel_time_hhmm"
TFZ_ARRIVAL_TIME = "tfz_arrival_time"
TFZ_DIR_OF_TRAVEL = 'tfz_dir_of_travel'

CONF_SENSORS_TRACKING_OTHER = 'tracking_other'
Expand Down Expand Up @@ -851,14 +857,20 @@
NEXT_UPDATE, ],
CONF_SENSORS_TRACKING_TIME: [
TRAVEL_TIME,
TRAVEL_TIME_MIN, ],
TRAVEL_TIME_MIN,
ARRIVAL_TIME, ],
CONF_SENSORS_TRACKING_DISTANCE: [
HOME_DISTANCE,
ZONE_DISTANCE,
MOVED_DISTANCE,
DIR_OF_TRAVEL, ],
CONF_SENSORS_TRACK_FROM_ZONES: [
TFZ_ZONE_INFO, ],
TFZ_ZONE_INFO,
TFZ_TRAVEL_TIME,
TFZ_TRAVEL_TIME_MIN,
TFZ_ARRIVAL_TIME,
TFZ_ZONE_DISTANCE,
TFZ_DIR_OF_TRAVEL,],
CONF_SENSORS_TRACKING_OTHER: [],
CONF_SENSORS_ZONE: [
ZONE_NAME],
Expand Down Expand Up @@ -1023,7 +1035,7 @@
TIMESTAMP, TIMESTAMP_SECS, TIMESTAMP_TIME, LOCATION_TIME, DATETIME, AGE,
TRIGGER, BATTERY, BATTERY_LEVEL, BATTERY_STATUS,
INTERVAL, ZONE_DISTANCE, HOME_DISTANCE, CALC_DISTANCE, WAZE_DISTANCE,
TRAVEL_TIME, TRAVEL_TIME_MIN, DIR_OF_TRAVEL, MOVED_DISTANCE,
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME, DIR_OF_TRAVEL, MOVED_DISTANCE,
DEVICE_STATUS, LOW_POWER_MODE,
TRACKING, DEVICENAME_IOSAPP,
AUTHENTICATED,
Expand Down
62 changes: 45 additions & 17 deletions custom_components/icloud3/const_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
BATTERY_SOURCE, BATTERY, BATTERY_STATUS, BATTERY_UPDATE_TIME,
DISTANCE, ZONE_DISTANCE, ZONE_DISTANCE_M, ZONE_DISTANCE_M_EDGE, HOME_DISTANCE,
MAX_DISTANCE,CALC_DISTANCE, WAZE_DISTANCE, WAZE_METHOD,
TRAVEL_TIME, TRAVEL_TIME_MIN, DIR_OF_TRAVEL,
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME, DIR_OF_TRAVEL,
MOVED_DISTANCE, MOVED_TIME_FROM, MOVED_TIME_TO,
DEVICE_STATUS,
LAST_UPDATE, LAST_UPDATE_DATETIME,
NEXT_UPDATE, NEXT_UPDATE_DATETIME,
LAST_LOCATED, LAST_LOCATED_DATETIME,
INFO, GPS_ACCURACY, ALTITUDE, VERTICAL_ACCURACY,
TFZ_ZONE_INFO, TFZ_DISTANCE, TFZ_ZONE_DISTANCE, TFZ_TRAVEL_TIME,
TFZ_TRAVEL_TIME_MIN, TFZ_DIR_OF_TRAVEL,
TFZ_ZONE_INFO, TFZ_DISTANCE, TFZ_ZONE_DISTANCE, TFZ_DIR_OF_TRAVEL,
TFZ_TRAVEL_TIME,TFZ_TRAVEL_TIME_MIN, TFZ_TRAVEL_TIME_HHMM, TFZ_ARRIVAL_TIME,
TOWARDS, AWAY_FROM, TOWARDS_HOME, AWAY_FROM_HOME, INZONE, INZONE_HOME, INZONE_STATIONARY,
SENSOR_EVENT_LOG_NAME, SENSOR_WAZEHIST_TRACK_NAME,
)
Expand All @@ -38,18 +38,19 @@
GPS_ACCURACY, ALTITUDE, VERTICAL_ACCURACY,
]
SENSOR_LIST_TRACKING = [NEXT_UPDATE, LAST_UPDATE, LAST_LOCATED,
TRAVEL_TIME, TRAVEL_TIME_MIN, MOVED_DISTANCE, DIR_OF_TRAVEL,
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
MOVED_DISTANCE, DIR_OF_TRAVEL,
WAZE_DISTANCE, CALC_DISTANCE,
ZONE_DISTANCE, ZONE_DISTANCE_M, ZONE_DISTANCE_M_EDGE, HOME_DISTANCE,
ZONE, ZONE_FNAME, ZONE_NAME, ZONE_DATETIME,
LAST_ZONE, LAST_ZONE_FNAME, LAST_ZONE_NAME,
]
SENSOR_LIST_TRACK_FROM_ZONE = [INFO, LAST_UPDATE, NEXT_UPDATE,
TRAVEL_TIME, TRAVEL_TIME_MIN, DIR_OF_TRAVEL,
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME, DIR_OF_TRAVEL,
]
SENSOR_LIST_LOC_UPDATE =[TRIGGER, INTERVAL,
NEXT_UPDATE, LAST_UPDATE, LAST_LOCATED,
TRAVEL_TIME, TRAVEL_TIME_MIN,
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
]
SENSOR_LIST_ZONE_NAME =[ZONE, ZONE_DISPLAY_AS, ZONE_FNAME, ZONE_NAME, ZONE_NAME, ZONE_FNAME,
LAST_ZONE_NAME, LAST_ZONE_DISPLAY_AS, LAST_ZONE_FNAME, LAST_ZONE,
Expand All @@ -65,10 +66,12 @@
NAME,
ZONE, ZONE_FNAME, ZONE_NAME, ZONE_DATETIME,
HOME_DISTANCE,
TRAVEL_TIME, TRAVEL_TIME_MIN,
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
LAST_LOCATED,
LAST_UPDATE,
],
LAST_UPDATE,],
'track_from_zone': [
TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
ZONE_DISTANCE, DISTANCE, DIR_OF_TRAVEL, 'zone_info', ]
}
SENSOR_ICONS = {
TOWARDS_HOME: 'mdi:home-import-outline',
Expand Down Expand Up @@ -200,14 +203,26 @@
'TravelTime',
'timer, min',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN],
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
0],
TRAVEL_TIME_MIN: [
'TravelTimeMin',
'timer',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN],
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
0],
TRAVEL_TIME_HHMM: [
'TravelTime (hh:mm)',
'text',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],
ARRIVAL_TIME: [
'ArrivalTime',
'text',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],

# CONF_SENSORS_TRACKING_DISTANCE
ZONE_DISTANCE: [
Expand Down Expand Up @@ -235,7 +250,7 @@
'Direction',
'text, title',
'mdi:compass-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN],
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],
MOVED_DISTANCE: [
'MovedDistance',
Expand All @@ -247,7 +262,7 @@
'ZoneInfo',
'zone_info',
'mdi:map-marker-radius-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN,
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
DISTANCE, MAX_DISTANCE, CALC_DISTANCE, WAZE_DISTANCE, WAZE_METHOD, DIR_OF_TRAVEL],
BLANK_SENSOR_FIELD],

Expand All @@ -256,20 +271,32 @@
'ZoneInfo',
'zone_info',
'mdi:map-marker-radius-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN,
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
DISTANCE, MAX_DISTANCE, CALC_DISTANCE, WAZE_DISTANCE, WAZE_METHOD, DIR_OF_TRAVEL],
BLANK_SENSOR_FIELD],
TFZ_TRAVEL_TIME: [
'TravelTime',
'timer, mins',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN],
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],
TFZ_TRAVEL_TIME_MIN: [
'TravelTimeMin',
'timer',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN],
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],
TFZ_TRAVEL_TIME_HHMM: [
'TravelTime (hh:mm)',
'text',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],
TFZ_ARRIVAL_TIME: [
'ArrivalTime',
'text',
'mdi:clock-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME],
BLANK_SENSOR_FIELD],
TFZ_DISTANCE: [
'ZoneDistance',
Expand All @@ -289,7 +316,8 @@
'Direction',
'text, title',
'mdi:compass-outline',
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, DISTANCE, MAX_DISTANCE],
[FROM_ZONE, TRAVEL_TIME, TRAVEL_TIME_MIN, TRAVEL_TIME_HHMM, ARRIVAL_TIME,
DISTANCE, MAX_DISTANCE],
BLANK_SENSOR_FIELD],

# CONF_SENSORS_TRACKING_OTHER
Expand Down
Loading

0 comments on commit a774c92

Please sign in to comment.