Comments (20)
Would be nice to get compass readings from calypso. Did you make some progress here?
from calypso-anemometer.
Dear Simon,
thank you for writing in. Others also asked about compass
support recently. We will have to dive into a little recap to check the current state of the corresponding implementation.
Based on my findings shared below, I think compass
data should be decoded well already, and may already make it into the corresponding SignalK telemetry adapter correctly. Can you verify that? On the other hand, what others have asked about, I think compass data is not translated to NMEA0183 yet.
With kind regards,
Andreas.
Details
It looks like 8843346 added decoding the compass
data already:
calypso-anemometer/calypso_anemometer/model.py
Lines 84 to 89 in 1cca7ad
However, I discovered that within the backlog:
calypso-anemometer/doc/backlog.rst
Lines 107 to 109 in 1cca7ad
This is the current code responsible for translating compass
data to SignalK:
calypso-anemometer/calypso_anemometer/telemetry/signalk.py
Lines 49 to 50 in 1cca7ad
This is the current code responsible for translating compass
data to NMEA0183:
calypso-anemometer/calypso_anemometer/telemetry/nmea0183.py
Lines 174 to 183 in 1cca7ad
from calypso-anemometer.
In order to add more information here...
Calypso UP10 FAQ
Manufacturer information about the compass can be found at https://calypsoinstruments.com/web/content/884.
Compass to NMEA0183
On the other hand, what others have asked about, I think compass data is not translated to NMEA0183 yet.
@UserMacUseface told us that the NMEA sentence for this is quite simple 1:
HDT - Heading - True
1 2 3
| | |
$--HDT,x.x,T*hh<CR><LF>
Field Number:
1) Heading Degrees, true
2) T = True
3) Checksum
Thank you already! We will consider implementing corresponding support on the next development iteration.
Footnotes
from calypso-anemometer.
@UserMacUseface may have discovered a problem with decoded compass/heading data. Thank you so much for the report!
The value for heading is a bit funny.
While tracking the processing of this value through the code the other day, I already noticed the following snippet:
SignalKDeltaItem(path="navigation.attitude.yaw", value=reading.compass), SignalKDeltaItem(path="navigation.headingMagnetic", value=reading.compass)
reading.compass
is defined in the model ascompass=360 - compass
. However, while the documentation of Calypso claims degrees 1, the actual value seems to be radians though.
Is there a log where I can see the raw data being read from the device?
Footnotes
from calypso-anemometer.
However, while the documentation of Calypso claims degrees, the actual value seems to be radians though.
Ah, wow!
But the device claims to be the same as before, and there is no updated documentation about it? Maybe there has been something within the release notes of the firmware update you installed recently? (#13 (comment))
Is there a log where I can see the raw data being read from the device?
The decoder implementation has been based on information from the Calypso Ultrasonic decoding cheat sheet by Fabian Tollenaar. Logging raw data would not make much sense because it is in binary format.
calypso-anemometer/calypso_anemometer/model.py
Lines 92 to 149 in 1cca7ad
from calypso-anemometer.
But the device claims to be same as before, and there is no updated documentation about it? Maybe there has been something within the release notes of the firmware update you installed recently? (#13 (comment))
I cannot seem to find any release notes from calypso instruments :/
from calypso-anemometer.
On a side note: roll
and pitch
also come from the gyro, don't they? Should we perhaps rename the reading.compass
field to reading.heading
for the sake of better "naming things"?
from calypso-anemometer.
Regarding the "funny" readings, we discovered that all angle values should be submitted to SignalK using Radian (rad) unit, see also #14 (comment).
from calypso-anemometer.
Regarding "reading the compass at all", we may have missed the corresponding method to enable it. Currently, I can only find methods to set "mode" and "datarate".
calypso-anemometer/calypso_anemometer/core.py
Lines 203 to 213 in 4361e68
from calypso-anemometer.
Regarding "reading the compass at all", we may have missed the corresponding method to enable it.
The improvement GH-23 finally adds that, with a corresponding --compass=on
command line option.
from calypso-anemometer.
Regarding the missing "Compass to NMEA0183" telemetry propagation (#12 (comment)), the values for pitch
and roll
shall apparently be propagated into XDR - Transducer Values
messages 1, as suggested by @UserMacUseface.
Within that message, I also spotted a slot to transmit air temperature. Does it make sense to propagate the temperature measured by the Calypso into this slot, or would it be wrong, because, mounted on the top of the mast, it will most probably not what meteorologists understand as "air temperature"?
1 2 3 4 n
| | | | |
* $--XDR,a,x.x,a,c--c, ..... *hh<CR><LF>
Measured Value | Transducer Type | Measured Data | Unit of measure | Transducer Name |
---|---|---|---|---|
air temperature | "C" temperature | 2 decimals | "C" celsius | "TempAir" or "ENV_OUTAIR_T" |
pitch | "A" angle | -180..0 nose down 0..180 nose up | "D" degrees | "PTCH" or "PITCH" |
rolling | "A" angle | -180..0 L 0..180 R | "D" degrees | "ROLL" |
Footnotes
from calypso-anemometer.
Within that message, I also spotted a slot to transmit air temperature. Does it make sense to propagate the temperature measured by the Calypso into this slot, or would it be wrong, because, mounted on the top of the mast, it will most probably not what meteorologists understand as "air temperature"?
Its surely a good idea to transmit all the values that the calypso generates. that way any future implementation can use it if needed.
The temperature difference on top of the mast is very probably not too much different then on deck level.
Nice gimmick to have but probably not critical to any kind of sailing activities :)
from calypso-anemometer.
Thanks for clarifying. I've created GH-21 to discuss the topic of NMEA0183 sentences for non-compass related values seperately.
from calypso-anemometer.
Regarding the NMEA0183 talker identifier, thank you for sharing #21 (comment). On this page, I discovered another example for encoding a compass/heading value.
$HCHDM,238,M<CR><LF>
... where "HC" specifies the talker as being a magnetic compass, the "HDM" specifies the magnetic heading message follows.
In our case, it would be HCHDT
instead of HCHDM
, because we emit the "true heading" - is that correct? Or, following your suggestion at #21 (comment), MLHDT
would also be a feasable name, right?
from calypso-anemometer.
Some examples of HDT
sentences are:
$GPHDT,123.456,T
$GPHDT,274.07,T
References
- http://www.nmea.de/nmea0183datensaetze.html#hdt
- https://receiverhelp.trimble.com/alloy-gnss/en-us/NMEA-0183messages_HDT.html
- https://gpsd.gitlab.io/gpsd/NMEA.html#_hdt_heading_true
from calypso-anemometer.
Proposal
Would those example sentences be feasible?
# Heading
$MLHDT,274.07,T
# Pitch
$MLXDR,A,-42.42,D,PITCH#CALYPSO
# Roll
$MLXDR,A,30.07,D,ROLL#CALYPSO
Optionally, "heading" could additionally be emitted as XDR
sentence as well?
# Heading
$MLXDR,A,274.07,D,HEADING#CALYPSO
P.S.: As we can see, there is apparently no way to tell XDR sentences apart, other than looking at the name field, here PITCH
vs. ROLL
vs. HEADING
. Does this make sense?
from calypso-anemometer.
XDR sentences can also carry multiple values -- thanks, @UserMacUseface. When combining pitch and roll, and also omitting the CALYPSO
suffix, a corresponding sentence could look like that:
$MLXDR,A,-42.42,D,PTCH,A,30.07,D,ROLL
As seen at 12, the order of Pitch/Roll may also be important.
Footnotes
from calypso-anemometer.
GH-24 implements the most recent suggestions. Thank you so much for the support!
from calypso-anemometer.
Dear @honigwald and @UserMacUseface,
we just released calypso-anemometer 0.6.0, including the corresponding improvements, and will be happy to hear back from you about its outcome on this matter.
You may be able to get a reading with compass turned on, using
# Get device reading(s), with compass data (roll, pitch, heading).
calypso-anemometer read --compass=on
calypso-anemometer read --compass=on --subscribe
Emitting this data to both telemetry variants NMEA-0183 and SignalK, may also work well now.
With kind regards,
Andreas.
from calypso-anemometer.
Unfortunately, with the recent 0.6.0 release, eCompass readings do not work yet, see GH-27.
from calypso-anemometer.
Related Issues (11)
- Bad bluetooth connection HOT 6
- Provide values in correct format for SignalK telemetry HOT 13
- BleakDBusError: [org.bluez.Error.Failed] Software caused connection abort HOT 3
- Release bluetooth connection on program termination
- NMEA0183 XDR sentences for temperature and battery level HOT 18
- bleak.exc.BleakDBusError: [org.bluez.Error.Failed] Operation failed with ATT error: 0x0e (Connection Rejected Due To Security Reasons)
- eCompass and temperature not working HOT 32
- NMEA-0183 `--MWV` sentences HOT 2
- ultrasonic portable mini compabilitty HOT 1
- bleak.exc.BleakError: Characteristic 0000a001-0000-1000-8000-00805f9b34fb does not support write operations!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from calypso-anemometer.