mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Add additional mower to Husqvarna Autmower tests (#126313)
This commit is contained in:
parent
42f8d9d10f
commit
7a9da6dde1
@ -6,7 +6,7 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"system": {
|
"system": {
|
||||||
"name": "Test Mower 1",
|
"name": "Test Mower 1",
|
||||||
"model": "450XH-TEST",
|
"model": "HUSQVARNA AUTOMOWER® 450XH",
|
||||||
"serialNumber": 123
|
"serialNumber": 123
|
||||||
},
|
},
|
||||||
"battery": {
|
"battery": {
|
||||||
@ -78,17 +78,6 @@
|
|||||||
"saturday": true,
|
"saturday": true,
|
||||||
"sunday": false,
|
"sunday": false,
|
||||||
"workAreaId": 654321
|
"workAreaId": 654321
|
||||||
},
|
|
||||||
{
|
|
||||||
"start": 120,
|
|
||||||
"duration": 480,
|
|
||||||
"monday": true,
|
|
||||||
"tuesday": false,
|
|
||||||
"wednesday": false,
|
|
||||||
"thursday": true,
|
|
||||||
"friday": false,
|
|
||||||
"saturday": true,
|
|
||||||
"sunday": false
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -219,6 +208,69 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "mower",
|
||||||
|
"id": "1234",
|
||||||
|
"attributes": {
|
||||||
|
"system": {
|
||||||
|
"name": "Test Mower 2",
|
||||||
|
"model": "HUSQVARNA AUTOMOWER® Aspire R4",
|
||||||
|
"serialNumber": 123
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"batteryPercent": 50
|
||||||
|
},
|
||||||
|
"capabilities": {
|
||||||
|
"canConfirmError": false,
|
||||||
|
"headlights": false,
|
||||||
|
"position": false,
|
||||||
|
"stayOutZones": false,
|
||||||
|
"workAreas": false
|
||||||
|
},
|
||||||
|
"mower": {
|
||||||
|
"mode": "MAIN_AREA",
|
||||||
|
"activity": "PARKED_IN_CS",
|
||||||
|
"inactiveReason": "NONE",
|
||||||
|
"state": "RESTRICTED",
|
||||||
|
"errorCode": 0,
|
||||||
|
"errorCodeTimestamp": 0
|
||||||
|
},
|
||||||
|
"calendar": {
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"start": 120,
|
||||||
|
"duration": 49,
|
||||||
|
"monday": true,
|
||||||
|
"tuesday": false,
|
||||||
|
"wednesday": false,
|
||||||
|
"thursday": false,
|
||||||
|
"friday": false,
|
||||||
|
"saturday": false,
|
||||||
|
"sunday": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"planner": {
|
||||||
|
"nextStartTimestamp": 1685991600000,
|
||||||
|
"override": {
|
||||||
|
"action": "NOT_ACTIVE"
|
||||||
|
},
|
||||||
|
"restrictedReason": "WEEK_SCHEDULE"
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"connected": true,
|
||||||
|
"statusTimestamp": 1697669932683
|
||||||
|
},
|
||||||
|
"positions": [],
|
||||||
|
"settings": {
|
||||||
|
"cuttingHeight": null,
|
||||||
|
"headlight": {
|
||||||
|
"mode": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"statistics": {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -138,3 +138,142 @@
|
|||||||
'state': 'off',
|
'state': 'off',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
# name: test_binary_sensor_snapshot[binary_sensor.test_mower_2_charging-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'binary_sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'binary_sensor.test_mower_2_charging',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <BinarySensorDeviceClass.BATTERY_CHARGING: 'battery_charging'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Charging',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': None,
|
||||||
|
'unique_id': '1234_battery_charging',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_snapshot[binary_sensor.test_mower_2_charging-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'battery_charging',
|
||||||
|
'friendly_name': 'Test Mower 2 Charging',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.test_mower_2_charging',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'off',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_snapshot[binary_sensor.test_mower_2_leaving_dock-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'binary_sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'binary_sensor.test_mower_2_leaving_dock',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': None,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Leaving dock',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'leaving_dock',
|
||||||
|
'unique_id': '1234_leaving_dock',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_snapshot[binary_sensor.test_mower_2_leaving_dock-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'friendly_name': 'Test Mower 2 Leaving dock',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.test_mower_2_leaving_dock',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'off',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_snapshot[binary_sensor.test_mower_2_returning_to_dock-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'binary_sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'binary_sensor.test_mower_2_returning_to_dock',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': None,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Returning to dock',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'returning_to_dock',
|
||||||
|
'unique_id': '1234_returning_to_dock',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_snapshot[binary_sensor.test_mower_2_returning_to_dock-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'friendly_name': 'Test Mower 2 Returning to dock',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.test_mower_2_returning_to_dock',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'off',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
@ -91,3 +91,49 @@
|
|||||||
'state': 'unknown',
|
'state': 'unknown',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
# name: test_button_snapshot[button.test_mower_2_sync_clock-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'button',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'button.test_mower_2_sync_clock',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': None,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Sync clock',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'sync_clock',
|
||||||
|
'unique_id': '1234_sync_clock',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_button_snapshot[button.test_mower_2_sync_clock-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'friendly_name': 'Test Mower 2 Sync clock',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'button.test_mower_2_sync_clock',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'unknown',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
@ -8,11 +8,6 @@
|
|||||||
'start': '2023-06-05T01:00:00+02:00',
|
'start': '2023-06-05T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
|
||||||
'end': '2023-06-05T10:00:00+02:00',
|
|
||||||
'start': '2023-06-05T02:00:00+02:00',
|
|
||||||
'summary': 'Schedule 1',
|
|
||||||
}),
|
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-06T00:00:00+02:00',
|
'end': '2023-06-06T00:00:00+02:00',
|
||||||
'start': '2023-06-05T19:00:00+02:00',
|
'start': '2023-06-05T19:00:00+02:00',
|
||||||
@ -53,11 +48,6 @@
|
|||||||
'start': '2023-06-08T01:00:00+02:00',
|
'start': '2023-06-08T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
|
||||||
'end': '2023-06-08T10:00:00+02:00',
|
|
||||||
'start': '2023-06-08T02:00:00+02:00',
|
|
||||||
'summary': 'Schedule 1',
|
|
||||||
}),
|
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T00:00:00+02:00',
|
'end': '2023-06-10T00:00:00+02:00',
|
||||||
'start': '2023-06-09T19:00:00+02:00',
|
'start': '2023-06-09T19:00:00+02:00',
|
||||||
@ -66,21 +56,25 @@
|
|||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T08:00:00+02:00',
|
'end': '2023-06-10T08:00:00+02:00',
|
||||||
'start': '2023-06-10T00:00:00+02:00',
|
'start': '2023-06-10T00:00:00+02:00',
|
||||||
'summary': 'Front lawn schedule 2',
|
'summary': 'Back lawn schedule 1',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T08:00:00+02:00',
|
'end': '2023-06-10T08:00:00+02:00',
|
||||||
'start': '2023-06-10T00:00:00+02:00',
|
'start': '2023-06-10T00:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 1',
|
'summary': 'Front lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T09:00:00+02:00',
|
'end': '2023-06-10T09:00:00+02:00',
|
||||||
'start': '2023-06-10T01:00:00+02:00',
|
'start': '2023-06-10T01:00:00+02:00',
|
||||||
'summary': 'Back lawn schedule 2',
|
'summary': 'Back lawn schedule 2',
|
||||||
}),
|
}),
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'calendar.test_mower_2': dict({
|
||||||
|
'events': list([
|
||||||
dict({
|
dict({
|
||||||
'end': '2023-06-10T10:00:00+02:00',
|
'end': '2023-06-05T02:49:00+02:00',
|
||||||
'start': '2023-06-10T02:00:00+02:00',
|
'start': '2023-06-05T02:00:00+02:00',
|
||||||
'summary': 'Schedule 1',
|
'summary': 'Schedule 1',
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
|
@ -58,19 +58,6 @@
|
|||||||
'work_area_id': 654321,
|
'work_area_id': 654321,
|
||||||
'work_area_name': 'Back lawn',
|
'work_area_name': 'Back lawn',
|
||||||
}),
|
}),
|
||||||
dict({
|
|
||||||
'duration': 480,
|
|
||||||
'friday': False,
|
|
||||||
'monday': True,
|
|
||||||
'saturday': True,
|
|
||||||
'start': 120,
|
|
||||||
'sunday': False,
|
|
||||||
'thursday': True,
|
|
||||||
'tuesday': False,
|
|
||||||
'wednesday': False,
|
|
||||||
'work_area_id': None,
|
|
||||||
'work_area_name': None,
|
|
||||||
}),
|
|
||||||
]),
|
]),
|
||||||
}),
|
}),
|
||||||
'capabilities': dict({
|
'capabilities': dict({
|
||||||
@ -136,7 +123,7 @@
|
|||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
'system': dict({
|
'system': dict({
|
||||||
'model': '450XH-TEST',
|
'model': 'HUSQVARNA AUTOMOWER® 450XH',
|
||||||
'name': 'Test Mower 1',
|
'name': 'Test Mower 1',
|
||||||
'serial_number': 123,
|
'serial_number': 123,
|
||||||
}),
|
}),
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
'labels': set({
|
'labels': set({
|
||||||
}),
|
}),
|
||||||
'manufacturer': 'Husqvarna',
|
'manufacturer': 'Husqvarna',
|
||||||
'model': '450XH-TEST',
|
'model': 'HUSQVARNA AUTOMOWER® 450XH',
|
||||||
'model_id': None,
|
'model_id': None,
|
||||||
'name': 'Test Mower 1',
|
'name': 'Test Mower 1',
|
||||||
'name_by_user': None,
|
'name_by_user': None,
|
||||||
|
@ -1056,3 +1056,573 @@
|
|||||||
'state': 'Front lawn',
|
'state': 'Front lawn',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_battery-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': dict({
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||||
|
}),
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.test_mower_2_battery',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.BATTERY: 'battery'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Battery',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': None,
|
||||||
|
'unique_id': '1234_battery_percent',
|
||||||
|
'unit_of_measurement': '%',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_battery-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'battery',
|
||||||
|
'friendly_name': 'Test Mower 2 Battery',
|
||||||
|
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||||
|
'unit_of_measurement': '%',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.test_mower_2_battery',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': '50',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_error-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': dict({
|
||||||
|
'options': list([
|
||||||
|
'no_error',
|
||||||
|
'alarm_mower_in_motion',
|
||||||
|
'alarm_mower_lifted',
|
||||||
|
'alarm_mower_stopped',
|
||||||
|
'alarm_mower_switched_off',
|
||||||
|
'alarm_mower_tilted',
|
||||||
|
'alarm_outside_geofence',
|
||||||
|
'angular_sensor_problem',
|
||||||
|
'battery_problem',
|
||||||
|
'battery_problem',
|
||||||
|
'battery_restriction_due_to_ambient_temperature',
|
||||||
|
'can_error',
|
||||||
|
'charging_current_too_high',
|
||||||
|
'charging_station_blocked',
|
||||||
|
'charging_system_problem',
|
||||||
|
'charging_system_problem',
|
||||||
|
'collision_sensor_defect',
|
||||||
|
'collision_sensor_error',
|
||||||
|
'collision_sensor_problem_front',
|
||||||
|
'collision_sensor_problem_rear',
|
||||||
|
'com_board_not_available',
|
||||||
|
'communication_circuit_board_sw_must_be_updated',
|
||||||
|
'complex_working_area',
|
||||||
|
'connection_changed',
|
||||||
|
'connection_not_changed',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_settings_restored',
|
||||||
|
'cutting_drive_motor_1_defect',
|
||||||
|
'cutting_drive_motor_2_defect',
|
||||||
|
'cutting_drive_motor_3_defect',
|
||||||
|
'cutting_height_blocked',
|
||||||
|
'cutting_height_problem',
|
||||||
|
'cutting_height_problem_curr',
|
||||||
|
'cutting_height_problem_dir',
|
||||||
|
'cutting_height_problem_drive',
|
||||||
|
'cutting_motor_problem',
|
||||||
|
'cutting_stopped_slope_too_steep',
|
||||||
|
'cutting_system_blocked',
|
||||||
|
'cutting_system_blocked',
|
||||||
|
'cutting_system_imbalance_warning',
|
||||||
|
'cutting_system_major_imbalance',
|
||||||
|
'destination_not_reachable',
|
||||||
|
'difficult_finding_home',
|
||||||
|
'docking_sensor_defect',
|
||||||
|
'electronic_problem',
|
||||||
|
'empty_battery',
|
||||||
|
'folding_cutting_deck_sensor_defect',
|
||||||
|
'folding_sensor_activated',
|
||||||
|
'geofence_problem',
|
||||||
|
'geofence_problem',
|
||||||
|
'gps_navigation_problem',
|
||||||
|
'guide_1_not_found',
|
||||||
|
'guide_2_not_found',
|
||||||
|
'guide_3_not_found',
|
||||||
|
'guide_calibration_accomplished',
|
||||||
|
'guide_calibration_failed',
|
||||||
|
'high_charging_power_loss',
|
||||||
|
'high_internal_power_loss',
|
||||||
|
'high_internal_temperature',
|
||||||
|
'internal_voltage_error',
|
||||||
|
'invalid_battery_combination_invalid_combination_of_different_battery_types',
|
||||||
|
'invalid_sub_device_combination',
|
||||||
|
'invalid_system_configuration',
|
||||||
|
'left_brush_motor_overloaded',
|
||||||
|
'lift_sensor_defect',
|
||||||
|
'lifted',
|
||||||
|
'limited_cutting_height_range',
|
||||||
|
'limited_cutting_height_range',
|
||||||
|
'loop_sensor_defect',
|
||||||
|
'loop_sensor_problem_front',
|
||||||
|
'loop_sensor_problem_left',
|
||||||
|
'loop_sensor_problem_rear',
|
||||||
|
'loop_sensor_problem_right',
|
||||||
|
'low_battery',
|
||||||
|
'memory_circuit_problem',
|
||||||
|
'mower_lifted',
|
||||||
|
'mower_tilted',
|
||||||
|
'no_accurate_position_from_satellites',
|
||||||
|
'no_confirmed_position',
|
||||||
|
'no_drive',
|
||||||
|
'no_loop_signal',
|
||||||
|
'no_power_in_charging_station',
|
||||||
|
'no_response_from_charger',
|
||||||
|
'outside_working_area',
|
||||||
|
'poor_signal_quality',
|
||||||
|
'reference_station_communication_problem',
|
||||||
|
'right_brush_motor_overloaded',
|
||||||
|
'safety_function_faulty',
|
||||||
|
'settings_restored',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_not_found',
|
||||||
|
'sim_card_requires_pin',
|
||||||
|
'slipped_mower_has_slipped_situation_not_solved_with_moving_pattern',
|
||||||
|
'slope_too_steep',
|
||||||
|
'sms_could_not_be_sent',
|
||||||
|
'stop_button_problem',
|
||||||
|
'stuck_in_charging_station',
|
||||||
|
'switch_cord_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'tilt_sensor_problem',
|
||||||
|
'too_high_discharge_current',
|
||||||
|
'too_high_internal_current',
|
||||||
|
'trapped',
|
||||||
|
'ultrasonic_problem',
|
||||||
|
'ultrasonic_sensor_1_defect',
|
||||||
|
'ultrasonic_sensor_2_defect',
|
||||||
|
'ultrasonic_sensor_3_defect',
|
||||||
|
'ultrasonic_sensor_4_defect',
|
||||||
|
'unexpected_cutting_height_adj',
|
||||||
|
'unexpected_error',
|
||||||
|
'upside_down',
|
||||||
|
'weak_gps_signal',
|
||||||
|
'wheel_drive_problem_left',
|
||||||
|
'wheel_drive_problem_rear_left',
|
||||||
|
'wheel_drive_problem_rear_right',
|
||||||
|
'wheel_drive_problem_right',
|
||||||
|
'wheel_motor_blocked_left',
|
||||||
|
'wheel_motor_blocked_rear_left',
|
||||||
|
'wheel_motor_blocked_rear_right',
|
||||||
|
'wheel_motor_blocked_right',
|
||||||
|
'wheel_motor_overloaded_left',
|
||||||
|
'wheel_motor_overloaded_rear_left',
|
||||||
|
'wheel_motor_overloaded_rear_right',
|
||||||
|
'wheel_motor_overloaded_right',
|
||||||
|
'work_area_not_valid',
|
||||||
|
'wrong_loop_signal',
|
||||||
|
'wrong_pin_code',
|
||||||
|
'zone_generator_problem',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.test_mower_2_error',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Error',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'error',
|
||||||
|
'unique_id': '1234_error',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_error-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'enum',
|
||||||
|
'friendly_name': 'Test Mower 2 Error',
|
||||||
|
'options': list([
|
||||||
|
'no_error',
|
||||||
|
'alarm_mower_in_motion',
|
||||||
|
'alarm_mower_lifted',
|
||||||
|
'alarm_mower_stopped',
|
||||||
|
'alarm_mower_switched_off',
|
||||||
|
'alarm_mower_tilted',
|
||||||
|
'alarm_outside_geofence',
|
||||||
|
'angular_sensor_problem',
|
||||||
|
'battery_problem',
|
||||||
|
'battery_problem',
|
||||||
|
'battery_restriction_due_to_ambient_temperature',
|
||||||
|
'can_error',
|
||||||
|
'charging_current_too_high',
|
||||||
|
'charging_station_blocked',
|
||||||
|
'charging_system_problem',
|
||||||
|
'charging_system_problem',
|
||||||
|
'collision_sensor_defect',
|
||||||
|
'collision_sensor_error',
|
||||||
|
'collision_sensor_problem_front',
|
||||||
|
'collision_sensor_problem_rear',
|
||||||
|
'com_board_not_available',
|
||||||
|
'communication_circuit_board_sw_must_be_updated',
|
||||||
|
'complex_working_area',
|
||||||
|
'connection_changed',
|
||||||
|
'connection_not_changed',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_problem',
|
||||||
|
'connectivity_settings_restored',
|
||||||
|
'cutting_drive_motor_1_defect',
|
||||||
|
'cutting_drive_motor_2_defect',
|
||||||
|
'cutting_drive_motor_3_defect',
|
||||||
|
'cutting_height_blocked',
|
||||||
|
'cutting_height_problem',
|
||||||
|
'cutting_height_problem_curr',
|
||||||
|
'cutting_height_problem_dir',
|
||||||
|
'cutting_height_problem_drive',
|
||||||
|
'cutting_motor_problem',
|
||||||
|
'cutting_stopped_slope_too_steep',
|
||||||
|
'cutting_system_blocked',
|
||||||
|
'cutting_system_blocked',
|
||||||
|
'cutting_system_imbalance_warning',
|
||||||
|
'cutting_system_major_imbalance',
|
||||||
|
'destination_not_reachable',
|
||||||
|
'difficult_finding_home',
|
||||||
|
'docking_sensor_defect',
|
||||||
|
'electronic_problem',
|
||||||
|
'empty_battery',
|
||||||
|
'folding_cutting_deck_sensor_defect',
|
||||||
|
'folding_sensor_activated',
|
||||||
|
'geofence_problem',
|
||||||
|
'geofence_problem',
|
||||||
|
'gps_navigation_problem',
|
||||||
|
'guide_1_not_found',
|
||||||
|
'guide_2_not_found',
|
||||||
|
'guide_3_not_found',
|
||||||
|
'guide_calibration_accomplished',
|
||||||
|
'guide_calibration_failed',
|
||||||
|
'high_charging_power_loss',
|
||||||
|
'high_internal_power_loss',
|
||||||
|
'high_internal_temperature',
|
||||||
|
'internal_voltage_error',
|
||||||
|
'invalid_battery_combination_invalid_combination_of_different_battery_types',
|
||||||
|
'invalid_sub_device_combination',
|
||||||
|
'invalid_system_configuration',
|
||||||
|
'left_brush_motor_overloaded',
|
||||||
|
'lift_sensor_defect',
|
||||||
|
'lifted',
|
||||||
|
'limited_cutting_height_range',
|
||||||
|
'limited_cutting_height_range',
|
||||||
|
'loop_sensor_defect',
|
||||||
|
'loop_sensor_problem_front',
|
||||||
|
'loop_sensor_problem_left',
|
||||||
|
'loop_sensor_problem_rear',
|
||||||
|
'loop_sensor_problem_right',
|
||||||
|
'low_battery',
|
||||||
|
'memory_circuit_problem',
|
||||||
|
'mower_lifted',
|
||||||
|
'mower_tilted',
|
||||||
|
'no_accurate_position_from_satellites',
|
||||||
|
'no_confirmed_position',
|
||||||
|
'no_drive',
|
||||||
|
'no_loop_signal',
|
||||||
|
'no_power_in_charging_station',
|
||||||
|
'no_response_from_charger',
|
||||||
|
'outside_working_area',
|
||||||
|
'poor_signal_quality',
|
||||||
|
'reference_station_communication_problem',
|
||||||
|
'right_brush_motor_overloaded',
|
||||||
|
'safety_function_faulty',
|
||||||
|
'settings_restored',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_locked',
|
||||||
|
'sim_card_not_found',
|
||||||
|
'sim_card_requires_pin',
|
||||||
|
'slipped_mower_has_slipped_situation_not_solved_with_moving_pattern',
|
||||||
|
'slope_too_steep',
|
||||||
|
'sms_could_not_be_sent',
|
||||||
|
'stop_button_problem',
|
||||||
|
'stuck_in_charging_station',
|
||||||
|
'switch_cord_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'temporary_battery_problem',
|
||||||
|
'tilt_sensor_problem',
|
||||||
|
'too_high_discharge_current',
|
||||||
|
'too_high_internal_current',
|
||||||
|
'trapped',
|
||||||
|
'ultrasonic_problem',
|
||||||
|
'ultrasonic_sensor_1_defect',
|
||||||
|
'ultrasonic_sensor_2_defect',
|
||||||
|
'ultrasonic_sensor_3_defect',
|
||||||
|
'ultrasonic_sensor_4_defect',
|
||||||
|
'unexpected_cutting_height_adj',
|
||||||
|
'unexpected_error',
|
||||||
|
'upside_down',
|
||||||
|
'weak_gps_signal',
|
||||||
|
'wheel_drive_problem_left',
|
||||||
|
'wheel_drive_problem_rear_left',
|
||||||
|
'wheel_drive_problem_rear_right',
|
||||||
|
'wheel_drive_problem_right',
|
||||||
|
'wheel_motor_blocked_left',
|
||||||
|
'wheel_motor_blocked_rear_left',
|
||||||
|
'wheel_motor_blocked_rear_right',
|
||||||
|
'wheel_motor_blocked_right',
|
||||||
|
'wheel_motor_overloaded_left',
|
||||||
|
'wheel_motor_overloaded_rear_left',
|
||||||
|
'wheel_motor_overloaded_rear_right',
|
||||||
|
'wheel_motor_overloaded_right',
|
||||||
|
'work_area_not_valid',
|
||||||
|
'wrong_loop_signal',
|
||||||
|
'wrong_pin_code',
|
||||||
|
'zone_generator_problem',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.test_mower_2_error',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'no_error',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_mode-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': dict({
|
||||||
|
'options': list([
|
||||||
|
'main_area',
|
||||||
|
'demo',
|
||||||
|
'secondary_area',
|
||||||
|
'home',
|
||||||
|
'unknown',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.test_mower_2_mode',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Mode',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'mode',
|
||||||
|
'unique_id': '1234_mode',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_mode-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'enum',
|
||||||
|
'friendly_name': 'Test Mower 2 Mode',
|
||||||
|
'options': list([
|
||||||
|
'main_area',
|
||||||
|
'demo',
|
||||||
|
'secondary_area',
|
||||||
|
'home',
|
||||||
|
'unknown',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.test_mower_2_mode',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'main_area',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_next_start-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.test_mower_2_next_start',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.TIMESTAMP: 'timestamp'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Next start',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'next_start_timestamp',
|
||||||
|
'unique_id': '1234_next_start_timestamp',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_next_start-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'timestamp',
|
||||||
|
'friendly_name': 'Test Mower 2 Next start',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.test_mower_2_next_start',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': '2023-06-05T17:00:00+00:00',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_restricted_reason-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': dict({
|
||||||
|
'options': list([
|
||||||
|
'all_work_areas_completed',
|
||||||
|
'daily_limit',
|
||||||
|
'external',
|
||||||
|
'fota',
|
||||||
|
'frost',
|
||||||
|
'none',
|
||||||
|
'not_applicable',
|
||||||
|
'park_override',
|
||||||
|
'sensor',
|
||||||
|
'week_schedule',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'sensor',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'sensor.test_mower_2_restricted_reason',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Restricted reason',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'restricted_reason',
|
||||||
|
'unique_id': '1234_restricted_reason',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_sensor_snapshot[sensor.test_mower_2_restricted_reason-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'enum',
|
||||||
|
'friendly_name': 'Test Mower 2 Restricted reason',
|
||||||
|
'options': list([
|
||||||
|
'all_work_areas_completed',
|
||||||
|
'daily_limit',
|
||||||
|
'external',
|
||||||
|
'fota',
|
||||||
|
'frost',
|
||||||
|
'none',
|
||||||
|
'not_applicable',
|
||||||
|
'park_override',
|
||||||
|
'sensor',
|
||||||
|
'week_schedule',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'sensor.test_mower_2_restricted_reason',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'week_schedule',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
@ -137,3 +137,49 @@
|
|||||||
'state': 'on',
|
'state': 'on',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
|
# name: test_switch_snapshot[switch.test_mower_2_enable_schedule-entry]
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': None,
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'switch',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'switch.test_mower_2_enable_schedule',
|
||||||
|
'has_entity_name': True,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': None,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'Enable schedule',
|
||||||
|
'platform': 'husqvarna_automower',
|
||||||
|
'previous_unique_id': None,
|
||||||
|
'supported_features': 0,
|
||||||
|
'translation_key': 'enable_schedule',
|
||||||
|
'unique_id': '1234_enable_schedule',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_switch_snapshot[switch.test_mower_2_enable_schedule-state]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'friendly_name': 'Test Mower 2 Enable schedule',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'switch.test_mower_2_enable_schedule',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_reported': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'on',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
@ -138,7 +138,7 @@ async def test_calendar_snapshot(
|
|||||||
CALENDAR_DOMAIN,
|
CALENDAR_DOMAIN,
|
||||||
SERVICE_GET_EVENTS,
|
SERVICE_GET_EVENTS,
|
||||||
{
|
{
|
||||||
ATTR_ENTITY_ID: "calendar.test_mower_1",
|
ATTR_ENTITY_ID: ["calendar.test_mower_1", "calendar.test_mower_2"],
|
||||||
EVENT_START_DATETIME: start_date,
|
EVENT_START_DATETIME: start_date,
|
||||||
EVENT_END_DATETIME: end_date,
|
EVENT_END_DATETIME: end_date,
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user