Package: calypso-anemometer
Python driver for the Calypso UP10 anemometerAboutHardware deviceTheCalypso UP10 ultrasonic portable solar wind meteris a Bluetooth, solar-powered,
pocket-sized, ultrasonic anemometer. No power cords or data wires needed.Pictures:Calypso UP10.Resources:Product pageData sheetInstruction’s manualUser manualDeveloper manualSoftware libraryThe device driver library is written in Python, based on theBleaklibrary.
It was verified to work well on an OpenPlotter installation on a Raspberry Pi,
as well as a macOS workstation.FeaturesRun device discoveryAcquire device status and readings (one shot)Acquire device readings continuously (subscribe/notify)Set device data rateTelemetry with NMEA-0183 and SignalK over UDPSetuppip install --upgrade calypso-anemometerTo install the latest development version from the repository, invoke:pip install --upgrade git+https://github.com/maritime-labs/calypso-anemometerPre-flight checksWe have some documentation about investigating and configuring your Bluetooth/BLE
stack and about simulating the telemetry messaging. On this matter, you might want
to run through a sequence ofpreflight checksbefore going intoproduction.UsageCommand lineDiscover theULTRASONICBLE device and run a conversation on it. By
default, the Bluetooth adapterhci0will be used.# Get device information with discovery.
calypso-anemometer info

# Get device reading.
calypso-anemometer read

# Get device reading, with compass (roll, pitch, heading).
calypso-anemometer read --compass=on

# 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

# Generate fake device readings, continuously at 8 Hz.
pip install --upgrade calypso-anemometer[fake]
calypso-anemometer fake --subscribe --rate=hz_8If you already discovered your device, know its address, and want to connect
directly without automatic device discovery, seeskip discovery.Likewise, when your system has multiple Bluetooth adapters, you may want to
choose a specific one, seeselect Bluetooth adapter.# Get device information w/o discovery.
calypso-anemometer info --ble-address=F8:C7:2C:EC:13:D0

# Get device information w/o discovery, using a specific Bluetooth adapter.
calypso-anemometer info --ble-adapter=hci1 --ble-address=F8:C7:2C:EC:13:D0LibraryIn order to use the library API, please consult the programs in theexamplesfolder.Synopsis:from calypso_anemometer.core import CalypsoDeviceApi

async with CalypsoDeviceApi() as calypso:
    reading = await calypso.get_reading()
    reading.print()Telemetry setupThe program can optionally submit telemetry messages in different formats.SignalK telemetryContinuously receive device readings and submit them in SignalK Delta Format via UDP:calypso-anemometer read --subscribe --rate=hz_1 --target=udp+signalk+delta://openplotter.local:4123To make aSignalK serverreceive the data, create an “UDP receiver” data
connection on theServer » Data Connectionsdialog of yourOpenPlotterinstance.SignalK UDP receiver on port 4123.NMEA-0183 telemetryContinuously receive device readings and submit them in NMEA-0183 format via UDP broadcast:calypso-anemometer read --subscribe --rate=hz_1 --target=udp+broadcast+nmea0183://255.255.255.255:10110NoteIf you don’t haveanynetworking configured on your machine, just uselocalhostas target address.To makeOpenCPNreceive the data, create a corresponding data connection
like outlined in those screenshots.Add NMEA-0183 UDP receiver on port 10110.Configured NMEA-0183 UDP receiver on port 10110.An example NMEA-0183 payload, including multiple sentences, is:$MLHDT,235.0,T*27
$MLVWR,154.0,L,11.06,N,5.69,M,20.48,K*64
$MLXDR,A,-60.0,D,PTCH#CAL,A,30.0,D,ROLL#CAL*75
$MLXDR,C,33.0,C,AIRTEMP#CAL*6A
$MLXDR,L,0.9,R,BATT#CAL*18Other projectsAocpnUltrasonicLinkis an Android app for linking Calypso Ultrasonic
wind data to OpenCPN, written in Java.BLE_Windis an Arduino firmware for reading data from a Calypso anemometer,
written in C++.CalypsoUltrasonicAPIis a library for the Calypso Ultrasonic Anemometer,
written in Visual Basic .NET and Java, (also) for Android.signalk-calypso-ultrasonicis a Signal K server plugin for the Calypso
Ultrasonic wireless anemometer, written in JavaScript.ultrasonic-ble-reactis a React native test app for the Calypso UltraSonic
wind sensor, written in JavaScript.TroubleshootingFor helping you to find solutions for known problems, we are maintaining
a dedicated page attroubleshooting. The topic range is from permission
errors to BLE timeouts.AcknowledgementsKudos toHenrik Blidh,David Lechner, and contributors for conceiving
and maintaining the excellentBleaklibrary.Special thanks toFabian Tollenaarfor creatingsignalk-calypso-ultrasonic.Project informationContributionsEvery kind of contribution, feedback, or patch, is much welcome.Create an
issueor submit a patch if you think we should include a new feature, or to
report or fix a bug.DevelopmentIn order to setup a development environment on your workstation, please head over
to thedevelopment sandboxdocumentation. When you see the software tests succeed,
you should be ready to start hacking.ResourcesSource code repositoryDocumentationPython Package Index (PyPI)LicenseThe project is licensed under the terms of the GNU AGPL license, seeLICENSE.Warranty and liabilityThere is no warranty for the program. In no event will any copyright holder, or
any other party who modifies and/or conveys the program, be liable for any
damages arising out of the use or inability to use the program.See also sections 15, 16, and 17 of theLICENSEfile.