This commit is contained in:
Pongsatorn 2025-08-29 00:57:32 +07:00
parent 85b49ddf0f
commit 39394caa8e
3 changed files with 249 additions and 15 deletions

View file

@ -80,37 +80,50 @@ class DatabaseManager:
try: try:
cur = self.connection.cursor() cur = self.connection.cursor()
# Build the UPDATE query dynamically # Build the INSERT and UPDATE query dynamically
insert_placeholders = []
insert_values = [key_value] # Start with key_value
set_clauses = [] set_clauses = []
values = [] update_values = []
for field, value in fields.items(): for field, value in fields.items():
if value == "NOW()": if value == "NOW()":
# Special handling for NOW()
insert_placeholders.append("NOW()")
set_clauses.append(f"{field} = NOW()") set_clauses.append(f"{field} = NOW()")
else: else:
insert_placeholders.append("%s")
insert_values.append(value)
set_clauses.append(f"{field} = %s") set_clauses.append(f"{field} = %s")
values.append(value) update_values.append(value)
# Add schema prefix if table doesn't already have it # Add schema prefix if table doesn't already have it
full_table_name = table if '.' in table else f"gas_station_1.{table}" full_table_name = table if '.' in table else f"gas_station_1.{table}"
# Build the complete query
query = f""" query = f"""
INSERT INTO {full_table_name} ({key_field}, {', '.join(fields.keys())}) INSERT INTO {full_table_name} ({key_field}, {', '.join(fields.keys())})
VALUES (%s, {', '.join(['%s'] * len(fields))}) VALUES (%s, {', '.join(insert_placeholders)})
ON CONFLICT ({key_field}) ON CONFLICT ({key_field})
DO UPDATE SET {', '.join(set_clauses)} DO UPDATE SET {', '.join(set_clauses)}
""" """
# Add key_value to the beginning of values list # Combine values for the query: insert_values + update_values
all_values = [key_value] + list(fields.values()) + values all_values = insert_values + update_values
logger.debug(f"SQL Query: {query}")
logger.debug(f"Values: {all_values}")
cur.execute(query, all_values) cur.execute(query, all_values)
self.connection.commit() self.connection.commit()
cur.close() cur.close()
logger.info(f"Updated {table} for {key_field}={key_value}") logger.info(f"Updated {table} for {key_field}={key_value} with fields: {fields}")
return True return True
except Exception as e: except Exception as e:
logger.error(f"Failed to execute update on {table}: {e}") logger.error(f"❌ Failed to execute update on {table}: {e}")
logger.debug(f"Query: {query if 'query' in locals() else 'Query not built'}")
logger.debug(f"Values: {all_values if 'all_values' in locals() else 'Values not prepared'}")
if self.connection: if self.connection:
self.connection.rollback() self.connection.rollback()
return False return False

View file

@ -453,6 +453,7 @@ def execute_postgresql_update_combined(node, action, detection_result, branch_re
key_value = key_value_template.format(**action_context) key_value = key_value_template.format(**action_context)
logger.info(f"Executing database update: table={table}, {key_field}={key_value}") logger.info(f"Executing database update: table={table}, {key_field}={key_value}")
logger.debug(f"Available branch results: {list(branch_results.keys())}")
# Process field mappings # Process field mappings
mapped_fields = {} mapped_fields = {}
@ -461,26 +462,38 @@ def execute_postgresql_update_combined(node, action, detection_result, branch_re
mapped_value = resolve_field_mapping(value_template, branch_results, action_context) mapped_value = resolve_field_mapping(value_template, branch_results, action_context)
if mapped_value is not None: if mapped_value is not None:
mapped_fields[db_field] = mapped_value mapped_fields[db_field] = mapped_value
logger.debug(f"Mapped field: {db_field} = {mapped_value}") logger.info(f"Mapped field: {db_field} = {mapped_value}")
else: else:
logger.warning(f"Could not resolve field mapping for {db_field}: {value_template}") logger.warning(f"Could not resolve field mapping for {db_field}: {value_template}")
logger.debug(f"Available branch results: {branch_results}")
except Exception as e: except Exception as e:
logger.error(f"Error mapping field {db_field} with template '{value_template}': {e}") logger.error(f"Error mapping field {db_field} with template '{value_template}': {e}")
import traceback
logger.debug(f"Field mapping error traceback: {traceback.format_exc()}")
if not mapped_fields: if not mapped_fields:
logger.warning("No fields mapped successfully, skipping database update") logger.warning("No fields mapped successfully, skipping database update")
logger.debug(f"Branch results available: {branch_results}")
logger.debug(f"Field templates: {fields}")
return return
# Add updated_at field automatically
mapped_fields["updated_at"] = "NOW()"
# Execute the database update # Execute the database update
logger.info(f"Attempting database update with fields: {mapped_fields}")
success = node["db_manager"].execute_update(table, key_field, key_value, mapped_fields) success = node["db_manager"].execute_update(table, key_field, key_value, mapped_fields)
if success: if success:
logger.info(f"Successfully updated database: {table} with {len(mapped_fields)} fields") logger.info(f"✅ Successfully updated database: {table} with {len(mapped_fields)} fields")
logger.info(f"Updated fields: {mapped_fields}")
else: else:
logger.error(f"Failed to update database: {table}") logger.error(f"❌ Failed to update database: {table}")
logger.error(f"Attempted update with: {key_field}={key_value}, fields={mapped_fields}")
except KeyError as e: except KeyError as e:
logger.error(f"Missing required field in postgresql_update_combined action: {e}") logger.error(f"Missing required field in postgresql_update_combined action: {e}")
logger.debug(f"Action config: {action}")
except Exception as e: except Exception as e:
logger.error(f"Error in postgresql_update_combined action: {e}") logger.error(f"Error in postgresql_update_combined action: {e}")
import traceback import traceback
@ -489,28 +502,68 @@ def execute_postgresql_update_combined(node, action, detection_result, branch_re
def resolve_field_mapping(value_template, branch_results, action_context): def resolve_field_mapping(value_template, branch_results, action_context):
"""Resolve field mapping templates like {car_brand_cls_v1.brand}.""" """Resolve field mapping templates like {car_brand_cls_v1.brand}."""
try: try:
logger.debug(f"Resolving field mapping: '{value_template}'")
logger.debug(f"Available branch results: {list(branch_results.keys())}")
# Handle simple context variables first (non-branch references) # Handle simple context variables first (non-branch references)
if not '.' in value_template: if not '.' in value_template:
return value_template.format(**action_context) result = value_template.format(**action_context)
logger.debug(f"Simple template resolved: '{value_template}' -> '{result}'")
return result
# Handle branch result references like {model_id.field} # Handle branch result references like {model_id.field}
import re import re
branch_refs = re.findall(r'\{([^}]+\.[^}]+)\}', value_template) branch_refs = re.findall(r'\{([^}]+\.[^}]+)\}', value_template)
logger.debug(f"Found branch references: {branch_refs}")
resolved_template = value_template resolved_template = value_template
for ref in branch_refs: for ref in branch_refs:
try: try:
model_id, field_name = ref.split('.', 1) model_id, field_name = ref.split('.', 1)
logger.debug(f"Processing branch reference: model_id='{model_id}', field_name='{field_name}'")
if model_id in branch_results: if model_id in branch_results:
branch_data = branch_results[model_id] branch_data = branch_results[model_id]
logger.debug(f"Branch '{model_id}' data: {branch_data}")
if field_name in branch_data: if field_name in branch_data:
field_value = branch_data[field_name] field_value = branch_data[field_name]
resolved_template = resolved_template.replace(f'{{{ref}}}', str(field_value)) resolved_template = resolved_template.replace(f'{{{ref}}}', str(field_value))
logger.debug(f"Resolved {ref} to {field_value}") logger.info(f"Resolved {ref} to '{field_value}'")
else: else:
logger.warning(f"Field '{field_name}' not found in branch '{model_id}' results. Available fields: {list(branch_data.keys())}") logger.warning(f"Field '{field_name}' not found in branch '{model_id}' results.")
return None logger.debug(f"Available fields in '{model_id}': {list(branch_data.keys())}")
# Try alternative field names based on the class result and model type
if isinstance(branch_data, dict):
fallback_value = None
# First, try the exact field name
if field_name in branch_data:
fallback_value = branch_data[field_name]
# Then try 'class' field as fallback
elif 'class' in branch_data:
fallback_value = branch_data['class']
logger.info(f"Using 'class' field as fallback for '{field_name}': '{fallback_value}'")
# For brand models, also check if the class name exists as a key
elif field_name == 'brand' and branch_data.get('class') in branch_data:
fallback_value = branch_data[branch_data['class']]
logger.info(f"Found brand value using class name as key: '{fallback_value}'")
# For body_type models, also check if the class name exists as a key
elif field_name == 'body_type' and branch_data.get('class') in branch_data:
fallback_value = branch_data[branch_data['class']]
logger.info(f"Found body_type value using class name as key: '{fallback_value}'")
if fallback_value is not None:
resolved_template = resolved_template.replace(f'{{{ref}}}', str(fallback_value))
logger.info(f"✅ Resolved {ref} to '{fallback_value}' (using fallback)")
else:
logger.error(f"No suitable field found for '{field_name}' in branch '{model_id}'")
logger.debug(f"Branch data structure: {branch_data}")
return None
else:
logger.error(f"Branch data for '{model_id}' is not a dictionary: {type(branch_data)}")
return None
else: else:
logger.warning(f"Branch '{model_id}' not found in results. Available branches: {list(branch_results.keys())}") logger.warning(f"Branch '{model_id}' not found in results. Available branches: {list(branch_results.keys())}")
return None return None
@ -521,6 +574,7 @@ def resolve_field_mapping(value_template, branch_results, action_context):
# Format any remaining simple variables # Format any remaining simple variables
try: try:
final_value = resolved_template.format(**action_context) final_value = resolved_template.format(**action_context)
logger.debug(f"Final resolved value: '{final_value}'")
return final_value return final_value
except KeyError as e: except KeyError as e:
logger.warning(f"Could not resolve context variable in template: {e}") logger.warning(f"Could not resolve context variable in template: {e}")
@ -528,6 +582,8 @@ def resolve_field_mapping(value_template, branch_results, action_context):
except Exception as e: except Exception as e:
logger.error(f"Error resolving field mapping '{value_template}': {e}") logger.error(f"Error resolving field mapping '{value_template}': {e}")
import traceback
logger.debug(f"Field mapping error traceback: {traceback.format_exc()}")
return None return None
def run_detection_with_tracking(frame, node, context=None): def run_detection_with_tracking(frame, node, context=None):
@ -1720,6 +1776,12 @@ def run_pipeline(frame, node: dict, return_bbox: bool=False, context=None):
if result: if result:
branch_results[br["modelId"]] = result branch_results[br["modelId"]] = result
logger.info(f"Branch {br['modelId']} completed: {result}") logger.info(f"Branch {br['modelId']} completed: {result}")
# Collect nested branch results if they exist
if "branch_results" in result:
for nested_id, nested_result in result["branch_results"].items():
branch_results[nested_id] = nested_result
logger.info(f"Collected nested branch result: {nested_id} = {nested_result}")
except Exception as e: except Exception as e:
logger.error(f"Branch {br['modelId']} failed: {e}") logger.error(f"Branch {br['modelId']} failed: {e}")
else: else:
@ -1760,6 +1822,12 @@ def run_pipeline(frame, node: dict, return_bbox: bool=False, context=None):
if result: if result:
branch_results[br["modelId"]] = result branch_results[br["modelId"]] = result
logger.info(f"Branch {br['modelId']} completed: {result}") logger.info(f"Branch {br['modelId']} completed: {result}")
# Collect nested branch results if they exist
if "branch_results" in result:
for nested_id, nested_result in result["branch_results"].items():
branch_results[nested_id] = nested_result
logger.info(f"Collected nested branch result: {nested_id} = {nested_result}")
else: else:
logger.warning(f"Branch {br['modelId']} returned no result") logger.warning(f"Branch {br['modelId']} returned no result")
except Exception as e: except Exception as e:

View file

@ -2488,3 +2488,156 @@
2025-08-29 00:24:02,780 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:24:02Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}} 2025-08-29 00:24:02,780 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:24:02Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:24:04,768 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:24:04Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}} 2025-08-29 00:24:04,768 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:24:04Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:24:06,853 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:24:06Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}} 2025-08-29 00:24:06,853 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:24:06Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:44:50,080 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 00:45:37,006 [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=20250828T174536Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d7385afdfb83034afac9b33df61c4e5835521f8a0217494e233233044e1cb8b0","modelName":"bangchak_poc","modelId":21}}
2025-08-29 00:45:50,496 [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=20250828T174550Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fb48a037b732f2aab4f079dd8281842138f8080ec1f1eef09c74eb1dab7edbef","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:45:50,499 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:45:50Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:45:51,613 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:45:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:45:52,837 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:45:52Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:45:54,867 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:45:54Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:45:56,889 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:45:56Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:45:58,913 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:45:58Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:01,049 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:03,048 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:05,037 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:05Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:07,073 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:07Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:09,206 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:09Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:11,136 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:13,178 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:15,162 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:17,187 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:19,279 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:19Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:20,499 [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=20250828T174620Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a7413f35ff1c956c3d33850934f51d07e4c64a4269241510ccd1a6071c1d34d0","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:46:21,349 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:23,367 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:24,843 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:24Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:26,896 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:26Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:28,985 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:28Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:30,916 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:30Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:32,970 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:32Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:34,978 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:34Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:37,039 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:39,119 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:41,170 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:43,168 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:45,367 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:47,213 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:49,258 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:50,499 [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=20250828T174650Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a5e22283c1c2ecf6bff3ab974e5e8c545ad09d4d27be2a1a7cc0339debc29476","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:46:51,411 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:53,328 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:55,358 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:57,399 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:46:59,393 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:46:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:01,429 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:03,506 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:05,059 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:05Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:07,535 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:07Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:09,025 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:09Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:11,528 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:13,567 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:15,122 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:17,137 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:19,093 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:19Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:20,501 [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=20250828T174720Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=92da330bc506689482d2eb95d3120884d2b5a6ccf927366d4d33fa42e0c146d0","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:47:21,159 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:21Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:23,238 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:23Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:25,219 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:25Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:27,191 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:27Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:29,342 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:29Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:31,343 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:31Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:33,295 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:33Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:35,311 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:35Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:37,352 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:37Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:39,350 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:39Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:41,349 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:41Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:43,364 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:43Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:45,394 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:45Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:47,418 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:47Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:49,460 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:49Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:50,502 [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=20250828T174750Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=aa58dfd8031b7b16f5f75e39649b40bff56005e7349653c1e83c57f67f477bce","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:47:51,493 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:51Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:53,577 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:55,604 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:57,658 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:47:59,606 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:47:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:01,609 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:01Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:01,627 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":179}}
2025-08-29 00:48:04,696 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:04Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:05,335 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:05Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:07,399 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:07Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:09,355 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:09Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:11,406 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:11Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:13,353 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:13Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:16,126 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:16Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:18,180 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:18Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:20,122 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:20Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:20,504 [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=20250828T174820Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=90185d3c26db35e219b2c50f5d5d723cf29d2ffd5625441b55c1fafe5786c2b3","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:48:22,060 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:22Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:23,985 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:23Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:25,745 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:25Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:27,816 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:27Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:29,791 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:29Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:31,698 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:31Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:33,826 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:33Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:35,764 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:35Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:37,792 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:37Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:39,886 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:39Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:41,898 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:41Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:43,428 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:43Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:45,506 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:45Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:47,490 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:47Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:49,455 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:49Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:50,505 [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=20250828T174850Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=154604ec766d1712a5cb11ee62821e6d72ed139ff35e3c354e22efa228f20d85","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:48:51,601 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:51Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:53,573 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:53Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:55,575 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:55Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:57,600 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:57Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:48:59,698 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:48:59Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:49:01,637 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:49:01Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:49:03,663 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:49:03Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:49:05,709 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:49:05Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:49:07,782 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:49:07Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:49:09,743 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:49:09Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:49:11,778 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:49:11Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:55:30,339 [INFO] WebSocket communication logging started - TX/RX format
2025-08-29 00:55:45,033 [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=20250828T175544Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a74801e0787ca9cbe870feb9e00c7893e00a49c7c2bf5afef41fa0d78ec53d6b","modelName":"bangchak_poc","modelId":21}}
2025-08-29 00:55:52,252 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":179}}
2025-08-29 00:55:52,259 [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=20250828T175550Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=08671b3a25d767b5d533529854f4e6ff67196bcaf623d58cfe45804964287ec3","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:55:52,268 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:55:52Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:55:52,320 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":null}}
2025-08-29 00:55:53,749 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:55:53Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:55:55,021 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:55:55Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:55:57,007 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:55:57Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:55:59,111 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:55:59Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:01,196 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:01Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:03,046 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:03Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:04,945 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:04Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:06,974 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:06Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:08,996 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:08Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:11,064 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:11Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:13,073 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:13Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:15,108 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:15Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:17,035 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:17Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:18,570 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:18Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:20,640 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:20Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:20,642 [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=20250828T175620Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=5c9e84b73a2b9819f0f83137a231f6c2406492801a76810fccb519d0f3fb2c60","modelId":21,"modelName":"bangchak_poc"}]}
2025-08-29 00:56:22,666 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:22Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:24,607 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:24Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:26,711 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:26Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:28,699 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:28Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:30,802 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:30Z","data":{"detection":null,"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:32,735 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:32Z","data":{"detection":{},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:32,752 [INFO] RX <- {"type":"setSessionId","payload":{"displayIdentifier":"test2","sessionId":180}}
2025-08-29 00:56:35,903 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:35Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:37,166 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:37Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:39,095 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:39Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:41,102 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:41Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:43,235 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:43Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:45,152 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:45Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:47,227 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:47Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:49,311 [INFO] TX -> {"type":"imageDetection","subscriptionIdentifier":"test2;webcam-local-01","timestamp":"2025-08-28T17:56:49Z","data":{"detection":{"carModel":null,"carBrand":"Toyota","carYear":null,"bodyType":"Pickup","licensePlateText":null,"licensePlateConfidence":null},"modelId":21,"modelName":"bangchak_poc"}}
2025-08-29 00:56:50,528 [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=20250828T175650Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=0f91872dad6282008235cdad0acd556eb785939cbf859895bbac9d4cada7f785","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: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"}}