まずは「SwitchBot 複数カメラをMacで常時モニターする方法1(スクリプトエディタ編)」を見てください。そこではSwitchBotのアプリの設定方法やスクリプトエディタの使い方などが説明されています。
Hammerspoonとは
Luaスクリプトを使って、macOSのさまざまな操作を自動化できる無料のツールです。標準機能では難しい細かな設定まで実現できます。
例えばこんなことができます。
- ショートカットキーの自由な設定:特定のキーを押してアプリを起動したり、複数の操作を一発で実行したりできる。
- ウインドウの自動配置:アプリを画面の左半分・右半分・中央など、決めた位置やサイズへ瞬時に移動できる。
- アプリ操作の自動化:「このアプリを起動したら、このウインドウをこの場所に配置する」といった処理ができる。
- 複数モニターの制御:ウインドウを別のモニターへ移動したり、モニターごとに配置を決めたりできる。
- Macの状態に応じた自動処理:Wi-Fiの接続先やバッテリー状態、USB機器の接続などをきっかけに処理を実行できる。
- マウスやキーボード操作の自動化:キー入力やクリックなどを組み合わせて、繰り返し作業を自動化できる。
前回の「SwitchBot 複数カメラをMacで常時モニターする方法1」ではスクリプトエディタを使って、4台のカメラ映像を起動しましたが、その後のwindowの配置は制限がかかってできませんでした。でもHammerspoonを使うとできるようになります。
ステップ1:Hammerspoon をインストール
hammerspoon.org からダウンロードして、アプリケーションフォルダに移動します。起動したらメニューバーにアイコンが表示されます。システム設定 → プライバシーとセキュリティ → アクセシビリティ で Hammerspoon を許可してください。
ログイン時に自動起動させるには、Hammerspoon のメニューバーアイコン → Preferences → 「Launch Hammerspoon at login」をオンにしてください。
ステップ2:Hammerspoon を設定する
Hammerspoon のメニューバーアイコン → 「Open Config」を開き、以下のコードを貼り付けます。
上の ★ ここを書き換えてください の部分を自分のカメラ情報に変更してください。
-- ============================================
-- SwitchBot カメラモニター
-- ★ ここを書き換えてください
-- ============================================
local cameras = {
"rtsp://ユーザー名:パスワード@192.168.x.x:554/live0", -- カメラ1
"rtsp://ユーザー名:パスワード@192.168.x.x:554/live0", -- カメラ2
"rtsp://ユーザー名:パスワード@192.168.x.x:554/live0", -- カメラ3
"rtsp://ユーザー名:パスワード@192.168.x.x:554/live0", -- カメラ4
}
local waitTime = 4 -- カメラ表示までの待ち時間(秒)。遅い場合は増やす
-- ============================================
-- ここから下は触らなくてOK
-- ============================================
local function arrangeWindows()
local allWins = {}
for _, app in ipairs(hs.application.applicationsForBundleID("org.videolan.vlc")) do
for _, win in ipairs(app:allWindows()) do
table.insert(allWins, win)
end
end
local screen = hs.screen.mainScreen():frame()
local positions = {
{x=screen.x, y=screen.y, w=screen.w/2, h=screen.h/2},
{x=screen.x+screen.w/2, y=screen.y, w=screen.w/2, h=screen.h/2},
{x=screen.x, y=screen.y+screen.h/2, w=screen.w/2, h=screen.h/2},
{x=screen.x+screen.w/2, y=screen.y+screen.h/2, w=screen.w/2, h=screen.h/2},
}
for i, win in ipairs(allWins) do
if positions[i] then win:setFrame(positions[i]) end
end
end
-- Cmd+Shift+Option+C → カメラ起動+4分割
hs.hotkey.bind({"cmd", "shift", "alt"}, "c", function()
for _, url in ipairs(cameras) do
os.execute("open -na /Applications/VLC.app --args '" .. url .. "'")
hs.timer.usleep(1500000)
end
hs.timer.doAfter(waitTime, arrangeWindows)
end)
-- Cmd+Shift+Option+V → 4分割のみ
hs.hotkey.bind({"cmd", "shift", "alt"}, "v", function()
arrangeWindows()
end)
-- Cmd+Shift+Option+X → 全終了
hs.hotkey.bind({"cmd", "shift", "alt"}, "x", function()
os.execute("killall VLC")
end)貼り付けたら「Reload Config」を押して完了です。
ショートカット一覧
| ショートカット | 動作 |
|---|---|
| Cmd + Shift + Option + C | カメラを起動して自動4分割 |
| Cmd + Shift + Option + V | すでに開いているVLCを4分割 |
| Cmd + Shift + Option + X | VLCを全て終了 |
(オプション)アイコンクリックで操作したい場合
ショートカットが苦手な場合、デスクトップのアイコンをクリックするだけで操作できます。
まず Hammerspoon の Config に以下を追加して「Reload Config」します。
hs.urlevent.bind("startcamera", function()
for _, url in ipairs(cameras) do
os.execute("open -na /Applications/VLC.app --args '" .. url .. "'")
hs.timer.usleep(1500000)
end
hs.timer.doAfter(waitTime, arrangeWindows)
end)
hs.urlevent.bind("stopcamera", function()
os.execute("killall VLC")
end)startcamera や stopcamera の名前は好きなものに変えてOKです。ただし Hammerspoon Config と AppleScript の両方で同じ名前にしてください。
次にスクリプトエディターで以下のAppleScriptをそれぞれ作り、「ファイル → 書き出す → アプリケーション」でデスクトップに保存します。(成功したアプリは最終的にはアプリケーションフォルダに移すことをお勧めします。Macはアプリの保存場所によって権限の扱いが変わります。デスクトップや書類フォルダに置いたアプリは毎回確認ダイアログが出てきたりします。)
カメラ起動アイコン用:
do shell script "open 'hammerspoon://startcamera'"カメラ終了アイコン用:
do shell script "open 'hammerspoon://stopcamera'"備考
- この方法は自宅の Wi-Fi 内でのみ動作します。外出先からは SwitchBot 公式アプリをご利用ください。
- パスワードは Hammerspoon の Config ファイル内に保存されます。他人と共有しないようにしてください。
- ストリームパスは
/live0ですが、カメラのファームウェアによっては/streamなど異なる場合があります。 - 対応カメラ:SwitchBot Pan/Tilt Cam Plus 3MP(iOS SwitchBot アプリ v9.29 時点)


