diff --git a/components/fast_jpeg/fast_jpeg.cpp b/components/fast_jpeg/fast_jpeg.cpp index dc2ef83..dd1529c 100644 --- a/components/fast_jpeg/fast_jpeg.cpp +++ b/components/fast_jpeg/fast_jpeg.cpp @@ -115,7 +115,7 @@ void FastJpeg::dump_config() { } void FastJpeg::update() { - if (this->is_failed() || this->task_ == nullptr) + if (this->is_failed() || this->task_ == nullptr || !this->enabled_.load()) return; if (this->busy_.load() || this->decoded_ready_.load()) return; diff --git a/components/fast_jpeg/fast_jpeg.h b/components/fast_jpeg/fast_jpeg.h index 2b3c9a9..e96f501 100644 --- a/components/fast_jpeg/fast_jpeg.h +++ b/components/fast_jpeg/fast_jpeg.h @@ -23,6 +23,8 @@ class FastJpeg : public PollingComponent { void set_x(int x) { this->x_ = x; } void set_y(int y) { this->y_ = y; } void set_big_endian(bool big_endian) { this->big_endian_ = big_endian; } + void set_enabled(bool enabled) { this->enabled_.store(enabled); } + bool is_stream_enabled() const { return this->enabled_.load(); } void setup() override; void loop() override; @@ -71,6 +73,7 @@ class FastJpeg : public PollingComponent { size_t http_rx_len_{0}; std::atomic busy_{false}; std::atomic decoded_ready_{false}; + std::atomic enabled_{true}; bool bars_cleared_{false}; char etag_[80]{}; uint32_t frames_{0}; diff --git a/docker-compose.yml b/docker-compose.yml index 34b8eeb..08890dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,11 @@ -# Portainer: Stacks → Add stack → upload this file + Dockerfile/app.py/requirements.txt -# (Web editor alone can't build; use Git stack or pre-built image — see notes below.) +# Portainer-friendly: no build step. Load/push the image first, then paste this stack. services: resizer: - build: . image: doorbell-resizer:latest container_name: doorbell-resizer ports: - "8080:80" environment: - # Reachable from the Portainer host (LAN IP or Docker DNS if same compose network) FRIGATE_URL: http://10.0.1.197:5050/api/doorbell/latest.jpg?h=270 TARGET_WIDTH: "480" JPEG_QUALITY: "40" diff --git a/doorbell-display.yaml b/doorbell-display.yaml index 8e7b8fe..867dc16 100644 --- a/doorbell-display.yaml +++ b/doorbell-display.yaml @@ -8,7 +8,7 @@ substitutions: name: doorbell-display friendly_name: Doorbell Display - image_url: "http://10.0.1.70:8080/" + image_url: "http://10.0.1.195:8080/" external_components: - source: @@ -106,6 +106,10 @@ light: output: backlight_pwm restore_mode: ALWAYS_ON default_transition_length: 0s + on_turn_on: + - lambda: id(doorbell_jpg).set_enabled(true); + on_turn_off: + - lambda: id(doorbell_jpg).set_enabled(false); # Simple on/off for Home Assistant automations (light still exposes brightness). switch: