Jitsi Meet × Googleスプレッドシートで作る、サーバー不要のペットカメラ
- スプレッドシートのA2セルが空 のとき = 配信 OFF(待機)
- A2セルに何か書く = 配信 ON(自動で Jitsi 起動)
- 視聴用URLとシートURLは QR で自分の端末にだけ配布
「外出先からペットの様子をちょっとだけ見たいときがある」──そんなニーズに。
- サーバーやAPIは不要です:特に難しい設定もなし
- シンプル運用:操作は スプレッドシートのA2セルに書く/消す だけ
- 視聴URLはQRで:視聴URLとシートURLはQR 表示するので読み取ってブックマークしてからお出かけ
Windows用インストーラーは GitHub Actions が自動生成します。通常は 手元でのビルドは不要 です。
- リポジトリの Actions タブを開く
ワークフロー名: Build Windows Installer main向けの最新の ?? successful 実行を開く- ページ下部 Artifacts の
petpon-windowsをダウンロード - 展開すると以下が含まれます
PET-PON-Setup-<version>.exe(NSIS インストーラー)petpon-<version>-win.zip(ポータブル版・任意)
タグ(
v*)でのビルドがある場合は Releases に同梱されることがあります。
- 署名なしビルドのため、初回実行時に SmartScreen 警告が出る場合があります。発行元を確認のうえ実行してください。
- 手元でビルドしたい場合は
npm run dist -- --winを使用できます(詳細は「開発者向け」を参照)。
- A2セルをスイッチに使用します(空=OFF / 文字あり=ON)
- ほかは空欄でなにもしなくてだいじょうぶです。(逆になにか書いてあっても問題ありません)
- 画面右上の共有ボタン を押して以下のようにします
- オーナーは編集権限:自分のみ
- 一般的なアクセス→リンクを知っている全員に閲覧権限をつけてください
- ここで全員に編集権限を付けてしまうとだれでも編集できるので要注意です
- リンクをコピーから共有リンクをコピーしておきましょう
- インストーラーをつかってインストールしたら、アイコンをダブルクリックします。
-- スプレッドシートをつくったアカウントと同じGoogleアカウントの認証情報をメモしておきましょう -- 画面右上のmeet.jit.si今すぐ起動をクリックします -- ミーティングウインドウが開くので私はホストですをクリックします -- Googleアカウントでサインインします -- サインインが完了するとミーティングが始まります -- カメラの許可とマイクの許可が出る場合がありますので許可してください -- 一回ミーティングを終了させてウインドウをミーティングウインドウを閉じましょう -- ※別にgithubアカウントでサインインしても構いません -- これで次回起動時以降はサインインは求められない(はず)です。
-- 「ルーム名生成」 でランダムなルーム名を生成します -- スプレッドシートの共有URL を貼り付けて「保存」を押します -- QR コードが生成されるのでスマートフォンで読み取る
- 画面右側に「Jitsi 視聴URL」と「Sheet 閲覧URL」の QR が出ます
- スマホで読み取り → 視聴URLをブックマークしておいてください。スプレッドシードはスターをつけるなどしてあとから開けるようにしておきましょう -- 視聴側のスマートフォンでGoogleスプレッドシートの編集権限をもったアカウントでサインインしておいてください
- 「監視開始」 を押すと A2 セルになにか書かれていないかという監視を開始します(既定 3 秒)
- 見たいとき -- スプレッドシートを開いて A2セル に なんらかの 文字 入れます -- それを検知した監視側がミーティングを開きはじめるので、数秒待ちます -- 視聴URLをブラウザで開くと、ミーティングが始まります
- 止めたいとき -- スプレッドシートを開いて A2セル を空 にします -- それを検知した監視側がミーティングから退出します -- 視聴URLにもどってミーティングを終了させておきましょう
- 緑=監視中 / 灰=停止
- 赤=配信中(Jitsi 起動) / 灰=待機
- Reload / Force Reload / Toggle DevTools
- キャッシュ削除(挙動が怪しいとき)
- Jitsi セッション初期化(Cookie/認証の再初期化)
- アプリ終了
- このミーティングはURL そのものが鍵になっています。QRコードで読み取ったURLは自分の端末だけで運用しましょう。SNSやメールに載せないようにしてください。
- 「このソフトいいね!」といっていただけるのはうれしいですが画面のスクリーンショットなどをSNSに掲載すると流出の危険性があるので注意してください
npm install
npm startnpm run dist- Electron Builder 設定は
package.jsonの"build"に記載 - アイコン:
assets/icons/pet-pon.ico(Windows)/assets/icons/pet-pon_512.png(他OS)
- メイン処理は Electron(main.js)
- A2セルの監視は CSV エクスポートをポーリング
- 共有URL → CSV の エクスポートURLへ自動変換
- もしくは 「ウェブに公開(CSV)」 のURLをそのまま使用
- A2 が 空→OFF / 文字あり→ON で、Jitsi(
meet.jit.si/<room>#...)を自動起動/終了 - 監視中は prevent-app-suspension、配信中は prevent-display-sleep でスリープ抑止
- 初回サインイン/許可は人手が必要(Jitsi 側の仕様)
- ネットワークや meet.jit.si の状態によっては、入室に時間がかかる/再試行が必要
- 簡易ウォッチドッグで 自動再接続 を数回試みます
- macOS / Linux でも動く設計ですが、配布・検証は Windowsで行っています。
Q. Jitsi が真っ黒/ログインから進まない
A. メニュー → Jitsi セッション初期化 → 再度サインイン。
ポップアップがブロックされると止まります。子ウィンドウの認証を完了してください。
Q. 参加依頼中のまま
A. 画面の 「私はホストです」 を押すか、サインインを完了してください。
止まる場合は上の セッション初期化 → 再試行。
Q. カメラ/マイクが毎回 OFF になる
A. 初回の権限許可を済ませると安定します。
ブラウザ側でデバイス許可が拒否されていると ON になりません。
Q. 監視が止まる/PC がスリープする
A. 監視中/配信中は抑止しますが、**強制スリープ(蓋閉じ・長時間放置・バッテリー切れ)**は防げません。
electron^30.0.0electron-store8.1.0(CommonJS 互換のため v8 固定)iconv-lite^0.6.3
/assets/icons/ アイコン(.ico / .png)
/renderer/index.html UI
/renderer/styles.css スタイル(ダーク、2カラム)
/renderer/renderer.js ブリッジ / UI ロジック
main.js 監視・Jitsi 起動・ウォッチドッグ
preload.js IPC ブリッジ(contextIsolation=true)
- MIT License(
LICENSE参照) - “Jitsi” は 8x8, Inc. の商標です。
本プロジェクトは公式とは無関係の、個人の実験的ユーティリティです。
Issue / PR 歓迎。UI・安定化・macOS/Linux 動作確認など、いただけると助かります。