Files
nr-flow-validator/infra/compose.yaml
T
david 90927ccc0e Add doorbell-listener: ntfy → zigbee2mqtt Sideboard Lamp toggle
Polls ntfy.sh for ALERT_klubhaus_topic(_test) and publishes
{state: TOGGLE} to zigbee2mqtt/Sideboard Lamp/set on each new
message event. Dual-topic subscription so switching from test to
production requires no code change; sender still uses test topic.

- infra/doorbell-listener/: uv-based Docker service (arm64)
- compose: depends_on mosquitto, persists last_id per topic
- justfile: doorbell-publish, doorbell-logs, doorbell-rebuild,
  restart-all now includes doorbell-listener
2026-07-01 00:30:08 -07:00

76 lines
1.9 KiB
YAML

services:
mosquitto:
image: eclipse-mosquitto:latest
container_name: mosquitto
restart: unless-stopped
user: "1883:1883"
ports:
- "1883:1883"
volumes:
- ./mosquitto/config:/mosquitto/config
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
zigbee2mqtt:
image: ghcr.io/pine64/zigbee2mqtt:latest-dev # BLZ fork, NOT koenkk
container_name: zigbee2mqtt
restart: unless-stopped
depends_on:
- mosquitto
ports:
- "8080:8080"
volumes:
- ./zigbee2mqtt:/app/data
devices:
- /dev/ttyUSB0:/dev/ttyUSB0
environment:
TZ: America/Los_Angeles
# govee2mqtt:
# image: ghcr.io/wez/govee2mqtt:latest
# container_name: govee2mqtt
# restart: unless-stopped
# network_mode: host
# environment:
# GOVEE_EMAIL: your@email.com
# GOVEE_PASSWORD: yourpassword
# GOVEE_API_KEY: your-api-key
# MQTT_HOST: 127.0.0.1
# TZ: America/Los_Angeles
#
nodered:
image: nodered/node-red:latest
container_name: nodered
restart: unless-stopped
depends_on:
- mosquitto
user: "1000:1000"
ports:
- "1880:1880"
volumes:
- ./nodered:/data
environment:
TZ: America/Los_Angeles
DASHBOARD_BASE_HREF: /dashboard/
command: ["sh", "/data/start.sh"]
# Listens to ntfy.sh for doorbell events and toggles a smart plug on each alert.
# Topic: ALERT_klubhaus_topic_test (matches ESP32 firmware DEBUG_MODE suffix)
# Action: TOGGLE on zigbee2mqtt/Sideboard Lamp/set
doorbell-listener:
build: ./doorbell-listener
container_name: doorbell-listener
restart: unless-stopped
depends_on:
- mosquitto
volumes:
- ./doorbell-listener/state:/data/doorbell-listener
environment:
MQTT_HOST: mosquitto
MQTT_PORT: "1883"
PLUG_TOPIC: "zigbee2mqtt/Sideboard Lamp/set"
POLL_INTERVAL: "30"
TZ: America/Los_Angeles