
Withingsの体重データをGarmin Connectと連携する
下記方法は動作しません。
オフィシャルでは不可能な
Withingsの体重データをGarmin Connectと連携させるお話。
有志によって公開されているプログラムを
Windows10環境に導入し実現しました。
※導入する方は自己責任でお願い致します。不具合が生じてもこちらでは責任取れません。
1:Python(パイソン)の導入
そのプログラムは使用言語がPython(パイソン)。
まずはこれを動かせる環境作り。
1-1:ダウンロード
まずはPythonをダウンロード。


バージョンが複数ありますが今回は2.7.12を使用。
僕は『Windows x86 MSI installer』を選んで
ダウンロードしました。
1-2:インストール
『Install for all users』を選んで『Next >』をクリック
インストール先はそのままにして『Next >』をクリック
(Cドライブ直下になります)
カスタム項目は『Add python.exe to Path』から
『Entire feature will be installed on local hard drive』を選択。
↑これ重要
選択出来たら『Next >』をクリック
環境によってはユーザーアカウント制御の表示が出ますが許可。
Finishボタンを押してインストール終了。
1-3:pipのインストール
Pythonに追加のプログラムをインストール。
まずはコマンドプロンプトを起動。
キーボードの+Rキーを押して
『cmd』と入力しEnterキーを押しても起動可能です。
コマンドプロンプトが起動したら
pip install requests
と入力してEnter。
Collecting requestsと表示されて、しばし待機。
Successfully~と表示されたら成功。
ここまで出来ればPython導入編は完了。
2:withings-garmin-v2の導入
Pythonのインストールが完了したら
今回の目的を叶えるプログラム『withings-garmin-v2』を
入れてみます。
2-1:ダウンロード

緑色の『Clone or download』ボタンをクリック後
『DownLoad ZIP』ボタンをクリック。
僕はPythonをこのプログラム以外に使う用途が無さそうなので、
Pythonのインストールフォルダに解凍し展開しました。
『C:Python27』の中身はこんな感じ。
2-2:設定
展開したファイル内から『sync.py』ファイルをテキストエディタで開いて設定します。
変更箇所は17行目あたりからはじまる5つ。
WITHINGS_USERNMAE = ''
WITHINGS_PASSWORD = ''
WITHINGS_SHORTNAME = ''
GARMIN_USERNAME = ''
GARMIN_PASSWORD = ''
各”内に自分のWithings、Garminの
IDやパスワードを半角英数字で入力。
Withingsのショートネームは初期設定のままだと
『AAA』の可能性が高い。
体重計に乗ったら左上に表示される3桁の英数字です。
入力できたら上書き保存して下さい。
2-3:withings-garmin-v2の実行
設定が出来れば基本的には『sync.py』を実行するだけで
OKです。
但し設定が正しく出来ていなくても終了してしまうので、
コマンドプロンプトをまた使い
正しく実行出来ているか確認。
sync.py
と入力してEnter。
設定に不備があるとこんな感じでエラーが出て弾かれます。
その場合は先程の『sync.py』ファイル内の
IDやパスワードに誤りが無いか要チェック。
2-4:まさかの・・・
僕はここまでは順調に行きました。
まさかこのあと解決まで半日以上かかるとは
思いもよりませんでした。
先ほどの設定が上手く行っていれば↑みたいな感じになります。
しかしこれはWithingsのデーターが拾えないエラー。
withingsのセキュリティ設定の問題かアクセスしても弾かれている様子。
withingsの共有設定などWEBサイトやスマホアプリで
変更出来そうな箇所は開放してsync.pyを実行するが

あれこれ試してみるがやっぱりエラー。
時間だけが過ぎていく・・・
最後に思いついたのが、
ショートネームで判断する必要なし?
WITHINGS_SHORTNAMEを空白にしてみるが、
新しいエラー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
ここでは#を入れて対応している。
この言語は先頭に#を入れるとコメントとみなしてコードを実行しない。
またuser *** has not opened withings dataが表示されると思っていたら
今まで見たこと無い表示。
これはつまり成功?
Garmin Connectにアクセスすると・・・

2-6:過去の体重データを引っ張る
苦労しただけあっておもわずヤッホーな状態ですが、
上記のやり方だと当日の体重データのみ反映されます。
過去のデーターを引っ張ってくるには、
コマンドプロンプトで下記の様に入力します。
↑この例だと2011年の1月16日から2016年9月2日までのデータを
引っ張ってくる形になります。

3:その後
毎日パソコンを立ち上げる方は
スタートアップに『sync.py』を登録すれば
自動でデータを同期してくれますね。
あとはタスクスケジューラに登録して
定時に『sync.py』起動する様にする等。
僕は毎日パソコン使わないので、
恐らく2-6:の方法でまとめて同期すると思います。
長文お疲れ様でした。
4:追記Garmin Connectの仕様変更
9月下旬あたりからデーターが反映されず???状態でした。
正確な日付はわかりませんが、Garmin Connectへログインする際
複雑なパスワードを求める仕様に変更となりました。
それに伴いパスワードの変更を行い、『sync.py』も
新パスワードに書き換えると問題なく反映されました。
5:12月16日追記
Garmin 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側の仕様がかわったのかなと推測しております。
先程確認しました。
こちらもエラーが出てます。
仕様変更なのか、サーバーがダウンしているのか
私も原因はわかりません・・・
困りましたね。