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

オフィシャルでは不可能な
Withingsの体重データをGarmin Connectと連携させるお話。
有志によって公開されているプログラムを
Windows10環境に導入し実現しました。

※導入する方は自己責任でお願い致します。不具合が生じてもこちらでは責任取れません。

スポンサーリンク

1:Python(パイソン)の導入

そのプログラムは使用言語がPython(パイソン)。
まずはこれを動かせる環境作り。

1-1:ダウンロード

まずはPythonをダウンロード。

The official home of the Python Programming Language

バージョンが複数ありますが今回は2.7.12を使用。
僕は『Windows x86 MSI installer』を選んで
ダウンロードしました。

1-2:インストール

Python07
ダウンロードしたファイルをダブルクリックで起動。

Python01
『Install for all users』を選んで『Next >』をクリック

Python02
インストール先はそのままにして『Next >』をクリック
(Cドライブ直下になります)

Python03
カスタム項目は『Add python.exe to Path』から
『Entire feature will be installed on local hard drive』を選択。
これ重要
選択出来たら『Next >』をクリック

Python04
環境によってはユーザーアカウント制御の表示が出ますが許可。
Finishボタンを押してインストール終了。

1-3:pipのインストール

Pythonに追加のプログラムをインストール。

まずはコマンドプロンプトを起動。

Python05
キーボードの+Rキーを押して
『cmd』と入力しEnterキーを押しても起動可能です。
python23
コマンドプロンプトが起動したら

pip install requests

と入力してEnter

Python08
Collecting requestsと表示されて、しばし待機。

Python09
Successfully~と表示されたら成功。
ここまで出来ればPython導入編は完了。

スポンサーリンク

2:withings-garmin-v2の導入

Pythonのインストールが完了したら
今回の目的を叶えるプログラム『withings-garmin-v2』を
入れてみます。

2-1:ダウンロード

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

上記サイトからプログラムをダウンロード。
Python10

緑色の『Clone or download』ボタンをクリック後
『DownLoad ZIP』ボタンをクリック。
僕はPythonをこのプログラム以外に使う用途が無さそうなので、
Pythonのインストールフォルダに解凍し展開しました。

『C:\Python27』の中身はこんな感じ。

Python11

2-2:設定

Python15

展開したファイル内から『sync.py』ファイルをテキストエディタで開いて設定します。
変更箇所は17行目あたりからはじまる5つ。

WITHINGS_USERNMAE = ''
WITHINGS_PASSWORD = ''
WITHINGS_SHORTNAME = ''

GARMIN_USERNAME = ''
GARMIN_PASSWORD = ''

各”内に自分のWithings、Garminの
IDやパスワードを半角英数字で入力。

Python12

Withingsのショートネームは初期設定のままだと
『AAA』の可能性が高い。
体重計に乗ったら左上に表示される3桁の英数字です。
入力できたら上書き保存して下さい。

2-3:withings-garmin-v2の実行

設定が出来れば基本的には『sync.py』を実行するだけで
OKです。
但し設定が正しく出来ていなくても終了してしまうので、
コマンドプロンプトをまた使い
正しく実行出来ているか確認。

Python13

sync.py

と入力してEnter

Python14
設定に不備があるとこんな感じでエラーが出て弾かれます。
その場合は先程の『sync.py』ファイル内の
IDやパスワードに誤りが無いか要チェック。

2-4:まさかの・・・

僕はここまでは順調に行きました。
まさかこのあと解決まで半日以上かかるとは
思いもよりませんでした。
Python16

先ほどの設定が上手く行っていれば↑みたいな感じになります。
しかしこれはWithingsのデーターが拾えないエラー。

user *** has not opened withings data

withingsのセキュリティ設定の問題かアクセスしても弾かれている様子。
withingsの共有設定などWEBサイトやスマホアプリで
変更出来そうな箇所は開放してsync.pyを実行するが

user *** has not opened withings data

やーまん(目がぐるぐる)

やーまん
またエラー!?

あれこれ試してみるがやっぱりエラー。
時間だけが過ぎていく・・・

最後に思いついたのが、

自分のアカウントは独立して1人で使ってるから
ショートネームで判断する必要なし?

WITHINGS_SHORTNAMEを空白にしてみるが、
Python17
新しいエラーcould not find user:の表示。

やーまん(目がぐるぐる口閉じる)

やーまん
ダメだー(´・ω・`)

ユーザーは判別している様だ。

2-5:withings-garmin-v2の改造

ではエラーメッセージを返している部分のコードを飛ばすとどうなるか?

『sync.py』ファイル内の83行目あたりからはじまるWithings API関連のコード。
そこから次のコードの先頭に半角の#シャープを追加、
もしくはまるごと削除。

#    if not user:
#        print 'could not find user: %s' % withings_shortname
#        return
#    if not user.ispublic:
#        print 'user %s has not opened withings data' % withings_shortname
#        return

Python18

ここでは#を入れて対応している。
この言語は先頭に#を入れるとコメントとみなしてコードを実行しない。

さて結果は
Python19

またuser *** has not opened withings dataが表示されると思っていたら

Garmin Connect User Name: *****

今まで見たこと無い表示。
これはつまり成功?

Garmin Connectにアクセスすると・・・

python21
反映されている!!!!!

やーまん(笑い顔)

やーまん
やったー\(^o^)/

2-6:過去の体重データを引っ張る

苦労しただけあっておもわずヤッホーな状態ですが、
上記のやり方だと当日の体重データのみ反映されます。

過去のデーターを引っ張ってくるには、
コマンドプロンプトで下記の様に入力します。

sync.py -f 2011-01-16 -t 2016-09-02

↑この例だと2011年の1月16日から2016年9月2日までのデータを
引っ張ってくる形になります。
Python20

スポンサーリンク

3:その後

Python15
毎日パソコンを立ち上げる方は
スタートアップに『sync.py』を登録すれば
自動でデータを同期してくれますね。

あとはタスクスケジューラに登録して
定時に『sync.py』起動する様にする等。

僕は毎日パソコン使わないので、
恐らく2-6:の方法でまとめて同期すると思います。

長文お疲れ様でした。

4:追記Garmin Connectの仕様変更

9月下旬あたりからデーターが反映されず???状態でした。
正確な日付はわかりませんが、Garmin Connectへログインする際
複雑なパスワードを求める仕様に変更となりました。
python22
それに伴いパスワードの変更を行い、『sync.py』も
新パスワードに書き換えると問題なく反映されました。

5:12月16日追記

Garmin Connectの仕様変更に対応してみました。
長くなったので別記事へアップ。

https://back2nature.jp/computer/web/withings-to-garmin-connect 以前紹介したWithingsの体重データをGarmin Connectと連携する方法ですが、 11月頃からGamin Connectの仕様変更なの…

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

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

やーまん

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

関連記事

4 コメント

  • はじめまして。
    最近withingsの体重計を購入し、garmin connectとの連携を模索していてたどり着きました。
    2-4.の同じ箇所にて躓いていましたが、同じようにコメントにすることで連携ができるようになりました。
    ありがとうございました!

    • コメントありがとうございます。
      お役に立てて何よりです(^^)

  • ご無沙汰しております。
    昨日からスクリプト経由のwithings2garminの連携にて下記のようなエラーが出るようになりました。
    NameError:global name ‘APIException’ is not defined
    同じような症状でておりますでしょうか?

    PCのgarmin expressアプリからgarmin connectボタンを押すと以前はID、passの入力なしに個人ページに飛んでいたのですが現在ID、passを求められるようになりました。
    garmin側の仕様がかわったのかなと推測しております。

    • 先程確認しました。
      こちらもエラーが出てます。

      仕様変更なのか、サーバーがダウンしているのか
      私も原因はわかりません・・・
      困りましたね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA