やじうまミニレビュー
Pixel Watchで取得した心拍数をリアルタイムで配信に表示する方法
2022年10月27日 06:32
ゲーム配信者などが、画面に自分の心拍数を表示しているのを見たことある人はいないだろうか? 筆者は、RTAやホラーゲームなど、極度に緊張感が高まるゲームをプレイしている人で、そのような配信をたまに見かける。活動量計やスマートウォッチを使い、それで取得した心拍数を表示しているのだ。
方法はいくつかあるが、「Pulsoid」というアプリが割と定番のようで、いろいろなメーカーの心拍数測定バンドに対応している。ちなみに、Apple Watchにも対応しているが、取得間隔が5秒起きなのでPulsoidではあまり推奨されていない。
だが、筆者が持っているFitbit LuxeやPixel WatchはPulsoidに対応していない。それだけでなく、標準のスマホアプリやWebダッシュボードでは、両者ともリアルタイムの心拍数は取得できず(ウォッチ上でのみ可能)、過去の推移や安静時の心拍数しか見られない。
なんとかできないものかと探していたら、Wear OS対応端末から心拍数をリアルタイムで取得し、配信ソフトのOBS Studioに送信するという、ドンピシャなアプリ「HeartRateOnStream for OBS」が公開されているのをみつけた。
対応製品は下記の通りで、そこそこの数のデバイスに対応している。
- Casio: GSW-H1000 | Smart Outdoor Watch WSD-F1 | WSD-F20 | WSD-F21HR | WSD-F30
- Fossil: Gen 5 LTE | Gen 5e | Gen 6 | Fossil Q | Sport | Wear | Wear OS by Google
- Guess Wear
- Google: Pixel Watch
- Huawei: Watch 2
- Hublot Big Bang e
- LG: Watch Sport | Watch Style | Watch W7
- Louis Vuitton Tambour Horizon
- Mobvoi TicWatch: C2 | E2/S2 | E3 | S/E | Pro | Pro 3 Cellular/LTE | Pro 3 GPS | Pro 4G | S
- Montblanc: SUMMIT | Summit 2+ | Summit Lite | Summit 3
- Motorola: Moto 360
- Movado: Boss Touch | Connect | Connect 2.0
- Nixon The Mission
- Oppo: OPPO Watch
- Polar: M600
- Samsung Galaxy: Watch4 | Watch4 Classic | Watch5 | Watch5 Pro
- Suunto: Suunto 7
- TAG Heuer Connected: Calibre E4 | 2020 | Modular 41 | Modular 45
使い方を説明しよう。まずは、スマホにHeartRateOnStream for OBSをインストールする。それでPixel Watchにも自動でWear OS版がインストールされる。ちなみに、Wear OS版はタイル機能に対応しているので、トップ画面からスワイプで簡単に呼び出せる。
スマホ、ウォッチ双方でアプリを起動し、ウォッチ側で三角の再生ボタンを押せば心拍数の計測が始まり、その数値が瞬時にスマホにも表示される。
次に、OSBとの接続準備を行なう。まず、OBSについては、バージョン27までは外部アプリとの通信に用いられる「WebSocket」というサーバー機能のプラグインをPCに別途インストールする必要がある。現行のバージョン28では、WebSocketが標準機能になったので、インストールの必要はない。
PCでOBSを起動し、「ツール」→「obs-websocket設定」を開き、「WebSocketサーバーを有効にする」にチェックが入っていることを確認。サーバーポートは標準で「4455」になっているはずなので、そのままでいい。サーバーパスワードは任意のものを設定しよう。この際、「心拍数」でもなんでも、OBS上で好きなソース名にてテキストを追加しておく。
続いて、スマホ版HeartRateOnStream for OBSのトップ画面にある「OBS Connection」の「Edit」を押し、WebSocketの設定を行なう。一番上は、OBSのバージョンの選択を行なう。その下は、OBSに表示させる心拍数のソース名となる。ただ、これだけだと意味不明な数字が出るだけになるので、「心拍数」とか「♡」のようなラベル的文字やアイコンも添えておこう。
その下はOBSを動かしているPCのIPアドレス(IPv4)を記入する。その下はWebSocketのポート番号とパスワードなので、OBSで指定したのと同じものを入力する。
入力が終わったら右上の「SAVE」を押すと、トップ画面に戻るので、「Connect」ボタンを押すと、HeartRateOnStream for OBSとOBSがつながるハズだ。
「ハズ」と書いたのは、筆者はそのままでは接続できなかった。原因はWebSocketで使うポートがWindowsのファイアウォール機能でブロックされているからだ。ポートを開けるには、Windowsで「コントロールパネル」を開き、「Windows Defenderファイアウォール」をクリックし、左の「詳細設定」を開く。
左ペインの「受信の規則」をクリックして、右ペインの「新しい規則」を選び、「ポート」→「TCP」と「特定のローカルポート」にチェックが入っているのを確認して、ポート番号にWebSocketと同じ(デフォルトは4455)を入力。あとは、そのまま「次へ」を押していき、適当な名前をつければいい。ただ、ポートを開けると、インターネットの脅威から影響を受ける危険性もあるので、その点は留意しよう。
これで晴れてHeartRateOnStream for OBSの「Connect」ボタンを押すと、接続が確立され。先に追加したOBSのテキストソース欄に現在の心拍数が表示されるはずだ。
なお、Wear OSアプリ側で、上から下にスワイプして、右に2回スワイプすると設定を開け、心拍数の取得間隔を1秒~30秒の間で設定できるのだが、30秒にしてもほぼ1秒単位で心拍数がスマホに送信されるのはバグではないかと思う。Pixel Watchでは元々1秒単位で心拍数の測定を行なっているが、その通信まで1秒単位で行なうと、Pixel Watchのバッテリに影響が出そうな点は注意がいる。
また、このアプリを起動していると画面は常時オンになるが、トップ画面に戻ったり、画面をオフにしても通信は維持される。
スマホ版については、標準ではHeartRateOnStream for OBSをフォアグラウンドで起動しているときだけ、心拍数をOBSに送信できる。400円を支払ってプレミアム版にアップグレードすると、アプリをバックグラウンドにしてもOBSとの通信が維持される。まずは無料で試用して、うまく動くことを確かめたら、プレミアム版にするといいだろう。