Successful

This commit is contained in:
Pongsatorn 2025-08-29 02:13:22 +07:00
parent 39394caa8e
commit 5875b76d74
3 changed files with 846 additions and 0 deletions

438
app.py
View file

@ -17,6 +17,7 @@ import ssl
import urllib3 import urllib3
import subprocess import subprocess
import tempfile import tempfile
import redis
from urllib.parse import urlparse from urllib.parse import urlparse
from requests.adapters import HTTPAdapter from requests.adapters import HTTPAdapter
from urllib3.util.ssl_ import create_urllib3_context from urllib3.util.ssl_ import create_urllib3_context
@ -45,6 +46,10 @@ subscription_to_camera: Dict[str, str] = {}
latest_frames: Dict[str, Any] = {} latest_frames: Dict[str, Any] = {}
# Store cached detection dict after successful pipeline completion # Store cached detection dict after successful pipeline completion
cached_detections: Dict[str, Dict[str, Any]] = {} cached_detections: Dict[str, Dict[str, Any]] = {}
# Enhanced caching system for LPR integration
session_detections: Dict[str, Dict[str, Any]] = {} # session_id -> detection data
session_to_camera: Dict[str, str] = {} # session_id -> camera_id
detection_timestamps: Dict[str, float] = {} # session_id -> timestamp (for cleanup)
# Track frame skipping for pipeline buffer after detection # Track frame skipping for pipeline buffer after detection
frame_skip_flags: Dict[str, bool] = {} frame_skip_flags: Dict[str, bool] = {}
# Track camera connection states for immediate error handling # Track camera connection states for immediate error handling
@ -102,6 +107,335 @@ logger.info("Ensured models directory exists")
# Constants for heartbeat and timeouts # Constants for heartbeat and timeouts
HEARTBEAT_INTERVAL = 2 # seconds HEARTBEAT_INTERVAL = 2 # seconds
# Global Redis connection for LPR integration
redis_client_global = None
lpr_listener_thread = None
cleanup_timer_thread = None
lpr_integration_started = False
# Redis connection helper functions
def get_redis_config_from_model(camera_id: str) -> Dict[str, Any]:
"""Extract Redis configuration from loaded model pipeline"""
try:
for model_id, model_tree in models.get(camera_id, {}).items():
if hasattr(model_tree, 'get') and 'redis_client' in model_tree:
# Extract config from existing Redis client
client = model_tree['redis_client']
if client:
return {
'host': client.connection_pool.connection_kwargs['host'],
'port': client.connection_pool.connection_kwargs['port'],
'password': client.connection_pool.connection_kwargs.get('password'),
'db': client.connection_pool.connection_kwargs.get('db', 0)
}
except Exception as e:
logger.debug(f"Could not extract Redis config from model: {e}")
# Fallback - try to read from pipeline.json directly
try:
pipeline_dirs = []
models_dir = "models"
if os.path.exists(models_dir):
for root, dirs, files in os.walk(models_dir):
if "pipeline.json" in files:
with open(os.path.join(root, "pipeline.json"), 'r') as f:
config = json.load(f)
if 'redis' in config:
return config['redis']
except Exception as e:
logger.debug(f"Could not read Redis config from pipeline.json: {e}")
return None
def create_redis_connection() -> redis.Redis:
"""Create Redis connection using config from pipeline"""
global redis_client_global
if redis_client_global is not None:
try:
redis_client_global.ping()
return redis_client_global
except:
redis_client_global = None
# Find any camera with a loaded model to get Redis config
redis_config = None
for camera_id in models.keys():
redis_config = get_redis_config_from_model(camera_id)
if redis_config:
break
if not redis_config:
logger.error("No Redis configuration found in any loaded models")
return None
try:
redis_client_global = redis.Redis(
host=redis_config['host'],
port=redis_config['port'],
password=redis_config.get('password'),
db=redis_config.get('db', 0),
decode_responses=True,
socket_connect_timeout=5,
socket_timeout=5
)
redis_client_global.ping()
logger.info(f"✅ Connected to Redis for LPR at {redis_config['host']}:{redis_config['port']}")
return redis_client_global
except Exception as e:
logger.error(f"❌ Failed to connect to Redis for LPR: {e}")
redis_client_global = None
return None
# LPR Integration Functions
def process_license_result(lpr_data: Dict[str, Any]):
"""Process incoming LPR result and update backend"""
try:
# Enhanced debugging for LPR data reception
logger.info("=" * 60)
logger.info("🚗 LPR SERVICE DATA RECEIVED")
logger.info("=" * 60)
logger.info(f"📥 Raw LPR data: {json.dumps(lpr_data, indent=2)}")
session_id = str(lpr_data.get('session_id', ''))
license_text = lpr_data.get('license_character', '')
logger.info(f"🔍 Extracted session_id: '{session_id}'")
logger.info(f"🔍 Extracted license_character: '{license_text}'")
logger.info(f"📊 Current cached sessions count: {len(session_detections)}")
logger.info(f"📊 Available session IDs: {list(session_detections.keys())}")
# Find cached detection by session_id
if session_id not in session_detections:
logger.warning("❌ LPR SESSION ID NOT FOUND!")
logger.warning(f" Looking for session_id: '{session_id}'")
logger.warning(f" Available sessions: {list(session_detections.keys())}")
logger.warning(f" Session count: {len(session_detections)}")
# Additional debugging - show session timestamps
if session_detections:
logger.warning("📅 Available session details:")
for sid, timestamp in detection_timestamps.items():
age = time.time() - timestamp
camera = session_to_camera.get(sid, 'unknown')
logger.warning(f" Session {sid}: camera={camera}, age={age:.1f}s")
else:
logger.warning(" No cached sessions available - worker may not have processed any detections yet")
logger.warning("💡 Possible causes:")
logger.warning(" 1. Session expired (TTL: 10 minutes)")
logger.warning(" 2. Session ID mismatch between detection and LPR service")
logger.warning(" 3. Detection was not cached (no sessionId from backend)")
logger.warning(" 4. Worker restarted after detection but before LPR result")
return
# Get the original detection data
detection_data = session_detections[session_id].copy()
camera_id = session_to_camera.get(session_id, 'unknown')
logger.info("✅ LPR SESSION FOUND!")
logger.info(f" 📹 Camera ID: {camera_id}")
logger.info(f" ⏰ Session age: {time.time() - detection_timestamps.get(session_id, 0):.1f} seconds")
# Show original detection structure before update
original_license = detection_data.get('data', {}).get('detection', {}).get('licensePlateText')
logger.info(f" 🔍 Original licensePlateText: {original_license}")
logger.info(f" 🆕 New licensePlateText: '{license_text}'")
# Update licensePlateText in detection
if 'data' in detection_data and 'detection' in detection_data['data']:
detection_data['data']['detection']['licensePlateText'] = license_text
logger.info("🎯 LICENSE PLATE UPDATE SUCCESS!")
logger.info(f" ✅ Updated detection for session {session_id}")
logger.info(f" ✅ Set licensePlateText = '{license_text}'")
# Show full detection structure after update
detection_dict = detection_data['data']['detection']
logger.info("📋 Updated detection dictionary:")
logger.info(f" carModel: {detection_dict.get('carModel')}")
logger.info(f" carBrand: {detection_dict.get('carBrand')}")
logger.info(f" bodyType: {detection_dict.get('bodyType')}")
logger.info(f" licensePlateText: {detection_dict.get('licensePlateText')} ← UPDATED")
logger.info(f" licensePlateConfidence: {detection_dict.get('licensePlateConfidence')}")
else:
logger.error("❌ INVALID DETECTION DATA STRUCTURE!")
logger.error(f" Session {session_id} has malformed detection data")
logger.error(f" Detection data keys: {list(detection_data.keys())}")
if 'data' in detection_data:
logger.error(f" Data keys: {list(detection_data['data'].keys())}")
return
# Update timestamp to indicate this is an LPR update
detection_data['timestamp'] = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
# Update all caches with new data
session_detections[session_id] = detection_data.copy()
cached_detections[camera_id] = detection_data.copy()
# CRITICAL: Also update the pipeline state cached detection dict (used by lightweight mode)
if camera_id in session_pipeline_states:
pipeline_state = session_pipeline_states[camera_id]
current_cached_dict = pipeline_state.get("cached_detection_dict", {})
# Update the pipeline cached detection dict with new license plate
updated_dict = current_cached_dict.copy() if current_cached_dict else {}
updated_dict['licensePlateText'] = license_text
pipeline_state["cached_detection_dict"] = updated_dict
logger.info(f"✅ LPR: Updated pipeline state cached_detection_dict for camera {camera_id}")
logger.debug(f"🔍 Pipeline cached dict now: {updated_dict}")
else:
logger.warning(f"⚠️ Camera {camera_id} not found in session_pipeline_states - pipeline cache not updated")
logger.info("📡 SENDING UPDATED DETECTION TO BACKEND")
logger.info(f" 📹 Camera ID: {camera_id}")
logger.info(f" 📨 Updated licensePlateText: '{license_text}'")
logger.info(" 🔄 Updated both cache systems:")
logger.info(f" 1⃣ cached_detections[{camera_id}] ✅")
logger.info(f" 2⃣ session_pipeline_states[{camera_id}].cached_detection_dict ✅")
# Log the full message being sent
logger.info("📋 Updated detection data in cache:")
logger.info(json.dumps(detection_data, indent=2))
logger.info("✅ ALL CACHES UPDATED!")
logger.info(f" 🎯 Lightweight mode will now use updated licensePlateText")
logger.info(f" 📤 Backend will receive: licensePlateText = '{license_text}'")
logger.info(" 🔄 Both cache systems synchronized with LPR data")
logger.info("=" * 60)
logger.info("🏁 LPR PROCESSING COMPLETE")
logger.info(f" Session: {session_id}")
logger.info(f" License: '{license_text}'")
logger.info(f" Status: ✅ SUCCESS - DETECTION CACHE UPDATED")
logger.info("=" * 60)
except Exception as e:
logger.error("=" * 60)
logger.error("❌ LPR PROCESSING FAILED")
logger.error("=" * 60)
logger.error(f"Error: {e}")
import traceback
logger.error(f"Traceback: {traceback.format_exc()}")
logger.error("=" * 60)
# LPR integration now uses cached detection mechanism instead of direct WebSocket sending
def license_results_listener():
"""Background thread to listen for LPR results from Redis"""
logger.info("🎧 Starting LPR listener thread...")
while True:
try:
redis_client = create_redis_connection()
if not redis_client:
logger.error("❌ No Redis connection available for LPR listener")
time.sleep(10)
continue
pubsub = redis_client.pubsub()
pubsub.subscribe("license_results")
logger.info("✅ LPR listener subscribed to 'license_results' channel")
for message in pubsub.listen():
try:
if message['type'] == 'message':
logger.info("🔔 REDIS MESSAGE RECEIVED!")
logger.info(f" 📡 Channel: {message['channel']}")
logger.info(f" 📥 Raw data: {message['data']}")
logger.info(f" 📏 Data size: {len(str(message['data']))} bytes")
try:
lpr_data = json.loads(message['data'])
logger.info("✅ JSON parsing successful")
logger.info("🏁 Starting LPR processing...")
process_license_result(lpr_data)
logger.info("✅ LPR processing completed")
except json.JSONDecodeError as e:
logger.error("❌ JSON PARSING FAILED!")
logger.error(f" Error: {e}")
logger.error(f" Raw data: {message['data']}")
logger.error(f" Data type: {type(message['data'])}")
except Exception as e:
logger.error("❌ LPR PROCESSING ERROR!")
logger.error(f" Error: {e}")
import traceback
logger.error(f" Traceback: {traceback.format_exc()}")
elif message['type'] == 'subscribe':
logger.info(f"📡 LPR listener subscribed to channel: {message['channel']}")
logger.info("🎧 Ready to receive license plate results...")
elif message['type'] == 'unsubscribe':
logger.warning(f"📡 LPR listener unsubscribed from channel: {message['channel']}")
else:
logger.debug(f"📡 Redis message type: {message['type']}")
except Exception as e:
logger.error(f"❌ Error in LPR message processing loop: {e}")
break
except redis.exceptions.ConnectionError as e:
logger.error(f"❌ Redis connection lost in LPR listener: {e}")
time.sleep(5) # Wait before reconnecting
except Exception as e:
logger.error(f"❌ Unexpected error in LPR listener: {e}")
time.sleep(10)
logger.warning("🛑 LPR listener thread stopped")
def cleanup_expired_sessions():
"""Remove sessions older than TTL (10 minutes)"""
try:
current_time = time.time()
ttl_seconds = 600 # 10 minutes
expired_sessions = [
session_id for session_id, timestamp in detection_timestamps.items()
if current_time - timestamp > ttl_seconds
]
if expired_sessions:
logger.info(f"🧹 Cleaning up {len(expired_sessions)} expired sessions")
for session_id in expired_sessions:
session_detections.pop(session_id, None)
camera_id = session_to_camera.pop(session_id, None)
detection_timestamps.pop(session_id, None)
logger.debug(f"Cleaned up expired session: {session_id} (camera: {camera_id})")
else:
logger.debug(f"🧹 No expired sessions to clean up ({len(detection_timestamps)} active)")
except Exception as e:
logger.error(f"❌ Error in session cleanup: {e}")
def cleanup_timer():
"""Background thread for periodic session cleanup"""
logger.info("⏰ Starting session cleanup timer thread...")
while True:
try:
time.sleep(120) # Run cleanup every 2 minutes
cleanup_expired_sessions()
except Exception as e:
logger.error(f"❌ Error in cleanup timer: {e}")
time.sleep(120)
def start_lpr_integration():
"""Start LPR integration threads"""
global lpr_listener_thread, cleanup_timer_thread
# Start LPR listener thread
lpr_listener_thread = threading.Thread(target=license_results_listener, daemon=True, name="LPR-Listener")
lpr_listener_thread.start()
logger.info("✅ LPR listener thread started")
# Start cleanup timer thread
cleanup_timer_thread = threading.Thread(target=cleanup_timer, daemon=True, name="Session-Cleanup")
cleanup_timer_thread.start()
logger.info("✅ Session cleanup timer thread started")
WORKER_TIMEOUT_MS = 10000 WORKER_TIMEOUT_MS = 10000
logger.debug(f"Heartbeat interval set to {HEARTBEAT_INTERVAL} seconds") logger.debug(f"Heartbeat interval set to {HEARTBEAT_INTERVAL} seconds")
@ -335,6 +669,37 @@ def update_session_pipeline_mode(camera_id, new_mode, session_id=None):
#################################################### ####################################################
# REST API endpoint for image retrieval # REST API endpoint for image retrieval
#################################################### ####################################################
@app.get("/lpr/debug")
async def get_lpr_debug_info():
"""Debug endpoint to inspect LPR integration state"""
try:
return {
"status": "success",
"lpr_integration_started": lpr_integration_started,
"redis_connected": redis_client_global is not None and redis_client_global.ping() if redis_client_global else False,
"active_sessions": len(session_detections),
"session_details": {
session_id: {
"camera_id": session_to_camera.get(session_id, "unknown"),
"timestamp": detection_timestamps.get(session_id, 0),
"age_seconds": time.time() - detection_timestamps.get(session_id, time.time()),
"has_license": session_detections[session_id].get('data', {}).get('detection', {}).get('licensePlateText') is not None
}
for session_id in session_detections.keys()
},
"thread_status": {
"lpr_listener_alive": lpr_listener_thread.is_alive() if lpr_listener_thread else False,
"cleanup_timer_alive": cleanup_timer_thread.is_alive() if cleanup_timer_thread else False
},
"cached_detections_by_camera": list(cached_detections.keys())
}
except Exception as e:
return {
"status": "error",
"error": str(e),
"lpr_integration_started": lpr_integration_started
}
@app.get("/camera/{camera_id}/image") @app.get("/camera/{camera_id}/image")
async def get_camera_image(camera_id: str): async def get_camera_image(camera_id: str):
""" """
@ -889,6 +1254,15 @@ async def detect(websocket: WebSocket):
if detection_dict is not None and detection_result.get("class") != "none": if detection_dict is not None and detection_result.get("class") != "none":
cached_detections[camera_id] = detection_data.copy() cached_detections[camera_id] = detection_data.copy()
logger.debug(f"Cached detection for camera {camera_id}: {detection_dict}") logger.debug(f"Cached detection for camera {camera_id}: {detection_dict}")
# Enhanced caching: Store by session_id for LPR integration
session_id = detection_data.get('sessionId')
if session_id:
session_id_str = str(session_id)
session_detections[session_id_str] = detection_data.copy()
session_to_camera[session_id_str] = camera_id
detection_timestamps[session_id_str] = time.time()
logger.debug(f"🔑 Cached detection for LPR by session_id {session_id_str}: {camera_id}")
else: else:
# Don't cache null/none detections - let them reset properly # Don't cache null/none detections - let them reset properly
cached_detections.pop(camera_id, None) cached_detections.pop(camera_id, None)
@ -1259,6 +1633,16 @@ async def detect(websocket: WebSocket):
models[camera_id] = {} models[camera_id] = {}
models[camera_id][modelId] = model_tree models[camera_id][modelId] = model_tree
# Start LPR integration threads after first model is loaded (only once)
global lpr_integration_started
if not lpr_integration_started and hasattr(model_tree, 'get') and model_tree.get('redis_client'):
try:
start_lpr_integration()
lpr_integration_started = True
logger.info("🚀 LPR integration started after first model load")
except Exception as e:
logger.error(f"❌ Failed to start LPR integration: {e}")
# Create stream (same logic as original) # Create stream (same logic as original)
if camera_id and (rtsp_url or snapshot_url) and len(streams) < max_streams: if camera_id and (rtsp_url or snapshot_url) and len(streams) < max_streams:
camera_url = snapshot_url if snapshot_url else rtsp_url camera_url = snapshot_url if snapshot_url else rtsp_url
@ -1572,6 +1956,15 @@ async def detect(websocket: WebSocket):
models[camera_id][modelId] = model_tree models[camera_id][modelId] = model_tree
logger.info(f"Successfully loaded model {modelId} for camera {camera_id}") logger.info(f"Successfully loaded model {modelId} for camera {camera_id}")
logger.debug(f"Model extraction directory: {extraction_dir}") logger.debug(f"Model extraction directory: {extraction_dir}")
# Start LPR integration threads after first model is loaded (only once)
if not lpr_integration_started and hasattr(model_tree, 'get') and model_tree.get('redis_client'):
try:
start_lpr_integration()
lpr_integration_started = True
logger.info("🚀 LPR integration started after first model load")
except Exception as e:
logger.error(f"❌ Failed to start LPR integration: {e}")
if camera_id and (rtsp_url or snapshot_url): if camera_id and (rtsp_url or snapshot_url):
with streams_lock: with streams_lock:
# Determine camera URL for shared stream management # Determine camera URL for shared stream management
@ -1798,6 +2191,47 @@ async def detect(websocket: WebSocket):
logger.debug(f"Session IDs after update: {session_ids}") logger.debug(f"Session IDs after update: {session_ids}")
logger.debug(f"🎯 CMS Backend created sessionId {session_id} after receiving detection data") logger.debug(f"🎯 CMS Backend created sessionId {session_id} after receiving detection data")
# 🔑 LPR Integration: Retroactively cache the last detection by this new session_id
session_id_str = str(session_id)
logger.info(f"🔑 LPR: Attempting to retroactively cache detection for session_id {session_id_str}")
# Find cameras associated with this display
display_cameras = []
with streams_lock:
for camera_id, stream in streams.items():
if stream["subscriptionIdentifier"].startswith(display_identifier + ";"):
display_cameras.append(camera_id)
logger.debug(f"🔍 Found {len(display_cameras)} cameras for display {display_identifier}: {display_cameras}")
# Cache the most recent detection for each camera by the new session_id
cached_count = 0
for camera_id in display_cameras:
if camera_id in cached_detections:
detection_data = cached_detections[camera_id].copy()
# Add sessionId to the detection data
detection_data['sessionId'] = session_id
# Cache by session_id for LPR lookup
session_detections[session_id_str] = detection_data
session_to_camera[session_id_str] = camera_id
detection_timestamps[session_id_str] = time.time()
cached_count += 1
logger.info(f"✅ LPR: Cached detection for session_id {session_id_str} -> camera {camera_id}")
logger.debug(f"🔍 Detection data: {detection_data.get('data', {}).get('detection', {})}")
else:
logger.debug(f"⚠️ No cached detection available for camera {camera_id}")
if cached_count > 0:
logger.info(f"🎉 LPR: Successfully cached {cached_count} detection(s) for session_id {session_id_str}")
logger.info(f"📊 Total LPR sessions now cached: {len(session_detections)}")
else:
logger.warning(f"⚠️ LPR: No detections could be cached for session_id {session_id_str}")
logger.warning(f" Display cameras: {display_cameras}")
logger.warning(f" Available cached detections: {list(cached_detections.keys())}")
# Clear waiting state for cameras associated with this display # Clear waiting state for cameras associated with this display
with streams_lock: with streams_lock:
affected_cameras = [] affected_cameras = []
@ -1881,4 +2315,8 @@ async def detect(websocket: WebSocket):
cached_full_pipeline_results.clear() cached_full_pipeline_results.clear()
session_pipeline_states.clear() session_pipeline_states.clear()
session_ids.clear() session_ids.clear()
# Clean up LPR integration caches
session_detections.clear()
session_to_camera.clear()
detection_timestamps.clear()
logger.info("WebSocket connection closed") logger.info("WebSocket connection closed")

92
test_lpr.py Normal file
View file

@ -0,0 +1,92 @@
#!/usr/bin/env python3
"""
Test script for LPR (License Plate Recognition) integration.
This script simulates LPR service sending license plate results to Redis.
"""
import json
import time
import redis
import sys
import os
def main():
"""Test LPR integration by sending mock license plate results to Redis"""
# Redis configuration (should match pipeline.json)
redis_config = {
'host': '10.100.1.3',
'port': 6379,
'password': 'FBQgi0i5RevAAMO5Hh66',
'db': 0
}
try:
# Connect to Redis
print("🔌 Connecting to Redis...")
redis_client = redis.Redis(
host=redis_config['host'],
port=redis_config['port'],
password=redis_config['password'],
db=redis_config['db'],
decode_responses=True
)
# Test connection
redis_client.ping()
print(f"✅ Connected to Redis at {redis_config['host']}:{redis_config['port']}")
# Mock LPR results to send
test_cases = [
{
"session_id": "123",
"license_character": "ABC-1234"
},
{
"session_id": "124",
"license_character": "XYZ-5678"
},
{
"session_id": "125",
"license_character": "DEF-9999"
}
]
print("\n🧪 Sending mock LPR results...")
for i, test_case in enumerate(test_cases, 1):
print(f"\n📤 Test {i}: Sending LPR result for session {test_case['session_id']}")
print(f" License: {test_case['license_character']}")
# Publish to license_results channel
result = redis_client.publish("license_results", json.dumps(test_case))
print(f" 📡 Published to 'license_results' channel (subscribers: {result})")
if result == 0:
print(" ⚠️ Warning: No subscribers listening to 'license_results' channel")
print(" 💡 Make sure the detector worker is running and has loaded a model")
# Wait between test cases
if i < len(test_cases):
print(" ⏳ Waiting 3 seconds before next test...")
time.sleep(3)
print(f"\n✅ Completed {len(test_cases)} test cases")
print("🔍 Check detector worker logs for LPR processing messages:")
print(" - Look for '🚗 LPR Result received' messages")
print(" - Look for '✅ Updated detection' messages")
print(" - Look for '📤 Sent LPR update to backend' messages")
except redis.exceptions.ConnectionError as e:
print(f"❌ Failed to connect to Redis: {e}")
print("💡 Make sure Redis is running and accessible")
sys.exit(1)
except Exception as e:
print(f"❌ Error during testing: {e}")
sys.exit(1)
if __name__ == "__main__":
print("🧪 LPR Integration Test Script")
print("=" * 50)
main()

View file

@ -2641,3 +2641,319 @@
2025-08-29 00:56:51,499 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:51Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}} 2025-08-29 00:56:51,499 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:51Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:53,072 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:53Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}} 2025-08-29 00:56:53,072 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:53Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:55,677 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:55Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}} 2025-08-29 00:56:55,677 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:55Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:25:18,643 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 01:25:24,888 [INFO] RX <- {"type":"subscribe","payload":{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"","modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T182524Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=77cda8178a749b675fdf7dea3c86bcd8b8ebe621e536ef52a629036a8c6c29ff","modelName":"bangchak_poc","modelId":21}}
2025-08-29 01:25:31,104 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":180}}
2025-08-29 01:25:50,765 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T182550Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=bab736397b44c34e417b89b0f0ac24fb4f5e2e8526165e2bed5f8db96fa89515","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:25:50,767 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:25:50Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:25:50,806 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 01:25:51,654 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:25:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:25:53,347 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:25:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:25:55,405 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:25:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:25:57,463 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:25:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:25:59,544 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:25:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:01,569 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:03,604 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:05,692 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:05Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:07,622 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:07Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:09,641 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:09Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:11,762 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:13,855 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:15,825 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:17,879 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:19,364 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:19Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:20,766 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T182620Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fcdfc360359e51812f10ef457daafe246ff0cf1224ce68a810bf2b86ad3c2b41","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:26:21,357 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:23,591 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:25,521 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:27,349 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:29,405 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:31,434 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:33,457 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:35,543 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:37,538 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:39,699 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:41,613 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:43,728 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:45,684 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:47,697 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:49,226 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:50,767 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T182650Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=27054eed77f501f2bd8ba385fa9ef06c25816637e89959451ce7ca9630fbde0b","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:26:51,715 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:53,858 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:55,377 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:57,357 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:26:59,377 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:26:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:01,388 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:01Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:01,404 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":181}}
2025-08-29 01:27:04,543 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:04Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:05,672 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:05Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:07,784 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:07Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:09,729 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:09Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:11,782 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:11Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:13,830 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:13Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:15,933 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:15Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:17,444 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:17Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:19,413 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:19Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:20,770 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T182720Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=5b7dcc8a5826932b67cbdad86a33193c5bf683583693cd4eb13a72a610284321","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:27:21,495 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:21Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:23,973 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:23Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:25,499 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:25Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:28,171 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:28Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:29,849 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:29Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:31,742 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:31Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:33,760 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:33Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:35,772 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:35Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:37,915 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:37Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:39,823 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:39Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:41,887 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:41Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:43,864 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:43Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:45,852 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:45Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:47,840 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:47Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:49,932 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:49Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:50,775 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T182750Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f694c3e88d0cb84cc31fef10e22434302bae1bad00637db784eee8086fda30c9","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:27:51,983 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:51Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:54,016 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:54Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:56,009 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:56Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:57,547 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:57Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:27:59,560 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:27:59Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:28:01,643 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:28:01Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:28:03,659 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:28:03Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:28:05,678 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:28:05Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:28:07,656 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:28:07Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:28:09,781 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:28:09Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:32:58,119 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 01:33:12,868 [INFO] RX <- {"type":"subscribe","payload":{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"","modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T183312Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=25dfc895e3fffc1b74d9b8f52935061ee0c2624bb72145e8a55f3ff82fcf0a44","modelName":"bangchak_poc","modelId":21}}
2025-08-29 01:33:19,028 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":181}}
2025-08-29 01:33:20,817 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T183320Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=4bd825f820f88a114f846fac06160b0f143d1d6289c51c4db38a7b5640dd5a3b","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:33:20,817 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:20Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:20,837 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 01:33:21,800 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:23,455 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:24,975 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:24Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:27,039 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:29,158 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:31,101 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:33,204 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:35,224 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:37,148 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:39,235 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:41,243 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:43,268 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:45,381 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:47,414 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:49,476 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:50,821 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T183350Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=cc8495b754abb47a097c85106b9295300d95512186f1532e87d4fc56a1bf3fce","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:33:51,454 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:53,515 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:55,515 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:57,506 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:33:59,504 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:33:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:01,558 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:03,638 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:05,776 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:05Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:07,324 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:07Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:09,210 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:09Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:11,319 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:13,319 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:15,359 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:17,356 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:19,438 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:19Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:20,823 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T183420Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f61e4d74b83b18686d5923c2be451676db53676d9cc0482c19e403513d91f0f4","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:34:21,410 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:23,501 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:25,583 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:27,565 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:29,491 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:31,537 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:33,562 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:35,585 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:37,653 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:39,756 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:41,718 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:43,818 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:45,859 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:47,401 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:49,384 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:50,829 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T183450Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3c1be26323688d8abe54cd74901d85fbda848b92cb20ce869ce32af2cc4582fe","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:34:51,488 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:53,510 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:55,483 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:57,612 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:34:59,633 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:34:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:01,606 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:03,660 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:05,743 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:05Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:07,800 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:07Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:09,813 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:09Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:11,764 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:13,772 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:15,790 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:15Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:15,807 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":182}}
2025-08-29 01:35:18,939 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:18Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:19,564 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:19Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:20,834 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T183520Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=1a5c25f2f05b95da715e56cacdc499abe434d8d01f7afe1f35c993d10a11a99c","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:35:21,575 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:21Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:23,597 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:23Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:25,712 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:25Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:27,710 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:27Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:29,767 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:29Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:35:31,753 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:35:31Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:41:23,243 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 01:42:05,097 [INFO] RX <- {"type":"subscribe","payload":{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"","modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184204Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=04142a6aec2028a31802ea001152662f385ab94c0898ac20c855b7859a3c2183","modelName":"bangchak_poc","modelId":21}}
2025-08-29 01:42:11,217 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":182}}
2025-08-29 01:42:20,887 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184220Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=b1a8a1a143e861aad34ff25d97913f7c077b628600aaae9789b7af73b632a72f","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:42:20,891 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:20Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:20,911 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 01:42:21,792 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:23,528 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:25,555 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:27,093 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:29,131 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:31,170 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:33,232 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:35,258 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:37,277 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:39,311 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:41,429 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:43,383 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:45,509 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:45Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:45,529 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":183}}
2025-08-29 01:42:47,493 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:47,516 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 01:42:49,662 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:50,889 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184250Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f70cb32cf073cd72a5f07ac0081829d79a60b9562d3cae8c63bd4554374ab70f","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:42:51,632 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:53,637 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:55,673 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:57,691 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:42:59,724 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:42:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:01,813 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:03,757 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:05,248 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:05Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:07,297 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:07Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:09,338 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:09Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:11,349 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:13,464 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:15,482 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:17,461 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:19,572 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:19Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:20,894 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184320Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=24952138a2b43f59409b5c9144f371001e866f4806ae06a56bb85b91a558b213","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:43:21,523 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:23,621 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:25,593 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:27,597 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:29,635 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:31,724 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:33,702 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:35,778 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:37,805 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:39,805 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:41,835 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:43,462 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:45,455 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:47,540 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:43:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:43:58,911 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 01:43:59,280 [INFO] RX <- {"type":"subscribe","payload":{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"","modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184358Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=e111189769862219db099bae51d549f4454015c5b493f585eea37bd7533c803d","modelName":"bangchak_poc","modelId":21}}
2025-08-29 01:44:20,903 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184420Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c0161ddfb23b851184f8db8a07037a94fe659684f3d7f6ffe3f1fa66d2dd3790","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:44:20,907 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:20Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:21,412 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:23,146 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:25,270 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:27,228 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:29,299 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:31,279 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:33,338 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:35,443 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:37,479 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:37Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:37,496 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":184}}
2025-08-29 01:44:40,669 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:40Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:41,293 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:41Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:43,316 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:43Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:45,341 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:45Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:47,378 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:47Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:49,433 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:49Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 01:44:50,904 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T184450Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=c837b4b6f5d21130eb72ab35a93982f0e78941fa5143bb186d9e5c961d9f5532","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 01:44:51,464 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T18:44:51Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:01:31,757 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 02:02:05,175 [INFO] RX <- {"type":"subscribe","payload":{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"","modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T190204Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6619c62fd0777dc9e20829d043cd9d025c0f9cdded146342ea9bf9a632cbcd29","modelName":"bangchak_poc","modelId":21}}
2025-08-29 02:02:13,360 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":184}}
2025-08-29 02:02:21,017 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T190220Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=0df8a7ed3ab0ab1cb7510508107902c029d9dc8a886228d7e3fa8b79917066a0","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 02:02:21,038 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:21,064 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 02:02:23,295 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:23,599 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:25,565 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:27,545 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:30,125 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:30Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:31,729 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:33,740 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:35,703 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:38,242 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:38Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:39,810 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:41,862 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:43,830 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:45,912 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:48,041 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:48Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:49,915 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:51,022 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T190250Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=5bbd005b66db6f9830b70f131b43d1d816f4f2d019c5d374d1c468380d24ec08","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 02:02:51,978 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:53,929 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:56,086 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:56Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:02:58,029 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:02:58Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:00,051 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:00Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:02,086 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:02Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:04,138 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:04Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:06,303 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:06Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:08,251 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:08Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:10,316 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:10Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:12,337 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:12Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:13,733 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:15,669 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:17,710 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:19,800 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:19Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:21,020 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T190320Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=48c0909f723371a0d24a6c354d6a134a44ec16e40a823ea23c5f8aaf751fd5c3","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 02:03:21,808 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:23,831 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:25,855 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:25Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:25,876 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":185}}
2025-08-29 02:03:29,042 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:29Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:29,669 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:29Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:31,705 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:31Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:33,801 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:33Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:35,778 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:35Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:37,807 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:37Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:39,844 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:39Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:03:41,898 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:03:41Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:09:37,133 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 02:10:17,157 [INFO] RX <- {"type":"subscribe","payload":{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"","modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T191016Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=5ebceac0a2aa8f1862161d7a8e32dcec6a77594cb9ec648d08585673df65239c","modelName":"bangchak_poc","modelId":21}}
2025-08-29 02:10:24,522 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":185}}
2025-08-29 02:10:24,523 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T191020Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=1339bbc74caf57c36aa1abbcd09ec3db5a71ba4f37bc7189ebd27dca8a926156","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 02:10:24,525 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:24Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:24,600 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 02:10:25,823 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:27,001 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:29,125 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:31,087 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:33,148 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:35,329 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:37,467 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:39,316 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:41,489 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:43,216 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:45,271 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:47,274 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:49,378 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:50,824 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:50Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:51,071 [INFO] RX <- {"type":"setSubscriptionList","subscriptions":[{"subscriptionIdentifier":"test2;webcam-local-01","rtspUrl":"rtsp://10.101.1.4:8554/stream","snapshotUrl":"http://10.101.1.4:8080/snapshot","snapshotInterval":2000,"modelUrl":"https://s3.adsist.net/adsist-cms-staging/models/bangchak_poc-1756312318569.mpta?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=cms-1752937116-2480%2F20250828%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250828T191050Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6b5df3332e3e9f7caff96a862b1bbe1447d8b727ea0b0522b887dbf3361893c0","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 02:10:52,861 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:52Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:54,888 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:54Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:56,959 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:56Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:10:59,052 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:10:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:11:01,018 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:11:01Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:11:01,034 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":186}}
2025-08-29 02:11:04,269 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:11:04Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:11:05,490 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:11:05Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":"\u0e0e\u0e2840 314","licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:11:06,890 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:11:06Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":"\u0e0e\u0e2840 314","licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:11:08,913 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:11:08Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":"\u0e0e\u0e2840 314","licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 02:11:11,049 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T19:11:11Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":"\u0e0e\u0e2840 314","licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}