MQTT Data Format

When I am ingesting data in Azure Data Explorer via the MQTT Basic IDE, all my tags are recognized as strings instead of real numbers, I believe the setup is here:
Where the +STR is happening. Is there a way to set up a group to always be reals and then at the io table I can change the groups (like A for reals and B for strings), etc.
Code pasted below.

IF GroupA$ = “1” And GROUPA%= 1 THEN Onchange -i%, “a(”+ STR$ k%+",2)= 1"
IF GroupB$ = “1” And GROUPB%= 1 THEN Onchange -i%, “a(”+ STR$ k%+",2)= 1"
IF GroupC$ = “1” And GROUPC%= 1 THEN Onchange -i%, “a(”+ STR$ k%+",2)= 1"
IF GroupD$ = “1” And GROUPD%= 1 THEN Onchange -i%, “a(”+ STR$ k%+",2)= 1"
NEXT i%

ONTIMER 2,“goto MqttPublishAllValue”
TSET 2,Fullpushtime%
// TSET 2,Changepushtime%
END
//Compute the right time format for AZURE
Function GetTime$()
$a$ = Time$
$GetTime$ = $a$(7 To 10) + “-” + $a$(4 To 5) + “-” + $a$(1 To 2) + " " + $a$(12 To 13)+":"+$a$(15 To 16)+":"+$a$(18 To 19)
EndFn

//publish all tags
MqttPublishAllValue:
counter%=0
json$ = ‘{’
FOR i% = 0 TO NB% -1
SETSYS Tag, “load”,-i%
i$= GETSYS TAG,“Name”

  GroupA$= GETSYS TAG,"IVGROUPA"
  GroupB$= GETSYS TAG,"IVGROUPB"
  GroupC$= GETSYS TAG,"IVGROUPC"
  GroupD$= GETSYS TAG,"IVGROUPD"
 
  IF GroupA$ = "1" And GROUPA%= 1 THEN json$ = json$ + '"' + i$+ '":"'+STR$ GETIO i$ + '",': counter% = counter% +1
  IF GroupB$ = "1" And GROUPB%= 1 THEN json$ = json$ + '"' + i$+ '":"'+STR$ GETIO i$ + '",': counter% = counter% +1
  IF GroupC$ = "1" And GROUPC%= 1 THEN json$ = json$ + '"' + i$+ '":"'+STR$ GETIO i$ + '",': counter% = counter% +1
  IF GroupD$ = "1" And GROUPD%= 1 THEN json$ = json$ + '"' + i$+ '":"'+STR$ GETIO i$ + '",': counter% = counter% +1

This seems likely related to how you have the quotes setup. the entire json is a string but the quotes would be determining how to interpret the data. It is difficult to tell from your code but try printing the json string to the console to verify the value is not surrounded by quotes. My guess is you need to remove the quotes before and after your GETIO call.

{“tagname”:“tag”, “value”:“30”} //this would be a string of 30
{“tagname”:“tag”, “value”:30} //this would be the number 30