various tidyups

This commit is contained in:
zorruno
2026-07-29 23:18:11 +12:00
parent adb533d6a3
commit dd13f52feb
22 changed files with 6837 additions and 4057 deletions
+642
View File
@@ -0,0 +1,642 @@
#:########################################################################################:#
# Flounder Kiosk Package #
#:########################################################################################:#
#
# TITLE:
# Flounder Kiosk
#
# FILE:
# flounder_kiosk.yaml
#
# VERSION:
# V2.0 - 2026-07-28
#
# PURPOSE:
# Provides Home Assistant controls and status entities for the Flounder portrait
# touchscreen kiosk.
#
# DISPLAY CONTROL MODEL:
# A single MQTT select sets one persistent display mode:
# - Screen Lock
# - Screen Off
# - Screensaver
# - Screen On
#
# The selected display mode is separate from the actual physical screen and
# screensaver states. For example, Screen Off remains selected while a touch
# temporarily wakes the physical display.
#
# MQTT DEVICE:
# Name: Flounder Kiosk
# Identifier: flounder_kiosk
# Manufacturer: Dell
# Model: Portrait Touchscreen Kiosk
# Suggested Area: Lounge
#
# ENTITIES:
# select.flounder_kiosk_display_mode
# number.flounder_kiosk_brightness
# number.flounder_kiosk_presence_brightness
# sensor.flounder_kiosk_actual_brightness
# number.flounder_kiosk_presence_timeout
# binary_sensor.flounder_kiosk_presence_active
# switch.flounder_kiosk_motion_wake
# number.flounder_kiosk_volume
# switch.flounder_kiosk_mute
# binary_sensor.flounder_kiosk_screen_on
# binary_sensor.flounder_kiosk_screensaver_active
# binary_sensor.flounder_kiosk_motion
#
# REPLACED ENTITIES:
# The following writable entities from V1.7 are removed:
# - switch.flounder_kiosk_screen
# - switch.flounder_kiosk_screensaver
#
# They are replaced by:
# - select.flounder_kiosk_display_mode
# - binary_sensor.flounder_kiosk_screen_on
# - binary_sensor.flounder_kiosk_screensaver_active
#
# MQTT COMMAND TOPICS:
# viewroad-commands/flounder/display_mode/set
# viewroad-commands/flounder/brightness/set
# viewroad-commands/flounder/brightness/presence/set
# viewroad-commands/flounder/presence/timeout/set
# viewroad-commands/flounder/motion_wake/set
# viewroad-commands/flounder/audio/volume/set
# viewroad-commands/flounder/audio/mute/set
#
# MQTT STATE TOPICS:
# viewroad-status/flounder/display_mode/state
# viewroad-status/flounder/screen/state
# viewroad-status/flounder/screensaver/state
# viewroad-status/flounder/brightness/state
# viewroad-status/flounder/brightness/actual/state
# viewroad-status/flounder/brightness/presence/state
# viewroad-status/flounder/presence/state
# viewroad-status/flounder/presence/timeout/state
# viewroad-status/flounder/motion_wake/state
# viewroad-status/flounder/audio/volume/state
# viewroad-status/flounder/audio/mute/state
# viewroad-status/flounder/motion/state
#
# MQTT AVAILABILITY TOPIC:
# viewroad-status/flounder/availability
#
# DISPLAY MODES:
# Screen Lock:
# - Stops XScreenSaver.
# - Disables touchscreen input.
# - Keeps the physical panel off.
# - Ignores camera motion even when Motion Wake is enabled.
# - Camera motion detection and reporting continue in the background.
#
# Screen Off:
# - Keeps the physical panel off while activity is inactive.
# - Keeps the touchscreen enabled.
# - Touch always wakes the panel temporarily.
# - Camera motion wakes it when Motion Wake is enabled.
# - Activity applies Presence Brightness.
# - The panel returns to Screen Off after the shared Presence Timeout.
#
# Screensaver:
# - Turns the panel on at Current Brightness.
# - Starts XScreenSaver immediately.
# - Touch stops XScreenSaver and applies Presence Brightness.
# - Camera motion does the same when Motion Wake is enabled.
# - XScreenSaver restarts after the shared Presence Timeout.
#
# Screen On:
# - Keeps the panel on at Current Brightness while activity is inactive.
# - Touch applies Presence Brightness.
# - Camera motion does the same when Motion Wake is enabled.
# - The panel returns to Current Brightness after the Presence Timeout.
#
# PRESENCE AND TOUCH OPERATION:
# - Touch and camera motion use the same Presence Timeout.
# - Touch is active in every mode except Screen Lock.
# - Motion Wake controls camera motion only and does not disable touch wake.
# - Qualifying activity immediately applies Presence Brightness.
# - Camera motion holds presence active until the Motion entity returns to OFF.
# - A touch starts or restarts the ten-step brightness ramp immediately unless
# qualifying camera motion is currently holding presence active.
# - Presence Timeout is the total duration of the ten-step brightness ramp.
# - The final ramp step applies the latest Current Brightness.
# - The selected display mode is then restored automatically.
#
# DIAGNOSTIC STATE MEANING:
# - Screen On reports the real Linux DPMS panel state.
# - Screensaver Active reports whether XScreenSaver is running.
# - Presence Active reports whether temporary activity behaviour is active.
# - Actual Brightness reports the physical backlight percentage.
#
# VERSION HISTORY:
# V2.0 - 2026-07-28
# - Replaced the separate Screen and Screensaver switches with one persistent
# four-option Display Mode select.
# - Added Screen Lock, Screen Off, Screensaver, and Screen On modes.
# - Added shared touchscreen and camera-presence behaviour.
# - Added automatic return to the selected mode after the presence ramp.
# - Replaced writable Screen and Screensaver entities with diagnostics.
#
# V1.7 - 2026-07-27
# - Re-enabled DPMS after XScreenSaver activation.
# - Corrected Screen state reporting while XScreenSaver was running.
#
# V1.6 - 2026-07-27
# - Grouped all MQTT entities under one Flounder Kiosk device.
#
# V1.5 - 2026-07-27
# - Added Motion Wake control.
#
# V1.4 - 2026-07-27
# - Added the ten-step presence-brightness fade.
#
# V1.3 - 2026-07-27
# - Added presence brightness, timeout, and diagnostic entities.
#
# V1.2 - 2026-07-27
# - Added XScreenSaver control.
#
# V1.1 - 2026-07-27
# - Added MQTT availability monitoring.
#
# V1.0 - 2026-07-26
# - Initial package.
#
#:########################################################################################:#
# MQTT Entities #
#:########################################################################################:#
mqtt:
#:########################################################################################:#
# Flounder Kiosk Display Mode #
#:########################################################################################:#
#
# Selects the persistent display operating mode.
#
# The selected mode remains unchanged while touch or camera activity temporarily
# changes the real panel or screensaver state.
#
- select:
name: "Display Mode"
unique_id: flounder_kiosk_display_mode
default_entity_id: select.flounder_kiosk_display_mode
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
command_topic: "viewroad-commands/flounder/display_mode/set"
state_topic: "viewroad-status/flounder/display_mode/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
options:
- "Screen Lock"
- "Screen Off"
- "Screensaver"
- "Screen On"
optimistic: false
retain: false
icon: mdi:monitor-dashboard
#:########################################################################################:#
# Flounder Kiosk Current Brightness #
#:########################################################################################:#
#
# Stores the normal inactive brightness from 1 to 100 percent.
#
# In Screensaver and Screen On modes it is the normal visible brightness.
# In Screen Off mode it is the final ramp target before the panel powers off.
# In Screen Lock mode it is stored for the next unlocked mode.
#
- number:
name: "Brightness"
unique_id: flounder_kiosk_brightness
default_entity_id: number.flounder_kiosk_brightness
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
command_topic: "viewroad-commands/flounder/brightness/set"
state_topic: "viewroad-status/flounder/brightness/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
min: 1
max: 100
step: 1
mode: slider
unit_of_measurement: "%"
optimistic: false
retain: false
icon: mdi:brightness-6
#:########################################################################################:#
# Flounder Kiosk Presence Brightness #
#:########################################################################################:#
#
# Sets the temporary brightness used after touch or qualifying camera motion.
#
# Changing it while Presence Active is ON immediately updates the physical
# backlight.
#
- number:
name: "Presence Brightness"
unique_id: flounder_kiosk_presence_brightness
default_entity_id: number.flounder_kiosk_presence_brightness
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: config
command_topic: "viewroad-commands/flounder/brightness/presence/set"
state_topic: "viewroad-status/flounder/brightness/presence/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
min: 1
max: 100
step: 1
mode: slider
unit_of_measurement: "%"
optimistic: false
retain: false
icon: mdi:brightness-7
#:########################################################################################:#
# Flounder Kiosk Actual Brightness #
#:########################################################################################:#
#
# Reports the physical display backlight percentage.
#
# This may differ from Current Brightness while temporary activity is active or
# while the ten-step brightness ramp is running.
#
- sensor:
name: "Actual Brightness"
unique_id: flounder_kiosk_actual_brightness
default_entity_id: sensor.flounder_kiosk_actual_brightness
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: diagnostic
state_topic: "viewroad-status/flounder/brightness/actual/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
unit_of_measurement: "%"
state_class: measurement
icon: mdi:brightness-percent
#:########################################################################################:#
# Flounder Kiosk Presence Timeout #
#:########################################################################################:#
#
# Sets the shared touch and camera-presence timeout.
#
# The value is the total duration of the ten-step brightness ramp. Home Assistant
# displays whole minutes while MQTT stores and transfers seconds.
#
- number:
name: "Presence Timeout"
unique_id: flounder_kiosk_presence_timeout
default_entity_id: number.flounder_kiosk_presence_timeout
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: config
command_topic: "viewroad-commands/flounder/presence/timeout/set"
state_topic: "viewroad-status/flounder/presence/timeout/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
command_template: >-
{{ (value | float(1) * 60) | round(0) | int }}
value_template: >-
{{ (value | float(60) / 60) | round(0) | int }}
min: 1
max: 1440
step: 1
mode: box
unit_of_measurement: "min"
optimistic: false
retain: false
icon: mdi:timer-outline
#:########################################################################################:#
# Flounder Kiosk Presence Active #
#:########################################################################################:#
#
# Reports whether temporary touch or camera-presence behaviour is active.
#
# It remains ON through the brightness ramp and returns to OFF when the selected
# display mode has been restored.
#
- binary_sensor:
name: "Presence Active"
unique_id: flounder_kiosk_presence_active
default_entity_id: binary_sensor.flounder_kiosk_presence_active
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: diagnostic
state_topic: "viewroad-status/flounder/presence/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
payload_on: "ON"
payload_off: "OFF"
icon: mdi:account-eye
#:########################################################################################:#
# Flounder Kiosk Motion Wake #
#:########################################################################################:#
#
# Controls whether camera motion counts as display activity.
#
# Motion Wake does not affect touchscreen activity. Screen Lock ignores camera
# motion regardless of this switch while motion detection continues reporting.
#
- switch:
name: "Motion Wake"
unique_id: flounder_kiosk_motion_wake
default_entity_id: switch.flounder_kiosk_motion_wake
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: config
command_topic: "viewroad-commands/flounder/motion_wake/set"
state_topic: "viewroad-status/flounder/motion_wake/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
payload_on: "ON"
payload_off: "OFF"
optimistic: false
retain: false
icon: mdi:motion-sensor
#:########################################################################################:#
# Flounder Kiosk Volume #
#:########################################################################################:#
#
# Controls the active PipeWire audio-sink volume from 0 to 100 percent.
#
- number:
name: "Volume"
unique_id: flounder_kiosk_volume
default_entity_id: number.flounder_kiosk_volume
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
command_topic: "viewroad-commands/flounder/audio/volume/set"
state_topic: "viewroad-status/flounder/audio/volume/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
min: 0
max: 100
step: 1
mode: slider
unit_of_measurement: "%"
optimistic: false
retain: false
icon: mdi:volume-high
#:########################################################################################:#
# Flounder Kiosk Mute #
#:########################################################################################:#
#
# Controls the mute state of the active PipeWire audio sink.
#
- switch:
name: "Mute"
unique_id: flounder_kiosk_mute
default_entity_id: switch.flounder_kiosk_mute
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
command_topic: "viewroad-commands/flounder/audio/mute/set"
state_topic: "viewroad-status/flounder/audio/mute/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
payload_on: "ON"
payload_off: "OFF"
optimistic: false
retain: false
icon: mdi:volume-mute
#:########################################################################################:#
# Flounder Kiosk Screen On #
#:########################################################################################:#
#
# Reports the real physical panel state from Linux DPMS.
#
# This can report ON while Display Mode remains Screen Off because touch or
# qualifying camera motion has temporarily woken the panel.
#
- binary_sensor:
name: "Screen On"
unique_id: flounder_kiosk_screen_on
default_entity_id: binary_sensor.flounder_kiosk_screen_on
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: diagnostic
state_topic: "viewroad-status/flounder/screen/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
payload_on: "ON"
payload_off: "OFF"
device_class: power
icon: mdi:monitor
#:########################################################################################:#
# Flounder Kiosk Screensaver Active #
#:########################################################################################:#
#
# Reports whether XScreenSaver is currently running.
#
# In Screensaver mode it normally reports ON, but temporarily reports OFF while
# touch or qualifying camera motion displays the Home Assistant kiosk.
#
- binary_sensor:
name: "Screensaver Active"
unique_id: flounder_kiosk_screensaver_active
default_entity_id: binary_sensor.flounder_kiosk_screensaver_active
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
entity_category: diagnostic
state_topic: "viewroad-status/flounder/screensaver/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
payload_on: "ON"
payload_off: "OFF"
icon: mdi:monitor-shimmer
#:########################################################################################:#
# Flounder Kiosk Motion #
#:########################################################################################:#
#
# Reports raw movement detected by the local Motion camera service.
#
# Motion continues reporting in Screen Lock and while Motion Wake is OFF. It only
# affects display activity when Motion Wake is ON and Display Mode is not
# Screen Lock.
#
- binary_sensor:
name: "Motion"
unique_id: flounder_kiosk_motion
default_entity_id: binary_sensor.flounder_kiosk_motion
device:
identifiers:
- flounder_kiosk
name: "Flounder Kiosk"
manufacturer: "Dell"
model: "Portrait Touchscreen Kiosk"
suggested_area: "Lounge"
state_topic: "viewroad-status/flounder/motion/state"
availability_topic: "viewroad-status/flounder/availability"
payload_available: "ON"
payload_not_available: "OFF"
payload_on: "ON"
payload_off: "OFF"
device_class: motion