Improve Home Assistant connection reliability

This commit is contained in:
2026-07-27 16:23:40 -07:00
parent b7ec774efd
commit f3341ee064
16 changed files with 1696 additions and 697 deletions
+138
View File
@@ -43,8 +43,20 @@
CD815B96241DC44D00E2FA97 /* HubitatDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD815B95241DC44D00E2FA97 /* HubitatDevice.swift */; };
CDA64C242E03AE6400E9B07E /* HomeAssistantServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA64C232E03AE6100E9B07E /* HomeAssistantServer.swift */; };
CDA64C262E03EA1400E9B07E /* HomeAssistantDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA64C252E03EA1000E9B07E /* HomeAssistantDevice.swift */; };
AA0000030000000000000000 /* HomeAssistantIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000010000000000000000 /* HomeAssistantIntegrationTests.swift */; };
AA0000050000000000000000 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000040000000000000000 /* XCTest.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
AA00000B0000000000000000 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 0C3CAE9C1C3350C800B856AD /* Project object */;
proxyType = 1;
remoteGlobalIDString = 0C3CAEA31C3350C800B856AD;
remoteInfo = XIONControlPanel;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
0C20E2B51C33514100BA789B /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
0C20E2BA1C33529700BA789B /* MainViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = "<group>"; };
@@ -87,6 +99,9 @@
CD815B95241DC44D00E2FA97 /* HubitatDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HubitatDevice.swift; sourceTree = "<group>"; };
CDA64C232E03AE6100E9B07E /* HomeAssistantServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeAssistantServer.swift; sourceTree = "<group>"; };
CDA64C252E03EA1000E9B07E /* HomeAssistantDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeAssistantDevice.swift; sourceTree = "<group>"; };
AA0000010000000000000000 /* HomeAssistantIntegrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeAssistantIntegrationTests.swift; sourceTree = "<group>"; };
AA0000020000000000000000 /* XIONControlPanelTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XIONControlPanelTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
AA0000040000000000000000 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = System/Library/Frameworks/XCTest.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -97,6 +112,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AA0000080000000000000000 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AA0000050000000000000000 /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -166,6 +189,7 @@
isa = PBXGroup;
children = (
0C3CAEA61C3350C800B856AD /* XIONControlPanel */,
AA0000060000000000000000 /* XIONControlPanelTests */,
0C3CAEA51C3350C800B856AD /* Products */,
);
sourceTree = "<group>";
@@ -174,6 +198,7 @@
isa = PBXGroup;
children = (
0C3CAEA41C3350C800B856AD /* XION.app */,
AA0000020000000000000000 /* XIONControlPanelTests.xctest */,
);
name = Products;
sourceTree = "<group>";
@@ -244,6 +269,14 @@
path = Servers;
sourceTree = "<group>";
};
AA0000060000000000000000 /* XIONControlPanelTests */ = {
isa = PBXGroup;
children = (
AA0000010000000000000000 /* HomeAssistantIntegrationTests.swift */,
);
path = XIONControlPanelTests;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -264,6 +297,24 @@
productReference = 0C3CAEA41C3350C800B856AD /* XION.app */;
productType = "com.apple.product-type.application";
};
AA00000A0000000000000000 /* XIONControlPanelTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = AA00000F0000000000000000 /* Build configuration list for PBXNativeTarget "XIONControlPanelTests" */;
buildPhases = (
AA0000070000000000000000 /* Sources */,
AA0000080000000000000000 /* Frameworks */,
AA0000090000000000000000 /* Resources */,
);
buildRules = (
);
dependencies = (
AA00000C0000000000000000 /* PBXTargetDependency */,
);
name = XIONControlPanelTests;
productName = XIONControlPanelTests;
productReference = AA0000020000000000000000 /* XIONControlPanelTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -280,6 +331,12 @@
LastSwiftMigration = 1010;
ProvisioningStyle = Automatic;
};
AA00000A0000000000000000 = {
CreatedOnToolsVersion = 26.5;
DevelopmentTeam = DQQH5H6GBD;
ProvisioningStyle = Automatic;
TestTargetID = 0C3CAEA31C3350C800B856AD;
};
};
};
buildConfigurationList = 0C3CAE9F1C3350C800B856AD /* Build configuration list for PBXProject "XIONControlPanel" */;
@@ -297,6 +354,7 @@
projectRoot = "";
targets = (
0C3CAEA31C3350C800B856AD /* XIONControlPanel */,
AA00000A0000000000000000 /* XIONControlPanelTests */,
);
};
/* End PBXProject section */
@@ -321,6 +379,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AA0000090000000000000000 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -355,8 +420,24 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
AA0000070000000000000000 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
AA0000030000000000000000 /* HomeAssistantIntegrationTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
AA00000C0000000000000000 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 0C3CAEA31C3350C800B856AD /* XIONControlPanel */;
targetProxy = AA00000B0000000000000000 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
0C3CAEB01C3350C800B856AD /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
@@ -485,6 +566,7 @@
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = DQQH5H6GBD;
INFOPLIST_FILE = "$(SRCROOT)/XIONControlPanel/SupportingFiles/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 2.0;
PRODUCT_BUNDLE_IDENTIFIER = com.zanneth.XIONControlPanel;
@@ -492,6 +574,7 @@
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "XIONControlPanel/SupportingFiles/XIONControlPanel-Bridging-Header.h";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
@@ -507,6 +590,7 @@
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = DQQH5H6GBD;
INFOPLIST_FILE = "$(SRCROOT)/XIONControlPanel/SupportingFiles/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 2.0;
PRODUCT_BUNDLE_IDENTIFIER = com.zanneth.XIONControlPanel;
@@ -519,6 +603,51 @@
};
name = Release;
};
AA00000D0000000000000000 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = DQQH5H6GBD;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.zanneth.XIONControlPanelTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/XION.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/XION";
};
name = Debug;
};
AA00000E0000000000000000 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = DQQH5H6GBD;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.zanneth.XIONControlPanelTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/XION.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/XION";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -540,6 +669,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
AA00000F0000000000000000 /* Build configuration list for PBXNativeTarget "XIONControlPanelTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AA00000D0000000000000000 /* Debug */,
AA00000E0000000000000000 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 0C3CAE9C1C3350C800B856AD /* Project object */;