标签存档: Synology

在使用 Linux 系统的 NAS 上部署 Fitbit 数据同步程序

使用 Fitbit 已经三个多月了,用它来记录每天的运动量以及睡眠质量感觉很方便。

不过因为我用的电脑是笔记本,如果要同步 Fitbit 的数据,就需要把 Fitbit Base Station 连接在笔记本电脑上,然后 Fitbit 的数据才会同步到官网上。

因为家里没有 24 小时开机的电脑,所以没办法直接把 Fitbit Base Station 连接在一台电脑上实现回家自动同步。

但是家里有下载机是 24 小时运行的,于是去 Fitbit 官网看看有没有提供 Linux 下的 Fitbit 同步程序。

很不幸的是,Fitbit 官方只提供了 Windows 和 Mac OS X 版本的同步程序,没有提供 Linux 下的 Fitbit 同步程序。

昨天突然想到去网上找找看有没有非官方的 Linux 平台 Fitbit 同步程序,没想到还真找到了。

在网上找到了两个项目,用来提供跨平台的 Fitbit 同步功能。

开源的 Fitbit 同步程序

libfitbit

项目地址:

libfitbit is an implementation of the data retrieval protocol for the fitbit health tracking device. It also implements a synchronization client for synchronizing data with the fitbit website on platforms not supported by Fitbit currently.

fitbitd

项目地址:

fitbitd synchronises FitBit trackers with the FitBit.com service. You simply leave it running in the background and it will synchronise the tracker periodically, just like the official FitBit software does for Windows or Mac OS.

libfitbit 是用 python 编写的,功能上可能相对简陋一些,而 fitbitd 是使用 C 编写的,功能相对于 libfitbitd 强大一点,并且提供了 Linux 桌面环境中的状态栏插件。

不过因为我是要在 DS211j 上安装,而 DS211j 的 CPU 是 ARM 而非 x86,因此如果要安装这些程序都需要自己来编译。

在多次尝试之后,我选择了 libfitbit 而不是 fitbitd,因为 fitbitd 要用到 dbus,在编译时会遇到很多问题。如果只是为了同步 Fitbit 数据,libfitbit 已经基本够用,并且像 daemon 模式,也可以通过 nohup 来实现。

在 DS211j 上安装包管理程序 ipkg

注意:文中所有在 NAS 上的操作均以 root 用户进行

首先需要在 DS211j 的控件台里启用 SSH 服务,然后使用 SSH 连接到 NAS,安装 ipkg:

wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/syno-mvkw-bootstrap_1.2-7_arm.xsh
chmod +x syno-mvkw-bootstrap_1.2-7_arm.xsh
./syno-mvkw-bootstrap_1.2-7_arm.xsh
ipkg update

注意,如果安装完 ipkg 可能需要修改一下 .profile 文件,防止 /opt 可能没有加到 PATH 环境变量的问题,需要把:

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH

修改为:

PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH

安装所需软件

编译以及运行所需软件包如下:

  • gcc
  • python27

直接使用 ipkg 安装即可:

ipkg install gcc python27

编译 libusb-1.0

DS211j 使用的软件源中的 libusb 是 0.1 版本的,而 libfitbit 需要的是 1.0。如果使用 libusb-0.1 虽然 libfitibt 可以运行,但是无法接收数据。

先去 下载一个 libusb-1.0.9,解压到放到 NAS 上,然后进行编译安装。

注意在编译前需要修改 libusb 的 Makefile,默认情况下编译的话,在使用时会出现“undefined reference to `clock_gettime’” 错误。

./configure --prefix=/opt
vi libusb/Makefile
# 修改 LDFLAGS= 为 LDFLAGS=-lrt
make
make install

使用 libfitbit

下载 libfitbit,解压后把 python 目录放到 NAS 的 /root 中,并且重命令为 libfitbit。

下载 libfitbit 依赖的 pyusb 模块,解压后把 usb 目录放到 NAS 的 /root/libfitbit 目录中。

这时需要把 Fitbit Base Station 连接到 DS211j 上。

在 NAS 上进入 /root/libfitbit 目录,运行 python2 fitbit.py 测试安装是否正常。

Start reset () {}
    sent: ['a4', '01', '4a', '00', 'ef']
received: ['a4', '01', '6f', '20', 'ea']
End reset None
# 其他日志省略...
End open_channel None
Waiting for receive

如果出现 Waiting for receive 就说明 fitbit.py 已经正常运行了,如果有 Fitbit Ultra Tracker 在 Fitbit Base Station 附近,那么就会继续出现其他日志。

接下来就要让 libfitbit 在后台一直运行了。libfitbit 本身提供了每隔 15 分钟同步一次数据的功能,但没有提供后台运行的功能,不过借助于 Linux 中的 nohup 命令可以轻松实现。

nohup python2 fitbit_client.py > /tmp/libfitbit.log &

注意,这里会把 libfitbit 产生的日志输出到 /tmp/libfitbit.log 中,但是 /tmp 的容量不会很大,所以正式使用时,可以直接将日志输出到 /dev/null:

nohup python2 fitbit_client.py > /dev/null &

结语

感谢 Kyle Machulis 带来这么棒的开源项目。

最开始一直尝试在 My Book Live 上配置 libfitbit 和 fitbitd,但是弄到最后突然发现,My Book Live 并没有 USB 接口⋯⋯

如果只是 Linux 用户希望在 Linux 系统下同步数据,如果又刚好是 Ubuntu 或 Mint 用户的话,那么使用 fitbitd 可能是一个更好的选择,因为作者已经提供了一个 PPA 源来直接安装 fitbitd,并且还有状态栏插件可以用。Arch 用户也可以直接用 sudo pacman -Sy fitbitd-git 来安装。

当然,如果你也像我一样,不喜欢电脑上拖着个小尾巴,家里也刚好有个带 USB 接口并且 24 小时运行的 Linux 设备,也么也可以折腾一下。

希望此文对爱好 量化生活 的朋友们有所帮助。

参考资料

  1. Overview on modifying the Synology Server, bootstrap, ipkg etc
  2. What kind of CPU does my NAS have
  3. http://sourceforge.net/projects/libusb/files/libusb-1.0/
  4. undefined reference to涉及的链接问题
  5. https://github.com/qdot/libfitbit
  6. http://sourceforge.net/projects/pyusb/files/PyUSB%201.0/
  7. http://www.paulburton.eu/projects/fitbitd/
  8. http://www.fitbit.com/

— EOF —

我的数码生活 – 性能篇

我的数码生活 – 硬件篇 写了一些硬件的使用,这次写一下在使用过程中的设备性能表现。

这次测试的主要内容是 MacBook Pro,DS211j 以及 Maxtor Shared Storage 之间的传输速度,包括使用 LAN 和使用 WiFi 的情况。测试使用的文件是两个7G左右的视频文件,因为这次测试不能体现小文件的拷贝速度。

我的 DS211j 为了文件安全考虑,采用的是 RAID 1,而不是 RAID 0,因此在 NAS 这一端,性能瓶颈应该会在硬盘的传输速度上。DS211j 和 WZR-HP-G300NH 都是支持千兆LAN的,但是我不清楚我测试时使用的网线是否为超五类线,不过测试表现还不错。MSS 只有百兆LAN口与 WZR-HP-G300NH 相连。

另外,由于 MBP 和 WZR-HP-G300NH 在 802.11n 上的兼容性问题,实际连接速度只有 130M,而不是 802.11n 标称的 300M。因此使用 Windows 电脑来测试的时候,在 WiFi 传输速度测试时表现可能会更好。

测试数据是使用的 Synology DSM 的性能监测和 dd-wrt 的带宽监测。

使用 LAN 从 NAS 下载数据到 MBP

在从 DS211j 上下载 14G 数据到 MBP 时,速度基本可以稳定在 55MB/s 左右,而 DS211j 的 CPU 和内存占用都不算很高,CPU稳定在40%以下,而内存使用基本没有提高。

使用 LAN 从 MBP 上传数据到 NAS

在上传 14G 数据到 NAS 时,速度基本稳定在 33MB/s 左右。在写入数据时,可以看到 CPU 占用有明显提高,到了 60% 左右,内存占用还是比较稳定,没有增加很多。

使用 WiFi 从 MBP 上传数据到 NAS

这次测试是将一些软件备份到 NAS 上,同样是一些比较大的文件。从图中可以看到,速度稳定在 70Mbps 左右,换算一下是 9MB/s,虽然没有达到 130M 连接速度,不过还算能接受。

使用 WiFi 同时从 NAS 下载数据和上传数据到 NAS

如果同时上传和下载,整个速度表现就比较差了,上行和下行加起来都没有达到只有上行时的速度,因此如果在同时对 NAS 进行写入和读出操作可能不是个好动作。这一个操作没有测试使用 LAN 的情况,不知道使用 LAN 不会表现好一些。

使用 WiFi,同时从 MBP 上传到 NAS,和从 MSS 下载到 MBP

如果上传的目录和下载的来源不是同一个,表面上看起来性能会有所提高,使用无线上传到 NAS 有 54Mbps 的速度。至于从 MSS 下载只有 37Mbps,我觉得应该是和 MSS 本身的性能有关系,毕竟已经是淘汰的产品了。

实际应用时的表现

在实际使用时,连接网线总是一件比较麻烦的事,而我想要的是,回家连上无线网络后,Time Machine 就能自动帮我备份,因此平时都是使用 WiFi 网络进行 Time Machine 备份的。

因为是每天回家才备份,所以每次备份的内容会比每小时备份要大,一次备份大小大约在 3~5G,使用 WiFi 大概要一小时左右,应该处于可接受的范围。

小结

总的来说,DS211j 的性能还是不错的,基本上可以满足家庭存储的要求,如果对于备份速度要要求的话,可以选择有线备份,而不是无线。

当然,如果追求速度的话,可以将 DS211j 的磁盘用 RAID 0 来使用,性能应该会更上一台阶。

好了,性能测试就到这里了,其实平时使用过程中,还是感觉 MBP 本身更慢一些,NAS 和 MSS 反而不是很影响使用,毕竟存储只是存储而已,也许 SSD 和 8G 内存会让 MBP 更顺畅。

我的数码生活 – 硬件篇

一直以来都很向往数码化的家居生活,但在没有能力直接拿下现成方案的时候,就需要自己折腾了。自打搬出合租的地方,开始慢慢购买一些比较实用的网络设备,到现也买了不少,当然,也折腾掉了不少时间,现在也算是有个雏形,算个家庭的“云”么,哈~

这篇主要介绍我使用的硬件,至于软件方便,如果买的设备软件功能上已经足够完善,基本上是不需要怎么折腾的。折腾的话,基本上就是 Linux 的事了,这个下次再说。

上面就是现在使用的设备和大致网络拓扑结构了。

需求

一般说来,现在个人的需求也不是特别复杂,主要就是下载、影音和备份。

1. 下载

现在看电影啥的,动不动就720P,1080P,文件大小少则2G,多至蓝光原盘的20多G,例如,用2M ADSL的小水管来下载一个8G的视频文件,就需要近10个小时,电脑一整天开着下载比较不实际,而且也比较费电。

这个时候就需要下载机出场了,下载机的功率一般都只有10几瓦,加上硬盘,24小时都不到半度电,无疑比使用电脑下载合算许多。

2. 影音

我对电影或者音乐的需求并不是特别大,现在越来越多的是去电影院看电影,但是在折腾的时候,总归想把事情弄得完美一些,于是就顺带着把电影播放和音乐播放的东西也搞定。

3. 存储

可以说,我折腾这些的主要目的就是为了存储了。存储包括了存放一些软件、文档、代码等,还有 Time Machine 的备份。作为一个程序员,最怕的就是代码丢失了,因此这一块相对而言是投入最大的。

网络

虽然许多人说用无线有辐射,但是我还是觉得无线比较舒服,不用许多网线,而且移动来移动去也比较方便。并且现在的无线使用 802.11n,速度虽然不一定能到 300Mbps,但是达到 100Mbps 还是没有问题的,可以满足多数应用的需要。从一开始的图中也可以看到,我只有个别设备使用了网线连接,其他的都用无线。

路由器使用 WZR-HP-G300NH 是因为这是能找到可以刷 dd-wrt,而且有千兆LAN,外形又比较中意的机型了。虽然现在也有双频的型号,但是可能LAN就没有千兆了,不能两全。另外,WZR-HP-G300NH 也有一点不好,它使用的 802.11n Draft,并不是正式版,与 Mac 配合并不完美,MBP 连接后传输速率只有 130Mbps。

如果不需要 dd-wrt,不需要千兆LAN的话,还是有不少路由器可以选择的,并且 802.11n 正式版也已经出来了,适应性可能更好。

存储

存储这一块着实考虑了点时间,一开始也看上了 DS710+,但是价格实在有些高,不在接受范围之内,而且暂时也没有扩展的需求,所以它的 eSATA 扩展功能也不是特别实用。

在 Synology 的网站翻了好久之后,决定入手 DS211j,在我考虑的时候刚好发布没多久,要不估计还要再继续犹豫一段时间了。DS211j 是双盘位的,支持 RAID0,RAID1,对于我这样患得患失的人来说,RAID1是必需的了。

Synology 的软件也是要选 DS211j 的原因之一,之前看过同事用的 DSM 3.0,用起来非常舒服,功能也比较全,下载、Time Machine 备份支持都有了,Media Server 也有,基本上一个 DSM 可以涵盖大部分的需求。并且,Synology 有一系列配套的 iOS App,这对于 iPhone 用户来说是个好消息,可以使用 iOS App 来存取设备上的音乐、照片等。

而 DS211j 的配置,1.2G CPU,128M DDR2,服务全开都没有问题,目前我的机器上 Media Server、Squeezebox Server、文件共享等都运行着也才占用32%的内存。

如果有 RAID5 需求的话,可以考虑四盘位的 DS411j,这款好像也面世没多久,至少在我入 DS211j 的时候还没有看到。

至于为什么还有一个 MSS(Maxtor Shared Storage),那是因为之前就有一块硬盘闲置,而且 DS211j 也是后来才购置的,那时在寻找一个便宜好用的 NAS 时,就看中了 MSS,入了一个改装 128M 内存的 MSS。当然,MSS 早就停产了,现在购买的都是二手机器,在买之前要想好,如果预算足够的话,还是推荐购买 Synology 或者其他大厂的产品。

MSS 主要用来做下载,出于一种不必要的心态,就是想让 DS211j 做一个纯粹的备份机,不想让他去下载,于是 MSS 就变身为下载机了。这也是因为我入手 DS211j 之后手头上有两个 NAS 设备,才会将存储与下载功能分开。

Synology 的 DSM 自带 Download Station,支持 BT/HTTP/FTP/NZB/eMule 下载,而且界面也比较完善,推荐使用。

因为 MSS 放的硬盘只有 500G,经常不够用,刚好又有一个准备用来做备份盘的 WD MyBook 闲置,就用来把它作为 MSS 的扩展存储,主要用来放电影使用的,对于 1080P 的电影文件,USB 的传输速度也是足够的。

DSM 和 WD MyBook 都支持硬盘闲置一定时间后停止运行的功能,倒也不用太担心耗电会增加许多。

影音

音乐这一块,我入了一个 Joggler 用来作为网络音乐播放器,装上 SqueezePlayer,可以直接播放 DS211j 或者 MSS 的存放的音乐,并且也支持按艺人、专辑等方式来浏览。当然,DS211j 或者 MSS 上需要安装 Squeezebox Server 才能支持将音乐分享给 Joggler,Synology 官方已经提供了 Squeezebox Server 的模块供 DSM 3.0 使用,安装使用都很方便,而 MSS 就需要自己安装了。

SqueezePlayer 可以使用 iPhone 上的一款软件 iPeng 来控制,通过无线网络,在任何地方都可以控制 Joggler 播放的音乐是什么,如果把 Joggler 注册到 mysqueezebox.com,还可以直接在网页上控制 SqueezePlayer。

另外,Synology 也提供了 DS audio 来听 DS211j 上的音乐,远程也可以,不过现在 ADSL 的上行带宽都很小,手机的网络流量套餐也比较少,远程使用 iPhone 听家里的音乐不太现实。

通过启用 DS211j 的媒体服务器功能,iPod touch 和 iPad 都可以直接播放它上面的媒体文件。而且最近 XBMC for iOS 已经出来了,iPad 更可以直接当做一个媒体中心了。

至于 MacBook,可以使用 PLEX、XBMC 等软件来播放媒体服务器上电影。当然,也可以直接使用浏览共享文件夹的方式来播放电影,这就跟播放本地文件没什么区别了。

由于现在房间里的电视并不支持 HDMI,所以入一个 Apple TV 二代的愿望不是特别强烈,如果预算足够,而且家里电视支持 HDMI 和 1080P FullHD 的话,可以考虑一个 Apple TV 二代,在越狱后安装 XBMC for iOS 直接播放 NAS 上的媒体文件。

对比而言,Apple TV 的性价比也不是特别高,所以还有准备另外淘一款支持 WiFi 的高清播放机。

结语

硬件大致就是这些,因为是租房住,电视什么的也不是高级货,也就懒得弄播放机这些了。

在组建网络之前,也参考了 mobile01 上的一篇文章《佑桑的數位家庭 – 全網路化的音樂播放環境》,也是通过这篇文章才知道 Squeezebox 这个好东西的。

当然,在选择设备的时候,可能并不是性价比最高的,我对这一块也不是非常了解,只能说现在这些设备还算适合我。

如果你对自己折腾一个 NAS 更感兴趣,敬请期待下一篇。