メモ帳DPA

ぐぐってあまり引っかからないような何かがあったら書いたりする

上下昇降デスクをホットキーから操作する

前回の続き。

経緯

オカムラの電動デスクを使っており、それと互換性のあるLinakのUSBケーブルを入手してPCと連携した。
そこまでは良かったんだけれど、付属のツールが自分の用途と微妙に合っておらず、キーボード操作できない点と、必要もないアラートを定期的にポップアップしてくるのが不満だった。

対処

Linux用のツールが開発されていたので使ってみたところ、簡単に上手くいった。
github.com

以下に方法を書く。

導入

メインがWin機なので当然そのままは使えない。
そのためだけのraspiを買ったりはしたくなかったので、Win上に最小構成の制御用のUbuntu仮想マシンを立てた。
ハイパーバイザのUSBデバイス共有で「USB Control Link」を共有すると、ゲスト上で制御用USBケーブルが認識できた。

ツールの導入は、ソースと依存パッケージを単純に引っ張ってくるだけで使えた。

apt-get install g++ libusb-1.0-0-dev
git clone https://github.com/ranma1988/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable.git
cd usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable
make

相対位置調整できるようにする

高さの数値を引数に渡すと、その高さまで調整してくれる。

./example-moveTo 6000

これだけでかなり便利ではあるのだけれど、絶対位置での指定しかできないので、相対位置の調整も出来るようにした。

adjust.sh

#!/bin/sh

cd `dirname $0`
height=`./example-getStatus 1 | sed -e "s/^.*height: *//g" | sed -e "s/ = .*//g"`
./example-moveTo `expr $height + $1`

Winから叩けるようにする

操作のたびいちいちゲストに入ってられないので、batを作ってWinから一発で叩けるようにした。

move.bat

@echo off

cd %~dp0

set ADDR=192.168.254.128
set KEY=ubuntu_privatekey.ppk
set USR=root

ssh %USR%@%ADDR% -i %KEY% /root/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable/example-moveTo %1

adjust.bat

@echo off

cd %~dp0

set ADDR=192.168.254.128
set KEY=ubuntu_privatekey.ppk
set USR=root

ssh %USR%@%ADDR% -i %KEY% /root/usb2lin06-HID-in-linux-for-LINAK-Desk-Control-Cable/adjust.sh %1

ホットキー化する

キーボードから一発で呼べるように、Autohotkeyに組み込んだら完成。
それぞれの値は適当に調整して決め打ちしている。

desksit(){
	run,D:\datas\program\swift\move.bat 0
}
deskstand(){
	run,D:\datas\program\swift\move.bat 4000
}
deskmax(){
	run,D:\datas\program\swift\move.bat 10000
}

deskup(){
	run,D:\datas\program\swift\adjust.bat 1000
}
deskdown(){
	run,D:\datas\program\swift\adjust.bat -1000
}


>+Delete::deskmax()
>+PGUP::deskstand()
>+PGDN::desksit()

>^PGUP::deskup()
>^PGDN::deskdown()

おわり

物理ボタンでの操作や付属のソフトウェアでの操作時は、指定した高さになるまでボタンを押し続ける必要があった。
移動し切るまで押したまま待つ必要も無くなり、一回呼べば勝手に指定位置まで動かしてくれるので、ちょっと楽になった。

これでデスクもベッドなどと同様に、ホットキーで一発で操作できるようになったので満足した。


関連