サンワサプライから発売された「ワットモニターUSB TAP-TST10」というUSB接続タイプの電力計をLinuxで使ってみた。
埜中公博さんの「SANWA SUPPLY TAP-TST10 control tool」を使ってデータ取得しました。
githubにある「taptst10ctl.py」をCentOS6で動作させてみました。
(2013/11/19: 公開場所が変わりました「https://github.com/nonakap/taptst10ctl」。USBのデバイスへのアクセス手法の違いで「taptst10ctl.py」と「taptst10ctl0.py」があります)
# python taptst10ctl.py Traceback (most recent call last): File "taptst10ctl.py", line 42, in <module> import usb.core ImportError: No module named usb.core #
あー・・・pyusbが入ってないからか・・・
pyusb-1.0.0a2.zipをダウンロードしてきて「python setup.py install」
# python taptst10ctl.py Traceback (most recent call last): File "taptst10ctl.py", line 60, in <module> dev.set_configuration() File "/usr/lib/python2.6/site-packages/usb/core.py", line 547, in set_configuration self._ctx.managed_set_configuration(self, configuration) File "/usr/lib/python2.6/site-packages/usb/core.py", line 92, in managed_set_configuration self.backend.set_configuration(self.handle, cfg.bConfigurationValue) File "/usr/lib/python2.6/site-packages/usb/backend/libusb10.py", line 503, in set_configuration _check(_lib.libusb_set_configuration(dev_handle, config_value)) File "/usr/lib/python2.6/site-packages/usb/backend/libusb10.py", line 403, in _check raise USBError(_str_error[ret], ret, _libusb_errno[ret]) usb.core.USBError: [Errno 16] Resource busy #
「Resource busy」と何か別のプログラムが使っているらしい。
「USBRH driver for Linux を CentOS 5 で使う」で紹介されている手法、手動でusbhidの認識を解除してみる方法を行ってみた。
# cd /sys/bus/usb/drivers/usbhid # ls -l lrwxrwxrwx 1 root root 0 7月 17 09:38 2013 4-2:1.0 -> ../../../../devices/pci0000:00/0000:00:12.1/usb4/4-2/4-2:1.0 --w------- 1 root root 4096 7月 17 09:25 2013 bind lrwxrwxrwx 1 root root 0 7月 17 09:25 2013 module -> ../../../../module/usbhid --w------- 1 root root 4096 7月 17 09:25 2013 new_id --w------- 1 root root 4096 7月 17 09:25 2013 remove_id --w------- 1 root root 4096 7月 17 09:25 2013 uevent --w------- 1 root root 4096 7月 17 09:25 2013 unbind # echo "4-2:1.0" > unbind # ls bind module new_id remove_id uevent unbind #
これでusbhidを解除できたので、改めて実行。
# .taptst10ctl.py No.,DateTime,Watt,kWh 1,2013/07/13 07:50,0.0,0.00 2,2013/07/13 08:00,47.0,0.00 3,2013/07/13 08:10,44.8,0.01 4,2013/07/13 08:20,18.5,0.01 5,2013/07/13 08:30,18.5,0.01 6,2013/07/13 08:40,18.1,0.02 <略> 637,2013/07/17 18:00,87.4,2.76 638,2013/07/17 18:10,83.8,2.78 639,2013/07/17 18:20,83.3,2.79 640,2013/07/17 18:30,82.8,2.80 641,2013/07/17 18:40,80.9,2.82 #
ちなみに、時々、以下のような感じで実行に失敗します。
その場合は、再実行すれば、だいたい大丈夫です。
# ./taptst10ctl.py Traceback (most recent call last): File "./taptst10ctl.py", line 92, in <module> data = dev.read(ENDPOINT, 17, intf, 1000) File "/usr/lib/python2.6/site-packages/usb/core.py", line 654, in read self.__get_timeout(timeout) File "/usr/lib/python2.6/site-packages/usb/backend/libusb10.py", line 559, in intr_read timeout) File "/usr/lib/python2.6/site-packages/usb/backend/libusb10.py", line 641, in __read timeout)) File "/usr/lib/python2.6/site-packages/usb/backend/libusb10.py", line 403, in _check raise USBError(_str_error[ret], ret, _libusb_errno[ret]) usb.core.USBError: [Errno 110] Operation timed out #