Dashboard Studio 1.5.0: conditional widgets, appliance card, multi-player media
- Visibility conditions on every widget (is / is not / above / below, all or any); rows that only held hidden widgets close up in view mode - Appliance card for washer, dryer and dishwasher: status or power based, time left, ready time, progress and program; hides when off - Media card controls several players with a switcher and album art - Dutch translations and docs for the new features Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -60,7 +60,16 @@ class MockHA:
|
||||
entity("climate.thermostat", "heat", friendly_name="Thermostat", current_temperature=20.5, temperature=21, min_temp=7, max_temp=30, hvac_modes=["off", "heat", "auto"]),
|
||||
entity("cover.garage_door", "closed", friendly_name="Garage Door"),
|
||||
entity("lock.front_door", "locked", friendly_name="Front Door Lock"),
|
||||
entity("media_player.living_room_speaker", "playing", friendly_name="Living Room Speaker", media_title="Blue in Green", media_artist="Miles Davis", volume_level=0.35),
|
||||
entity("media_player.living_room_speaker", "playing", friendly_name="Living Room Speaker", media_title="Blue in Green", media_artist="Miles Davis", media_album_name="Kind of Blue", volume_level=0.35, entity_picture="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0' stop-color='%23234'/><stop offset='1' stop-color='%23c58'/></linearGradient></defs><rect width='100' height='100' fill='url(%23g)'/><circle cx='50' cy='50' r='22' fill='none' stroke='%23fff' stroke-width='3' opacity='.7'/></svg>"),
|
||||
entity("media_player.kitchen_speaker", "paused", friendly_name="Kitchen Speaker", media_title="Bohemian Rhapsody", media_artist="Queen", volume_level=0.2),
|
||||
entity("media_player.tv", "off", friendly_name="TV"),
|
||||
entity("sensor.washer_status", "running", friendly_name="Washer Status"),
|
||||
entity("sensor.washer_remaining_time", "42", friendly_name="Washer Remaining Time", unit_of_measurement="min", device_class="duration"),
|
||||
entity("sensor.washer_progress", "64", friendly_name="Washer Progress", unit_of_measurement="%"),
|
||||
entity("sensor.washer_program", "cotton_40", friendly_name="Washer Program"),
|
||||
entity("sensor.washer_power", "450", friendly_name="Washer Power", unit_of_measurement="W", device_class="power"),
|
||||
entity("sensor.dryer_status", "off", friendly_name="Dryer Status"),
|
||||
entity("sensor.dryer_remaining_time", "0", friendly_name="Dryer Remaining Time", unit_of_measurement="min", device_class="duration"),
|
||||
entity("scene.movie_night", "2026-10-24T20:00:00+00:00", friendly_name="Movie Night"),
|
||||
entity("script.good_morning", "off", friendly_name="Good Morning"),
|
||||
entity("weather.home", "partlycloudy", friendly_name="Home", temperature=13, humidity=71, wind_speed=14),
|
||||
@@ -215,6 +224,13 @@ class MockHA:
|
||||
lvl = float(self.states["sensor.model_y_battery"]["state"])
|
||||
if lvl < 80:
|
||||
self.set_state("sensor.model_y_battery", f"{lvl + 0.2:.1f}")
|
||||
if self.states["sensor.washer_status"]["state"] == "running":
|
||||
left = max(0, int(self.states["sensor.washer_remaining_time"]["state"]) - 1)
|
||||
self.set_state("sensor.washer_remaining_time", str(left))
|
||||
self.set_state("sensor.washer_progress", str(min(100, 100 - round(left * 36 / 42))))
|
||||
if left == 0:
|
||||
self.set_state("sensor.washer_status", "finished")
|
||||
self.set_state("sensor.washer_power", "1")
|
||||
if random.random() < 0.15:
|
||||
eid = "binary_sensor.hallway_motion"
|
||||
self.set_state(eid, "off" if self.states[eid]["state"] == "on" else "on")
|
||||
|
||||
Reference in New Issue
Block a user