Реализация device-control-service: gRPC + MQTT + Device Shadow в Redis
Добавлен gRPC-контракт proto/device_control (TurnOn/TurnOff/SetLevel), общий Go-модуль proto/ для переиспользования сгенерированного кода. device-control-service принимает команды по gRPC, обновляет desired_state в Redis и публикует их в MQTT; слушает devices/+/telemetry и devices/+/ack для отметки живости устройства и обновления reported_state; горутина health-check переводит устройство в offline по таймауту и публикует событие в RabbitMQ (device.status_changed) для будущего notification-service. Проверено сквозным тестом через docker compose: grpcurl TurnOn/SetLevel меняет desired_state и уходит в MQTT, mosquitto_pub с ack обновляет reported_state и статус, health-check автоматически переводит устройство в offline по истечении таймаута.
This commit is contained in:
+34
-3
@@ -116,6 +116,37 @@ services:
|
||||
- home-automation
|
||||
restart: unless-stopped
|
||||
|
||||
# Remaining app services (device-control-service, rule-engine-service,
|
||||
# health-check-service, esp32-emulator, laravel-app) are added here as they
|
||||
# get implemented — see services/*/README.md for the plan for each one.
|
||||
device-control-service:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/device-control-service/Dockerfile
|
||||
ports:
|
||||
- "${DEVICE_CONTROL_GRPC_PORT}:50051"
|
||||
environment:
|
||||
DEVICE_CONTROL_GRPC_PORT: 50051
|
||||
MQTT_HOST: mosquitto
|
||||
MQTT_PORT: 1883
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
REDIS_DB: ${REDIS_DB}
|
||||
RABBITMQ_HOST: rabbitmq
|
||||
RABBITMQ_PORT: 5672
|
||||
RABBITMQ_USER: ${RABBITMQ_USER}
|
||||
RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD}
|
||||
DEVICE_CONTROL_HEALTHCHECK_TIMEOUT: ${DEVICE_CONTROL_HEALTHCHECK_TIMEOUT}
|
||||
DEVICE_CONTROL_HEALTHCHECK_INTERVAL: ${DEVICE_CONTROL_HEALTHCHECK_INTERVAL}
|
||||
depends_on:
|
||||
mosquitto:
|
||||
condition: service_started
|
||||
redis:
|
||||
condition: service_started
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- home-automation
|
||||
restart: unless-stopped
|
||||
|
||||
# Remaining app services (rule-engine-service, health-check-service,
|
||||
# esp32-emulator, laravel-app) are added here as they get implemented —
|
||||
# see services/*/README.md for the plan for each one.
|
||||
|
||||
Reference in New Issue
Block a user