|  |  | @ -30,24 +30,28 @@ const char* const fields[] = {"U_DC", "I_DC", "P_DC", "YieldDay", "YieldWeek", " | 
			
		
	
		
			
				
					|  |  |  | // mqtt discovery device classes
 | 
			
		
	
		
			
				
					|  |  |  | enum {DEVICE_CLS_NONE = 0, DEVICE_CLS_CURRENT, DEVICE_CLS_ENERGY, DEVICE_CLS_PWR, DEVICE_CLS_VOLTAGE, DEVICE_CLS_FREQ, DEVICE_CLS_TEMP}; | 
			
		
	
		
			
				
					|  |  |  | const char* const deviceClasses[] = {0, "current", "energy", "power", "voltage", "frequency", "temperature"}; | 
			
		
	
		
			
				
					|  |  |  | enum {STATE_CLS_NONE = 0, STATE_CLS_MEASUREMENT, STATE_CLS_TOTAL_INCREASING}; | 
			
		
	
		
			
				
					|  |  |  | const char* const stateClasses[] = {0, "measurement", "total_increasing"}; | 
			
		
	
		
			
				
					|  |  |  | typedef struct { | 
			
		
	
		
			
				
					|  |  |  |     uint8_t    fieldId;      // field id
 | 
			
		
	
		
			
				
					|  |  |  |     uint8_t    deviceClsId;  // device class
 | 
			
		
	
		
			
				
					|  |  |  |     uint8_t    stateClsId;   // state class
 | 
			
		
	
		
			
				
					|  |  |  | } byteAssign_fieldDeviceClass; | 
			
		
	
		
			
				
					|  |  |  | const byteAssign_fieldDeviceClass deviceFieldAssignment[] = { | 
			
		
	
		
			
				
					|  |  |  |     {FLD_UDC, DEVICE_CLS_VOLTAGE}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_IDC, DEVICE_CLS_CURRENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_PDC, DEVICE_CLS_PWR}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_YD, DEVICE_CLS_ENERGY}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_YW, DEVICE_CLS_ENERGY}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_YT, DEVICE_CLS_ENERGY}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_UAC, DEVICE_CLS_VOLTAGE}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_IAC, DEVICE_CLS_CURRENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_PAC, DEVICE_CLS_PWR}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_F, DEVICE_CLS_FREQ}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_T, DEVICE_CLS_TEMP}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_EFF, DEVICE_CLS_NONE}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_IRR, DEVICE_CLS_NONE} | 
			
		
	
		
			
				
					|  |  |  |     {FLD_UDC, DEVICE_CLS_VOLTAGE, STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_IDC, DEVICE_CLS_CURRENT, STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_PDC, DEVICE_CLS_PWR,     STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_YD,  DEVICE_CLS_ENERGY,  STATE_CLS_TOTAL_INCREASING}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_YW,  DEVICE_CLS_ENERGY,  STATE_CLS_TOTAL_INCREASING}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_YT,  DEVICE_CLS_ENERGY,  STATE_CLS_TOTAL_INCREASING}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_UAC, DEVICE_CLS_VOLTAGE, STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_IAC, DEVICE_CLS_CURRENT, STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_PAC, DEVICE_CLS_PWR,     STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_F,   DEVICE_CLS_FREQ,    STATE_CLS_NONE}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_T,   DEVICE_CLS_TEMP,    STATE_CLS_MEASUREMENT}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_PCT, DEVICE_CLS_NONE,    STATE_CLS_NONE}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_EFF, DEVICE_CLS_NONE,    STATE_CLS_NONE}, | 
			
		
	
		
			
				
					|  |  |  |     {FLD_IRR, DEVICE_CLS_NONE,    STATE_CLS_NONE} | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  | #define DEVICE_CLS_ASSIGN_LIST_LEN     (sizeof(deviceFieldAssignment) / sizeof(byteAssign_fieldDeviceClass)) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 |