diff --git a/packages/server/src/controllers/LapController/LapController.ts b/packages/server/src/controllers/LapController/LapController.ts index 5be946a6..46132b32 100644 --- a/packages/server/src/controllers/LapController/LapController.ts +++ b/packages/server/src/controllers/LapController/LapController.ts @@ -158,6 +158,7 @@ export class LapController implements LapControllerType { // this function is for calling when lap completes via lap digital being true public async handleLapData(lapData: ILapData) { await this.backendController.socketIO.broadcastLapData(lapData); + await this.backendController.mqtt.publishLapData(lapData); await this.backendController.dynamoDB.insertLapData(lapData); } diff --git a/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.ts b/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.ts index fb628287..aa0a0009 100644 --- a/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.ts +++ b/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.ts @@ -9,11 +9,12 @@ import { import { createLightweightApplicationLogger } from "@/utils/logger"; -import { validateTelemetryData } from "@shared/helios-types"; +import { ILapData, validateTelemetryData } from "@shared/helios-types"; const { carConnect, carDisconnect, + lapdataTopic, packetTopic, pingTopic, pongTopic, @@ -68,6 +69,14 @@ export class SolarMQTTClient implements SolarMQTTClientType { }, milliseconds); } + public async publishLapData(lapdata: ILapData) { + try { + this.client.publish(lapdataTopic, JSON.stringify(lapdata)); + } catch (error) { + logger.error("Error publishing lap data: ", error); + } + } + public async connectToAedes(options: IClientOptions) { try { this.client = connect(options); diff --git a/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.types.ts b/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.types.ts index 14642d3d..3454f7d6 100644 --- a/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.types.ts +++ b/packages/server/src/datasources/SolarMQTTClient/SolarMQTTClient.types.ts @@ -13,6 +13,7 @@ export const options: IClientOptions = { export const topics = { carConnect: "carConnect", carDisconnect: "carDisconnect", + lapdataTopic: "lapdata", packetTopic: "packet", pingTopic: "ping", pongTopic: "pong",