Skip to main content

Driver for Arizona USB Pressure Sensor

Project description

ARIZON USB APIServer

Upload Python Package Pypi

An APIServer for ARIZON USB force sensors.

Installation

Clone & cd into this repository then:

python setup.py install

Or download from PyPI:

python -m pip install arizon-usb-apiserver

Get Started

The apiserver operates in two modes: RESTful and gRPC. They share the same configuration schema.

Basics

To read the sensor locally, use this snippet:

from serial import Serial
from arizon_usb_apiserver import Sensor

if __name__ == '__main__':
    conn = Serial("COM16", 115200)
    sensor = Sensor(conn)
    sensor.reset()
    while True:
        print(sensor.read_once())

To generate configuration from command line interaction run:

python -m arizon_usb_apiserver configure

RESTful

To launch the apiserver in RESTful mode, set the API_SERVER_RESTFUL to 1 before run apiserver command:

export API_SERVER_RESTFUL=1

Or run with variable

API_SERVER_RESTFUL=1 python -m arizon_usb_apiserver apiserver

Powershell: Set-Item -Path Env:API_SERVER_RESTFUL -Value 1

Or you can directely run apiserver.restful

python -m arizon_usb_apiserver apiserver.restful

Here are some examples to test the apiserver using curl

  • Init sensor

    curl -X 'PUT' \
      'http://127.0.0.1:8080/v1/arizon/force?flag=true' \
      -H 'accept: application/json'
    
  • Read sensor

    curl -X 'GET' \
      'http://127.0.0.1:8080/v1/arizon/force' \
      -H 'accept: application/json'
    
  • Shutdown sensor

    curl -X 'PUT' \
      'http://127.0.0.1:8080/v1/arizon/force?flag=false' \
      -H 'accept: application/json'
    

gRPC

Run this command

python -m arizon_usb_apiserver apiserver

Or you can directely run apiserver.grpc

python -m arizon_usb_apiserver apiserver.grpc

Testing with cli tools

To test RESTful API, run:

python -m arizon_usb_apiserver test.restful

You will be asked to input API endpoint.

To test gRPC API, run:

python -m arizon_usb_apiserver test.grpc

You will be asked to input API endpoint.

Generate Client

Restful

First launch the apiserver, then run openapi-python-client:

openapi-python-client generate --url http://127.0.0.1:8080/openapi.json
rm -rf ./arizon_usb_driver/client/restful
mv fast-api-client/fast_api_client ./arizon_usb_driver/client/restful
rm -rf ./fast-api-client

GRPC

First cd arizon_usb_apiserver/grpc, then run:

python -m grpc_tools.protoc -I../../manifests/protos --python_out=. --pyi_out=. --grpc_python_out=. ../../manifests/protos/force_packet.proto

You might need to replace import force_packet_pb2 as force__packet__pb2 with import arizon_usb_apiserver.grpc.force_packet_pb2 as force__packet__pb2

Serial Protocol

Field Content
Head 0xFE
Status 1 Byte
Data 3 Byte
XOR checksum 1 Byte
  • Status: 4 bits of address + 4 bits represents number of digits
  • Data: 3 bytes of signed integers, no digit, big-endian.
  • Checksum: xor() of first 5 bytes

Configuration

Here is an template of configuration

arizon_usb_apiserver: # Key
  api: # Control API settings
    interface: 0.0.0.0 # Listen interface
    port: 8080 # Listen port
  debug: false # Enable debug
  serials: # Serial connections, can be a list
    - baudrate: 115200 # Baudrate, default is 115200, no need to change
      port: COM8 # Port name
      addr: "dev1" # Friendly name
  data_path: ./arizon_data # Path to save data

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

arizon-usb-apiserver-0.4.7.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

arizon_usb_apiserver-0.4.7-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file arizon-usb-apiserver-0.4.7.tar.gz.

File metadata

  • Download URL: arizon-usb-apiserver-0.4.7.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for arizon-usb-apiserver-0.4.7.tar.gz
Algorithm Hash digest
SHA256 495b0f7a9bb6171c6b79d8d7bd167f061c91f59b5c5c6a0756dea872a2c3d390
MD5 760eb252d1823474c0a4729201d9ce64
BLAKE2b-256 3a375f09dc73e65bd7af51387fc922cf6114cbb10451d96128d24672f5d58b2d

See more details on using hashes here.

File details

Details for the file arizon_usb_apiserver-0.4.7-py3-none-any.whl.

File metadata

File hashes

Hashes for arizon_usb_apiserver-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7abefa21f337a60f639739b60a63d9a86b9f6f5ab07af433b0be0f4c91b3cf14
MD5 cf9becbbc7dfc2f2822ddd4a5ece30ce
BLAKE2b-256 895e9bf8d28ecc9241746b9f08cef6c26ef8bb1658134bde7eb088302529f458

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