From 533cf844339c29d022de492c4da9c362a3e281c8 Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Sun, 7 Jan 2024 13:37:05 -0500 Subject: [PATCH] Fix getting device name from topic --- DeviceStatus/Service/MessageHandler.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DeviceStatus/Service/MessageHandler.cs b/DeviceStatus/Service/MessageHandler.cs index f668385..a3b9cd1 100644 --- a/DeviceStatus/Service/MessageHandler.cs +++ b/DeviceStatus/Service/MessageHandler.cs @@ -58,24 +58,25 @@ public class MessageHandler : IHostedService private async Task OnApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg) { var topic = arg.ApplicationMessage.Topic; + var deviceName = topic["device-status/".Length..]; var payload = arg.ApplicationMessage.ConvertPayloadToString(); WriteLog($"Topic: {topic} = {payload}"); - var newDevice = new Device(topic, payload); + var newDevice = new Device(deviceName, payload); if (_deviceTimers.ContainsKey(newDevice.Name)) await _deviceTimers[newDevice.Name].DisposeAsync(); if (!_deviceRepository.ContainsKey(newDevice.Name) || newDevice.Status) { - WriteLog($"{arg.ApplicationMessage.Topic}: Handling status immediately"); + WriteLog($"{deviceName}: Handling status immediately"); await HandleDeviceMessage(newDevice); } else { - WriteLog($"{arg.ApplicationMessage.Topic}: Setting timer for status"); + WriteLog($"{deviceName}: Setting timer for status"); _deviceTimers[newDevice.Name] = new Timer(OnDeviceTimer, newDevice, _deviceDelayTime, Timeout.InfiniteTimeSpan); }