Change data being sent to mqtt to json

This commit is contained in:
Paul Dino Jones 2023-03-24 18:39:22 +00:00
parent fab3a5e631
commit ae7e54c253
1 changed files with 67 additions and 7 deletions

View File

@ -13,9 +13,11 @@
#include "../simulatorapi/simapi/simapi/simmapper.h" #include "../simulatorapi/simapi/simapi/simmapper.h"
#include "../slog/slog.h" #include "../slog/slog.h"
#include <json-c/json.h>
#define DEFAULT_UPDATE_RATE 100 #define DEFAULT_UPDATE_RATE 100
#define ADDRESS "tcp://localhost:1883" #define ADDRESS "tcp://mqtt.brak:1883"
#define CLIENTID "gilles" #define CLIENTID "gilles"
#define TOPIC "telemetry" #define TOPIC "telemetry"
//#define PAYLOAD "Hello, MQTT!" //#define PAYLOAD "Hello, MQTT!"
@ -33,6 +35,8 @@ int winx, winy;
int win23y, win23x; int win23y, win23x;
void handle_winch(int sig) void handle_winch(int sig)
{ {
endwin(); endwin();
@ -180,12 +184,68 @@ int looper(Simulator simulator, Parameters* p)
if (mqtt_connected == true && simdata->simstatus > 0) if (mqtt_connected == true && simdata->simstatus > 0)
{ {
char payloads[5][60]; char payloads[16][10];
sprintf(payloads[0], "telemetry,lap=%i,session=%s gas=%04f", simdata->lap, newdatestring, simdata->gas);
sprintf(payloads[1], "telemetry,lap=%i,session=%s brake=%04f", simdata->lap, newdatestring, simdata->brake); //sprintf(payloads[0], "telemetry,lap=%i,session=%s gas=%04f", simdata->lap, newdatestring, simdata->gas);
sprintf(payloads[2], "telemetry,lap=%i,session=%s steer=%04f", simdata->lap, newdatestring, simdata->brake); //sprintf(payloads[1], "telemetry,lap=%i,session=%s brake=%04f", simdata->lap, newdatestring, simdata->brake);
sprintf(payloads[3], "telemetry,lap=%i,session=%s gear=%04i", simdata->lap, newdatestring, simdata->gear); //sprintf(payloads[2], "telemetry,lap=%i,session=%s steer=%04f", simdata->lap, newdatestring, simdata->brake);
sprintf(payloads[4], "telemetry,lap=%i,session=%s speed=%04i", simdata->lap, newdatestring, simdata->velocity); //sprintf(payloads[3], "telemetry,lap=%i,session=%s gear=%04i", simdata->lap, newdatestring, simdata->gear);
//sprintf(payloads[4], "telemetry,lap=%i,session=%s speed=%04i", simdata->lap, newdatestring, simdata->velocity);
sprintf(payloads[0], "%04f", simdata->clutch);
sprintf(payloads[1], "%04f", simdata->brake);
sprintf(payloads[2], "%04f", simdata->gas);
sprintf(payloads[3], "%04f", simdata->handbrake);
sprintf(payloads[4], "%04f", simdata->steer);
sprintf(payloads[5], "%i", simdata->rpms);
sprintf(payloads[6], "%i", simdata->gear);
sprintf(payloads[7], "%04f", simdata->velocity * 0.2777778);
sprintf(payloads[8], "%08f", simdata->trackdistancearound);
sprintf(payloads[9], "%08f", simdata->worldposx);
sprintf(payloads[10], "%08f", simdata->worldposy);
sprintf(payloads[11], "%08f", simdata->worldposz);
sprintf(payloads[12], "%i", simdata->playerlaps);
sprintf(payloads[13], "%i", simdata->currentlapinseconds);
sprintf(payloads[14], "%i", simdata->lastlapinseconds);
sprintf(payloads[15], "%i", simdata->lapisvalid);
json_object *root = json_object_new_object();
if (!root)
return 1;
// {"module":"log"}
json_object *child = json_object_new_object();
json_object_object_add(root, "time", json_object_new_string("1669657644794")); //unix time milliseconds
/* these get placed into the topic path
json_object_object_add(root, "CarModel", json_object_new_string(simdata->car));
json_object_object_add(root, "GameName", json_object_new_string("Assetto Corsa (64 bit")));
json_object_object_add(root, "SessionId", json_object_new_string("1669233672"));
json_object_object_add(root, "SessionTypeName", json_object_new_string("Practice"));
json_object_object_add(root, "TrackCode", json_object_new_string(simdata->track));
*/
json_object_object_add(child, "Clutch", json_object_new_string(payloads[1]));
json_object_object_add(child, "Brake", json_object_new_string(payloads[1]));
json_object_object_add(child, "Throtte", json_object_new_string(payloads[2]));
json_object_object_add(child, "HandBrake", json_object_new_string(payloads[3]));
json_object_object_add(child, "SteeringAngle", json_object_new_string(payloads[4]));
json_object_object_add(child, "Rpms", json_object_new_string(payloads[5]));
json_object_object_add(child, "Gear", json_object_new_string(payloads[6]));
json_object_object_add(child, "SpeedMs", json_object_new_string(payloads[7]));
json_object_object_add(child, "DistanceRoundTrack", json_object_new_string(payloads[8]));
json_object_object_add(child, "WorldPosition_x", json_object_new_string(payloads[9]));
json_object_object_add(child, "WorldPosition_y", json_object_new_string(payloads[10]));
json_object_object_add(child, "WorldPosition_z", json_object_new_string(payloads[11]));
json_object_object_add(child, "CurrentLap", json_object_new_string(payloads[12]));
json_object_object_add(child, "CurrentLapTime", json_object_new_string(payloads[13]));
json_object_object_add(child, "LapTimePrevious", json_object_new_string(payloads[14]));
json_object_object_add(child, "CurrentLapIsValid", json_object_new_string(payloads[15]));
json_object_object_add(child, "PreviousLapWasValid", json_object_new_string("1"));
json_object_object_add(root, "telemetry", child);
slogi(json_object_to_json_string_ext(root, JSON_C_TO_STRING_PRETTY));
for (int k =0; k < 5; k++) for (int k =0; k < 5; k++)
{ {