Show bowling highlights on Kitchen Show

master
Carlo Costanzo 3 weeks ago
parent ef886e8099
commit 8e48e695dc

@ -68,7 +68,7 @@ The Camera tab keeps the doorbell and pool on the left, three exterior cameras a
- Kitchen tablet view: [![YAML source: 01_home](https://img.shields.io/static/v1?label=YAML&message=01_home&color=lightgrey&logo=github&logoColor=181717)](kiosk_satellite_staging/views/01_home.yaml)
- Automatic day/night theme: [![YAML source: kiosk_satellite](https://img.shields.io/static/v1?label=YAML&message=kiosk_satellite_theme&color=lightgrey&logo=github&logoColor=181717)](../themes/kiosk_satellite.yaml)
The displays share only the reusable event and screen-policy state they need. Kitchen keeps its clock/current-weather/forecast banner and rotating household context, including the next confirmed cruise countdown, while the fixed-landscape Bedroom dashboard omits the redundant clock and uses that space for the next wake alarm, security/weather context, larger Front Lawn and Driveway feeds, and a readable household alert. Both use the same Garage-then-Front-Door event priority, with Garage held for three minutes after both doors close before the default dashboard returns. The canonical Bedroom Lovelace view and its Android 5 lightweight renderer consume the same camera, header, and alert sensors; the renderer bypasses only the unsupported Home Assistant frontend on the frozen Fire WebView. Kitchen uses native Kiosk Satellite camera overlays and idle dimming; Home Assistant handles only household sleep/away enforcement, volume, and event-camera wake instead of periodically forcing the screen on. Nearby rain or lightning starts one five-minute NOAA radar takeover during daylight; afterward, the rotating Storms Approaching banner can replay the latest 20-minute radar loop while the weather event remains active. Actionable NWS, package, family-location, entry-point, Phyn, and low-hot-water slides open a shared short-lived detail surface; the family map centers only the person named by the tapped slide and shows that person's prior 24-hour trail, while a closed Phyn main valve can be restored only from its detail view after explicit confirmation. The ambient wall remains in place after sunset. True idle panel-off remains disabled until the Crown LineageOS device has a reliable motion-wake input. Its device schedule changes the Home Assistant theme between light at 07:00 and dark at 19:00. Other clients follow their own system preference.
The displays share only the reusable event and screen-policy state they need. Kitchen keeps its clock/current-weather/forecast banner and rotating household context, including the next confirmed cruise countdown and 48-hour Carlo/Stacey bowling-result highlights, while the fixed-landscape Bedroom dashboard omits the redundant clock and uses that space for the next wake alarm, security/weather context, larger Front Lawn and Driveway feeds, and a readable household alert. Both use the same Garage-then-Front-Door event priority, with Garage held for three minutes after both doors close before the default dashboard returns. The canonical Bedroom Lovelace view and its Android 5 lightweight renderer consume the same camera, header, and alert sensors; the renderer bypasses only the unsupported Home Assistant frontend on the frozen Fire WebView. Kitchen uses native Kiosk Satellite camera overlays and idle dimming; Home Assistant handles only household sleep/away enforcement, volume, and event-camera wake instead of periodically forcing the screen on. Nearby rain or lightning starts one five-minute NOAA radar takeover during daylight; afterward, the rotating Storms Approaching banner can replay the latest 20-minute radar loop while the weather event remains active. Actionable NWS, package, family-location, entry-point, Phyn, and low-hot-water slides open a shared short-lived detail surface; the family map centers only the person named by the tapped slide and shows that person's prior 24-hour trail, while a closed Phyn main valve can be restored only from its detail view after explicit confirmation. The ambient wall remains in place after sunset. True idle panel-off remains disabled until the Crown LineageOS device has a reliable motion-wake input. Its device schedule changes the Home Assistant theme between light at 07:00 and dark at 19:00. Other clients follow their own system preference.
Kitchen's native Kiosk Satellite overlays use the imported Home Assistant camera entities, with HLS preferred over WebRTC on the Fire/WebView-class Kitchen Show display.

@ -4,7 +4,7 @@
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# -------------------------------------------------------------------
# Kiosk Satellite Partial - Ambient kitchen display
# Enlarged camera feeds plus rotating household reminders, cruise countdown, and locations.
# Enlarged camera feeds plus rotating household reminders, bowling results, cruise countdown, and locations.
# -------------------------------------------------------------------
# Related Issue: 1890
# Related Issue: 1895
@ -17,6 +17,7 @@
# Notes: Actionable banner slides open one shared full-screen detail surface and return automatically to the ambient wall.
# Notes: Family detail centers only the selected person and includes the prior 24-hour trail; Phyn detail includes a confirmed main-valve restore action.
# Notes: Rheem problem telemetry adds a red/amber water-heater slide and enriches the existing hot-water detail.
# Notes: New LeagueSecretary results add Carlo and Stacey slides for 48 hours; other bowlers stay out of the kiosk payload.
# Notes: The large-format lower panel otherwise mirrors read-only household fact entities.
# Notes: The clock uses oversized time text and places live conditions beneath the current-weather icon.
######################################################################
@ -206,6 +207,7 @@
- input_datetime.tesla_model_y_last_garage_close
- input_datetime.tesla_model_y_plug_in_snooze_until
- sensor.next_booked_cruise_countdown
- sensor.bearclaw_status_telemetry
- person.carlo
- person.stacey
- person.justin
@ -529,6 +531,39 @@
});
}
const bowlingHighlights = states['sensor.bearclaw_status_telemetry']?.attributes?.bowlingHighlights;
if (bowlingHighlights?.active && Array.isArray(bowlingHighlights.items)) {
bowlingHighlights.items.forEach((highlight) => {
const expiresAt = new Date(highlight?.expiresAt || '');
const games = (Array.isArray(highlight?.games) ? highlight.games : [])
.map((score) => Number.parseInt(score, 10))
.filter(Number.isFinite);
const highGame = Number.parseInt(highlight?.highGame, 10);
const seriesTotal = Number.parseInt(highlight?.seriesTotal, 10);
if (!Number.isFinite(expiresAt.getTime()) || expiresAt <= now || !games.length || !Number.isFinite(highGame)) return;
const records = new Set(Array.isArray(highlight?.personalBestIds) ? highlight.personalBestIds : []);
const highGameRecord = records.has('bowling_high_game');
const highSeriesRecord = records.has('bowling_high_series') && Number.isFinite(seriesTotal);
const title = highGameRecord
? `${highlight.displayName}'s new high game: ${highGame}`
: (highSeriesRecord
? `${highlight.displayName}'s new high series: ${seriesTotal}`
: `${highlight.displayName}'s high game: ${highGame}`);
const detail = [
games.join(' / '),
Number.isFinite(seriesTotal) ? `${seriesTotal} series` : '',
Number.isFinite(Number(highlight?.weekNum)) ? `Week ${highlight.weekNum}` : ''
].filter(Boolean).join(' · ');
items.push({
kicker: highGameRecord || highSeriesRecord ? 'BOWLING PERSONAL BEST' : 'TUESDAY BOWLING',
title,
detail,
icon: 'mdi:bowling',
accent: '#7e57c2'
});
});
}
const cruiseDays = Number.parseInt(state('sensor.next_booked_cruise_countdown'), 10);
const cruiseEntity = states['sensor.next_booked_cruise_countdown'];
const cruiseShip = String(cruiseEntity?.attributes?.ship || '').trim();

Loading…
Cancel
Save

Powered by TurnKey Linux.