Skip to main content

Syndesi

Project description

Syndesi Python Implementation

Syndesi description is available here

Installation

The syndesi Python package can be installed through pip

pip install syndesi

The package can also be installed locally by cloning this repository

git clone https://github.com/syndesi-project/Syndesi
cd Syndesi/Python
pip install .

Usage

To instantiate a device, one must import the device and a suitable adapter

# 1) Import the device
from syndesi.drivers.instruments.mutlimeters.siglent.SDM3055 import SDM3055
# 2) Import the adapter
from syndesi.adapters import IP

# 3) Instantiate the multimeter using its IP
mm = SDM3055(IP("192.168.1.123"))

## 4) Use
voltage = mm.measure_dc_voltage()

Layers

The first layer is the "Device" base class

The second layer is made of "Primary drivers". First stage drivers implement mid-level communication protocols like Modbus, SDP, Raw, HTTP, SPCI, etc... Those drivers can be instanciated by the user if he wishes to use a device "as is" (i.e without an application driver)

Next are device drivers. They provide implementation for device-specific operations

Last are the application drivers. These are used to provide application-specific operations that mar or may not be tied to a particular device.

Note that both device drivers and application drivers can be omitted and can also be stacked as all first stage drivers, device drivers and application drivers stem from the same base Class

SDP

The Syndesi Device Protocol is a light-weight and easy interface to send / receive commands with compatible devices.

Usecases

  • Test gear (multimeters, oscilloscopes, power supply, etc...)
    • set values (output voltage, settings, etc...)
    • get values (measured voltage, trace, screenshot)
    • continuously read data (UART multimeter for instance)
  • UART devices (Arduinos, etc...)
    • Send / receive raw data
    • Custom drivers
  • Syndesi devices
    • Send / receive formatted data
  • USB devices
    • Send / receive data using the USB protocol

Notes

06.09.2023 : bytearray is changed to bytes everywhere

23.10.2023 : continuation timeout isn't suitable for TCP, but it can work for UDP as a UDP server can send multiple response packets after a single packet from the client. This can be handled in different ways by firewalls. Thankfull that's none of our business so continuation timeout can be implemented

22.11.2023 : The timeout and stop conditions strategy is a bit complicated :

  • What if we receive the message b'ACK\nNCK\n' using a termination stop condition but we receive b'ACK', then a timeout, then b'\nNCK\n' ?
    • Should the first part be kept ? should an error be raised at the timeout because nothing was read ?
      • Two kinds of timeouts ?
        • One where "we read as much as possible during the available time"
        • One where "we expect a response within X otherwise it's trash"

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

syndesi-0.2.3.tar.gz (38.2 kB view details)

Uploaded Source

Built Distribution

syndesi-0.2.3-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file syndesi-0.2.3.tar.gz.

File metadata

  • Download URL: syndesi-0.2.3.tar.gz
  • Upload date:
  • Size: 38.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for syndesi-0.2.3.tar.gz
Algorithm Hash digest
SHA256 c45cfc89aa1ee0e490f5c5adf5e28dae8c5748c801d4a51a0657994dfdc5ae47
MD5 ed3c4bd6a5fa59cc2d1c7e85b95e15e8
BLAKE2b-256 e9288dc5a3da586a9d95adff7ac199c3ee962c0dc29e18797b328d24853e3e24

See more details on using hashes here.

File details

Details for the file syndesi-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: syndesi-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 74.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for syndesi-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b2e472f6625ace2b03c358a1bed9da38e58684a06de17dfe2ca9ea09ba1142d5
MD5 6758a3e62fb5f3b0b8c6f364ec0da3f1
BLAKE2b-256 72c1fcdbcc30b0ba07730b915c3a6f543e39e05111d3400f4f29eb15d684d865

See more details on using hashes here.

Supported by

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