Dashboard Studio 2.4.0: litter box on the appliance card

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 13:48:15 +01:00
parent 095b23481e
commit 0b2027083a
8 changed files with 153 additions and 23 deletions
+13
View File
@@ -58,6 +58,14 @@ class MockHA:
entity("sensor.robot_vacuum_filter_left", "72", friendly_name="Robot Vacuum Filter left", unit_of_measurement="%"),
entity("sensor.robot_vacuum_main_brush_left", "41", friendly_name="Robot Vacuum Main brush left", unit_of_measurement="%"),
entity("sensor.robot_vacuum_side_brush_left", "9", friendly_name="Robot Vacuum Side brush left", unit_of_measurement="%"),
# a Tuya cat litter box (category msp), named as the Tuya integration names its entities
entity("sensor.zedar_k1200_status", "standby", friendly_name="ZEDAR K1200 Status", device_class="enum", options=["clean", "empty", "level", "sleep", "standby", "uv"]),
entity("sensor.zedar_k1200_cat_weight", "4.6", friendly_name="ZEDAR K1200 Cat weight", unit_of_measurement="kg", device_class="weight"),
entity("sensor.zedar_k1200_excretion_times_day", "3", friendly_name="ZEDAR K1200 Excretion times (day)"),
entity("sensor.zedar_k1200_excretion_duration", "7", friendly_name="ZEDAR K1200 Excretion duration", unit_of_measurement="min", device_class="duration"),
entity("button.zedar_k1200_manual_clean", "unknown", friendly_name="ZEDAR K1200 Manual clean"),
entity("button.zedar_k1200_factory_reset", "unknown", friendly_name="ZEDAR K1200 Factory reset"),
entity("switch.zedar_k1200_auto_clean", "on", friendly_name="ZEDAR K1200 Auto clean"),
entity("switch.coffee_machine", "off", friendly_name="Coffee Machine"),
entity("fan.office", "off", friendly_name="Office Fan"),
entity("sensor.living_room_temperature", "21.4", friendly_name="Living Room Temperature", unit_of_measurement="°C", device_class="temperature"),
@@ -326,6 +334,11 @@ class MockHA:
self.todo.remove(it)
self.set_state(eid, str(sum(1 for it in self.todo if it["status"] == "needs_action")))
continue
if eid == "button.zedar_k1200_manual_clean": # the litter box cleans for a little while
self.set_state("sensor.zedar_k1200_status", "clean")
asyncio.get_event_loop().call_later(8, lambda: self.set_state("sensor.zedar_k1200_status", "level"))
asyncio.get_event_loop().call_later(12, lambda: self.set_state("sensor.zedar_k1200_status", "standby"))
continue
if domain == "cover":
pos = self.states[eid]["attributes"].get("current_position")
if service == "set_cover_position":