updated to monitor the netowrk and reset wifi if is not working

This commit is contained in:
2025-12-10 15:53:30 +02:00
parent 4c3ddbef73
commit 02e9ea1aaa
4 changed files with 384 additions and 0 deletions

View File

@@ -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()