Skip to content

v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Jun 05:28
· 8 commits to main since this release

v0.3.0 — ONVIF, MJPEG Port Separation, Frame Broadcaster, Stability

New Features

  • ONVIF auto-discovery (WS-Discovery) — MiBee Cam appears automatically in NVR software (Synology Surveillance Station, Milestone XProtect, ONVIF-compatible NVRs) without manual IP entry
  • ONVIF SOAP services — Probe, DeviceInfo, GetServices, GetScopes, GetHostname, GetEndpointReference, GetProfiles, StreamURI (returns HTTP MJPEG URI)
  • Frame broadcaster — camera frame buffer (FB) copied to PSRAM and returned immediately; recording and streaming never block each other on FB access
  • MJPEG on independent TCP server (port 81) — separate from HTTP web server (port 80), eliminates stream blocking web UI
  • Instant frame delivery — cached last frame sent immediately to new MJPEG clients, no wait for next capture
  • Prometheus /metrics — node_exporter-compatible format (15+ metrics: heap, PSRAM, temperature, recording stats, storage, WiFi)
  • Auto-optimized timelapse config — segment_sec and fps auto-computed from interval; user only sets resolution/interval/JPEG quality
  • 1-second timelapse interval — new minimum interval option for near-real-time capture
  • Camera graceful degradation — firmware boots without camera if init fails; /api/camera/availability endpoint reports status; web UI shows camera offline
  • Thread-safe config access — mutex-protected reads/writes, input validation on all config fields
  • Product rename — MiBeeHomeCam → MiBee Cam (firmware, docs, configs, all references)

Bug Fixes

  • 🔴 Camera FB contention — frame broadcaster eliminates FB conflict between recording and streaming (root cause of stream freezes)
  • 🔴 MJPEG stream blocking web UI — moved to independent port 81 with separate TCP server task
  • 🔴 Camera capture 20s timeout — safety abort via xTaskAbortDelay, prevents indefinite block on dead/hung camera sensor
  • 🔴 NAS upload TWDT crash — WDT feed in retry loops, upload timeout reduced 60s→20s, URL encoding for spaces
  • 🔴 Recorder zero-interval busy loop — timelapse interval=0 no longer spin-locks the recording task
  • 🔴 WiFi power save causing DHCP/HTTP issues — power save disabled for reliable network connectivity
  • 🔴 WiFi reconnect race condition — flexible auth mode, DHCP hostname set, race condition in reconnection logic
  • 🔴 WiFi multicast reception — lowered listen_interval for reliable ONVIF WS-Discovery
  • 🔴 Timer stack overflow — increased stack size, prevents silent crash in timer callbacks
  • Batch delete TWDT — WDT feed in delete loop, fixed relative vs absolute path comparison
  • Zero-byte file accumulation — cleanup_dir_recursive checks st_size==0, safety net at boot and segment rotation
  • Device stable past 240s uptime — was 30-60s TWDT resets
  • RTSP removed from codebase — replaced by ONVIF HTTP MJPEG; all RTSP server code and documentation removed

Documentation

  • Complete ONVIF discovery guide with flowcharts and FAQ (en+zh)
  • Port separation architecture design note (en+zh)
  • Architecture diagram updated (remove RTSP, add ONVIF/frame_broadcaster, update partition table)
  • User guide updated (remove RTSP, fix timelapse range, update port 81 references)
  • API docs updated (remove RTSP, add ONVIF endpoints)
  • Troubleshooting guide updated with ONVIF discovery FAQ
  • MiBeeNVR recommended as companion NVR software

Packaging

  • Full flash assets: bootloader, partition-table, mibee_cam, ota_data_initial, spiffs
  • Complete flash_command.txt with all partitions + app-only upgrade command

Full Changelog: v0.2.0...v0.3.0