Files
opnsense-device-control/lovelace_device_control.yaml

376 lines
12 KiB
YAML

# Lovelace Dashboard for OPNsense Device Control
# Optimized for tablet use with clear visual indicators
title: Network Control
views:
# Overview Tab
- title: Overview
path: overview
icon: mdi:home-network
cards:
# Master Control Card
- type: entities
title: Master Controls
entities:
- entity: input_boolean.parental_controls_enabled
name: Parental Controls
icon: mdi:shield-account
show_header_toggle: false
# Quick Stats
- type: horizontal-stack
cards:
- type: custom:button-card
entity: sensor.bella_devices_blocked_count
name: Bella
show_state: true
state_display: "[[[return entity.state + ' Blocked']]]"
icon: mdi:account-circle
styles:
card:
- height: 100px
icon:
- color: >
[[[
if (entity.state > 0) return 'red';
return 'green';
]]]
- type: custom:button-card
entity: sensor.xander_devices_blocked_count
name: Xander
show_state: true
state_display: "[[[return entity.state + ' Blocked']]]"
icon: mdi:account-circle
styles:
card:
- height: 100px
icon:
- color: >
[[[
if (entity.state > 0) return 'red';
return 'green';
]]]
- type: custom:button-card
entity: sensor.william_devices_blocked_count
name: William
show_state: true
state_display: "[[[return entity.state + ' Blocked']]]"
icon: mdi:account-circle
styles:
card:
- height: 100px
icon:
- color: >
[[[
if (entity.state > 0) return 'red';
return 'green';
]]]
# Network Status
- type: glance
title: Network Status
columns: 4
entities:
- entity: sensor.opnsense_wan_status
name: WAN
- entity: sensor.opnsense_lan_status
name: LAN
- entity: sensor.opnsense_cpu_usage
name: CPU
- entity: sensor.opnsense_memory_usage
name: Memory
# Bella's Devices Tab
- title: Bella
path: bella
icon: mdi:account-circle
badges:
- entity: sensor.bella_devices_blocked_count
cards:
# User-wide Block Toggle
- type: entities
title: Bella - Quick Actions
entities:
- entity: input_boolean.block_all_bella_devices
name: Block All Devices
icon: mdi:block-helper
show_header_toggle: false
# Bella's Phone
- type: entities
title: "Bella's Phone"
show_header_toggle: false
entities:
- entity: input_boolean.block_bella_phone
name: Block Internet
icon: mdi:cellphone-off
- entity: input_select.device_user_bella_phone
name: Assigned To
- type: section
label: Device Details
- entity: input_text.mac_bella_phone
name: MAC Address
- entity: input_text.mac_bella_phone_wifi
name: WiFi MAC
- entity: device_tracker.bella_phone
name: Connection Status
# Bella's Tablet
- type: entities
title: "Bella's Tablet"
show_header_toggle: false
entities:
- entity: input_boolean.block_bella_tablet
name: Block Internet
icon: mdi:tablet-off
- entity: input_select.device_user_bella_tablet
name: Assigned To
- type: section
label: Device Details
- entity: input_text.mac_bella_tablet
name: MAC Address
- entity: input_text.mac_bella_tablet_wifi
name: WiFi MAC
- entity: device_tracker.bella_tablet
name: Connection Status
# Schedule Card (placeholder for future time-based controls)
- type: markdown
title: Internet Schedule
content: >
**Weekday Access:** 3:00 PM - 8:00 PM
**Weekend Access:** 9:00 AM - 9:00 PM
*Schedule controls coming soon*
# Xander's Devices Tab
- title: Xander
path: xander
icon: mdi:account-circle
badges:
- entity: sensor.xander_devices_blocked_count
cards:
# User-wide Block Toggle
- type: entities
title: Xander - Quick Actions
entities:
- entity: input_boolean.block_all_xander_devices
name: Block All Devices
icon: mdi:block-helper
show_header_toggle: false
# Xander's Phone
- type: entities
title: "Xander's Phone"
show_header_toggle: false
entities:
- entity: input_boolean.block_xander_phone
name: Block Internet
icon: mdi:cellphone-off
- entity: input_select.device_user_xander_phone
name: Assigned To
- type: section
label: Device Details
- entity: input_text.mac_xander_phone
name: MAC Address
- entity: input_text.mac_xander_phone_wifi
name: WiFi MAC
- entity: device_tracker.xander_phone
name: Connection Status
# Xander's Desktop
- type: entities
title: "Xander's Desktop"
show_header_toggle: false
entities:
- entity: input_boolean.block_xander_desktop
name: Block Internet
icon: mdi:desktop-tower-off
- entity: input_select.device_user_xander_desktop
name: Assigned To
- type: section
label: Device Details
- entity: input_text.mac_xander_desktop
name: Wired MAC
- entity: input_text.mac_xander_desktop_wifi
name: WiFi MAC
- entity: device_tracker.xander_desktop
name: Connection Status
# Schedule Card
- type: markdown
title: Internet Schedule
content: >
**Weekday Access:** 3:00 PM - 9:00 PM
**Weekend Access:** 9:00 AM - 10:00 PM
*Schedule controls coming soon*
# William's Devices Tab
- title: William
path: william
icon: mdi:account-circle
badges:
- entity: sensor.william_devices_blocked_count
cards:
# User-wide Block Toggle
- type: entities
title: William - Quick Actions
entities:
- entity: input_boolean.block_all_william_devices
name: Block All Devices
icon: mdi:block-helper
show_header_toggle: false
# William's Phone
- type: entities
title: "William's Phone"
show_header_toggle: false
entities:
- entity: input_boolean.block_william_phone
name: Block Internet
icon: mdi:cellphone-off
- entity: input_select.device_user_william_phone
name: Assigned To
- type: section
label: Device Details
- entity: input_text.mac_william_phone
name: MAC Address
- entity: input_text.mac_william_phone_wifi
name: WiFi MAC
- entity: device_tracker.william_phone
name: Connection Status
# William's Laptop
- type: entities
title: "William's Laptop"
show_header_toggle: false
entities:
- entity: input_boolean.block_william_laptop
name: Block Internet
icon: mdi:laptop-off
- entity: input_select.device_user_william_laptop
name: Assigned To
- type: section
label: Device Details
- entity: input_text.mac_william_laptop
name: Wired MAC
- entity: input_text.mac_william_laptop_wifi
name: WiFi MAC
- entity: device_tracker.william_laptop
name: Connection Status
# Schedule Card
- type: markdown
title: Internet Schedule
content: >
**Weekday Access:** All Day (Age 17)
**Weekend Access:** All Day
*Schedule controls coming soon*
# Device Discovery Tab
- title: Devices
path: devices
icon: mdi:devices
cards:
- type: markdown
title: Device Discovery
content: >
Use the Python script to discover devices:
```bash
python3 opnsense_device_manager.py
```
This will show all devices on your network with their:
- MAC addresses
- IP addresses
- Manufacturers
- Suggested device names
- type: entities
title: All Devices on Network
entities:
- entity: sensor.opnsense_total_devices
name: Total Devices
- entity: sensor.opnsense_blocked_devices
name: Blocked Devices
- entity: sensor.opnsense_active_connections
name: Active Connections
# Placeholder for dynamic device list
- type: markdown
title: Recent Device Activity
content: >
*Device activity log coming soon*
# Settings Tab
- title: Settings
path: settings
icon: mdi:cog
cards:
- type: entities
title: OPNsense Connection
entities:
- entity: sensor.opnsense_status
name: Firewall Status
- entity: sensor.opnsense_last_update
name: Last Updated
- entity: binary_sensor.opnsense_connected
name: Connection Status
show_header_toggle: false
- type: entities
title: MAC Address Configuration
show_header_toggle: false
entities:
- type: section
label: "Bella's Devices"
- entity: input_text.mac_bella_phone
- entity: input_text.mac_bella_phone_wifi
- entity: input_text.mac_bella_tablet
- entity: input_text.mac_bella_tablet_wifi
- type: section
label: "Xander's Devices"
- entity: input_text.mac_xander_phone
- entity: input_text.mac_xander_phone_wifi
- entity: input_text.mac_xander_desktop
- entity: input_text.mac_xander_desktop_wifi
- type: section
label: "William's Devices"
- entity: input_text.mac_william_phone
- entity: input_text.mac_william_phone_wifi
- entity: input_text.mac_william_laptop
- entity: input_text.mac_william_laptop_wifi
- type: markdown
title: Setup Instructions
content: >
## Initial Setup
1. Run device discovery script to find MAC addresses
2. Enter MAC addresses in the fields above
3. Assign devices to users using the dropdown menus
4. Test blocking by toggling the block switches
## OPNsense API Setup
Add to secrets.yaml:
```yaml
opnsense_api_key: "your_api_key_here"
opnsense_api_secret: "your_api_secret_here"
```
## Troubleshooting
- Check OPNsense connection status above
- Verify API credentials in secrets.yaml
- Check firewall logs in OPNsense web UI
- Ensure MAC addresses are correct format