Summary

Covers Global Caché iTach IP2CC (Contact Closure / relay) over the vendor's Unified TCP API on port 4998. IP2CC is a relay-output module (1:1–1:3) controlled via the unified ASCII command/response protocol shared across GC-100, iTach, Flex, and Global Connect families.

Transport

protocols:
  - tcp
addressing:
  port: 4998
auth:
  type: none  # inferred: no auth procedure in source

Traits

# No power on/off commands in source (relay state is a separate concern).
# No queryable trait for relay state alone - queryable triggered by getstate.
# No routable, no levelable, no powerable - only relay-state control is present.
queryable: true   # inferred from getstate command examples

Actions

# Unified TCP API commands applicable to iTach IP2CC relay outputs.
# Module = 1, port = 1|2|3 on IP2CC per source module/port table.
# Every request is a single line ending with carriage return (ASCII 13).
# Response format mirrors request with `state,` prefix.

- id: relay_getstate
  label: Get Relay State
  kind: query
  command: "getstate,1:{port}"
  params:
    - name: port
      type: integer
      description: Relay port address (1-3 on IP2CC)

- id: relay_getstate_notify
  label: Get Relay State (Enable Change Notification)
  kind: query
  command: "getstate,1:{port},notify"
  params:
    - name: port
      type: integer
      description: Relay port address (1-3 on IP2CC)
  notes: |
    Enables TCP change notification for the duration of the client's
    TCP connection. Notification messages use format
    `state,1:{port},{state}`.

- id: relay_setstate
  label: Set Relay State
  kind: action
  command: "setstate,1:{port},{state}"
  params:
    - name: port
      type: integer
      description: Relay port address (1-3 on IP2CC)
    - name: state
      type: integer
      description: |
        0 = off/open
        1 = on/closed (SPST; on1 for SPDT/DPDT)
        2 = on2 (SPDT/DPDT second throw)
  notes: |
    State is not persistent through device reset or power-cycle;
    always reverts to 0 (off/open) after reset.

- id: relay_setstate_pulse
  label: Pulse Relay (Timed Closure)
  kind: action
  command: "setstate,1:{port},{state},{period}"
  params:
    - name: port
      type: integer
      description: Relay port address (1-3 on IP2CC)
    - name: state
      type: integer
      description: "0, 1, or 2 (see relay_setstate)"
    - name: period
      type: integer
      description: Pulse period in ms, range 1-4294967295
  notes: Optional period parameter only applies to setstate.

- id: get_version
  label: Get Device Version
  kind: query
  command: "getversion"
  params: []
  notes: |
    iTach IP2CC family version prefix: 710-1008-XX. Example
    response: `version,0,710-1008-XX`.

- id: get_devices
  label: Get Device Capabilities
  kind: query
  command: "getdevices"
  params: []
  notes: |
    Response enumerates available modules and ports with type
    (e.g. RELAY, RELAYSENSOR, etc.). Multi-line response
    terminated by `endlistdevices`.

- id: get_network_config
  label: Get Network Configuration
  kind: query
  command: "get_NET,0:0"
  params: []
  notes: |
    Response: `NET,0:0,<cfglock>,<IPconfig>,<IPaddr>,<subnet>,<gateway>`.
    IPconfig: STATIC or DHCP. cfglock: UNLOCKED or LOCKED.

- id: get_serial_config
  label: Get Serial Port Configuration
  kind: query
  command: "get_SERIAL,1:{port}"
  params:
    - name: port
      type: integer
      description: "Port address (1 for iTach)"
  notes: |
    IP2CC-specific serial commands are not in this source, but
    the unified `get_SERIAL` command is documented for the
    iTach family. Use only if IP2CC exposes a serial port.

- id: get_IRL
  label: Enable IR Learner
  kind: query
  command: "get_IRL"
  params: []
  notes: |
    Returns `IR Learner Enabled` followed by `IR <IR_code>` lines
    for each received IR sequence. Module/port fixed at 1 in
    received codes. Stays enabled until `stop_IRL` or connection
    close.

- id: stop_IRL
  label: Disable IR Learner
  kind: query
  command: "stop_IRL"
  params: []
  notes: Returns `IR Learner Disabled`.

# Common error responses (informational; not callable):
# ERR 001 - invalid module address
# ERR 002 - invalid port address
# ERR 003 - no carriage return
# ERR 004 - not supported
# ERR 005 - invalid parameter
# ERR 007 - settings locked
# RO001 - invalid logical relay type
# RO002 - invalid relay state
# RO003 - unsupported operation
# RO004 - logical relay disabled/unavailable
# SI001 - not a sensor or relay

Feedbacks

- id: relay_state
  type: enum
  values:
    - "0"   # off/open
    - "1"   # on/closed (SPST; on1 for SPDT/DPDT)
    - "2"   # on2 (SPDT/DPDT second throw)
  response_format: "state,1:{port},{state}"
  notes: |
    Returned by getstate (query) and unsolicited via TCP change
    notification (statechange) when enabled with `notify` mode.
    State is not persistent across reset/power-cycle.

- id: network_config
  type: object
  response_format: "NET,0:0,<cfglock>,<IPconfig>,<IPaddr>,<subnet>,<gateway>"
  notes: |
    cfglock: UNLOCKED|LOCKED. IPconfig: STATIC|DHCP. IP addresses
    in IPV4 dotted form.

- id: device_capabilities
  type: object
  response_format: "device,<module>,<ports> <type>[_subtype] ... endlistdevices"
  notes: |
    Types: ETHERNET, WIFI, MODULE, IR, SERIAL, RELAY, SENSOR,
    RELAYSENSOR, IR_BLASTER, IRTRIPORT, IRTRIPORT_BLASTER, SWITCH.
    Subtypes: DIGITAL, IN, OUT, RS232, RS485, SPST_3A, HDMI_3:1.

- id: ir_learned_code
  type: string
  response_format: "IR <IR_code>"
  notes: |
    Streamed while IR Learner is enabled (`get_IRL`).
    Format is Global Caché IR Format with module/port fixed at 1.

Variables

# UNRESOLVED: source describes parameters as positional command arguments, not
# persistent named variables. No persistent storage variables are documented.

Events

- id: relay_state_change
  description: |
    Unsolicited state change notification on the TCP connection
    that issued `getstate,<module>:<port>,notify`. Format:
    `state,<module>:<port>,<state>`. Persists for life of the
    originating TCP connection.
  response_format: "state,<module>:<port>,<state>"

- id: ir_received_code
  description: |
    Streamed by iTach while IR receive mode is enabled via
    `receiveIR,<module>:<port>,enabled`. Format follows IR
    Learner output: Global Caché IR code string with module/port
    fixed at 1.
  response_format: "sendir,1:1,1,<freq>,<repeat>,<offset>,<on1>,<off1>,..."

Macros

# UNRESOLVED: source does not define multi-step sequences or named macros
# for IP2CC.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements. IP2CC contact-closure electrical ratings
# (voltage/current/load) are not present in this source and must be obtained
# from the IP2CC datasheet before field deployment.

Notes

  • Source is Global Caché's Unified TCP API manual covering GC-100, iTach, Flex, and Global Connect families. iTach IP2CC is a relay-only Contact Closure module; commands marked applicable to IP2CC follow the iTach row of the module/port tables in the source.
  • All TCP API requests are a single line of printable text terminated with carriage return (ASCII 13). Commands and parameters are case sensitive.
  • Connections can be momentary (one request/response) or persistent (open socket for multiple requests and notifications). Max 8 simultaneous TCP connections per iTach.
  • iTach IP2CC firmware family prefix: 710-1008-XX (exact version not stated in source).
  • DHCP by default; fallback to static IP if no DHCP server. Network configured via get_NET/set_NET (set_NET not supported on iTach/Flex/Global Connect per source).
  • IP2CC relay state does not persist through reset/power-cycle — always returns to 0 (off/open).
  • This spec covers only TCP API control. IR, serial, sensor, and HDMI-matrix sub-commands present in the unified manual are not part of IP2CC's primary function and are listed only where the IP2CC exposes a port of that class.

Provenance

source_domains:
  - globalcache.com
source_urls:
  - https://www.globalcache.com/files/docs/api-gc-unifiedtcp.pdf
  - https://www.globalcache.com/files/docs/datasheet_itach_ip.pdf
  - https://www.globalcache.com/files/docs/QS_iTachIP_distrib.pdf
  - https://www.globalcache.com/downloads.html
retrieved_at: 2026-04-29T21:45:14.451Z
last_checked_at: 2026-06-02T22:07:20.866Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:07:20.866Z
matched_actions: 10
action_count: 10
confidence: medium
summary: "All 10 spec actions traced to source (dip-safe re-verify). (7 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "iTach IP2CC-specific capability details (contact closure ratings, voltage, current, switching capacity) are not in this source. The source is the family-wide Unified TCP API manual, not an IP2CC datasheet."
- "source describes parameters as positional command arguments, not"
- "source does not define multi-step sequences or named macros"
- "source contains no safety warnings, interlock procedures, or"
- "IP2CC electrical specifications (contact rating, max voltage/current, switching cycles) are not in this source."
- "IP2CC mechanical/enclosure specs, power input, PoE class, and indicator-LED behavior are not in this source."
- "confirmation-required safety actions (e.g. whether the API requires explicit unlock for high-risk outputs) are not documented."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0