Добавлен 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 по истечении таймаута.
28 lines
914 B
AMPL
28 lines
914 B
AMPL
module git.cactoz.su/cacto/home_automatization/services/device-control-service
|
|
|
|
go 1.25.0
|
|
|
|
require (
|
|
git.cactoz.su/cacto/home_automatization/proto v0.0.0
|
|
github.com/alicebob/miniredis/v2 v2.38.0
|
|
github.com/eclipse/paho.mqtt.golang v1.5.1
|
|
github.com/rabbitmq/amqp091-go v1.13.0
|
|
github.com/redis/go-redis/v9 v9.21.0
|
|
google.golang.org/grpc v1.82.1
|
|
)
|
|
|
|
require (
|
|
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
github.com/gorilla/websocket v1.5.3 // indirect
|
|
github.com/yuin/gopher-lua v1.1.1 // indirect
|
|
go.uber.org/atomic v1.11.0 // indirect
|
|
golang.org/x/net v0.53.0 // indirect
|
|
golang.org/x/sync v0.20.0 // indirect
|
|
golang.org/x/sys v0.43.0 // indirect
|
|
golang.org/x/text v0.36.0 // indirect
|
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20260414002931-afd174a4e478 // indirect
|
|
google.golang.org/protobuf v1.36.11 // indirect
|
|
)
|
|
|
|
replace git.cactoz.su/cacto/home_automatization/proto => ../../proto
|