Python driver for the Calypso UP10 anemometer
Project description
Python driver for the Calypso UP10 anemometer
About
Hardware device
The Calypso UP10 ultrasonic portable solar wind meter is a Bluetooth, solar-powered, pocket-sized, ultrasonic anemometer. No power cords or data wires needed.
Resources:
Software library
The device driver library is written in Python and based on the Bleak library, the Bluetooth Low Energy platform Agnostic Klient for Python. It was verified to work well on a Raspberry Pi / OpenPlotter installation and a macOS workstation.
Features
Device discovery
Basic conversation
Acquire device status and readings (one shot)
Acquire device readings continuously (subscribe/notify)
Set device data rate
Telemetry: NMEA-0183 and SignalK over UDP
Setup
pip install calypso-anemometer
To install the latest development version from the repository, invoke:
pip install git+https://github.com/daq-tools/calypso-anemometer
Synopsis
Usage
Discover the ULTRASONIC BLE device and run a conversation on it:
# Get device information. calypso-anemometer info # Get device reading. calypso-anemometer read # Get device readings, continuously at 4 Hz (default). calypso-anemometer read --subscribe # Get device readings, continuously at 1 Hz. calypso-anemometer read --subscribe --rate=hz_1 # Continuously receive device readings and submit them in SignalK Delta Format via UDP. # See section "SignalK telemetry" about how to create an UDP receiver # data connection in your Signal K server beforehand. calypso-anemometer read --subscribe --rate=hz_1 --target=udp+signalk+delta://openplotter.local:4123 # Continuously receive device readings and submit them in NMEA-0183 format via UDP. # See section "NMEA-0183 telemetry" about how to create an UDP receiver # data connection in OpenCPN beforehand. calypso-anemometer read --subscribe --rate=hz_1 --target=udp+broadcast+nmea0183://openplotter.local:10110
If you already discovered your device and know its address, use the CALYPSO_ADDRESS environment variable to skip discovery, saving a few cycles:
# Linux export CALYPSO_ADDRESS=E7:B6:1B:DB:02:DF # macOS export CALYPSO_ADDRESS=FB2D3935-AEBA-41D4-AB46-CD0C5FB291A1 # Activate discovery again. unset CALYPSO_ADDRESS
Development
# Set device data rate to one of HZ_1, HZ_4, or HZ_8. # Note: Works only for the upcoming conversation. Will be back at HZ_4 afterwards. calypso-anemometer set-option --rate=hz_1 # Set device mode to one of SLEEP, LOW_POWER, or NORMAL. # Note: Does not work, the setting is read-only. calypso-anemometer set-option --mode=normal # Explore all services and characteristics. Useful for debugging purposes. calypso-anemometer explore
Pre-flight checks
You will need a working Bluetooth/BLE stack. This section outlines a few commands to discover an ULTRASONIC device nearby.
Enumerate Bluetooth adapters:
hcitool dev Devices: hci1 E4:5F:01:BB:71:FC hci0 00:1A:7D:DA:71:15 lsusb Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Display information about two Bluetooth adapters:
hciconfig hci0 name hci0: Type: Primary Bus: USB BD Address: 00:1A:7D:DA:71:15 ACL MTU: 310:10 SCO MTU: 64:8 Name: 'openplotter #1' hciconfig hci1 name hci1: Type: Primary Bus: UART BD Address: E4:5F:01:BB:71:FC ACL MTU: 1021:8 SCO MTU: 64:1 Name: 'openplotter'
Run a BLE device scan on a specific adapter:
sudo hcitool -i hci0 lescan
Run a BLE device scan using Bleak:
bleak-lescan -i hci0 bleak-lescan -i hci1
SignalK telemetry
The program can optionally submit telemetry data in SignalK Delta Format via UDP. To make a SignalK server receive the data, create an “UDP receiver” data connection on the Server » Data Connections dialog of your OpenPlotter instance.
NMEA-0183 telemetry
The program can optionally submit telemetry data in NMEA-0183 format via UDP. To make OpenCPN receive the data, create a corresponding data connection like outlined in this screenshot.
Development
git clone https://github.com/daq-tools/calypso-anemometer cd calypso-anemometer python3 -m venv .venv source .venv/bin/activate pip install --editable=.
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
Built Distribution
Hashes for calypso_anemometer-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95aecc44912bf63249bee413d656daf12f9ff54367940fa7f247728cbdced0ea |
|
MD5 | 5505b97bb46fe88aff0b31d93af2da17 |
|
BLAKE2b-256 | 1227d345b4a211e3dccd895a35333181666a14d4eb0fdcc0846e1b9a532a94d8 |