+ {% if message %} +
✓ {{ message }}
+ {% endif %} + + +
+
+
+ 🤖 + System Status +
+
+ {{ current_name }} | {{ current_location }} +
+
+ +
+ +
+ +
+
📷 Latest Image
+
+ Latest Detection +
+ No image available +
+
+
+ + +
+
+
+
Condition
+
{{ current_condition }}
+
+
+
Confidence
+
{{ current_confidence }}%
+
+
+
ASCOM Status
+
{{ ascom_safe_status }}
+
+
+
Detection Time
+
{{ detection_time }}s
+
+
+
Last Updated
+
{{ last_update }}
+
+
+
Container Uptime
+
{{ container_uptime }}
+
+
+
+ + +
+
📜 Safety History
+
+ {% if safety_history %} + {% for entry in safety_history %} +
+ + {{ '✓ SAFE' if entry.is_safe else '⚠ UNSAFE' }} + + {{ entry.time }} +
+
+ {{ entry.condition }} ({{ entry.confidence }}%) +
+ {% endfor %} + {% else %} +
+ No state changes yet +
+ {% endif %} +
+
+
+ + +
+ +
+ +
+
+
+

+ Status: {{ ascom_status }} +

+

+ Active: {{ client_count }} +

+
+ + {% if client_list %} +
+ + + + + + + + + + + + {% for client in client_list %} + + + + + + + + {% endfor %} + +
IP ↕Status ↕Duration ↕Connected ↕Disconnected ↕
{{ client.ip }} + {{ '●' if client.status == 'connected' else '○' }} + {{ client.duration }}{{ client.connected_time }}{{ client.disconnected_time }}
+
+ {% endif %} +
+
+
+
+
+
+ + + + +
+
+ 🛠️ + Configuration Settings +
+ +
+ +
+ +
+
+
+ Image Fetch Interval + How often to download new images from AllSky camera and run AI analysis. Lower values = faster response but higher CPU usage. +
+
+
+ Recommended:
+ • Fast response: 15-30s
+ • Balanced: 30-60s
+ • Resource efficient: 60-120s +
+
+ +
+ ASCOM Update Interval + How often to re-check safety status. Should be ≥ Image Fetch Interval. +
+
+
+ Rule: Set equal to Image Fetch Interval for efficiency. +
+
+ +
+ Safe Wait Time + How long the sky must remain clear before the system reports "Safe". +
+
+
+ Why it matters:
+ Prevents opening the observatory roof during brief breaks in storms or passing clouds. + Set higher (e.g., 300s = 5 min) for unstable weather patterns.

+ Recommended:
+ • Stable climate: 60-120s
+ • Variable weather: 180-300s
+ • Storm-prone areas: 300-600s +
+
+ +
+ Unsafe Wait Time (Debounce to Unsafe) + How long bad weather must persist before the system reports "Unsafe". +
+
+
+ Why it matters:
+ Controls emergency response speed. Setting to 0 triggers immediate roof closure at first sign of danger. + Higher values (10-30s) can filter out brief sensor glitches.

+ Recommended:
+ • Automated roof: 0s (immediate)
+ • Manual operation: 5-10s
+ • Glitch filtering: 10-30s +
+
+ +
+ Confidence Threshold + Minimum AI confidence (%) required to trigger each weather condition. +
+
+
+ 📊 Key Concept:
+ Higher threshold = Less sensitive (AI must be more confident)
+ Lower threshold = More sensitive (AI triggers with less certainty)

+ + How it works:
+ If set to 80% for "Rain", the AI must be 80% confident it's raining to trigger. + Lower = more sensitive (fewer misses, more false alarms). Higher = less sensitive (more misses, fewer false alarms).

+ Tuning tips:
+ • Start at 50% (default)
+ • Lower for critical conditions (Rain: 40-50%)
+ • Higher for uncertain conditions (Overcast: 60-70%)
+ • Adjust based on false alarm rate +
+
+
+
+
+ + +
+ +
+
+
+
+
+ + +
+ +
+ + +
+
+
+
+ + + + URL to fetch images for cloud detection. Leave empty to use environment variable default. + +
+
+ +
+
+ + + + Time server for accurate timestamps + +
+ +
+ + + + e.g., America/New_York, Europe/London, UTC + 📖 Reference + +
+
+
+
+
+
+ + +
+ +
+
+
+ + +
+

How Timing Works

+ +
+ +
+
+
📷
+
+
FETCH IMAGE
+
Every 60s
+
+
+
+ Downloads latest image from AllSky camera and runs AI analysis to detect weather conditions +
+
+ + +
+
+
🔄
+
+
ASCOM UPDATE
+
Every 30s
+
+
+
+ Re-checks safety status using latest detection result and applies debounce logic +
+
+ + +
+
+
+
+
SAFE WAIT TIME
+
60s
+
+
+
+ How long sky must stay clear before reporting "Safe" - prevents premature roof opening +
+
+
+ + +
+
+
+
+
UNSAFE WAIT TIME
+
Immediate
+
+
+
+ How long bad weather must persist before reporting "Unsafe" - 0 = instant roof closure +
+
+
+
+ + +
+
💡 EXAMPLE SCENARIO
+
+
+
+ +
+
+ + +

How often to fetch & analyze new images from AllSky camera

+
+ +
+ + +

How often to check safety status

+
+
+ +
+
+ + +

Delay before reporting safe conditions

+
+ +
+ + +

Delay before reporting unsafe conditions (0 = immediate)

+
+
+ + + + +
+
+
+
+ + +
+ +
+
+
+

+ Mark each weather condition as Safe or Unsafe for observatory operations. +

+ + +
+

Safe Conditions

+
+ {% for condition in safe_conditions %} +
+
+
{{ condition }}
+
+ + +
+
+
+ + + % + + +
+
+
+
+
{{ class_thresholds.get(condition, default_threshold) }}%
+
+
+
+ ✓ Triggers >{{ class_thresholds.get(condition, default_threshold) }}% +
+
+
+ {% endfor %} +
+
+ + +
+

Unsafe Conditions

+
+ {% for condition in unsafe_conditions %} +
+
+
{{ condition }}
+
+ + +
+
+
+ + + % + + +
+
+
+
+
{{ class_thresholds.get(condition, default_threshold) }}%
+
+
+
+ ✓ Triggers >{{ class_thresholds.get(condition, default_threshold) }}% +
+
+
+ {% endfor %} +
+
+ + + +
+
+
+
+ + +
+
+