feat(agent): SendDisplayState im MQTT-Publisher + Interface
This commit is contained in:
parent
4ef16048ad
commit
bcc50635e5
2 changed files with 21 additions and 0 deletions
|
|
@ -91,6 +91,7 @@ type statusSender interface {
|
|||
|
||||
type mqttSender interface {
|
||||
SendHeartbeat(status, connectivity string, ts time.Time) error
|
||||
SendDisplayState(screenSlug, state string) error
|
||||
Close()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -78,6 +78,26 @@ func (p *Publisher) SendHeartbeat(status, connectivity string, ts time.Time) err
|
|||
return token.Error()
|
||||
}
|
||||
|
||||
// SendDisplayState publiziert den aktuellen Display-Zustand auf dem display-state-Topic.
|
||||
// QoS 0, nicht retained — Informationszweck/Monitoring.
|
||||
func (p *Publisher) SendDisplayState(screenSlug, state string) error {
|
||||
type dsPayload struct {
|
||||
DisplayState string `json:"display_state"`
|
||||
Timestamp string `json:"ts"`
|
||||
}
|
||||
data, err := json.Marshal(dsPayload{
|
||||
DisplayState: state,
|
||||
Timestamp: time.Now().UTC().Format(time.RFC3339),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
topic := "signage/screen/" + screenSlug + "/display-state"
|
||||
token := p.client.Publish(topic, 0, false, data)
|
||||
token.WaitTimeout(3 * time.Second)
|
||||
return token.Error()
|
||||
}
|
||||
|
||||
// Close disconnects from the broker gracefully.
|
||||
func (p *Publisher) Close() {
|
||||
p.client.Disconnect(250)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue