Withingsの体重データをGarmin Connectと連携する:2

Withingsの体重データをGarmin Connectと連携する残念ながらWithingsもGarmin Connectも仕様が変更され 下記方法は動作しません。 オフィシャルでは不可能な Withingsの体重データをGarmin Connectと連携させるお話。 有志によって公開…
続きを読む
 cyber.back2nature.jp
Withingsの体重データをGarmin Connectと連携する

以前紹介したWithingsの体重データをGarmin Connectと連携する方法ですが、
11月頃からGamin Connectの仕様変更なのか、使えなくなりました。
下記修正点になります。

大本のソースコードが変更されたので、
3月31日追記:日付のズレ対策まで記事をすっ飛ばしてください。

garmin.pyの修正1

基本このファイルのみ修正です。


s = requests.session()

上記コードを11行目の空白行に挿入してください。

garmin.pyの修正2

テキストエディタの置換機能を使って
下記の様に置換して下さい。
.(ドット)をお忘れなく。

・検索ワード
requests.

・置換後
s.

garmin.pyの修正3

次は138行目辺りにある


return (cookies)

上記コードを下記のように書き換えます。


return (s.cookies)

garmin.pyの修正4

最後に81行目辺りにある


# "gauthHost": "https://sso.garmin.com/sso",

ここからコメントアウトするための#を取り外します。
注意点は一つ上の行頭とツラを合わせることです。

修正出来たら

いつもの様にsync.pyを実行します。

僕の環境では問題なくアップ出来ました。
sync.py実行時に-vのオプション付けると
上記の画像のようにメッセージが付加されます。

馴染みのないPythonなので、苦労しましたが、
アップ出来てスッキリしました。

3月1日追記:403エラー対策

いつの間にやらGarmin Connectの仕様変更なのか、
アップ出来なくなってました。
早速対策です。
おなじみのgarmin.pyを修正します。
154行目あたりのコードに追記します。


req = urllib2.Request(self.UPLOAD_URL)

↑このコードを↓こんな感じに変更します。


req = urllib2.Request(self.UPLOAD_URL, headers={"nk": "NT"})


以上で対策完了です。
“nk”: “NT”って何でしょうね?
tapiriikさんのコードを参考にしました。
ありがとうございます。

3月31日追記:日付のズレ対策

Garmin Connectに表示される体重のデータが、
微妙にズレている事を今更ですが気が付きました。
朝に計測しているデータが前日扱いになってました。
午後に計測するとその日になっていました。
恐らくWithingsのデータが何故か標準時刻でアップされてると思われます。

てな訳で、日本時間に合わせる為に『fit.py』に追記してみます。
76行目あたりのコードに追記します。


t = time.mktime(t.timetuple())

↑このコードを↓こんな感じに変更します。


t = time.mktime(t.timetuple()) + 32400


標準時刻から日本は9時間進んでいるので、
32,400秒分を足した感じです。
とりあえず現状はこれでOKかな?

5月15日追記:大本のソースコードが変更

GitHub - jaroslawhartman/withings-garmin-v2: Withings to Garmin Connec syncWithings to Garmin Connec sync. Contribute to jaroslawhartman/withings-garmin-v2 development by creating an account on GitHub.
GitHub - jaroslawhartman/withings-garmin-v2: Withings to Garmin Connec sync github.com
GitHub - jaroslawhartman/withings-garmin-v2: Withings to Garmin Connec sync

またしてもGarmin Connectの仕様変更か、同期ができない状況になってました。
久々にソースの配布元をチェックすると、
『garmin.py』と『sync.py』のコードが大幅に変更されてました。
4月21日頃にアップデートされているので、
それ以前にダウンロードした方は再度ダウンロードして、
ソースのアップデートをおすすめします。

今まで色々改造していましたが、この2点のソースコードを
大本と同じ物にアップデートしました。

で、5月15日時点ではそのままではやっぱりエラーが出るので修正します。

Withingsの体重データをGarmin Connectと連携する残念ながらWithingsもGarmin Connectも仕様が変更され 下記方法は動作しません。 オフィシャルでは不可能な Withingsの体重データをGarmin Connectと連携させるお話。 有志によって公開…
続きを読む
 cyber.back2nature.jp
Withingsの体重データをGarmin Connectと連携する

『sync.py』はユーザーネームで弾かれるので、以前と同じ方法で、
コメントアウトかソースを消して対処します。

次は『garmin.py』の修正です。
77行目あたりのコードをコメントアウトか消します。


data["lt"] = re.search("name="lt"s+value="([^"]+)"", preResp.text).groups(1)[0]

↑このコードを↓こんな感じに変更します。
これはコメントアウトした場合です。


#data["lt"] = re.search("name="lt"s+value="([^"]+)"", preResp.text).groups(1)[0]

次は104行目あたりのコード『params={“ticket”: ticket},』を消します。


gcRedeemResp = session.get("https://connect.garmin.com/post-auth/login", params={"ticket": ticket}, allow_redirects=False)

↑このコードを↓こんな感じに変更します。


gcRedeemResp = session.get("https://connect.garmin.com/post-auth/login",  allow_redirects=False)

以上の変更で5月15日時点では同期可能となります。
いずれGarmin Connectの仕様変更で同期が出来ない事になると思いますが^^;

是非フォローしてください

最新の情報をお伝えします

やーまん
  • 山奥に移住し、自然に囲まれ暮らしています。
    日々の事で感じた事や考え方などを備忘録として残しています。

WEB

1件のピンバック

コメントは停止中です。