Epson SF-810の心拍数をSportTracks3.1に読み込むためにGPXを編集した

EpsonのGPS付き心拍計(脈拍計)「SF-810」を使い始めました。今まで使っていたSportTracks3.1で記録を管理しようとしましたが、心拍がうまく反映できませんでした。そのため、GPXファイルを修正して対応しました。
今回は、とてもマニアックな記事です。

スポンサーリンク

SF-810のGPXの心拍数が、SportTracks3.1に反映されない

EpsonのSF-810Bは、胸ベルトなしで心拍数が計測できる、便利なGPS付き脈拍計です。

電池も20時間もつので、ウルトララマラソンに最適です。

SF-810は、エプソンの「NeoRun」というサイトを経由してGPXデータをエクスポートできます。
これを、普段使っているSportTracksというソフトにインポートしたのですが、心拍数が反映されません。

NeoRunでは、GPXをエクスポートする時に、出力するGPXに心拍情報を含めるか聞いてきます。「ON」を選択してGPXファイルを作っても、SportTracksでは心拍数が読み込めませんでした。

SportTracks3.1のPluginには、Epsonの品揃えがない

SportTracks3.1には、豊富なプラグインがあります。私がずっと使っていたGlobalsat社の「GH-625XT」という、マイナーなGPS付き心拍計用のプラグインもありました。

でも、EpsonのSF-810のプラグインは有りません。そのため、どうしてもGPXファイルを経由してSportTracksに読み込ませる必要があります。

今後はNeoRunで管理してもいいけれど‥

せっかく心拍数(正確には、腕で測っているので脈拍ですね)を計測しているのに、それが記録されないのはもったいないです。今後はずっとNeoRunを使うと言う手もありますが、今までのデータが別アプリだと面倒です。

また、NeoRunに他のデバイスで計測したGPXファイルをインポートする方法が見つかりません。今後も、別のデバイスでランの記録を取ることも有るでしょう。その時には別アプリで見るのは面倒です。

SF-810のGPXファイルには、心拍数が記録されている

エクスポートされたGPXファイルを見てみると、しっかり心拍数が記録されています。
こんな感じです↓

        <extensions>
          <gpxdata:hr>91</gpxdata:hr>
        </extensions>

そして、gpxdataという名前空間が、エプソンで定義されています。
xmlns:gpxdata="https://go-wellness.epson.com/neo-run/GPX/1/0"

ですが、SportTracksにとっては、これが理解できないのかもしれません。

エプソンのGPXファイルを、ガーミンのGPXファイルに合わせる:sed編

GPSといえばガーミン、というくらいメジャーなガーミン。SportTracks3.1でも、当然ながらガーミンからデータを読めるはずです。

ガーミンのGPXファイルを見てみる

EpsonからエクスポートしたGPXファイルの形式を、ガーミンからエクスポートした様に見せかければOKのはずです。

でも、ガーミンを持っていないのでファイル形式が判りません。ガーミンから出力したGPXファイルの見本がないかなあ、と探していたら、以下にありました。
https://getsatisfaction.com/sportstracking/topics/heart_rate_import_from_gpx_file

心拍が記録されている部分は、以下のように書いてあります。

<extensions>
	<gpxtpx:TrackPointExtension>
		<gpxtpx:hr>91</gpxtpx:hr>
	</gpxtpx:TrackPointExtension>
</extensions>

これに合わせていけばOKです。

ガーミンとエプソンのGPXファイルの違いは、どこ?

2つのファイルを見比べると、GarminのGPXと、EpsonのGPXの違いは、以下のとおりです。

  • ガーミンは、「gpxtpx」という名前空間になっていて、それがTrackPointExtensionに含まれている
  • それに伴い、名前空間の宣言も変わっている

エプソンのGPXファイルの心拍部分をガーミンに合わせるスクリプト

違いがわかりましたので、それを合わせればOK、のはずです。でも、GPXファイルの中の心拍数が記録された箇所は膨大です。2秒単位の記録で1時間走ると、60*60/2=1800個の心拍数の記録があります。これを全部書き換えないといけません。

人手では無理なので、機械に任せることにします。

超マニアックになりますが、sedというストリームエディタを持っている人であれば、以下をスクリプトとして突っ込めばOKだと思います。

s/<gpxdata:hr>/<gpxtpx:TrackPointExtension><gpxtpx:hr>/g
s/<\/gpxdata:hr>/<\/gpxtpx:hr><\/gpxtpx:TrackPointExtension>/g
s/^<gpx .*/<gpx xmlns:gpxtpx="http:\/\/www.garmin.com\/xmlschemas\/TrackPointExtension\/v1" xmlns="http:\/\/www.topografix.com\/GPX\/1\/1" version="1.1" creator="NeoRun2G">/

Windows用のsedは、以下にありました。
http://gnuwin32.sourceforge.net/packages/sed.htm

なぜエプソンが独自の名前空間を作ったのか、よくわかりません。デファクトスタンダードであろう、ガーミンに合わせれば良いのに、と思うのですが、著作権とかの問題があるのでしょうか??

おまけ:sports-trackerでは、EPSONのGPXファイルを直接読めた

スマホで計測するときは、私はsports-trackerのアプリを使っています。
EPSON SF-810の心拍数付きGPXデータをsports-trackerにインポートすると、無事に心拍数が表示されました。

今後は、sports-trackerで一元管理するか、とも思いますが、グラフがちょっと見づらいのがいまいちです。また、データもクラウド管理なので、ちょっと不安です。

課題:Epson SF-810で計測したストライドやピッチは、どうする?

Epson SF-810で計測したデータをNeoRunにアップロードすると、時間と距離(ペース)と心拍数だけでなく、以下も計測されています。

  • ピッチ
  • ストライド
  • 歩数
  • カロリー

これらは、NeoRunからエクスポートされるGPXファイルに、そもそも入っていません。
でも、NeoRunからバックアップとして出力できるCSVファイルには、入っています。なんとか一元管理したいですね。

まとめ

EpsonのSF-810から出力されるGPXファイルは、少し書き換えればガーミンと同様になり、SportTracks3.1に心拍数が読み込めるようになりました。めでたしめでたし。

(追伸)
やっぱり、多くの人が使っている、ガーミンの920XTJを買えばよかったかなあ。。

スポンサーリンク