|  |  | @ -800,16 +800,31 @@ class Web { | 
			
		
	
		
			
				
					|  |  |  |                                             // This is the correct field to report
 | 
			
		
	
		
			
				
					|  |  |  |                                             std::tie(promUnit, promType) = convertToPromUnits(iv->getUnit(metricsChannelId, rec)); | 
			
		
	
		
			
				
					|  |  |  |                                             // Declare metric only once
 | 
			
		
	
		
			
				
					|  |  |  |                                             if (!metricDeclared) { | 
			
		
	
		
			
				
					|  |  |  |                                             if (channel != 0 && !metricDeclared) { | 
			
		
	
		
			
				
					|  |  |  |                                                 snprintf(type, sizeof(type), "# TYPE ahoy_solar_%s%s %s\n", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), promType.c_str()); | 
			
		
	
		
			
				
					|  |  |  |                                                 metrics += type; | 
			
		
	
		
			
				
					|  |  |  |                                                 metricDeclared = true; | 
			
		
	
		
			
				
					|  |  |  |                                             } | 
			
		
	
		
			
				
					|  |  |  |                                             // report value
 | 
			
		
	
		
			
				
					|  |  |  |                                             if (0 == channel) { | 
			
		
	
		
			
				
					|  |  |  |                                                 snprintf(topic, sizeof(topic), "ahoy_solar_%s%s{inverter=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), iv->config->name); | 
			
		
	
		
			
				
					|  |  |  |                                                 char total[7]; | 
			
		
	
		
			
				
					|  |  |  |                                                 total[0] = 0; | 
			
		
	
		
			
				
					|  |  |  |                                                 if (metricDeclared) { | 
			
		
	
		
			
				
					|  |  |  |                                                     // A declaration and value for channels has been delivered. So declare and deliver a _total metric
 | 
			
		
	
		
			
				
					|  |  |  |                                                     strncpy(total,"_total",sizeof(total)); | 
			
		
	
		
			
				
					|  |  |  |                                                 } | 
			
		
	
		
			
				
					|  |  |  |                                                 snprintf(type, sizeof(type), "# TYPE ahoy_solar_%s%s%s %s\n", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), total, promType.c_str()); | 
			
		
	
		
			
				
					|  |  |  |                                                 metrics += type; | 
			
		
	
		
			
				
					|  |  |  |                                                 snprintf(topic, sizeof(topic), "ahoy_solar_%s%s%s{inverter=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), total,iv->config->name); | 
			
		
	
		
			
				
					|  |  |  |                                             } else { | 
			
		
	
		
			
				
					|  |  |  |                                                 snprintf(topic, sizeof(topic), "ahoy_solar_%s%s{inverter=\"%s\",channel=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), iv->config->name,iv->config->chName[channel-1]); | 
			
		
	
		
			
				
					|  |  |  |                                                 // Use a fallback channel name (ch0, ch1, ...)if non is given by user
 | 
			
		
	
		
			
				
					|  |  |  |                                                 char chName[MAX_NAME_LENGTH]; | 
			
		
	
		
			
				
					|  |  |  |                                                 if (iv->config->chName[channel-1][0] != 0) { | 
			
		
	
		
			
				
					|  |  |  |                                                     strncpy(chName, iv->config->chName[channel-1], sizeof(chName)); | 
			
		
	
		
			
				
					|  |  |  |                                                 } else { | 
			
		
	
		
			
				
					|  |  |  |                                                     snprintf(chName,sizeof(chName),"ch%1d",channel); | 
			
		
	
		
			
				
					|  |  |  |                                                 } | 
			
		
	
		
			
				
					|  |  |  |                                                 snprintf(topic, sizeof(topic), "ahoy_solar_%s%s{inverter=\"%s\",channel=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), iv->config->name,chName); | 
			
		
	
		
			
				
					|  |  |  |                                             } | 
			
		
	
		
			
				
					|  |  |  |                                             snprintf(val, sizeof(val), " %.3f\n", iv->getValue(metricsChannelId, rec)); | 
			
		
	
		
			
				
					|  |  |  |                                             metrics += topic; | 
			
		
	
	
		
			
				
					|  |  | 
 |