{"id":45906086,"url":"https://github.com/northwoodscommunitychurch/c200-controller","last_synced_at":"2026-04-28T22:01:06.455Z","repository":{"id":341103421,"uuid":"1156647312","full_name":"NorthwoodsCommunityChurch/c200-controller","owner":"NorthwoodsCommunityChurch","description":"macOS dashboard for wireless Canon C200 camera control via ESP32-S3 bridge","archived":false,"fork":false,"pushed_at":"2026-04-26T11:48:16.000Z","size":4768,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T13:24:20.531Z","etag":null,"topics":["avl-tools","canon-c200","esp32","macos"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NorthwoodsCommunityChurch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-12T22:17:18.000Z","updated_at":"2026-03-09T17:01:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NorthwoodsCommunityChurch/c200-controller","commit_stats":null,"previous_names":["northwoodscommunitychurch/c200-controller"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/NorthwoodsCommunityChurch/c200-controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NorthwoodsCommunityChurch%2Fc200-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NorthwoodsCommunityChurch%2Fc200-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NorthwoodsCommunityChurch%2Fc200-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NorthwoodsCommunityChurch%2Fc200-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NorthwoodsCommunityChurch","download_url":"https://codeload.github.com/NorthwoodsCommunityChurch/c200-controller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NorthwoodsCommunityChurch%2Fc200-controller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32400873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avl-tools","canon-c200","esp32","macos"],"created_at":"2026-02-28T02:57:09.991Z","updated_at":"2026-04-28T22:01:06.449Z","avatar_url":"https://github.com/NorthwoodsCommunityChurch.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C200 Controller\n\nmacOS dashboard for wireless control of Canon C200 cameras via an ESP32-S3 hardware bridge.\n\n## Screenshots\n\n\u003c!-- Add screenshots to docs/images/ and reference here --\u003e\n*Dashboard screenshots pending — see docs/images/ folder*\n\n## Features\n\n- **Multi-camera dashboard** — monitor and control multiple C200s simultaneously\n- **Real-time state** — WebSocket push updates from ESP32 bridge (no manual refresh)\n- **Camera controls** — iris, ISO, shutter speed, ND filter, white balance, AE shift\n- **Record toggle** — start/stop recording remotely with visual feedback\n- **Presets** — save and recall camera settings (aperture, ISO, shutter, ND, WB, AE shift)\n- **Auto-reconnect** — automatically retry failed connections every 10 seconds\n- **Bonjour discovery** — ESP32 bridges appear automatically on the local network\n- **Direct connection** — connect to Canon C200 without an ESP32 bridge (limited)\n- **Card flip UI** — each camera tile flips to reveal connection settings and controls\n\n## Requirements\n\n- macOS 13.0 or later\n- Apple Silicon (primary) or Intel (untested)\n- Local network with mDNS/Bonjour (standard on most networks)\n- One or more **ESP32-S3 bridge boards** flashed with the matching firmware\n  - Use the companion [ESP32Flasher](../ESP32Flasher/) app for one-click flashing\n- Canon C200 with **Browser Remote enabled** on its network port\n  - Firmware default credentials: `admin` / `admin`\n\n## Installation\n\n1. Download `C200Controller-v1.0.0-alpha-aarch64.zip` from [Releases](../../releases)\n2. Extract the zip and move `C200Controller.app` to your Applications folder\n3. Double-click to open — macOS will block it the first time\n4. Go to **System Settings → Privacy \u0026 Security** and click **Open Anyway**\n5. The app opens normally from that point on\n\n## Usage\n\n### Adding a Camera\n\n**Via Bonjour (automatic):**\n1. Flash the ESP32 bridge with your WiFi credentials\n2. Power on the bridge — it appears in the dashboard automatically\n3. Click the camera tile to connect\n\n**Manual ESP32:**\n1. Click **+** in the toolbar\n2. Enter the ESP32's IP address\n\n**Direct camera:**\n1. Enable Browser Remote on the Canon C200 (Menu → Network → Browser Remote)\n2. Click **+** → **Direct Camera**\n3. Enter the camera's IP address\n\n### Using Presets\n\n1. Click **Edit** in the Presets panel (left sidebar)\n2. Camera metric circles dim — click each circle you want to include\n3. Included circles show the current camera value in green\n4. Click **Save** — enter a preset name\n5. Click **Recall** to apply a preset to all connected cameras\n\n### Auto-Reconnect\n\nToggle **Auto-Reconnect** on the camera tile back (flip the card). When enabled, the app retries connections every 10 seconds after a failure.\n\n## Configuration\n\nAll configuration is stored in `UserDefaults` — no config files needed.\n\n- Camera list persists across launches\n- Presets persist across launches\n- Auto-reconnect setting persists across launches\n\n## Building from Source\n\n### Prerequisites\n\n- Xcode Command Line Tools: `xcode-select --install`\n- Swift 5.9+\n\n### Build\n\n```bash\ngit clone https://github.com/NorthwoodsCommunityChurch/avl-c200-controller.git\ncd avl-c200-controller/C200Controller\nbash build.sh\n```\n\nThe built app opens automatically. Find it at `C200Controller/.build/release/C200Controller.app`.\n\n## Project Structure\n\n```\navl-c200-controller/\n├── C200Controller/              macOS dashboard app (Swift/SwiftUI)\n│   ├── Sources/\n│   │   ├── C200ControllerApp.swift   App entry point\n│   │   ├── Camera.swift              Camera state + control logic\n│   │   ├── CameraManager.swift       Multi-camera management + discovery\n│   │   ├── ContentView.swift         Main UI\n│   │   ├── Logger.swift              Debug log writer\n│   │   ├── Preset.swift              Preset data model\n│   │   ├── PresetManager.swift       Preset persistence + recall\n│   │   └── PresetsPanel.swift        Preset sidebar UI\n│   ├── Package.swift\n│   └── build.sh\n├── companion-module/            Bitfocus Companion integration (incomplete)\n│   ├── index.js\n│   └── package.json\n├── docs/\n│   ├── PRD.md                   Product requirements\n│   └── images/                  Screenshots\n├── CANON_C200_API.md            Canon C200 Browser Remote API reference\n├── BUILD.md                     Firmware build instructions\n├── CREDITS.md\n├── LICENSE\n└── SECURITY.md\n```\n\n## Network Architecture\n\n```\nCanon C200  ←──── Ethernet ────→  ESP32-S3 Bridge\n                                         │\n                                         └── WiFi ──→  C200 Controller (Mac)\n                                         └── mDNS     (Bonjour discovery)\n\n                                                            │\n                                                   (future) └──→  Bitfocus Companion\n```\n\n## Known Limitations / Alpha Status\n\n- Dashboard has been lightly tested on a single-camera production setup\n- Intel Mac compatibility untested\n- Bitfocus Companion module is a skeleton — not functional yet\n- Sparkle auto-updates not yet integrated (planned for stable release)\n- Direct camera connection mode has reduced functionality vs. ESP32 bridge\n\n## License\n\nMIT — see [LICENSE](LICENSE)\n\n## Credits\n\nSee [CREDITS.md](CREDITS.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorthwoodscommunitychurch%2Fc200-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnorthwoodscommunitychurch%2Fc200-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorthwoodscommunitychurch%2Fc200-controller/lists"}