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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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