updated to monitor the netowrk and reset wifi if is not working
This commit is contained in:
35
src/main.py
35
src/main.py
@@ -56,6 +56,7 @@ from get_playlists_v2 import (
|
||||
send_player_error_feedback
|
||||
)
|
||||
from keyboard_widget import KeyboardWidget
|
||||
from network_monitor import NetworkMonitor
|
||||
from kivy.graphics import Color, Line, Ellipse
|
||||
from kivy.uix.floatlayout import FloatLayout
|
||||
from kivy.uix.slider import Slider
|
||||
@@ -1496,6 +1497,8 @@ class SignagePlayer(Widget):
|
||||
# Card reader for authentication
|
||||
self.card_reader = None
|
||||
self._pending_edit_image = None
|
||||
# Network monitor
|
||||
self.network_monitor = None
|
||||
# Paths
|
||||
self.base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
self.config_dir = os.path.join(self.base_dir, 'config')
|
||||
@@ -1542,6 +1545,9 @@ class SignagePlayer(Widget):
|
||||
# Load configuration
|
||||
self.load_config()
|
||||
|
||||
# Initialize network monitor
|
||||
self.start_network_monitoring()
|
||||
|
||||
# Play intro video first
|
||||
self.play_intro_video()
|
||||
|
||||
@@ -1582,6 +1588,30 @@ class SignagePlayer(Widget):
|
||||
Logger.info("SignagePlayer: Configuration saved")
|
||||
except Exception as e:
|
||||
Logger.error(f"SignagePlayer: Error saving config: {e}")
|
||||
|
||||
def start_network_monitoring(self):
|
||||
"""Initialize and start network monitoring"""
|
||||
try:
|
||||
if self.config and 'server_ip' in self.config:
|
||||
server_url = self.config.get('server_ip', '')
|
||||
|
||||
# Initialize network monitor with:
|
||||
# - Check every 30-45 minutes
|
||||
# - Restart WiFi for 20 minutes on connection failure
|
||||
self.network_monitor = NetworkMonitor(
|
||||
server_url=server_url,
|
||||
check_interval_min=30,
|
||||
check_interval_max=45,
|
||||
wifi_restart_duration=20
|
||||
)
|
||||
|
||||
# Start monitoring
|
||||
self.network_monitor.start_monitoring()
|
||||
Logger.info("SignagePlayer: Network monitoring started")
|
||||
else:
|
||||
Logger.warning("SignagePlayer: Cannot start network monitoring - no server configured")
|
||||
except Exception as e:
|
||||
Logger.error(f"SignagePlayer: Error starting network monitoring: {e}")
|
||||
|
||||
async def async_playlist_update_loop(self):
|
||||
"""Async coroutine to check for playlist updates without blocking UI"""
|
||||
@@ -2363,6 +2393,11 @@ class SignagePlayerApp(App):
|
||||
def on_stop(self):
|
||||
Logger.info("SignagePlayerApp: Application stopped")
|
||||
|
||||
# Stop network monitoring
|
||||
if hasattr(self.root, 'network_monitor') and self.root.network_monitor:
|
||||
self.root.network_monitor.stop_monitoring()
|
||||
Logger.info("SignagePlayerApp: Network monitoring stopped")
|
||||
|
||||
# Cancel all async tasks
|
||||
try:
|
||||
pending = asyncio.all_tasks()
|
||||
|
||||
Reference in New Issue
Block a user