Avigilon POS

Avigilon POS

ID: uniflow.plugin.avigilonpos • Category: Financial & POS • Version: v1.0.0 • Min Uniflow Version: Uniflow ≥ v1.4.0

Avigilon POS Plugin Reference Manual

1. Overview

Plugin Name: Avigilon POS

Type: Security & Video

Identifier: uniflow.plugin.avigilonpos

Description

High-reliability TCP/IP client that connects to an Avigilon Control Center (ACC) Point of Sale (POS) transaction listener and streams formatted transaction text data in real time.

NOTE — Avigilon Control Center POS Integration

Avigilon Control Center (ACC) allows video surveillance streams to be linked with POS transaction logs. Cash registers, cash counters, or automated payment terminals connect via raw TCP/IP sockets to ACC's POS transaction source. As lines of text are streamed to the listener, ACC displays the text overlaid onto live camera footage, logs transaction data, and indexes receipts for text-based forensic video search.


2. Technical Architecture

The Avigilon POS plugin establishes an outbound raw TCP socket connection to the Avigilon Control Center POS listener. It manages automatic connection supervision, evaluates dynamic text templates against configured Input Points, and emits structured event notifications to the Uniflow Rule Engine.

System Interaction

VISUAL ARCHITECTURE FLOW DIAGRAM
Rendering Flow Architecture Diagram...

Connection Supervisor & Auto-Reconnection Loop

The adapter runs an active background connection supervisor:

  • Socket Health Monitoring: Continuously monitors connection integrity and socket responsiveness to detect unexpected connection drops immediately.
  • Automatic Reconnection: If the connection drops or the remote Avigilon server restarts, the supervisor automatically attempts reconnection according to the configured Reconnect Delay (ms).
  • Active Inbound Reader: Maintains an active read loop on the connected network stream, enabling instant detection of remote host terminations while receiving incoming ACKs or echoes from the listener.

  • 3. Configuration Parameters

    The following settings are configured in the Uniflow Source Editor:

    SettingTypeDefaultDescription
    Friendly NameStringAvigilon POSDescriptive name identifying this POS integration terminal.
    EnabledBooleantrueEnables or disables the source adapter.
    Target Host / IP AddressString127.0.0.1Network IP address or hostname where the Avigilon POS listener is hosted.
    PortInteger24000Target TCP port on which the Avigilon Control Center POS listener accepts incoming connections (1–65535).
    Connect Timeout (ms)Integer3000Maximum wait duration in milliseconds before timing out an initial socket connection attempt.
    Reconnect Delay (ms)Integer5000Delay in milliseconds before attempting to reconnect after a dropped connection.
    Begin TransactionString@Character or string prepended to the start of transactions.
    End TransactionString#\r\nCharacter or string sent as a separate message to close the transaction.
    Transaction Text TemplateString*(Bundled default)*The text template containing {binding_id} placeholder variables and CRLF line terminators.
    Input PointsList*(2 Bundled)*Table of configured input points exposed as writable routes.

    4. Input Points & Data Binding

    Input Points represent discrete data parameters accepted by the plugin (comparable to Data Points in the Modbus plugin).

    Input Point Model

    Each Input Point consists of:

  • Id (Guid): Hidden unique identifier that uniquely identifies the point across the system.
  • Friendly Name (string): Display label used in UI dialogs and the Rule Editor (e.g. COUNT_RESULT).
  • Data Binding ID (string): Unique lowercase alphanumeric identifier matching template placeholders (e.g. count_result).
  • Data Type (enum): Data type for typing and parsing:
  • String
  • Bool
  • Double
  • Int
  • Bundled Default Input Points

    When the plugin is installed, new source instances automatically include two persistent bundled Input Points:

    Friendly NameData Binding IDData TypeStatic Persistent GUID
    COUNT_RESULT  count_result
    ↳Doublee4c8d190-67a3-4e8b-87b4-3a9d2c1f0101
    CURRENCY_CODE  currency_code
    ↳Stringf5d9e201-78b4-4f9c-98c5-4b0e3d2a0202
    NOTE — Deterministic GUID Persistence

    The GUIDs for COUNT_RESULT and CURRENCY_CODE are static constants. They remain 100% deterministic and persistent across different software builds, plugin updates, and service restarts.


    5. Template Engine & Placeholder Syntax

    The plugin includes a dynamic text templating engine:

    Template Syntax

  • Placeholders are enclosed in curly braces: {<data_binding_id>}.
  • Placeholders are matched case-insensitively against configured Input Point binding IDs.
  • Double and floating-point values are rendered with invariant culture formatting (0.##).
  • Literal escape sequences entered into the text template are automatically unescaped before transmission:
  • \r\n ➔ Carriage Return + Line Feed (0x0D 0x0A)
  • \n ➔ Line Feed (0x0A)
  • \r ➔ Carriage Return (0x0D)
  • \t ➔ Horizontal Tab (0x09)
  • Bundled Default Template

    TEXT
    TOTAL:               {count_result} {currency_code}   \r\n
    

    Transaction Framing (Begin & End Transaction)

    In Avigilon Control Center, POS transactions follow a framed lifecycle:

  • Begin Transaction (@): When a transaction is dispatched, the configured Begin Transaction character is prepended to the rendered payload (e.g. @TOTAL: 123.45 EUR\r\n), signaling to the ACC listener that a new transaction has started.
  • End Transaction (#\r\n): Following the transaction payload, the configured End Transaction message is sent as an independent, separate TCP message to close the transaction in ACC. This ensures the live video overlay in ACC displays the transaction and subsequently finalizes the record.
  • Interactive "Send Test Message"

    The Source Editor features a dedicated Send Test Message button located directly beneath the template input area:

  • Connection Validation: When clicked, the editor verifies that the source is active and in the Connected state. If disconnected, an alert directs the user to check network connectivity.
  • Dynamic Placeholders Dialog: When connected, a modal dialog presents input fields for all {binding_id} placeholders detected in the template. Configured Input Points show their friendly names and data types, pre-filled with test values. A live message preview shows the exact rendered payload in real time, including the Begin Transaction prefix and separate closing transaction message.
  • Transmission & Confirmation: Clicking the Send Message button at the bottom of the dialog transmits the rendered payload over the live TCP socket (and schedules the separate closing transaction message). The transmission finishes with a modal confirmation dialog titled "Message Was Sent" (or "Error") with an OK button to close.

  • 6. Exposed Routes & Rule Graph Integration

    This plugin exposes catalog fields across the following rule graph nodes:

    Event Input

    The Event Input node subscribes to real-time transmission notifications and execution status events emitted by the Avigilon POS adapter.

    Human-Readable Event NameEvent Type IdentifierEvent CategoryData TypeExposed Schema Ports & Data TypesDescription
    Data Sent  DataSent
    ↳EventsEvent Object
    status (Bool)
    message (String)
    error (String)
    Timestamp (DateTime)
    Emitted upon every transaction transmission attempt over the TCP socket.

    Output Target

    The Output Target node acts as an action sink node to format and transmit transactions to the Avigilon Control Center POS listener.

    Target NameData TypeAssociated ParametersParameter Data TypeRequiredDescription
    Send Transaction  Json
    ↳COUNT_RESULT (count_result)DoubleFalseBundled default input point for numeric count or transaction amount.
    ↳CURRENCY_CODE (currency_code)StringFalseBundled default input point for currency symbol or code.
    NOTE — Extensibility with Additional Input Points

    Additional Input Points configured in the Source Editor (such as cashier names, terminal identifiers, or receipt line items) are automatically exposed as additional input parameters on the Send Transaction output target node.


    7. Usage Examples

    Scenario A: Kisan Cash Machine Streams Banknote Count to Avigilon POS Video Overlay

    Workflow Overview:

    When a Kisan cash handling machine (e.g. Kisan Newton / K2 / K5 currency sorter) finishes counting a cash deposit, the Kisan CM plugin emits a Count Transaction Event (kisancm.count_completed) containing the transaction amount (Total) and active currency (CurrencyCode).

    Uniflow intercepts this event in the Visual Rule Engine and routes the values directly into the Avigilon POS plugin via its Send Transaction output target:

  • Total is wired to the COUNT_RESULT input port.
  • CurrencyCode is wired to the CURRENCY_CODE input port.
  • The Avigilon POS adapter automatically renders the configured text template:

    TEXT
    TOTAL:               {count_result} {currency_code}   \r\n
    

    prepends the Begin Transaction delimiter (@), transmits the formatted transaction over raw TCP to the Avigilon Control Center POS listener, and follows with the separate End Transaction message (#\r\n). ACC displays the receipt text overlay directly onto the teller's surveillance video stream in real time and indexes the transaction text for instant forensic search.

    Rule Node Configuration:

    1. Event Input Node: Kisan Cash Machine Listener

  • Source: Kisan CM Cash Sorter
  • Filter Event: Count Transaction Event (kisancm.count_completed)
  • Exposed Output Ports: Total (Int32), CurrencyCode (String), ClientIp (String), Timestamp (DateTime)
  • 2. Output Target Node: Avigilon POS Dispatcher

  • Source: Avigilon POS Terminal
  • Action Target: Send Transaction
  • Mapped Parameters:
  • COUNT_RESULT 🠄 Connected to Total (Int32 ➔ Double)
  • CURRENCY_CODE 🠄 Connected to CurrencyCode (String)
  • Logic Flow Diagram:

    VISUAL ARCHITECTURE FLOW DIAGRAM
    Rendering Flow Architecture Diagram...

    8. Troubleshooting & Diagnostics

    SymptomCauseSolution
    Status is "Disconnected" or "Connecting"Avigilon POS listener is not running or blocked by firewall.Verify ACC POS Transaction source is started and listening on the configured port. Ensure Windows Firewall permits TCP inbound traffic on that port.
    "Cannot send test message: Not connected"The test button was pressed while connection is inactive.Check host IP/port settings and ensure the source has been saved and started by UniflowService.
    Placeholders appear empty in ACCA placeholder in the template does not match any Input Point Data Binding ID.Ensure the placeholder {binding_id} matches the exact Data Binding ID configured in the Input Points table.
    Text lines run together in ACC overlayMissing line terminators.Ensure the template ends with \r\n so the Avigilon listener processes the text as a completed line.
    Architecture Flow Diagram — Full Preview