feat(socket): update smart socket defaults
This commit is contained in:
+1
-1
@@ -49,7 +49,7 @@ class ABoxDefaultContentInitializer @Inject constructor(
|
|||||||
is DomainResult.Failure -> return false
|
is DomainResult.Failure -> return false
|
||||||
}
|
}
|
||||||
val defaults = listOf(
|
val defaults = listOf(
|
||||||
DeviceName("Zigbee插座控制器") to DeviceType.SOCKET,
|
DeviceName("智能插座") to DeviceType.SOCKET,
|
||||||
DeviceName("温湿度传感器") to DeviceType.TEMPERATURE_HUMIDITY,
|
DeviceName("温湿度传感器") to DeviceType.TEMPERATURE_HUMIDITY,
|
||||||
DeviceName("红外控制器") to DeviceType.INFRARED,
|
DeviceName("红外控制器") to DeviceType.INFRARED,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
|||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
@@ -24,7 +23,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
|||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.OutlinedButton
|
|
||||||
import androidx.compose.material3.OutlinedTextField
|
import androidx.compose.material3.OutlinedTextField
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
@@ -208,42 +206,11 @@ fun SocketScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.socket_direct_control),
|
|
||||||
style = MaterialTheme.typography.titleMedium,
|
|
||||||
fontWeight = FontWeight.Bold,
|
|
||||||
modifier = Modifier.fillMaxWidth().padding(bottom = 10.dp),
|
|
||||||
)
|
|
||||||
Row(
|
|
||||||
modifier = Modifier.fillMaxWidth(),
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
|
||||||
) {
|
|
||||||
OutlinedButton(
|
|
||||||
onClick = { onEvent(SocketUiEvent.SetPower(SocketPowerState.ON)) },
|
|
||||||
enabled = state.isActionEnabled && state.powerState != SocketPowerState.ON,
|
|
||||||
modifier = Modifier.weight(1f).height(56.dp),
|
|
||||||
) {
|
|
||||||
ABoxIcon(ABoxIconKey.POWER, "开启插座", modifier = Modifier.size(20.dp))
|
|
||||||
Spacer(Modifier.width(8.dp))
|
|
||||||
Text(stringResource(R.string.socket_action_turn_on))
|
|
||||||
}
|
|
||||||
|
|
||||||
OutlinedButton(
|
|
||||||
onClick = { onEvent(SocketUiEvent.SetPower(SocketPowerState.OFF)) },
|
|
||||||
enabled = state.isActionEnabled && state.powerState != SocketPowerState.OFF,
|
|
||||||
modifier = Modifier.weight(1f).height(56.dp),
|
|
||||||
) {
|
|
||||||
ABoxIcon(ABoxIconKey.POWER, "关闭插座", modifier = Modifier.size(20.dp))
|
|
||||||
Spacer(Modifier.width(8.dp))
|
|
||||||
Text(stringResource(R.string.socket_action_turn_off))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.socket_confirmation_hint),
|
text = stringResource(R.string.socket_confirmation_hint),
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodySmall,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
modifier = Modifier.fillMaxWidth().padding(top = 14.dp),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,8 +223,6 @@
|
|||||||
<string name="socket_status_offline">已离线</string>
|
<string name="socket_status_offline">已离线</string>
|
||||||
<string name="socket_status_unknown">未知状态</string>
|
<string name="socket_status_unknown">未知状态</string>
|
||||||
<string name="socket_action_toggle">切换电源</string>
|
<string name="socket_action_toggle">切换电源</string>
|
||||||
<string name="socket_action_turn_on">开启插座</string>
|
|
||||||
<string name="socket_action_turn_off">关闭插座</string>
|
|
||||||
<string name="socket_operating_label">正在切换状态…</string>
|
<string name="socket_operating_label">正在切换状态…</string>
|
||||||
<string name="socket_confirmed_at">已于 %1$s 确认状态</string>
|
<string name="socket_confirmed_at">已于 %1$s 确认状态</string>
|
||||||
|
|
||||||
@@ -361,7 +359,6 @@
|
|||||||
<string name="gateway_device_name_socket_desc">用于匹配和控制网关设备,必须与网关中的名称完全一致。</string>
|
<string name="gateway_device_name_socket_desc">用于匹配和控制网关设备,必须与网关中的名称完全一致。</string>
|
||||||
<string name="gateway_device_name_sensor_desc">用于匹配和读取网关设备,必须与网关中的名称完全一致。</string>
|
<string name="gateway_device_name_sensor_desc">用于匹配和读取网关设备,必须与网关中的名称完全一致。</string>
|
||||||
<string name="action_save_device_name">保存设备名称</string>
|
<string name="action_save_device_name">保存设备名称</string>
|
||||||
<string name="socket_direct_control">直接控制</string>
|
|
||||||
<string name="socket_confirmation_hint">指令只有在网关回读到结果状态后才会确认。等待确认时可使用刷新操作。</string>
|
<string name="socket_confirmation_hint">指令只有在网关回读到结果状态后才会确认。等待确认时可使用刷新操作。</string>
|
||||||
<string name="sensor_current_readings">当前读数</string>
|
<string name="sensor_current_readings">当前读数</string>
|
||||||
<string name="sensor_monitoring_title">实时环境监控</string>
|
<string name="sensor_monitoring_title">实时环境监控</string>
|
||||||
|
|||||||
@@ -223,8 +223,6 @@
|
|||||||
<string name="socket_status_offline">Offline</string>
|
<string name="socket_status_offline">Offline</string>
|
||||||
<string name="socket_status_unknown">Unknown</string>
|
<string name="socket_status_unknown">Unknown</string>
|
||||||
<string name="socket_action_toggle">Toggle Power</string>
|
<string name="socket_action_toggle">Toggle Power</string>
|
||||||
<string name="socket_action_turn_on">Turn ON</string>
|
|
||||||
<string name="socket_action_turn_off">Turn OFF</string>
|
|
||||||
<string name="socket_operating_label">Updating socket state…</string>
|
<string name="socket_operating_label">Updating socket state…</string>
|
||||||
<string name="socket_confirmed_at">Confirmed at %1$s</string>
|
<string name="socket_confirmed_at">Confirmed at %1$s</string>
|
||||||
|
|
||||||
@@ -361,7 +359,6 @@
|
|||||||
<string name="gateway_device_name_socket_desc">Used to match and control the gateway device. It must exactly match the gateway name.</string>
|
<string name="gateway_device_name_socket_desc">Used to match and control the gateway device. It must exactly match the gateway name.</string>
|
||||||
<string name="gateway_device_name_sensor_desc">Used to match and read the gateway device. It must exactly match the gateway name.</string>
|
<string name="gateway_device_name_sensor_desc">Used to match and read the gateway device. It must exactly match the gateway name.</string>
|
||||||
<string name="action_save_device_name">Save device name</string>
|
<string name="action_save_device_name">Save device name</string>
|
||||||
<string name="socket_direct_control">Direct control</string>
|
|
||||||
<string name="socket_confirmation_hint">A command is confirmed only after the gateway reports the resulting state. Refresh while confirmation is pending.</string>
|
<string name="socket_confirmation_hint">A command is confirmed only after the gateway reports the resulting state. Refresh while confirmation is pending.</string>
|
||||||
<string name="sensor_current_readings">Current readings</string>
|
<string name="sensor_current_readings">Current readings</string>
|
||||||
<string name="sensor_monitoring_title">Live environment monitoring</string>
|
<string name="sensor_monitoring_title">Live environment monitoring</string>
|
||||||
|
|||||||
+6
-6
@@ -99,14 +99,14 @@ class RoomSceneRepository(
|
|||||||
|
|
||||||
private fun defaultScenes(profileId: ProviderProfileId): List<Scene> = listOf(
|
private fun defaultScenes(profileId: ProviderProfileId): List<Scene> = listOf(
|
||||||
Scene(
|
Scene(
|
||||||
SceneId("${profileId.value}:scene-arriving-home"), profileId, "回家模式", "开启 Zigbee 插座控制器",
|
SceneId("${profileId.value}:scene-arriving-home"), profileId, "回家模式", "开启智能插座",
|
||||||
AutomationType.MANUAL, true, SceneIcon.HOME, SceneColor("#4CAF50"),
|
AutomationType.MANUAL, true, SceneIcon.HOME, SceneColor("#4CAF50"),
|
||||||
actions = listOf(SceneAction.SocketPower(SceneActionId("${profileId.value}:arrive:socket"), profileId, DeviceName("Zigbee插座控制器"), SocketPowerState.ON)),
|
actions = listOf(SceneAction.SocketPower(SceneActionId("${profileId.value}:arrive:socket"), profileId, DeviceName("智能插座"), SocketPowerState.ON)),
|
||||||
),
|
),
|
||||||
Scene(
|
Scene(
|
||||||
SceneId("${profileId.value}:scene-leaving-home"), profileId, "离家模式", "关闭 Zigbee 插座控制器",
|
SceneId("${profileId.value}:scene-leaving-home"), profileId, "离家模式", "关闭智能插座",
|
||||||
AutomationType.MANUAL, true, SceneIcon.AWAY, SceneColor("#FF8A65"),
|
AutomationType.MANUAL, true, SceneIcon.AWAY, SceneColor("#FF8A65"),
|
||||||
actions = listOf(SceneAction.SocketPower(SceneActionId("${profileId.value}:leave:socket"), profileId, DeviceName("Zigbee插座控制器"), SocketPowerState.OFF)),
|
actions = listOf(SceneAction.SocketPower(SceneActionId("${profileId.value}:leave:socket"), profileId, DeviceName("智能插座"), SocketPowerState.OFF)),
|
||||||
),
|
),
|
||||||
Scene(
|
Scene(
|
||||||
SceneId("${profileId.value}:scene-temperature-alert"), profileId, "高温提醒", "室温高于 28°C 时发送提醒",
|
SceneId("${profileId.value}:scene-temperature-alert"), profileId, "高温提醒", "室温高于 28°C 时发送提醒",
|
||||||
@@ -118,8 +118,8 @@ class RoomSceneRepository(
|
|||||||
SceneId("${profileId.value}:scene-cooling-auto"), profileId, "高温自动降温", "当室温高于 28°C 时开启插座",
|
SceneId("${profileId.value}:scene-cooling-auto"), profileId, "高温自动降温", "当室温高于 28°C 时开启插座",
|
||||||
AutomationType.AUTOMATIC, true, SceneIcon.THERMOSTAT, SceneColor("#26A69A"),
|
AutomationType.AUTOMATIC, true, SceneIcon.THERMOSTAT, SceneColor("#26A69A"),
|
||||||
triggers = listOf(SceneTrigger.Temperature(SceneTriggerId("${profileId.value}:cooling-temp"), DeviceName("温湿度传感器"), ComparisonOperator.GREATER_THAN, 28.0, "温度高于 28°C")),
|
triggers = listOf(SceneTrigger.Temperature(SceneTriggerId("${profileId.value}:cooling-temp"), DeviceName("温湿度传感器"), ComparisonOperator.GREATER_THAN, 28.0, "温度高于 28°C")),
|
||||||
conditions = listOf(SceneCondition.SocketPower(SceneConditionId("${profileId.value}:cooling-socket"), DeviceName("Zigbee插座控制器"), SocketPowerState.OFF)),
|
conditions = listOf(SceneCondition.SocketPower(SceneConditionId("${profileId.value}:cooling-socket"), DeviceName("智能插座"), SocketPowerState.OFF)),
|
||||||
actions = listOf(SceneAction.SocketPower(SceneActionId("${profileId.value}:cooling:on"), profileId, DeviceName("Zigbee插座控制器"), SocketPowerState.ON)),
|
actions = listOf(SceneAction.SocketPower(SceneActionId("${profileId.value}:cooling:on"), profileId, DeviceName("智能插座"), SocketPowerState.ON)),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class InMemorySceneRepository : SceneRepository {
|
|||||||
id = SceneId("${profileId.value}:scene-arriving-home"),
|
id = SceneId("${profileId.value}:scene-arriving-home"),
|
||||||
profileId = profileId,
|
profileId = profileId,
|
||||||
name = "回家模式",
|
name = "回家模式",
|
||||||
description = "开启 Zigbee 插座控制器",
|
description = "开启智能插座",
|
||||||
type = AutomationType.MANUAL,
|
type = AutomationType.MANUAL,
|
||||||
enabled = true,
|
enabled = true,
|
||||||
icon = SceneIcon.HOME,
|
icon = SceneIcon.HOME,
|
||||||
@@ -120,7 +120,7 @@ class InMemorySceneRepository : SceneRepository {
|
|||||||
SceneAction.SocketPower(
|
SceneAction.SocketPower(
|
||||||
id = SceneActionId("${profileId.value}:scene-arriving-home:socket-1"),
|
id = SceneActionId("${profileId.value}:scene-arriving-home:socket-1"),
|
||||||
profileId = profileId,
|
profileId = profileId,
|
||||||
deviceName = DeviceName("Zigbee插座控制器"),
|
deviceName = DeviceName("智能插座"),
|
||||||
powerState = SocketPowerState.ON,
|
powerState = SocketPowerState.ON,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -129,7 +129,7 @@ class InMemorySceneRepository : SceneRepository {
|
|||||||
id = SceneId("${profileId.value}:scene-leaving-home"),
|
id = SceneId("${profileId.value}:scene-leaving-home"),
|
||||||
profileId = profileId,
|
profileId = profileId,
|
||||||
name = "离家模式",
|
name = "离家模式",
|
||||||
description = "关闭 Zigbee 插座控制器",
|
description = "关闭智能插座",
|
||||||
type = AutomationType.MANUAL,
|
type = AutomationType.MANUAL,
|
||||||
enabled = true,
|
enabled = true,
|
||||||
icon = SceneIcon.AWAY,
|
icon = SceneIcon.AWAY,
|
||||||
@@ -138,7 +138,7 @@ class InMemorySceneRepository : SceneRepository {
|
|||||||
SceneAction.SocketPower(
|
SceneAction.SocketPower(
|
||||||
id = SceneActionId("${profileId.value}:scene-leaving-home:socket-1"),
|
id = SceneActionId("${profileId.value}:scene-leaving-home:socket-1"),
|
||||||
profileId = profileId,
|
profileId = profileId,
|
||||||
deviceName = DeviceName("Zigbee插座控制器"),
|
deviceName = DeviceName("智能插座"),
|
||||||
powerState = SocketPowerState.OFF,
|
powerState = SocketPowerState.OFF,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -191,7 +191,7 @@ class InMemorySceneRepository : SceneRepository {
|
|||||||
conditions = listOf(
|
conditions = listOf(
|
||||||
SceneCondition.SocketPower(
|
SceneCondition.SocketPower(
|
||||||
id = SceneConditionId("${profileId.value}:cond-cooling-socket"),
|
id = SceneConditionId("${profileId.value}:cond-cooling-socket"),
|
||||||
deviceName = DeviceName("Zigbee插座控制器"),
|
deviceName = DeviceName("智能插座"),
|
||||||
expectedState = SocketPowerState.OFF,
|
expectedState = SocketPowerState.OFF,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -199,7 +199,7 @@ class InMemorySceneRepository : SceneRepository {
|
|||||||
SceneAction.SocketPower(
|
SceneAction.SocketPower(
|
||||||
id = SceneActionId("${profileId.value}:scene-cooling:socket-1"),
|
id = SceneActionId("${profileId.value}:scene-cooling:socket-1"),
|
||||||
profileId = profileId,
|
profileId = profileId,
|
||||||
deviceName = DeviceName("Zigbee插座控制器"),
|
deviceName = DeviceName("智能插座"),
|
||||||
powerState = SocketPowerState.ON,
|
powerState = SocketPowerState.ON,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
+2
-2
@@ -29,9 +29,9 @@ class SimulationDeviceCatalog : DeviceCatalog {
|
|||||||
|
|
||||||
private fun defaultDevices(profileId: ProviderProfileId): List<DeviceDescriptor> = listOf(
|
private fun defaultDevices(profileId: ProviderProfileId): List<DeviceDescriptor> = listOf(
|
||||||
DeviceDescriptor(
|
DeviceDescriptor(
|
||||||
id = DeviceId("${profileId.value}:Zigbee插座控制器"),
|
id = DeviceId("${profileId.value}:智能插座"),
|
||||||
profileId = profileId,
|
profileId = profileId,
|
||||||
name = DeviceName("Zigbee插座控制器"),
|
name = DeviceName("智能插座"),
|
||||||
type = DeviceType.SOCKET,
|
type = DeviceType.SOCKET,
|
||||||
),
|
),
|
||||||
DeviceDescriptor(
|
DeviceDescriptor(
|
||||||
|
|||||||
Reference in New Issue
Block a user