Skip to main content

Blocking Python facade for driving Extron SIS devices over SSH

Project description

sismatic

An open-sourced library for working with the Simple Instruction Set used by many Extron devices. The name comes from SIS + automatic, because it handles the SIS machinery behind the scenes without human control.

Why?

There are several reasons why this library is worthwhile:

  1. Relies on a stable, unchanging protocol.
  2. Hides complexities of managing connections.
  3. Hides complexities of byte-level communication.

Crates

Configuration Example

# Global settings
[defaults]
port = 22023
connect_secs = 5
command_secs = 3
eager = true # eagerly establish connections to pay the cost of the full SSH handshake up front (default: false; connect upon first instruction)
sis_keepalive_secs = 120 # interval at which to send a probe instruction to SMPs to keep connection open; SMPs idle timer is set to 5 minutes by default. (default: 120)

[[device]]
id = "atrium-101"
host = "10.0.0.7"
username = "admin"
password = "extron"

[[device]]
id = "annex-far"
host = "10.0.0.8"
username = "admin"
password = "extron"
connect_secs = 10   # override default connect timeout
command_secs = 8    # override default command timeout

Warm versus Cold Connections

The premise is that the SSH handshakes are expensive, so having a "warm" or preestablished connection is important for runtime responsiveness. Device connections are lazy by default, which means that connection is delayed and first established when first instruction is sent. After a connection is established, the SSH layer will automatically keep the connection alive until the device itself terminates the connection due to inactivity (no instructions sent for some interval). The default interval is 5 minutes on some devices after which the connection will go "cold" again and be reestablished upon the next command. If desired, it is possible to eagerly open connections to devices by settings the eager configuration option. This will enable maximum performance at runtime because it will cause connections to devices to open up front i.e. pay the cost of the full SSH handshake at startup. To keep the connections "warm", there is the sis_keepalive_secs setting, which sets an interval in which a benign instruction is sent to the device to reset the device's inactivity timer periodically.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sismatic-0.2.15.tar.gz (85.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sismatic-0.2.15-cp39-abi3-manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ x86-64

sismatic-0.2.15-cp39-abi3-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

sismatic-0.2.15-cp39-abi3-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file sismatic-0.2.15.tar.gz.

File metadata

  • Download URL: sismatic-0.2.15.tar.gz
  • Upload date:
  • Size: 85.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sismatic-0.2.15.tar.gz
Algorithm Hash digest
SHA256 e93459b3cee180a7ba19a227e2cdb2a53b1e39bf8dce348eb5b92ae525846d0b
MD5 cf2e33aadb100ab97969450cc25c090b
BLAKE2b-256 a63a4d31865ee5fa44ce11f250080713f95764af5d9aaf55918ae5cb9d586d21

See more details on using hashes here.

Provenance

The following attestation bundles were made for sismatic-0.2.15.tar.gz:

Publisher: pipeline.yml on metzenseifner/sismatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sismatic-0.2.15-cp39-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sismatic-0.2.15-cp39-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f782110f29e8bbfce04c9b269920d02d816cc65e1f74a4804987807da45d584a
MD5 ee3337ff221e1326918fd572c1e7f600
BLAKE2b-256 e136041fea84ff777f7e723c1f5f845d50c09f8321ea16da43718e76e0e68e63

See more details on using hashes here.

Provenance

The following attestation bundles were made for sismatic-0.2.15-cp39-abi3-manylinux_2_28_x86_64.whl:

Publisher: pipeline.yml on metzenseifner/sismatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sismatic-0.2.15-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sismatic-0.2.15-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27e8516778bdfb4323a2d9daff65a74bb1cdbefde69ef60d5f3a432c69613a94
MD5 6746c60018abba439a4c37656750ebf4
BLAKE2b-256 c807f07ebff76c8ea81477f04055a98afaf5f8807435eb63c8d8f05d4024b813

See more details on using hashes here.

Provenance

The following attestation bundles were made for sismatic-0.2.15-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: pipeline.yml on metzenseifner/sismatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sismatic-0.2.15-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sismatic-0.2.15-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ee8c505e50cf1dfa63f9e362e48bbd5835cf2aea03b560d3f463493570c351bb
MD5 f9740f97edd54cccd334a07a91aa6f11
BLAKE2b-256 feed61a8eaacc354c66571421895c04cfddbeba7150f47a9034623bc5256d75b

See more details on using hashes here.

Provenance

The following attestation bundles were made for sismatic-0.2.15-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: pipeline.yml on metzenseifner/sismatic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page