Store massive values data from remote controllers
3.65B rows a year is a lot.  How many year's data will you keep?

PARTITIONing?  Don't do that until you have a reason.  One reason is that you want to delete data that is over a year old.  In which case, use a rolling RANGE of partitions based on month or week.

Another thing to consider -- will you need the details after some period of time?  Or can you simply summarize the data, then throw away the raw data.  This will potentially save a lot of space.

One text field -- it depends on what queries you will be doing.  If you want the "average temperature" for last week, a single text field would make it 'impossible' in SQL.

What do the queries look like?  Probably they want summary info.  No amount of indexing will salvage the performance of a huge table.  You must do incremental summarization.

If controller 123 has data scattered over 3.65B rows, it will take hours, maybe days to fetch all the info for that one controller.  Think again whether that is really the query you want to run.  And think about the other queries.

You must present all the queries up front in order to design this table optimally.