Tweak Dremel 3D Printer sensors (#94552)

This commit is contained in:
Robert Hillis 2023-06-26 16:39:10 -04:00 committed by GitHub
parent 4efe217d9b
commit c6775920f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 22 deletions

View File

@ -56,11 +56,11 @@ SENSOR_TYPES: tuple[Dremel3DPrinterSensorEntityDescription, ...] = (
),
Dremel3DPrinterSensorEntityDescription(
key="remaining_time",
translation_key="remaining_time",
translation_key="completion_time",
device_class=SensorDeviceClass.TIMESTAMP,
available_fn=lambda api, key: api.get_job_status()[key] > 0,
value_fn=ignore_variance(
lambda api, key: utcnow() - timedelta(seconds=api.get_job_status()[key]),
lambda api, key: utcnow() + timedelta(seconds=api.get_job_status()[key]),
timedelta(minutes=2),
),
),
@ -170,26 +170,22 @@ SENSOR_TYPES: tuple[Dremel3DPrinterSensorEntityDescription, ...] = (
Dremel3DPrinterSensorEntityDescription(
key="elapsed_time",
translation_key="elapsed_time",
device_class=SensorDeviceClass.TIMESTAMP,
native_unit_of_measurement=UnitOfTime.SECONDS,
device_class=SensorDeviceClass.DURATION,
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
available_fn=lambda api, _: api.get_printing_status() == "building",
value_fn=ignore_variance(
lambda api, key: utcnow() - timedelta(seconds=api.get_job_status()[key]),
timedelta(minutes=2),
),
value_fn=lambda api, key: api.get_job_status()[key],
),
Dremel3DPrinterSensorEntityDescription(
key="estimated_total_time",
translation_key="estimated_total_time",
device_class=SensorDeviceClass.TIMESTAMP,
native_unit_of_measurement=UnitOfTime.SECONDS,
device_class=SensorDeviceClass.DURATION,
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
available_fn=lambda api, key: api.get_job_status()[key] > 0,
value_fn=ignore_variance(
lambda api, key: utcnow() - timedelta(seconds=api.get_job_status()[key]),
timedelta(minutes=2),
),
value_fn=lambda api, key: api.get_job_status()[key],
),
Dremel3DPrinterSensorEntityDescription(
key="job_status",
@ -245,7 +241,6 @@ SENSOR_TYPES: tuple[Dremel3DPrinterSensorEntityDescription, ...] = (
translation_key="hours_used",
icon="mdi:clock",
native_unit_of_measurement=UnitOfTime.HOURS,
device_class=SensorDeviceClass.DURATION,
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
value_fn=lambda api, key: api.get_printer_info()[key],

View File

@ -20,8 +20,8 @@
"job_phase": {
"name": "Job phase"
},
"remaining_time": {
"name": "Remaining time"
"completion_time": {
"name": "Completion time"
},
"progress": {
"name": "Progress"

View File

@ -38,8 +38,8 @@ async def test_sensors(
assert await async_setup_component(hass, DOMAIN, {})
state = hass.states.get("sensor.dremel_3d45_job_phase")
assert state.state == "building"
state = hass.states.get("sensor.dremel_3d45_remaining_time")
assert state.state == "2023-05-31T12:27:44+00:00"
state = hass.states.get("sensor.dremel_3d45_completion_time")
assert state.state == "2023-05-31T14:32:16+00:00"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.TIMESTAMP
state = hass.states.get("sensor.dremel_3d45_progress")
assert state.state == "13.9"
@ -85,11 +85,13 @@ async def test_sensors(
state = hass.states.get("sensor.dremel_3d45_filament")
assert state.state == "ECO-ABS"
state = hass.states.get("sensor.dremel_3d45_elapsed_time")
assert state.state == "2023-05-31T13:30:00+00:00"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.TIMESTAMP
assert state.state == "0"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.DURATION
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == UnitOfTime.SECONDS
state = hass.states.get("sensor.dremel_3d45_estimated_total_time")
assert state.state == "2023-05-31T12:17:40+00:00"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.TIMESTAMP
assert state.state == "4340"
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.DURATION
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == UnitOfTime.SECONDS
state = hass.states.get("sensor.dremel_3d45_job_status")
assert state.state == "building"
state = hass.states.get("sensor.dremel_3d45_job_name")
@ -107,4 +109,3 @@ async def test_sensors(
state = hass.states.get("sensor.dremel_3d45_hours_used")
assert state.state == "7"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) is UnitOfTime.HOURS
assert state.attributes.get(ATTR_DEVICE_CLASS) == SensorDeviceClass.DURATION