A personal Windows-based PC monitoring, control, and automation dashboard.
This panel brings together hardware monitoring, media controls, smart home devices, weather, shift information, external Spotify windows, system power controls, logs, health checks, and a full settings interface in one local dashboard.
It is designed for use on a second screen, small HDMI display, in-case display, desktop control monitor, or always-on information panel.
Panel Demo
Settings Demo
- Overview
- Main Features
- Displayed Information
- Settings System
- Settings Page
- System Monitoring
- HWiNFO Integration
- Media Control
- Lyrics
- Tuya Integration
- Vestel AC Climate Control
- Weather
- Shift System
- Panel Buttons
- External Windows
- Visual System
- Health, Logs, and Sitemap
- API Endpoints
- Requirements
- Installation
- Running
- File Structure
- Security Notes
- License
This project is a personal control center built with a Python backend, an HTML/CSS/JavaScript frontend, and Windows system APIs.
The backend uses aiohttp for HTTP routes and WebSocket broadcasting. The frontend is handled by main.html and script.js. Configuration is stored in settings.json and can be edited through the built-in settings page.
The main purpose of the panel is to:
- Monitor PC hardware status in real time
- Display CPU, GPU, RAM, FPS, power, temperature, network, and uptime information
- Control media playback
- Manage system volume and mute state
- Display lyrics for the currently playing song
- Control Tuya smart devices
- Track PC smart plug wattage
- Control a Vestel AC climate device
- Display weather information
- Read and display Excel/SharePoint-based shift information
- Launch a separate Spotify WebView window
- Run system commands such as shutdown, restart, sleep, Task Manager, and custom commands
- Monitor panel health and logs
- Customize behavior through a full settings interface
- Real-time PC monitoring dashboard
- HWiNFO sensor integration
- CPU temperature monitoring
- CPU power monitoring
- GPU temperature monitoring
- GPU usage monitoring
- GPU power monitoring
- RAM usage monitoring
- VRAM usage and temperature fields
- FPS and 1% low FPS display
- FPS source application detection
- Network download/upload speed
- System uptime display
- Motherboard temperature field
- VMOS temperature field
- RAM slot temperature fields
- Disk temperature fields
- Estimated total system power
- Tuya smart device control
- PC smart plug wattage tracking
- Vestel AC climate control popup
- Open-Meteo weather integration
- Excel/SharePoint shift reader
- Windows media control
- Lyrics support
- Seekbar support
- System volume knob
- Mute control
- Customizable panel buttons
- Separate Spotify WebView window
- Full settings page
- Health report page
- Logs page
- Sitemap page
- WebSocket live status broadcasting
- Configurable polling and refresh intervals
- Low performance mode
- Liquid animation system
- Turkish / English panel language support
The main dashboard can display the following information.
- CPU temperature
- CPU power draw
- GPU temperature
- GPU usage
- GPU power draw
- RAM usage
- FPS
- 1% low FPS
- Shift information
- Estimated total system power
- Date
- Time
- Weather summary
- Location
- Motherboard temperature
- VMOS temperature
- System uptime
- Upload speed
- Download speed
- Disk temperatures
- RAM slot temperatures
- VRAM usage
- VRAM temperature
- FPS source application
- PC plug wattage
- Total system power source information
- Track title
- Artist name
- Album art
- Media source application
- Playback state
- Current playback position
- Track duration
- Seekbar
- Lyrics
- Custom idle media text
- No-media placeholder text
- Visible Tuya devices
- Device name
- On/off state
- Brightness value
- Pending command state
- Device error state
- PC plug wattage
- Volume level
- Mute state
- Previous track
- Play/pause
- Next track
- Shortcut buttons
- Climate popup
- Spotify launch/kill buttons
- System power controls
Panel settings are read from settings.json.
Default settings are defined in settings_runtime.py.
Main settings groups:
{
"performance": {},
"frontend": {},
"window": {},
"tuya": {},
"logging": {},
"startup": {},
"api": {},
"external_windows": {},
"power": {},
"hwinfo": {},
"commands": {},
"panel": {}
}| Category | Purpose |
|---|---|
performance |
Refresh intervals, polling speeds, retry counts |
frontend |
UI visibility, language, animations, media behavior |
window |
Panel window size, monitor, port, always-on-top behavior |
tuya |
Tuya device visibility, timeouts, read mode, brightness behavior |
logging |
Debug logs, WebSocket logs, Tuya/HWiNFO logs, cleanup behavior |
startup |
Startup-related behavior |
api |
Open-Meteo, Tuya Cloud, Vestel AC, shift API settings |
external_windows |
Spotify WebView window settings |
power |
Additional system power estimation |
hwinfo |
HWiNFO executable path, auto restart, FPS ignore list |
commands |
Custom executable/script commands |
panel |
Custom panel buttons |
The settings page is available at:
http://localhost:5001/settingsThe settings interface contains the following sections:
- Home
- Performance
- Media
- Appearance
- Effects
- Buttons
- Tuya
- Services
- Calendar
- Health
- Logs
- Sitemap
- Reset
The Home section shows a general settings overview and save status.
Typical purpose:
- Confirm that the settings page is loaded
- View general panel state
- Save edited settings
- Restart/refresh panel-related services when needed
Controls update and polling intervals.
Fields include:
- UI update interval
- WebSocket broadcast interval
- Status poll interval
- HWiNFO refresh interval
- HWiNFO cache read interval
- Media refresh interval
- Volume refresh interval
- Mute refresh interval
- FPS refresh interval
- Weather refresh interval
- Shift cache check interval
- Network refresh interval
- Uptime refresh interval
- Tuya refresh interval
- Tuya retry count
- Other system power estimate
Example:
{
"performance": {
"ui_update_interval_ms": 250,
"websocket_broadcast_interval_ms": 250,
"status_poll_interval_ms": 500,
"hwinfo_refresh_interval_ms": 1000,
"hwinfo_cache_read_interval_ms": 500,
"media_refresh_interval_ms": 500,
"volume_refresh_interval_ms": 250,
"mute_refresh_interval_ms": 250,
"fps_refresh_interval_ms": 500,
"weather_refresh_interval_minutes": 30,
"shift_cache_check_interval_minutes": 30,
"network_refresh_interval_ms": 5000,
"uptime_refresh_interval_ms": 5000,
"tuya_refresh_interval_ms": 5000,
"tuya_retry_count": 1
}
}Controls media playback display and behavior.
Fields include:
- Seekbar update interval
- Lyrics refresh interval
- Media progress interval while playing
- Media progress interval while paused
- Lyrics animation interval
- Lyric offset
- Idle text
- No-media placeholder title
- Lyrics waiting text
- Hide seekbar when idle
- Show media progress when idle
- Show now playing card
- Show lyrics card
Example:
{
"frontend": {
"seekbar_update_interval_ms": 250,
"lyrics_refresh_interval_ms": 1000,
"media_progress_interval_playing_ms": 150,
"media_progress_interval_paused_ms": 500,
"lyrics_animation_interval_ms": 150,
"lyric_offset_sec": 0.8,
"idle_text": "nihil infinitum est | el. psy. congroo",
"no_media_placeholder_title": "el. psy. congroo.",
"lyrics_waiting_text": "Waiting for lyrics...",
"hide_seekbar_when_idle": true,
"show_media_progress_when_idle": false,
"show_now_playing_card": true,
"show_lyrics_card": true
}
}Controls the panel window and display behavior.
Fields include:
- Panel port
- Window title
- Target monitor device
- Monitor left position
- Monitor top position
- Monitor width
- Monitor height
- Always on top
- Hide from taskbar
- Layout mode
- Panel width
- Panel height
- Keep window alive interval
- Keep window minimum interval
Example:
{
"window": {
"port": 5001,
"title": "Kontrol Paneli",
"target_monitor_device": "",
"target_monitor_left": 0,
"target_monitor_top": 0,
"target_monitor_width": 1920,
"target_monitor_height": 1080,
"always_on_top": true,
"keep_window_alive_interval_ms": 2000,
"keep_window_alive_min_interval_ms": 250,
"hide_from_taskbar": true,
"layout_mode": "landscape",
"panel_width": 1280,
"panel_height": 800
}
}Controls visual effects and liquid animation behavior.
Fields include:
- Liquid animation enabled
- Liquid animation FPS
- Liquid animation mode
- Liquid wave when idle
- CPU liquid theme
- GPU liquid theme
- RAM liquid theme
- FPS liquid theme
- Power liquid theme
- Shift liquid theme
- Animation level
- Low performance mode
Example:
{
"frontend": {
"liquid_animation_enabled": true,
"liquid_animation_fps": 16,
"liquid_animation_mode": "light",
"liquid_wave_when_idle": false,
"liquid_theme_cpu": "default_glass",
"liquid_theme_gpu": "default_glass",
"liquid_theme_ram": "default_glass",
"liquid_theme_fps": "default_glass",
"liquid_theme_power": "default_glass",
"liquid_theme_shift": "default_glass",
"animation_level": "normal",
"low_performance_mode": false
}
}Controls the customizable panel shortcut buttons.
Each button supports:
- ID
- Label
- Visibility
- Style variant
- Primary command
- Secondary command
- HTTP method
- Confirmation text
- SVG icon
Example button:
{
"id": "taskmgr",
"label": "Task Manager",
"visible": true,
"variant": "white-glow",
"command": "/taskmgr",
"secondary_command": "",
"method": "GET",
"confirm_text": "",
"icon_svg": "<svg></svg>"
}Supported method values:
GET
POST
SPECIALDefault button examples:
- Admin CMD
- DNS Redir
- Climate
- Task Manager
- Spotify
- Sleep
- Restart
- Shutdown
Button capabilities:
- Show or hide button
- Change label
- Change SVG icon
- Change style variant
- Assign a primary command
- Assign a secondary command
- Add confirmation text
- Trigger special popup actions such as climate control
Controls smart device behavior.
Fields include:
- Visible device keys
- PC plug key
- Brightness popup timeout
- Read mode
- Device timeout
- Local command timeout
- Cloud command timeout
- Max parallel status workers
- Status batch size
Example:
{
"tuya": {
"visible_device_keys": [],
"pc_plug_key": "",
"brightness_popup_timeout_ms": 1600,
"read_mode": "local",
"device_timeout_ms": 2500,
"local_command_timeout_ms": 2500,
"cloud_command_timeout_ms": 8000,
"max_parallel_status_workers": 4,
"status_batch_size": 8
}
}Tuya actions:
- Check Tuya devices
- Reset Tuya runtime/pool
- Clear Tuya logs
- Toggle device
- Set brightness
- Read PC plug wattage
Controls external API services.
Service groups:
- Open-Meteo
- Tuya Cloud
- Vestel AC
{
"api": {
"meteo": {
"forecast_url": "https://api.open-meteo.com/v1/forecast",
"geocoding_url": "https://geocoding-api.open-meteo.com/v1/search",
"location_query": "Kayseri",
"location_label": "Kayseri",
"latitude": 38.7205,
"longitude": 35.4826,
"timezone": "Europe/Istanbul",
"language": "en"
}
}
}{
"api": {
"tuya": {
"base_url": "https://openapi.tuyaeu.com",
"access_id": "",
"access_secret": ""
}
}
}{
"api": {
"vestel_ac": {
"enabled": false,
"email": "",
"password": "",
"aws_config_path": "",
"rest_base_url": "https://res.apigw.vestel.com.tr",
"thing_name": "",
"home_id": "",
"product_line": "AC",
"device_kind": "ac",
"refresh_interval_ms": 60000,
"command_topic": "",
"region": "",
"user_pool_id": "",
"app_client_id": "",
"app_client_secret": ""
}
}
}Controls the shift reader.
Fields include:
- Shared Excel/SharePoint URL
- Sheet name
- Employee name
- Name column
- Date row
Example:
{
"api": {
"shift": {
"share_url": "",
"sheet_name": "Shift",
"employee_name": "",
"name_column": 3,
"date_row": 2
}
}
}Displays panel health status.
Health checks may include:
- HWiNFO worker status
- HWiNFO application status
- Tuya devices
- PC plug wattage
- Weather service
- Vestel AC climate status
- Media session
- System cache
- WebSocket broadcast
- Runtime logs
- Recent issues
- Recent events
- Snapshot state
- Configuration state
Shows panel logs and error reports.
Supported log types:
- General logs
- Error logs
- Tuya logs
- HWiNFO error logs
- Startup profile logs
Logging settings:
{
"logging": {
"debug_logging_enabled": true,
"websocket_logging_enabled": false,
"tuya_error_logging_enabled": true,
"hwinfo_error_logging_enabled": true,
"performance_logging_enabled": false,
"max_lines": 1500,
"cleanup_interval_seconds": 900
}
}Shows the internal route and page structure of the panel.
Used to restore default settings.
The panel collects system status from the backend and broadcasts it to the frontend.
Supported public status fields include:
cpu_percent
ram_percent
ram_used_gb
ram_total_gb
gpu_util
gpu_temp
cpu_temp
cpu_power
gpu_power
uptime
fps
fps_1_low
fps_source
vram_percent
vram_temp
motherboard_temp
vmos_temp
ram_slot_temps
disks_cde
download_speed_mbps
upload_speed_mbps
pc_plug_power_w
total_system_power
estimated_total_system_power
total_system_power_sourceHWiNFO is the primary source for sensor data.
Features:
- HWiNFO executable path setting
- HWiNFO worker mode
- HWiNFO snapshot JSON cache
- HWiNFO shared memory / sensor mode preparation
- HWiNFO process detection
- HWiNFO uptime tracking
- HWiNFO automatic restart
- Configurable maximum HWiNFO uptime
- HWiNFO error logging
- FPS data can share the same worker loop
- FPS ignore apps list
- Sensor binding and matching system
- Worker heartbeat tracking
- Worker restart cooldown
- Snapshot age validation
Settings:
{
"hwinfo": {
"fps_ignore_apps_text": "",
"auto_restart_enabled": true,
"auto_restart_max_uptime_hours": 11,
"executable_path": ""
}
}The FPS ignore list is used to exclude false FPS sources such as:
- Desktop Window Manager
- Explorer
- Task Manager
- Panel process
- Python process
- Chrome
- Steam
- Discord
- Spotify
- OBS
- WebView2
The panel works with Windows media sessions and system audio APIs.
Features:
- Read active media title
- Read artist information
- Show album art
- Detect media source application
- Play/pause
- Previous track
- Next track
- Seekbar
- Media position
- Media duration
- Volume up
- Volume down
- Direct volume set
- Mute toggle
- Remote volume sync delay
- Remote mute sync delay
- Idle media text
- Custom no-media placeholder
Settings:
{
"frontend": {
"seekbar_update_interval_ms": 250,
"media_refresh_interval_ms": 500,
"volume_refresh_interval_ms": 250,
"mute_refresh_interval_ms": 250,
"media_progress_interval_playing_ms": 150,
"media_progress_interval_paused_ms": 500,
"volume_remote_sync_delay_ms": 220,
"mute_remote_sync_delay_ms": 1200,
"idle_text": "nihil infinitum est | el. psy. congroo",
"no_media_placeholder_title": "el. psy. congroo.",
"hide_seekbar_when_idle": true,
"show_media_progress_when_idle": false
}
}The panel can display lyrics for the currently playing track.
Features:
- Lyrics refresh interval
- Lyrics animation interval
- Lyric offset
- Waiting text
- Refresh lyrics when active media changes
- Keep lyrics card idle when no media is active
- Toggle lyrics card visibility
- Lyrics cache behavior
- Synced lyrics support
- Plain lyrics fallback
Settings:
{
"frontend": {
"lyrics_refresh_interval_ms": 1000,
"lyrics_animation_interval_ms": 150,
"lyric_offset_sec": 0.8,
"lyrics_waiting_text": "Waiting for lyrics...",
"show_lyrics_card": true
}
}The panel can control Tuya-compatible smart devices.
Features:
- Local mode
- Cloud mode
- Device status query
- Device on/off toggle
- Brightness control
- Visible device list
- Device ordering
- PC plug key
- PC plug wattage tracking
- Tuya cache
- Tuya connection pool reset
- Tuya check
- Tuya log clearing
- Parallel status workers
- Status batch size
- Per-device error display
- Local command timeout
- Cloud command timeout
- Device timeout
- Retry count
Settings:
{
"tuya": {
"visible_device_keys": [],
"pc_plug_key": "",
"brightness_popup_timeout_ms": 1600,
"read_mode": "local",
"device_timeout_ms": 2500,
"local_command_timeout_ms": 2500,
"cloud_command_timeout_ms": 8000,
"max_parallel_status_workers": 4,
"status_batch_size": 8
},
"api": {
"tuya": {
"base_url": "https://openapi.tuyaeu.com",
"access_id": "",
"access_secret": ""
}
}
}The panel provides a Vestel AC climate control popup through the configured Vestel cloud/device settings.
Features:
- Climate status query
- Room temperature display
- Target temperature update
- Mode selection
- Fan speed selection
- Vertical and horizontal wing position selection
- Climate power on/off
- Vestel appliance identifiers
- Cognito app/session settings
Settings:
{
"api": {
"vestel_ac": {
"enabled": false,
"email": "",
"password": "",
"aws_config_path": "",
"rest_base_url": "https://res.apigw.vestel.com.tr",
"thing_name": "",
"home_id": "",
"product_line": "AC",
"device_kind": "ac",
"refresh_interval_ms": 60000,
"command_topic": "",
"region": "",
"user_pool_id": "",
"app_client_id": "",
"app_client_secret": ""
}
}
}The panel displays weather information through Open-Meteo.
Features:
- Forecast URL
- Geocoding URL
- Location query
- Location label
- Latitude
- Longitude
- Timezone
- Language setting
- Current temperature
- Feels-like temperature
- Humidity
- Pressure
- Wind speed
- Wind direction
- Daily minimum temperature
- Daily maximum temperature
- Weather summary
- Rain information
- Weather error field
- Configurable refresh interval
Settings:
{
"api": {
"meteo": {
"forecast_url": "https://api.open-meteo.com/v1/forecast",
"geocoding_url": "https://geocoding-api.open-meteo.com/v1/search",
"location_query": "Kayseri",
"location_label": "Kayseri",
"latitude": 38.7205,
"longitude": 35.4826,
"timezone": "Europe/Istanbul",
"language": "en"
}
},
"performance": {
"weather_refresh_interval_minutes": 30
}
}The panel can read shift data from an Excel/SharePoint workbook.
Features:
- Shared Excel URL
- Sheet name selection
- Employee name selection
- Name column selection
- Date row selection
- Shift cache file
- Shift cache metadata file
- Tomorrow shift text
- Tomorrow shift subtitle
- Shift refresh endpoint
- Configurable cache check interval
- Custom liquid fill animation for the shift card
Settings:
{
"api": {
"shift": {
"share_url": "",
"sheet_name": "Shift",
"employee_name": "",
"name_column": 3,
"date_row": 2
}
},
"performance": {
"shift_cache_check_interval_minutes": 30
}
}The panel includes customizable shortcut buttons.
Each button supports:
{
"id": "button_id",
"label": "Button Label",
"visible": true,
"variant": "white-glow",
"command": "/command",
"secondary_command": "",
"method": "GET",
"confirm_text": "",
"icon_svg": "<svg></svg>"
}Supported method values:
GET
POST
SPECIALCommon button actions:
- Open Admin CMD
- Run DNS redirect command
- Open climate popup
- Open Task Manager
- Start Spotify window
- Kill Spotify window
- Sleep PC
- Restart PC
- Shutdown PC
- Run custom commands
Button features:
- Show or hide button
- Change label
- Change icon
- Change command
- Change secondary command
- Change method
- Add confirmation text
- Change visual style variant
The panel can open separate WebView windows.
Features:
- Spotify URL setting
- Separate frameless WebView window
- Selected monitor targeting
- Always-on-top behavior
- Window title setting
- Kill window endpoint
- WebView2 window positioning
- Frameless display mode
Settings:
{
"external_windows": {
"spotify": {
"url": "https://open.spotify.com/intl-tr/",
"window_title": "Spotify Ekrani",
"target_monitor_device": ""
}
}
}The panel is built around a 1920x1080 base layout and scales to the active window.
Visual features:
- Custom background image
- Geforcea font support
- Grid-based layout
- Top system cards
- Bottom control cards
- Liquid SVG animations
- Per-card liquid themes
- Sketch button animation
- Confirmation popup
- Tuya brightness popup
- Climate level popup
- Volume knob visual
- Responsive scale system
- Landscape layout
- Vertical
/dikeyroute support - Card visibility toggles
- Idle animation behavior
- Low performance mode
Frontend visibility settings:
{
"frontend": {
"panel_language": "en",
"show_fps_card": true,
"show_date_weather_block": true,
"show_tuya_card": true,
"show_now_playing_card": true,
"show_lyrics_card": true
}
}Liquid animation settings:
{
"frontend": {
"liquid_animation_enabled": true,
"liquid_animation_fps": 16,
"liquid_animation_mode": "light",
"liquid_wave_when_idle": false,
"liquid_theme_cpu": "default_glass",
"liquid_theme_gpu": "default_glass",
"liquid_theme_ram": "default_glass",
"liquid_theme_fps": "default_glass",
"liquid_theme_power": "default_glass",
"liquid_theme_shift": "default_glass",
"animation_level": "normal",
"low_performance_mode": false
}
}The health report summarizes the internal status of the panel.
It may include:
- Overall status
- Snapshot information
- Configuration state
- Checks
- Issues
- Recent events
- HWiNFO worker status
- HWiNFO app status
- Tuya status
- Weather status
- Vestel AC status
- Media status
- WebSocket status
- Runtime log status
The logging system supports:
- General log
- Error log
- Tuya log
- HWiNFO error log
- Startup profile log
- Maximum line limit
- Cleanup interval
- Log clear endpoint
- Tuya-only log clear endpoint
Logging settings:
{
"logging": {
"debug_logging_enabled": true,
"websocket_logging_enabled": false,
"tuya_error_logging_enabled": true,
"hwinfo_error_logging_enabled": true,
"performance_logging_enabled": false,
"max_lines": 1500,
"cleanup_interval_seconds": 900
}
}The sitemap page shows the internal route and page structure of the panel.
GET /
GET /dikey
GET /settings
GET /hata
GET /sitemapGET /script.js
GET /liquid_themes.js
GET /settings_i18n.js
GET /settings_i18n_tr.js
GET /settings_i18n_en.js
GET /settings-theme-light.css
GET /settings-theme-dark.css
GET /resimler/{path}
GET /fonts/{path}GET /status
GET /ws/status
GET /health
GET /api/health/report
GET /hata/data
GET /sitemap/dataGET /api/settings
POST /api/settings
POST /api/settings/reset
GET /api/monitorsGET /weather/meteo
GET /weather/mgmPOST /api/logs/clear
POST /api/tuya/logs/clearPOST /api/hwinfo/restartPOST /api/shift/refreshGET /media/seek
GET /setvolume
GET /muteGET /tuya/status
GET /tuya/pc_debug
GET /tuya/toggle/{device_key}
GET /tuya/brightness/{device_key}
POST /api/tuya/check
POST /api/tuya/resetGET /vestel/ac/status
POST /vestel/ac/commandGET /admincmd
GET /taskmgr
GET /sleep
GET /restart
GET /shutdown
GET /spotify
GET /kill/spotify
GET /dnsredir
POST /dnsredir- Windows 10
- Windows 11
The panel is Windows-focused because it uses:
- Windows APIs
- WebView windows
- COM audio endpoint control
- HWiNFO integration
- Windows media commands
- Windows monitor/window positioning
Recommended:
Python 3.10+Required or recommended packages:
aiohttp
psutil
pywebview
tinytuya
requests
openpyxlInstall them with:
pip install aiohttp psutil pywebview tinytuya requests openpyxlFor full functionality:
- HWiNFO64
- Microsoft Edge WebView2 Runtime
- Tuya-compatible smart devices
- Tuya local key or Tuya Cloud API credentials
- Vestel AC account and appliance information
- Internet connection
- Open-Meteo access
- Excel/SharePoint shift link
- Spotify account/session if using Spotify WebView
- Clone or download the repository.
git clone https://github.com/your-username/your-repo-name.git
cd your-repo-name- Install Python packages.
pip install aiohttp psutil pywebview tinytuya requests openpyxl-
Install HWiNFO64.
-
Set the HWiNFO executable path in
settings.json. -
Copy the example settings file.
copy settings.example.json settings.json-
Edit
settings.jsonwith your own device/API settings. -
Start the panel.
python panel_app.pypython panel_app.pyDefault URL:
http://localhost:5001/Settings page:
http://localhost:5001/settingspython hwinfo_worker.pypython spotify.pypanel_app.py Main backend application
main.html Main panel UI
script.js Frontend logic
settings.html Settings UI
settings.json Local user settings
settings_runtime.py Settings load/save/reset system
hwinfo_worker.py HWiNFO worker entry point
audio_runtime.py Windows audio and media command runtime
tuya_runtime.py Tuya local/cloud runtime
spotify.py Spotify WebView window
win_utils.py Windows monitor/window helpers
app_logging.py Logging utilities
logs/ Runtime logs
logs/runtime/ Runtime cache files
webview_cache/ WebView cache
resimler/ Panel images
fonts/ Panel fontsDo not commit your real settings.json file to a public GitHub repository.
It may contain sensitive information such as:
- Tuya access ID
- Tuya access secret
- Vestel AC account email
- Vestel AC account password
- Vestel AC Cognito client secret
- Vestel AC session/config data
- Device IDs
- Location IDs
- Ngrok callback URL
- Personal SharePoint/Excel links
- Monitor device IDs
- Local script paths
- Private command paths
Use a safe public example file instead:
settings.example.jsonKeep secret fields empty:
{
"api": {
"tuya": {
"base_url": "https://openapi.tuyaeu.com",
"access_id": "",
"access_secret": ""
},
"vestel_ac": {
"enabled": false,
"email": "",
"password": "",
"thing_name": "",
"command_topic": "",
"app_client_secret": ""
},
"shift": {
"share_url": ""
}
}
}Recommended .gitignore:
settings.json
devices.json
logs/
webview_cache/
shift_cache.xlsx
shift_cache_meta.json
__pycache__/
*.pycThis project is not a generic commercial dashboard.
It is a highly customized personal Windows control panel.
The code is modular:
panel_app.pyhandles the main backendmain.htmlhandles the main UIscript.jshandles frontend behaviorsettings_runtime.pyhandles settingstuya_runtime.pyhandles Tuya devicesaudio_runtime.pyhandles Windows audio/media controlsspotify.pyhandles the external WebView windowwin_utils.pyhandles Windows monitor/window utilities
This project was built for personal use. Feel free to use personally. For Commercial use contact me