Skip to content

Instantly share code, notes, and snippets.

@rob42
Last active August 29, 2015 14:17
Show Gist options
  • Save rob42/f390adfb0d4b17c8e21c to your computer and use it in GitHub Desktop.
Save rob42/f390adfb0d4b17c8e21c to your computer and use it in GitHub Desktop.
Process various NMEA into signalk full and delta
Converting !AIVDM,1,1,,B,15MwkRUOidG?GElEa<iQk1JV06Jd,0*6D
Signal K key/value tree:
{vessels.366998410.mmsi.source=vessels.366998410.sources.ais
vessels.366998410.mmsi.timestamp=1969-12-31T23:59:59.999Z
vessels.366998410.mmsi.value=366998410
vessels.366998410.navigation.courseOverGroundTrue.source=vessels.366998410.sources.ais
vessels.366998410.navigation.courseOverGroundTrue.timestamp=1969-12-31T23:59:59.999Z
vessels.366998410.navigation.courseOverGroundTrue.value=46.0
vessels.366998410.navigation.headingTrue.source=vessels.366998410.sources.ais
vessels.366998410.navigation.headingTrue.value=4.5
vessels.366998410.navigation.position.latitude=37.825183333333335
vessels.366998410.navigation.position.longitude=-122.47265
vessels.366998410.navigation.position.source=vessels.366998410.sources.ais
vessels.366998410.navigation.position.timestamp=1969-12-31T23:59:59.999Z
vessels.366998410.navigation.speedOverGround.source=vessels.366998410.sources.ais
vessels.366998410.navigation.speedOverGround.timestamp=1969-12-31T23:59:59.999Z
vessels.366998410.navigation.speedOverGround.value=5.5559520000000004
vessels.366998410.navigation.state.source=vessels.366998410.sources.ais
vessels.366998410.navigation.state.timestamp=1969-12-31T23:59:59.999Z
vessels.366998410.navigation.state.value=Moored
vessels.366998410.sources.ais.source=unknown
vessels.366998410.sources.ais.timestamp=1969-12-31T23:59:59.999Z
vessels.366998410.sources.ais.value=!AIVDM,1,1,,B,15MwkRUOidG?GElEa<iQk1JV06Jd,0*6D}
Signal K full json format:
{
"vessels":{
"366998410":{
"navigation":{
"position":{
"timestamp":"1969-12-31T23:59:59.999Z",
"longitude":-122.47265,
"latitude":37.82518333,
"source":"vessels.366998410.sources.ais"
},
"state":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366998410.sources.ais",
"value":"Moored"
},
"headingTrue":{
"source":"vessels.366998410.sources.ais",
"value":4.5
},
"courseOverGroundTrue":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366998410.sources.ais",
"value":46.0
},
"speedOverGround":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366998410.sources.ais",
"value":5.555952
}
},
"sources":{
"ais":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"unknown",
"value":"!AIVDM,1,1,,B,15MwkRUOidG?GElEa<iQk1JV06Jd,0*6D"
}
},
"mmsi":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366998410.sources.ais",
"value":"366998410"
}
}
}
}
Signal K delta json format:
{
"context":"vessels.366998410",
"updates":[
{
"timestamp":"1969-12-31T23:59:59.999Z",
"values":[
{
"path":"navigation.position",
"value":{
"longitude":-122.47265,
"latitude":37.82518333
}
},
{
"path":"navigation.state",
"value":"Moored"
},
{
"path":"navigation.headingTrue",
"value":4.5
},
{
"path":"navigation.courseOverGroundTrue",
"value":46.0
},
{
"path":"navigation.speedOverGround",
"value":5.555952
}
],
"source":"vessels.366998410.sources.ais"
},
{
"timestamp":"1969-12-31T23:59:59.999Z",
"values":[
{
"path":"sources.ais",
"value":"!AIVDM,1,1,,B,15MwkRUOidG?GElEa<iQk1JV06Jd,0*6D"
}
],
"source":"unknown"
},
{
"timestamp":"1969-12-31T23:59:59.999Z",
"values":[
{
"path":"mmsi",
"value":"366998410"
}
],
"source":"vessels.366998410.sources.ais"
}
]
}
Converting $IIVHW,,T,,M,06.11,N,11.31,K*51
Signal K key/value tree:
{vessels.motu.navigation.speedOverGround.source=vessels.motu.sources.nmea.0183.VHW
vessels.motu.navigation.speedOverGround.timestamp=2015-03-23T01:57:01.768Z
vessels.motu.navigation.speedOverGround.value=0.5238714
vessels.motu.sources.nmea.0183.VHW.source=unknown
vessels.motu.sources.nmea.0183.VHW.timestamp=2015-03-23T01:57:01.768Z
vessels.motu.sources.nmea.0183.VHW.value=$IIVHW,,T,,M,06.11,N,11.31,K*51}
Signal K full json format:
{
"vessels":{
"motu":{
"navigation":{
"speedOverGround":{
"timestamp":"2015-03-23T01:57:01.768Z",
"source":"vessels.motu.sources.nmea.0183.VHW",
"value":0.5238714
}
},
"sources":{
"nmea":{
"0183":{
"VHW":{
"timestamp":"2015-03-23T01:57:01.768Z",
"source":"unknown",
"value":"$IIVHW,,T,,M,06.11,N,11.31,K*51"
}
}
}
}
}
}
}
Signal K delta json format:
{
"context":"vessels.motu",
"updates":[
{
"timestamp":"2015-03-23T01:57:01.768Z",
"values":[
{
"path":"navigation.speedOverGround",
"value":0.5238714
}
],
"source":"vessels.motu.sources.nmea.0183.VHW"
},
{
"timestamp":"2015-03-23T01:57:01.768Z",
"values":[
{
"path":"sources.nmea.0183.VHW",
"value":"$IIVHW,,T,,M,06.11,N,11.31,K*51"
}
],
"source":"unknown"
}
]
}
Converting $IIMWV,338,R,13.41,N,A*2C
Signal K key/value tree:
{vessels.motu.environment.wind.angleApparent.source=vessels.motu.sources.nmea.0183.MWV
vessels.motu.environment.wind.angleApparent.timestamp=2015-03-23T01:57:01.802Z
vessels.motu.environment.wind.angleApparent.value=338.0
vessels.motu.environment.wind.speedApparent.source=vessels.motu.sources.nmea.0183.MWV
vessels.motu.environment.wind.speedApparent.timestamp=2015-03-23T01:57:01.802Z
vessels.motu.environment.wind.speedApparent.value=6.898640400000001
vessels.motu.sources.nmea.0183.MWV.source=unknown
vessels.motu.sources.nmea.0183.MWV.timestamp=2015-03-23T01:57:01.802Z
vessels.motu.sources.nmea.0183.MWV.value=$IIMWV,338,R,13.41,N,A*2C}
Signal K full json format:
{
"vessels":{
"motu":{
"environment":{
"wind":{
"speedApparent":{
"timestamp":"2015-03-23T01:57:01.802Z",
"source":"vessels.motu.sources.nmea.0183.MWV",
"value":6.8986404
},
"angleApparent":{
"timestamp":"2015-03-23T01:57:01.802Z",
"source":"vessels.motu.sources.nmea.0183.MWV",
"value":338.0
}
}
},
"sources":{
"nmea":{
"0183":{
"MWV":{
"timestamp":"2015-03-23T01:57:01.802Z",
"source":"unknown",
"value":"$IIMWV,338,R,13.41,N,A*2C"
}
}
}
}
}
}
}
Signal K delta json format:
{
"context":"vessels.motu",
"updates":[
{
"timestamp":"2015-03-23T01:57:01.802Z",
"values":[
{
"path":"environment.wind.speedApparent",
"value":6.8986404
},
{
"path":"environment.wind.angleApparent",
"value":338.0
}
],
"source":"vessels.motu.sources.nmea.0183.MWV"
},
{
"timestamp":"2015-03-23T01:57:01.802Z",
"values":[
{
"path":"sources.nmea.0183.MWV",
"value":"$IIMWV,338,R,13.41,N,A*2C"
}
],
"source":"unknown"
}
]
}
Converting $IIDBT,034.25,f,010.44,M,005.64,F*27
Signal K key/value tree:
{vessels.motu.environment.depth.belowTransducer.source=vessels.motu.sources.nmea.0183.DBT
vessels.motu.environment.depth.belowTransducer.timestamp=2015-03-23T01:57:01.831Z
vessels.motu.environment.depth.belowTransducer.value=10.44
vessels.motu.sources.nmea.0183.DBT.source=unknown
vessels.motu.sources.nmea.0183.DBT.timestamp=2015-03-23T01:57:01.831Z
vessels.motu.sources.nmea.0183.DBT.value=$IIDBT,034.25,f,010.44,M,005.64,F*27}
Signal K full json format:
{
"vessels":{
"motu":{
"environment":{
"depth":{
"belowTransducer":{
"timestamp":"2015-03-23T01:57:01.831Z",
"source":"vessels.motu.sources.nmea.0183.DBT",
"value":10.44
}
}
},
"sources":{
"nmea":{
"0183":{
"DBT":{
"timestamp":"2015-03-23T01:57:01.831Z",
"source":"unknown",
"value":"$IIDBT,034.25,f,010.44,M,005.64,F*27"
}
}
}
}
}
}
}
Signal K delta json format:
{
"context":"vessels.motu",
"updates":[
{
"timestamp":"2015-03-23T01:57:01.831Z",
"values":[
{
"path":"environment.depth.belowTransducer",
"value":10.44
}
],
"source":"vessels.motu.sources.nmea.0183.DBT"
},
{
"timestamp":"2015-03-23T01:57:01.831Z",
"values":[
{
"path":"sources.nmea.0183.DBT",
"value":"$IIDBT,034.25,f,010.44,M,005.64,F*27"
}
],
"source":"unknown"
}
]
}
Converting $GPGLL,6005.071,N,02332.346,E,095559,A,D*43
Signal K key/value tree:
{vessels.motu.navigation.position.latitude=60.08451666666666
vessels.motu.navigation.position.longitude=23.5391
vessels.motu.navigation.position.source=vessels.motu.sources.nmea.0183.GLL
vessels.motu.navigation.position.timestamp=2015-03-23T01:57:01.856Z
vessels.motu.sources.nmea.0183.GLL.source=unknown
vessels.motu.sources.nmea.0183.GLL.timestamp=2015-03-23T01:57:01.856Z
vessels.motu.sources.nmea.0183.GLL.value=$GPGLL,6005.071,N,02332.346,E,095559,A,D*43}
Signal K full json format:
{
"vessels":{
"motu":{
"navigation":{
"position":{
"timestamp":"2015-03-23T01:57:01.856Z",
"longitude":23.5391,
"latitude":60.08451667,
"source":"vessels.motu.sources.nmea.0183.GLL"
}
},
"sources":{
"nmea":{
"0183":{
"GLL":{
"timestamp":"2015-03-23T01:57:01.856Z",
"source":"unknown",
"value":"$GPGLL,6005.071,N,02332.346,E,095559,A,D*43"
}
}
}
}
}
}
}
Signal K delta json format:
{
"context":"vessels.motu",
"updates":[
{
"timestamp":"2015-03-23T01:57:01.856Z",
"values":[
{
"path":"navigation.position",
"value":{
"longitude":23.5391,
"latitude":60.08451667
}
}
],
"source":"vessels.motu.sources.nmea.0183.GLL"
},
{
"timestamp":"2015-03-23T01:57:01.856Z",
"values":[
{
"path":"sources.nmea.0183.GLL",
"value":"$GPGLL,6005.071,N,02332.346,E,095559,A,D*43"
}
],
"source":"unknown"
}
]
}
Converting {"timestamp":"2014-08-15-18:00:10.005","dst":"255","description":"COG & SOG, Rapid Update","src":"160","prio":"2","pgn":"129026","fields":{"SOG":"3.65","COG":"206.1","COG_Reference":"True"}}
Signal K key/value tree:
{vessels.motu.navigation.courseOverGroundTrue.source=vessels.motu.sources.n2k.129026.160
vessels.motu.navigation.courseOverGroundTrue.timestamp=2015-03-23T01:57:02.222Z
vessels.motu.navigation.courseOverGroundTrue.value=206.1
vessels.motu.navigation.speedOverGround.source=vessels.motu.sources.n2k.129026.160
vessels.motu.navigation.speedOverGround.timestamp=2015-03-23T01:57:02.222Z
vessels.motu.navigation.speedOverGround.value=3.65
vessels.motu.sources.n2k.129026.160.source=unknown
vessels.motu.sources.n2k.129026.160.timestamp=2015-03-23T01:57:02.222Z
vessels.motu.sources.n2k.129026.160.value={"timestamp":"2014-08-15-18:00:10.005","dst":"255","description":"COG & SOG, Rapid Update","src":"160","prio":"2","pgn":"129026","fields":{"SOG":"3.65","COG":"206.1","COG_Reference":"True"}}
Signal K full json format:
{
"vessels":{
"motu":{
"navigation":{
"courseOverGroundTrue":{
"timestamp":"2015-03-23T01:57:02.222Z",
"source":"vessels.motu.sources.n2k.129026.160",
"value":"206.1"
},
"speedOverGround":{
"timestamp":"2015-03-23T01:57:02.222Z",
"source":"vessels.motu.sources.n2k.129026.160",
"value":3.65
}
},
"sources":{
"n2k":{
"129026":{
"160":{
"timestamp":"2015-03-23T01:57:02.222Z",
"source":"unknown",
"value":"{\"timestamp\":\"2014-08-15-18:00:10.005\",\"prio\":\"2\",\"src\":\"160\",\"dst\":\"255\",\"pgn\":\"129026\",\"description\":\"COG & SOG, Rapid Update\",\"fields\":{\"COG_Reference\":\"True\",\"COG\":\"206.1\",\"SOG\":\"3.65\"}}"
}
}
}
}
}
}
}
Signal K delta json format:
{
"context":"vessels.motu",
"updates":[
{
"timestamp":"2015-03-23T01:57:02.222Z",
"values":[
{
"path":"navigation.courseOverGroundTrue",
"value":"206.1"
},
{
"path":"navigation.speedOverGround",
"value":3.65
}
],
"source":"vessels.motu.sources.n2k.129026.160"
},
{
"timestamp":"2015-03-23T01:57:02.222Z",
"values":[
{
"path":"sources.n2k.129026.160",
"value":"{\"timestamp\":\"2014-08-15-18:00:10.005\",\"prio\":\"2\",\"src\":\"160\",\"dst\":\"255\",\"pgn\":\"129026\",\"description\":\"COG & SOG, Rapid Update\",\"fields\":{\"COG_Reference\":\"True\",\"COG\":\"206.1\",\"SOG\":\"3.65\"}}"
}
],
"source":"unknown"
}
]
}
Converting $GPRMC,144629.20,A,5156.91111,N,00434.80385,E,0.295,,011113,,,A*78
Signal K key/value tree:
{vessels.motu.navigation.position.latitude=51.9485185
vessels.motu.navigation.position.longitude=4.580064166666666
vessels.motu.navigation.position.source=vessels.motu.sources.nmea.0183.RMC
vessels.motu.navigation.position.timestamp=2015-03-23T01:57:02.256Z
vessels.motu.navigation.speedOverGround.source=vessels.motu.sources.nmea.0183.RMC
vessels.motu.navigation.speedOverGround.timestamp=2015-03-23T01:57:02.256Z
vessels.motu.navigation.speedOverGround.value=0.1517598
vessels.motu.sources.nmea.0183.RMC.source=unknown
vessels.motu.sources.nmea.0183.RMC.timestamp=2015-03-23T01:57:02.256Z
vessels.motu.sources.nmea.0183.RMC.value=$GPRMC,144629.20,A,5156.91111,N,00434.80385,E,0.295,,011113,,,A*78}
Signal K full json format:
{
"vessels":{
"motu":{
"navigation":{
"position":{
"timestamp":"2015-03-23T01:57:02.256Z",
"longitude":4.58006417,
"latitude":51.9485185,
"source":"vessels.motu.sources.nmea.0183.RMC"
},
"speedOverGround":{
"timestamp":"2015-03-23T01:57:02.256Z",
"source":"vessels.motu.sources.nmea.0183.RMC",
"value":0.1517598
}
},
"sources":{
"nmea":{
"0183":{
"RMC":{
"timestamp":"2015-03-23T01:57:02.256Z",
"source":"unknown",
"value":"$GPRMC,144629.20,A,5156.91111,N,00434.80385,E,0.295,,011113,,,A*78"
}
}
}
}
}
}
}
Signal K delta json format:
{
"context":"vessels.motu",
"updates":[
{
"timestamp":"2015-03-23T01:57:02.256Z",
"values":[
{
"path":"navigation.position",
"value":{
"longitude":4.58006417,
"latitude":51.9485185
}
},
{
"path":"navigation.speedOverGround",
"value":0.1517598
}
],
"source":"vessels.motu.sources.nmea.0183.RMC"
},
{
"timestamp":"2015-03-23T01:57:02.256Z",
"values":[
{
"path":"sources.nmea.0183.RMC",
"value":"$GPRMC,144629.20,A,5156.91111,N,00434.80385,E,0.295,,011113,,,A*78"
}
],
"source":"unknown"
}
]
}
Converting !AIVDM,1,1,,A,15MvJw5P0NG?Us6EaDVTTOvR06Jd,0*22
Converting !AIVDM,1,1,,B,15Mtu:0000o@05tE`?Ctn@6T06Jd,0*40
Signal K key/value tree:
{vessels.366951720.mmsi.source=vessels.366951720.sources.ais
vessels.366951720.mmsi.timestamp=1969-12-31T23:59:59.999Z
vessels.366951720.mmsi.value=366951720
vessels.366951720.navigation.courseOverGroundTrue.source=vessels.366951720.sources.ais
vessels.366951720.navigation.courseOverGroundTrue.timestamp=1969-12-31T23:59:59.999Z
vessels.366951720.navigation.courseOverGroundTrue.value=328.9
vessels.366951720.navigation.headingTrue.source=vessels.366951720.sources.ais
vessels.366951720.navigation.headingTrue.value=0.3
vessels.366951720.navigation.position.latitude=37.79895833333333
vessels.366951720.navigation.position.longitude=-122.33355
vessels.366951720.navigation.position.source=vessels.366951720.sources.ais
vessels.366951720.navigation.position.timestamp=1969-12-31T23:59:59.999Z
vessels.366951720.navigation.speedOverGround.source=vessels.366951720.sources.ais
vessels.366951720.navigation.speedOverGround.timestamp=1969-12-31T23:59:59.999Z
vessels.366951720.navigation.speedOverGround.value=0.0
vessels.366951720.navigation.state.source=vessels.366951720.sources.ais
vessels.366951720.navigation.state.timestamp=1969-12-31T23:59:59.999Z
vessels.366951720.navigation.state.value=Under way using engine
vessels.366951720.sources.ais.source=unknown
vessels.366951720.sources.ais.timestamp=1969-12-31T23:59:59.999Z
vessels.366951720.sources.ais.value=!AIVDM,1,1,,B,15Mtu:0000o@05tE`?Ctn@6T06Jd,0*40}
Signal K full json format:
{
"vessels":{
"366951720":{
"navigation":{
"position":{
"timestamp":"1969-12-31T23:59:59.999Z",
"longitude":-122.33355,
"latitude":37.79895833,
"source":"vessels.366951720.sources.ais"
},
"state":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366951720.sources.ais",
"value":"Under way using engine"
},
"headingTrue":{
"source":"vessels.366951720.sources.ais",
"value":0.3
},
"courseOverGroundTrue":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366951720.sources.ais",
"value":328.9
},
"speedOverGround":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366951720.sources.ais",
"value":0.0
}
},
"sources":{
"ais":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"unknown",
"value":"!AIVDM,1,1,,B,15Mtu:0000o@05tE`?Ctn@6T06Jd,0*40"
}
},
"mmsi":{
"timestamp":"1969-12-31T23:59:59.999Z",
"source":"vessels.366951720.sources.ais",
"value":"366951720"
}
}
}
}
Signal K delta json format:
{
"context":"vessels.366951720",
"updates":[
{
"timestamp":"1969-12-31T23:59:59.999Z",
"values":[
{
"path":"navigation.position",
"value":{
"longitude":-122.33355,
"latitude":37.79895833
}
},
{
"path":"navigation.state",
"value":"Under way using engine"
},
{
"path":"navigation.headingTrue",
"value":0.3
},
{
"path":"navigation.courseOverGroundTrue",
"value":328.9
},
{
"path":"navigation.speedOverGround",
"value":0.0
}
],
"source":"vessels.366951720.sources.ais"
},
{
"timestamp":"1969-12-31T23:59:59.999Z",
"values":[
{
"path":"sources.ais",
"value":"!AIVDM,1,1,,B,15Mtu:0000o@05tE`?Ctn@6T06Jd,0*40"
}
],
"source":"unknown"
},
{
"timestamp":"1969-12-31T23:59:59.999Z",
"values":[
{
"path":"mmsi",
"value":"366951720"
}
],
"source":"vessels.366951720.sources.ais"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment